Skip to content

Commit

Permalink
Backported changes from conancenter review
Browse files Browse the repository at this point in the history
  • Loading branch information
rainman110 committed Aug 30, 2022
1 parent cc2d424 commit bcfe997
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 22 deletions.
75 changes: 55 additions & 20 deletions conanfile.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
from conan.tools.cmake import CMake
from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps, cmake_layout
from conan.tools import files
from conan import ConanFile
import os, re
import textwrap

required_conan_version = ">=1.45.0"

Expand Down Expand Up @@ -49,57 +50,91 @@ class Tixi3Conan(ConanFile):
"fPIC": True,
}

source_subfolder = "."
generators = ["CMakeDeps", "CMakeToolchain"]
def generate(self):
tc = CMakeToolchain(self)
tc.generate()
deps = CMakeDeps(self)
deps.generate()

def requirements(self):
self.requires("libxml2/2.9.14")
self.requires("libxslt/1.1.34")
self.requires("libcurl/7.84.0")

def layout(self):
cmake_layout(self)

def config_options(self):
if self.settings.os == "Windows":
del self.options.fPIC

def configure(self):
if self.options.shared:
del self.options.fPIC
try:
del self.options.fPIC
except Exception:
pass

# tixi is a c library
del self.settings.compiler.libcxx
del self.settings.compiler.cppstd
try:
del self.settings.compiler.libcxx
except Exception:
pass
try:
del self.settings.compiler.cppstd
except Exception:
pass

def export_sources(self):
self.output.info("Executing export_sources() method")
self.copy("*", dst=self.source_subfolder)
self.copy("*", dst=self.export_sources_folder)

def build(self):
cmake = CMake(self)
cmake.configure(build_script_folder=self.source_subfolder)
cmake.configure()
cmake.build()

def _create_cmake_module_alias_targets(self, module_file, targets):
content = ""
for alias, aliased in targets.items():
content += textwrap.dedent(f"""\
if(TARGET {aliased} AND NOT TARGET {alias})
add_library({alias} INTERFACE IMPORTED)
set_property(TARGET {alias} PROPERTY INTERFACE_LINK_LIBRARIES {aliased})
endif()
""")
files.save(self, module_file, content)

def package(self):
cmake = CMake(self)
cmake.install()

# remove package generated cmake config files
files.rmdir(self,
os.path.join(self.package_folder, "lib", "tixi3"))
files.rmdir(self, os.path.join(self.package_folder, "lib", "tixi3"))
files.copy(self, "LICENSE", dst=os.path.join(self.package_folder, "licenses"), src=self.source_folder)
files.rmdir(self, os.path.join(self.package_folder, "share"))

# copy the LICENSE file
self.copy("LICENSE", dst="licenses", src=self.source_subfolder)
# provide alias target tixi3 for v1 packages
self._create_cmake_module_alias_targets(
os.path.join(self.package_folder, self._module_file_rel_path),
{"tixi3": "tixi3::tixi3"}
)

@property
def _module_file_rel_path(self):
return os.path.join("lib", "cmake", "conan-official-{}-targets.cmake".format(self.name))

# remove share directory, which only contains documentation,
# expamples...
files.rmdir(self, os.path.join(self.package_folder, "share"))

def package_info(self):
self.cpp_info.includedirs = ['include/tixi3']
self.cpp_info.includedirs.append(os.path.join("include", "tixi3"))
self.cpp_info.libs = ['tixi3']

if self.settings.os == "Windows":
self.cpp_info.system_libs = ['Shlwapi']

self.cpp_info.set_property("cmake_target_aliases", ["tixi3"])
self.cpp_info.libdirs = ['lib']
self.cpp_info.bindirs = ['bin']
self.cpp_info.set_property("cmake_file_name", "tixi3")
self.cpp_info.set_property("cmake_target_name", "tixi3")

# provide alias target tixi3 for v1 packages
self.cpp_info.builddirs.append(os.path.join("lib", "cmake"))
self.cpp_info.build_modules["cmake_find_package"] = [self._module_file_rel_path]
self.cpp_info.build_modules["cmake_find_package_multi"] = [self._module_file_rel_path]
4 changes: 2 additions & 2 deletions test_package/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 3.12)
project(Tixi-Conan-TestPackage)
project(Tixi-Conan-TestPackage C)

find_package(tixi3 REQUIRED)

add_executable(tixi3_conan_test ../examples/Demo/tixiDemo.c)
target_link_libraries(tixi3_conan_test PRIVATE tixi3::tixi3)
target_link_libraries(tixi3_conan_test PRIVATE tixi3)

0 comments on commit bcfe997

Please sign in to comment.