Beispiel #1
0
def extend(cpp_info, config):
    """ adds the specific config configuration to the common one
    """
    config_info = cpp_info.configs.get(config)
    if config_info:

        def add_lists(seq1, seq2):
            return seq1 + [s for s in seq2 if s not in seq1]

        result = CppInfo(str(config_info), config_info.rootpath)
        result.filter_empty = cpp_info.filter_empty
        result.includedirs = add_lists(cpp_info.includedirs,
                                       config_info.includedirs)
        result.libdirs = add_lists(cpp_info.libdirs, config_info.libdirs)
        result.bindirs = add_lists(cpp_info.bindirs, config_info.bindirs)
        result.resdirs = add_lists(cpp_info.resdirs, config_info.resdirs)
        result.builddirs = add_lists(cpp_info.builddirs, config_info.builddirs)
        result.libs = cpp_info.libs + config_info.libs
        result.defines = cpp_info.defines + config_info.defines
        result.cflags = cpp_info.cflags + config_info.cflags
        result.cxxflags = cpp_info.cxxflags + config_info.cxxflags
        result.sharedlinkflags = cpp_info.sharedlinkflags + config_info.sharedlinkflags
        result.exelinkflags = cpp_info.exelinkflags + config_info.exelinkflags
        result.system_libs = add_lists(cpp_info.system_libs,
                                       config_info.system_libs)
        result.build_modules = merge_dicts(cpp_info.build_modules,
                                           config_info.build_modules)
        return result
    return cpp_info
Beispiel #2
0
 def setUp(self):
     settings_mock = _MockSettings(build_type="Release")
     self.conanfile = ConanFile(TestBufferConanOutput(), None)
     self.conanfile.initialize(settings_mock, EnvValues())
     ref = ConanFileReference.loads("my_pkg/0.1@lasote/stables")
     cpp_info = CppInfo("dummy_root_folder1")
     cpp_info.filter_empty = False  # For testing purposes only
     cpp_info.name = ref.name
     cpp_info.build_modules = ["my-module.cmake"]
     self.conanfile.deps_cpp_info.update(cpp_info, ref.name)
     ref = ConanFileReference.loads("my_pkg2/0.1@lasote/stables")
     cpp_info = CppInfo("dummy_root_folder2")
     cpp_info.filter_empty = False  # For testing purposes only
     cpp_info.name = ref.name
     cpp_info.build_modules = ["other-mod.cmake", "not-a-cmake-module.pc"]
     cpp_info.release.build_modules = ["release-mod.cmake"]
     self.conanfile.deps_cpp_info.update(cpp_info, ref.name)
Beispiel #3
0
 def test_cpp_info_build_modules_old_behavior(self):
     folder = temp_folder()
     info = CppInfo("myname", folder)
     info.build_modules = [
         "old.cmake"
     ]  # Test old behavior with .cmake build modules as list
     deps_cpp_info = DepsCppInfo()
     deps_cpp_info.add("myname", DepCppInfo(info))
     for gen in [
             "cmake", "cmake_multi", "cmake_find_package",
             "cmake_find_package_multi"
     ]:
         assert list(deps_cpp_info["myname"].build_modules_paths[gen]) ==\
                [os.path.join(folder, "old.cmake")]
def test_from_old_cppinfo_no_components():
    oldcppinfo = CppInfo("ref", "/root/")
    oldcppinfo.requires = ["my_req::my_component"]
    for n in _DIRS_VAR_NAMES + _FIELD_VAR_NAMES:
        setattr(oldcppinfo, n, ["var_{}_1".format(n), "var_{}_2".format(n)])

    oldcppinfo.build_modules = {
        "cmake_find_package": ["my_scripts.cmake", "foo.cmake"],
        "cmake_find_package_multi": ["my_scripts.cmake", "foo2.cmake"]
    }

    cppinfo = from_old_cppinfo(oldcppinfo)

    assert isinstance(cppinfo, NewCppInfo)

    for n in _DIRS_VAR_NAMES + _FIELD_VAR_NAMES:
        assert getattr(cppinfo,
                       n) == ["var_{}_1".format(n), "var_{}_2".format(n)]

    assert cppinfo.get_property("cmake_build_modules") is None
    assert cppinfo.requires == ["my_req::my_component"]