Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
conanfile.py 1.95 KiB
from conans import ConanFile, CMake, tools


class CaosdbConan(ConanFile):
    name = "caosdb"
    version = "0.0.19"
    license = "AGPL-3.0-or-later"
    author = "Timm C. Fitschen <t.fitschen@indiscale.com>"
    url = "https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib.git"
    description = "C++ library for the CaosDB project"
    topics = ("data management", "caosdb")
    settings = "os", "compiler", "build_type", "arch"
    options = {"shared": [True, False], "fPIC": [True, False]}
    default_options = {"shared": False, "fPIC": True}
    generators = "cmake"
    requires = [
        ("boost/1.76.0"),
        ("gtest/1.11.0"),
        ("grpc/1.38.0"),
    ]
    exports = "*.cpp", "*.h", "*.cmake", "*CMakeLists.txt", "*.in", "*.proto", "*.c"
    exports_sources = "src", "doc", "include", "test", "cmake", "proto"

    def config_options(self):
        if self.settings.os == "Windows":
            del self.options.fPIC
        self.options["boost"].without_python = True

    # def source(self):
        # self.run("git clone https://gitlab.indiscale.com/caosdb/src/caosdb-cpplib.git")
        # self.run("cd caosdb-cpplib && git submodule update --init")

    def imports(self):
        self.copy("protoc*", "build_tools", "bin")
        self.copy("grpc_cpp_plugin*", "build_tools", "bin")

    def build(self):
        cmake = CMake(self)
        cmake.configure(source_folder="")
        cmake.build()

        # Explicit way:
        # self.run('cmake %s/hello %s'
        #          % (self.source_folder, cmake.command_line))
        # self.run("cmake --build . %s" % cmake.build_config)

    def package(self):
        self.copy("*.h", dst="include", src="include")
        self.copy("*.dll", dst="bin", keep_path=False)
        self.copy("*.so", dst="lib", keep_path=False)
        self.copy("*.dylib", dst="lib", keep_path=False)
        self.copy("*.a", dst="lib", keep_path=False)

    def package_info(self):
        self.cpp_info.libs = ["caosdb", "ccaosdb"]