From f84eaee5e9b7a653d3613fddb5ec3085a00fef79 Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 5 Aug 2019 16:55:52 +0200 Subject: [PATCH 01/40] Add unit test --- conans/test/unittests/model/build_info_test.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/conans/test/unittests/model/build_info_test.py b/conans/test/unittests/model/build_info_test.py index 631aac1a03d..1dd0aff2af4 100644 --- a/conans/test/unittests/model/build_info_test.py +++ b/conans/test/unittests/model/build_info_test.py @@ -173,3 +173,15 @@ def cpp_info_test(self): self.assertEqual(info.lib_paths, [os.path.join(folder, "lib"), abs_lib]) self.assertEqual(info.bin_paths, [abs_bin, os.path.join(folder, "local_bindir")]) + + def cpp_info_system_deps_test(self): + info1 = CppInfo("folder1") + info1.system_deps = ["sysdep1"] + info2 = CppInfo("folder2") + info2.system_deps = ["sysdep2", "sysdep3"] + deps_cpp_info = DepsCppInfo() + deps_cpp_info.update(info1, "dep1") + deps_cpp_info.update(info2, "dep2") + self.assertEqual(["sysdep1", "sysdep2", "sysdep3"], deps_cpp_info.system_deps) + self.assertEqual(["sysdep1"], deps_cpp_info["dep1"].system_deps) + self.assertEqual(["sysdep2", "sysdep3"], deps_cpp_info["dep2"].system_deps) From ff537fa5b0330f6b60cd00db6b9e406502438aa6 Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 5 Aug 2019 16:56:13 +0200 Subject: [PATCH 02/40] add package_info system_deps test --- conans/test/integration/package_info_test.py | 41 ++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/conans/test/integration/package_info_test.py b/conans/test/integration/package_info_test.py index dad8b6ad4f0..d69d6aa547c 100644 --- a/conans/test/integration/package_info_test.py +++ b/conans/test/integration/package_info_test.py @@ -1,3 +1,4 @@ +import textwrap import unittest from conans.paths import CONANFILE, CONANFILE_TXT @@ -46,3 +47,43 @@ def package_info(self): client.run("install . -o *:switch=0 --build Lib3") self.assertIn("Lib3/1.0@conan/stable: WARN: Env var MYVAR=foo", client.out) + + def package_info_system_deps_test(self): + dep = textwrap.dedent(""" + import os + from conans import ConanFile + class Dep(ConanFile): + def package_info(self): + self.cpp_info.system_deps = ["sysdep1"] + """) + intermediate = textwrap.dedent(""" + import os + from conans import ConanFile + class Intermediate(ConanFile): + requires = "dep/1.0@us/ch" + def package_info(self): + self.cpp_info.system_deps = ["sysdep2", "sysdep3"] + """) + consumer = textwrap.dedent(""" + from conans import ConanFile + class Consumer(ConanFile): + requires = "intermediate/1.0@us/ch" + def build(self): + self.output.info("System deps: %s" % self.deps_cpp_info.system_deps) + for dep_key, dep_value in self.deps_cpp_info.dependencies: + self.output.info("%s system deps: %s" % (dep_key, dep_value.system_deps)) + """) + + client = TestClient() + client.save({"conanfile_dep.py": dep, + "conanfile_intermediate.py": intermediate, + "conanfile_consumer.py": consumer}) + client.run("create conanfile_dep.py dep/1.0@us/ch") + client.run("create conanfile_intermediate.py intermediate/1.0@us/ch") + client.run("create conanfile_consumer.py consumer/1.0@us/ch") + dep_system_deps = ["sysdep1"] + intermediate_system_deps = ["sysdep2", "sysdep3"] + merged_system_deps = intermediate_system_deps + dep_system_deps + self.assertIn("System deps: %s" % merged_system_deps, client.out) + self.assertIn("intermediate system deps: %s" % intermediate_system_deps, client.out) + self.assertIn("dep system deps: %s" % dep_system_deps, client.out) From 71f4b61e8d46f2c7e4ca46d0733b6845a5e4a42e Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 5 Aug 2019 16:56:48 +0200 Subject: [PATCH 03/40] system_deps attribute for cpp_info and deps_cpp_info --- conans/model/build_info.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conans/model/build_info.py b/conans/model/build_info.py index 5d31a09bf66..04ce3527863 100644 --- a/conans/model/build_info.py +++ b/conans/model/build_info.py @@ -16,6 +16,7 @@ class _CppInfo(object): specific systems will be produced from this info """ def __init__(self): + self.system_deps = [] # Ordered list of system dependencies self.includedirs = [] # Ordered list of include paths self.srcdirs = [] # Ordered list of source paths self.libdirs = [] # Directories to find libraries @@ -141,6 +142,7 @@ def update(self, dep_cpp_info): def merge_lists(seq1, seq2): return [s for s in seq1 if s not in seq2] + seq2 + self.system_deps = merge_lists(self.system_deps, dep_cpp_info.system_deps) self.includedirs = merge_lists(self.includedirs, dep_cpp_info.include_paths) self.srcdirs = merge_lists(self.srcdirs, dep_cpp_info.src_paths) self.libdirs = merge_lists(self.libdirs, dep_cpp_info.lib_paths) From 30e8935464a7dd0ea0b9b5a36554a9f5ec463db0 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 8 Aug 2019 18:24:49 +0200 Subject: [PATCH 04/40] Add system_deps to cmake generator --- conans/client/generators/cmake.py | 3 +- conans/client/generators/cmake_common.py | 2 + .../functional/generators/cmake_multi_test.py | 43 +++++++++++++++++++ .../test/functional/generators/cmake_test.py | 29 +++++++++++++ .../test/unittests/model/build_info_test.py | 1 + 5 files changed, 77 insertions(+), 1 deletion(-) diff --git a/conans/client/generators/cmake.py b/conans/client/generators/cmake.py index 7dfd85f8659..1d0c91fe068 100644 --- a/conans/client/generators/cmake.py +++ b/conans/client/generators/cmake.py @@ -31,7 +31,8 @@ def join_defines(values, prefix=""): self.build_paths = join_paths(cpp_info.build_paths) self.src_paths = join_paths(cpp_info.src_paths) - self.libs = join_flags(" ", cpp_info.libs) + self.libs = join_flags(" ", cpp_info.libs + cpp_info.system_deps) + self.system_deps = join_flags(" ", cpp_info.system_deps) self.defines = join_defines(cpp_info.defines, "-D") self.compile_definitions = join_defines(cpp_info.defines) diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index 3ac9abbf9c9..d4da920829d 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -6,6 +6,7 @@ set(CONAN_SRC_DIRS_{dep}{build_type} {deps.src_paths}) set(CONAN_BUILD_DIRS_{dep}{build_type} {deps.build_paths}) set(CONAN_LIBS_{dep}{build_type} {deps.libs}) +set(CONAN_SYSTEM_DEPS_{dep}{build_type} {deps.system_deps}) set(CONAN_DEFINES_{dep}{build_type} {deps.defines}) # COMPILE_DEFINITIONS are equal to CONAN_DEFINES without -D, for targets set(CONAN_COMPILE_DEFINITIONS_{dep}{build_type} {deps.compile_definitions}) @@ -83,6 +84,7 @@ def cmake_dependencies(dependencies, build_type=""): set(CONAN_BIN_DIRS{build_type} {deps.bin_paths} ${{CONAN_BIN_DIRS{build_type}}}) set(CONAN_RES_DIRS{build_type} {deps.res_paths} ${{CONAN_RES_DIRS{build_type}}}) set(CONAN_LIBS{build_type} {deps.libs} ${{CONAN_LIBS{build_type}}}) +set(CONAN_SYSTEM_DEPS{build_type} {deps.system_deps} ${{CONAN_SYSTEM_DEPS{build_type}}}) set(CONAN_DEFINES{build_type} {deps.defines} ${{CONAN_DEFINES{build_type}}}) set(CONAN_CMAKE_MODULE_PATH{build_type} {deps.build_paths} ${{CONAN_CMAKE_MODULE_PATH{build_type}}}) diff --git a/conans/test/functional/generators/cmake_multi_test.py b/conans/test/functional/generators/cmake_multi_test.py index b77ba5d8c54..b3a31b4f22a 100644 --- a/conans/test/functional/generators/cmake_multi_test.py +++ b/conans/test/functional/generators/cmake_multi_test.py @@ -275,6 +275,48 @@ def cmake_multi_test(self): self.assertIn("Hello Release Hello0", client.out) +class CMakeMultiSystemDepsTest(unittest.TestCase): + + def system_deps_test(self): + mylib = textwrap.dedent(""" + import os + from conans import ConanFile + + class MyLib(ConanFile): + + def package_info(self): + self.cpp_info.debug.system_deps = ["sys1d"] + self.cpp_info.release.system_deps = ["sys1"] + self.cpp_info.libs = ["lib1"] + """) + consumer = textwrap.dedent(""" + import os + from conans import ConanFile + + class Consumer(ConanFile): + requires = "mylib/1.0@us/ch" + generators = "cmake" + """) + client = TestClient() + client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer}) + client.run("create conanfile_mylib.py mylib/1.0@us/ch") + client.run("install conanfile_consumer.py") + content = load(os.path.join(client.current_folder, "conanbuildinfo.cmake")) + self.assertIn("set(CONAN_LIBS lib1 ${CONAN_LIBS})", content) + self.assertIn("set(CONAN_LIBS_DEBUG sys1d ${CONAN_LIBS_DEBUG})", content) + self.assertIn("set(CONAN_LIBS_RELEASE sys1 ${CONAN_LIBS_RELEASE})", content) + self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) + self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE sys1)", content) + self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG sys1d)", content) + + self.assertIn("set(CONAN_SYSTEM_DEPS ${CONAN_SYSTEM_DEPS})", content) + self.assertIn("set(CONAN_SYSTEM_DEPS_DEBUG sys1d ${CONAN_SYSTEM_DEPS_DEBUG})", content) + self.assertIn("set(CONAN_SYSTEM_DEPS_RELEASE sys1 ${CONAN_SYSTEM_DEPS_RELEASE})", content) + self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB )", content) + self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB_RELEASE sys1)", content) + self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB_DEBUG sys1d)", content) + + class CMakeMultiSyntaxTest(unittest.TestCase): def setUp(self): @@ -308,3 +350,4 @@ def conan_basic_setup_output_dirs_warning_test(self): self.assertTrue("CMake Warning at conanbuildinfo_multi.cmake", self.client.out) self.assertTrue("Conan: NO_OUTPUT_DIRS has no effect with cmake_multi generator", self.client.out) + diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index c4144a17c35..33e0aeed8ba 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -97,3 +97,32 @@ def no_output_test(self): self.assertNotIn("Conan: Using cmake targets configuration", client.out) self.assertNotIn("Conan: Adjusting default RPATHs Conan policies", client.out) self.assertNotIn("Conan: Adjusting language standard", client.out) + + def system_deps_test(self): + mylib = textwrap.dedent(""" + import os + from conans import ConanFile + + class MyLib(ConanFile): + + def package_info(self): + self.cpp_info.system_deps = ["sys1"] + self.cpp_info.libs = ["lib1"] + """) + consumer = textwrap.dedent(""" + import os + from conans import ConanFile + + class Consumer(ConanFile): + requires = "mylib/1.0@us/ch" + generators = "cmake" + """) + client = TestClient() + client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer}) + client.run("create conanfile_mylib.py mylib/1.0@us/ch") + client.run("install conanfile_consumer.py") + content = load(os.path.join(client.current_folder, "conanbuildinfo.cmake")) + self.assertIn("set(CONAN_LIBS lib1 sys1 ${CONAN_LIBS})", content) + self.assertIn("set(CONAN_LIBS_MYLIB lib1 sys1)", content) + self.assertIn("set(CONAN_SYSTEM_DEPS sys1 ${CONAN_SYSTEM_DEPS})", content) + self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB sys1)", content) diff --git a/conans/test/unittests/model/build_info_test.py b/conans/test/unittests/model/build_info_test.py index 1dd0aff2af4..443ec82310c 100644 --- a/conans/test/unittests/model/build_info_test.py +++ b/conans/test/unittests/model/build_info_test.py @@ -185,3 +185,4 @@ def cpp_info_system_deps_test(self): self.assertEqual(["sysdep1", "sysdep2", "sysdep3"], deps_cpp_info.system_deps) self.assertEqual(["sysdep1"], deps_cpp_info["dep1"].system_deps) self.assertEqual(["sysdep2", "sysdep3"], deps_cpp_info["dep2"].system_deps) + From 1fe92de8be9770c1286787396b5fd8d0e9612509 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 8 Aug 2019 18:41:12 +0200 Subject: [PATCH 05/40] fix import --- conans/test/functional/generators/cmake_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index 33e0aeed8ba..e3722c90128 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -1,5 +1,6 @@ import os import platform +import textwrap import unittest from nose.plugins.attrib import attr From 9b40a13ef0e4f798b9393954c22665f8dc3e5aad Mon Sep 17 00:00:00 2001 From: danimtb Date: Fri, 9 Aug 2019 09:46:51 +0200 Subject: [PATCH 06/40] import load --- conans/test/functional/generators/cmake_test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index e3722c90128..021274a8044 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -5,6 +5,7 @@ from nose.plugins.attrib import attr +from conans import load from conans.client.tools import replace_in_file from conans.test.utils.tools import TestClient From 9b5a6328369c0a0a605762671bf31b7885c91d1d Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 12:49:08 +0200 Subject: [PATCH 07/40] Add target check for CMake test --- conans/test/functional/generators/cmake_test.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index 021274a8044..cd8b131328b 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -106,6 +106,7 @@ def system_deps_test(self): from conans import ConanFile class MyLib(ConanFile): + settings = "os", "compiler", "arch", "build_type" def package_info(self): self.cpp_info.system_deps = ["sys1"] @@ -119,12 +120,26 @@ class Consumer(ConanFile): requires = "mylib/1.0@us/ch" generators = "cmake" """) + cmakelists = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.1) + project(consumer CXX) + include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) + conan_basic_setup(TARGETS) + get_target_property(tmp CONAN_PKG::mylib INTERFACE_LINK_LIBRARIES) + message("Target libs: ${tmp}") + """) client = TestClient() - client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer}) + client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer, + "CMakeLists.txt": cmakelists}) client.run("create conanfile_mylib.py mylib/1.0@us/ch") client.run("install conanfile_consumer.py") + content = load(os.path.join(client.current_folder, "conanbuildinfo.cmake")) self.assertIn("set(CONAN_LIBS lib1 sys1 ${CONAN_LIBS})", content) self.assertIn("set(CONAN_LIBS_MYLIB lib1 sys1)", content) self.assertIn("set(CONAN_SYSTEM_DEPS sys1 ${CONAN_SYSTEM_DEPS})", content) self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB sys1)", content) + + # Check target has libraries and system deps available + client.run_command("cmake .") + self.assertIn("Target libs: lib1;sys1;", client.out) From ec9e6cf8d7096fd507f2af351ba7fcc4f3d0f829 Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 12:56:08 +0200 Subject: [PATCH 08/40] Add CMake find_package tests --- .../cmake_find_package_multi_test.py | 48 +++++++++++++++++++ .../generators/cmake_find_package_test.py | 48 +++++++++++++++++++ 2 files changed, 96 insertions(+) diff --git a/conans/test/functional/generators/cmake_find_package_multi_test.py b/conans/test/functional/generators/cmake_find_package_multi_test.py index a2379bff13f..9b8d7dff36f 100644 --- a/conans/test/functional/generators/cmake_find_package_multi_test.py +++ b/conans/test/functional/generators/cmake_find_package_multi_test.py @@ -76,3 +76,51 @@ def test_native_export_multi(self): self.assertIn("Hello World {}!".format(bt), c.out) self.assertIn("bye World {}!".format(bt), c.out) os.remove(os.path.join(c.current_folder, "example")) + + @unittest.skipUnless(platform.system() != "Windows", "Skip Visual Studio config for build type") + def cmake_find_package_system_deps_test(self): + conanfile = textwrap.dedent(""" + from conans import ConanFile, tools + + class Test(ConanFile): + name = "Test" + version = "0.1" + settings = "build_type" + def package_info(self): + if self.settings.build_type == "Debug": + self.cpp_info.system_deps.append("sys1d") + else: + self.cpp_info.system_deps.append("sys1") + """) + client = TestClient() + client.save({"conanfile.py": conanfile}) + client.run("export .") + + conanfile = textwrap.dedent(""" + [requires] + Test/0.1 + + [generators] + cmake_find_package_multi + """) + cmakelists = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.1) + project(consumer CXX) + set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) + set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) + find_package(Test) + message("Libraries to Link: ${Test_LIBS}") + get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) + message("Target libs: ${tmp}") + """) + client.save({"conanfile.txt": conanfile, "CMakeLists.txt": cmakelists}) + for build_type in ["Release", "Debug"]: + client.run("install conanfile.txt --build missing -s build_type=%s" % build_type) + client.run_command('cmake .. -DCMAKE_BUILD_TYPE={}'.format(build_type)) + client.run_command('cmake --build .') + + library_name = "sys1d" if build_type == "Debug" else "sys1" + self.assertIn("Libraries to Link: %s" % library_name, client.out) + self.assertIn("-- Library %s not found in package, might be system one" % library_name, + client.out) + self.assertIn("Target libs: %s" % library_name, client.out) diff --git a/conans/test/functional/generators/cmake_find_package_test.py b/conans/test/functional/generators/cmake_find_package_test.py index 4e31875afa5..ce5338496f4 100644 --- a/conans/test/functional/generators/cmake_find_package_test.py +++ b/conans/test/functional/generators/cmake_find_package_test.py @@ -1,4 +1,6 @@ +import textwrap import unittest +import six from nose.plugins.attrib import attr @@ -202,3 +204,49 @@ def cmake_find_package_test(self): self.assertIn("Conan: Using autogenerated FindHello0.cmake", client.out) self.assertIn("Conan: Using autogenerated FindHello1.cmake", client.out) self.assertIn("Version1: 0.1", client.out) + + def cmake_find_package_system_deps_test(self): + conanfile = textwrap.dedent(""" + from conans import ConanFile, tools + + class Test(ConanFile): + name = "Test" + version = "0.1" + + def package_info(self): + self.cpp_info.system_deps.append("sys1") + """) + client = TestClient() + client.save({"conanfile.py": conanfile}) + client.run("export .") + + conanfile = textwrap.dedent(""" + from conans import ConanFile, CMake + + class Consumer(ConanFile): + name = "consumer" + version = "0.1" + requires = "Test/0.1" + generators = "cmake_find_package" + exports_sources = "CMakeLists.txt" + settings = "os", "arch", "compiler" + + def build(self): + cmake = CMake(self) + cmake.configure() + """) + cmakelists = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.1) + project(consumer) + find_package(Test) + message("Libraries to Link: ${Test_LIBS}") + message("Version: ${Test_VERSION}") + get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) + message("Target libs: ${tmp}") + """) + client.save({"conanfile.py": conanfile, "CMakeLists.txt": cmakelists}) + client.run("create . user/channel --build missing") + self.assertIn("Libraries to Link: sys1", client.out) + self.assertIn("Version: 0.1", client.out) + self.assertIn("-- Library sys1 not found in package, might be system one", client.out) + self.assertIn("Target libs: sys1", client.out) From b07548367a10424b4cb3edc3a979bbbfc893fc1c Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 13:51:58 +0200 Subject: [PATCH 09/40] Add support for visual studio --- conans/client/generators/visualstudio.py | 4 ++ .../generators/visual_studio_test.py | 44 ++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/conans/client/generators/visualstudio.py b/conans/client/generators/visualstudio.py index c4bbd7bbbfc..d42495f6916 100644 --- a/conans/client/generators/visualstudio.py +++ b/conans/client/generators/visualstudio.py @@ -38,11 +38,13 @@ class VisualStudioGenerator(Generator): $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) + {system_deps}%(AdditionalDependencies) {libs}%(AdditionalDependencies) {linker_flags} %(AdditionalOptions) $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) + {system_deps}%(AdditionalDependencies) {libs}%(AdditionalDependencies) @@ -86,6 +88,8 @@ def has_valid_ext(lib): 'lib_dirs': "".join("%s;" % p for p in build_info.lib_paths), 'libs': "".join(['%s.lib;' % lib if not has_valid_ext(lib) else '%s;' % lib for lib in build_info.libs]), + 'system_deps': "".join(['%s.lib;' % sys_dep if not has_valid_ext(sys_dep) + else '%s;' % sys_dep for sys_dep in build_info.system_deps]), 'definitions': "".join("%s;" % d for d in build_info.defines), 'compiler_flags': " ".join(build_info.cxxflags + build_info.cflags), 'linker_flags': " ".join(build_info.sharedlinkflags), diff --git a/conans/test/functional/generators/visual_studio_test.py b/conans/test/functional/generators/visual_studio_test.py index 2559815b8cb..dfbfbf3c0ec 100644 --- a/conans/test/functional/generators/visual_studio_test.py +++ b/conans/test/functional/generators/visual_studio_test.py @@ -7,6 +7,7 @@ from nose.plugins.attrib import attr +from conans import load from conans.test.utils.tools import TestClient from conans.test.utils.visual_project_files import get_vs_project_files @@ -24,10 +25,10 @@ """ -@attr('slow') -@unittest.skipUnless(platform.system() == "Windows", "Requires MSBuild") class VisualStudioTest(unittest.TestCase): + @attr('slow') + @unittest.skipUnless(platform.system() == "Windows", "Requires MSBuild") def build_vs_project_with_a_test(self): client = TestClient() conanfile = textwrap.dedent(""" @@ -92,3 +93,42 @@ def build(self): client.run("build .") client.run_command("x64\Release\MyProject.exe") self.assertIn("Hello world!!!", client.out) + + def system_deps_test(self): + mylib = textwrap.dedent(""" + import os + from conans import ConanFile + + class MyLib(ConanFile): + settings = "os", "compiler", "arch", "build_type" + + def package_info(self): + self.cpp_info.system_deps = ["sys1"] + self.cpp_info.libs = ["lib1"] + """) + consumer = textwrap.dedent(""" + import os + from conans import ConanFile + + class Consumer(ConanFile): + requires = "mylib/1.0@us/ch" + generators = "visual_studio" + """) + client = TestClient() + client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer}) + client.run("create conanfile_mylib.py mylib/1.0@us/ch") + client.run("install conanfile_consumer.py") + + content = load(os.path.join(client.current_folder, "conanbuildinfo.props")) + expected_content = """ + $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) + sys1.lib;%(AdditionalDependencies) + lib1.lib;%(AdditionalDependencies) + %(AdditionalOptions) + + + $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) + sys1.lib;%(AdditionalDependencies) + lib1.lib;%(AdditionalDependencies) + """ + self.assertIn(expected_content, content.replace("\r", "")) From ba89a0cb6d6d171c350720a0771eacd2bd67da00 Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 13:59:17 +0200 Subject: [PATCH 10/40] Adds json generator --- conans/client/generators/json_generator.py | 1 + .../test/functional/generators/json_test.py | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/conans/client/generators/json_generator.py b/conans/client/generators/json_generator.py index c66c5f5aba5..27bafd4ccb7 100644 --- a/conans/client/generators/json_generator.py +++ b/conans/client/generators/json_generator.py @@ -11,6 +11,7 @@ def serialize_cpp_info(cpp_info): "sysroot", "include_paths", "lib_paths", "bin_paths", "build_paths", "res_paths", "libs", + "system_deps", "defines", "cflags", "cxxflags", "sharedlinkflags", "exelinkflags", "frameworks", "framework_paths" ] diff --git a/conans/test/functional/generators/json_test.py b/conans/test/functional/generators/json_test.py index d10ef8c95c8..825ce0c69f9 100644 --- a/conans/test/functional/generators/json_test.py +++ b/conans/test/functional/generators/json_test.py @@ -117,3 +117,26 @@ def package_info(self): for dupe in dupe_nodes: self.assertEqual(deps_info[dupe], deps_info_debug[dupe]) self.assertEqual(deps_info[dupe], deps_info_release[dupe]) + + def system_deps_test(self): + conanfile = textwrap.dedent(""" + from conans import ConanFile + + class Lib(ConanFile): + settings = "os", "arch" + generators = "json" + + def package_info(self): + self.cpp_info.libs = ["LIB1"] + self.cpp_info.system_deps = ["SYSTEM_DEP1"] + """) + client = TestClient() + client.save({'conanfile.py': conanfile}) + + client.run("create . Hello/0.1@lasote/testing") + client.run("install Hello/0.1@lasote/testing -g json") + + my_json = load(os.path.join(client.current_folder, "conanbuildinfo.json")) + my_json = json.loads(my_json) + self.assertListEqual(my_json["dependencies"][0]["libs"], ["LIB1"]) + self.assertListEqual(my_json["dependencies"][0]["system_deps"], ["SYSTEM_DEP1"]) From 1bab84375359e1df05a466f8db2fce06e5fe5083 Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 15:25:43 +0200 Subject: [PATCH 11/40] fix visual support --- conans/client/generators/visualstudio.py | 1 - conans/test/functional/generators/visual_studio_test.py | 7 +------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/conans/client/generators/visualstudio.py b/conans/client/generators/visualstudio.py index d42495f6916..f3b3b9fdd73 100644 --- a/conans/client/generators/visualstudio.py +++ b/conans/client/generators/visualstudio.py @@ -44,7 +44,6 @@ class VisualStudioGenerator(Generator): $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) - {system_deps}%(AdditionalDependencies) {libs}%(AdditionalDependencies) diff --git a/conans/test/functional/generators/visual_studio_test.py b/conans/test/functional/generators/visual_studio_test.py index dfbfbf3c0ec..14387d6b7b1 100644 --- a/conans/test/functional/generators/visual_studio_test.py +++ b/conans/test/functional/generators/visual_studio_test.py @@ -125,10 +125,5 @@ class Consumer(ConanFile): sys1.lib;%(AdditionalDependencies) lib1.lib;%(AdditionalDependencies) %(AdditionalOptions) - - - $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) - sys1.lib;%(AdditionalDependencies) - lib1.lib;%(AdditionalDependencies) - """ + """ self.assertIn(expected_content, content.replace("\r", "")) From a295b620a8371e632d5215ae852dfe8fc3be68c3 Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 15:26:10 +0200 Subject: [PATCH 12/40] Support text generator --- conans/client/generators/text.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conans/client/generators/text.py b/conans/client/generators/text.py index 954dd34acde..25d2379e2f6 100644 --- a/conans/client/generators/text.py +++ b/conans/client/generators/text.py @@ -22,6 +22,7 @@ def __init__(self, cpp_info): self.build_paths = "\n".join(p.replace("\\", "/") for p in cpp_info.build_paths) self.libs = "\n".join(cpp_info.libs) + self.system_deps = "\n".join(cpp_info.system_deps) self.defines = "\n".join(cpp_info.defines) self.cxxflags = "\n".join(cpp_info.cxxflags) self.cflags = "\n".join(cpp_info.cflags) @@ -143,6 +144,7 @@ def content(self): '[resdirs{dep}{config}]\n{deps.res_paths}\n\n' '[builddirs{dep}{config}]\n{deps.build_paths}\n\n' '[libs{dep}{config}]\n{deps.libs}\n\n' + '[system_deps{dep}{config}]\n{deps.system_deps}\n\n' '[defines{dep}{config}]\n{deps.defines}\n\n' '[cppflags{dep}{config}]\n{deps.cxxflags}\n\n' # Backwards compatibility '[cxxflags{dep}{config}]\n{deps.cxxflags}\n\n' From b7e8156c7fe85730cd83a728cc3359e6ebec7869 Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 15:32:57 +0200 Subject: [PATCH 13/40] support pkg-config --- conans/client/generators/pkg_config.py | 2 +- .../functional/generators/pkg_config_test.py | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/conans/client/generators/pkg_config.py b/conans/client/generators/pkg_config.py index 5901adceb59..2cc5b01ec49 100644 --- a/conans/client/generators/pkg_config.py +++ b/conans/client/generators/pkg_config.py @@ -61,7 +61,7 @@ def single_pc_file_contents(self, cpp_info): lines.append("Description: %s" % description) lines.append("Version: %s" % cpp_info.version) libdirs_flags = ["-L${%s}" % name for name in libdir_vars] - libnames_flags = ["-l%s " % name for name in cpp_info.libs] + libnames_flags = ["-l%s " % name for name in (cpp_info.libs + cpp_info.system_deps)] shared_flags = cpp_info.sharedlinkflags + cpp_info.exelinkflags the_os = (self.conanfile.settings.get_safe("os_build") or self.conanfile.settings.get_safe("os")) diff --git a/conans/test/functional/generators/pkg_config_test.py b/conans/test/functional/generators/pkg_config_test.py index e4288025642..9283dc8347d 100644 --- a/conans/test/functional/generators/pkg_config_test.py +++ b/conans/test/functional/generators/pkg_config_test.py @@ -135,3 +135,25 @@ def package_info(self): self.assertTrue(os.path.exists(pc_path)) pc_content = load(pc_path) self.assertIn("-Wl,-rpath=\"${libdir}\"", pc_content) + + def system_deps_test(self): + conanfile = """ +from conans import ConanFile + +class PkgConfigConan(ConanFile): + name = "MyLib" + version = "0.1" + + def package_info(self): + self.cpp_info.libs = ["mylib1", "mylib2"] + self.cpp_info.system_deps = ["system_dep1", "system_dep2"] +""" + client = TestClient() + client.save({"conanfile.py": conanfile}) + client.run("create .") + client.run("install MyLib/0.1@ -g pkg_config") + + pc_path = os.path.join(client.current_folder, "MyLib.pc") + pc_content = load(pc_path) + self.assertIn("Libs: -L${libdir} -lmylib1 -lmylib2 -lsystem_dep1 -lsystem_dep2 ", + pc_content) From cbd8f2040dde90d5bc6824822b7352cecedf64b9 Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 15:46:48 +0200 Subject: [PATCH 14/40] Add xcode and fix visual studio --- conans/client/generators/visualstudio.py | 2 +- conans/client/generators/xcode.py | 3 ++- conans/test/functional/generators/visual_studio_test.py | 2 +- conans/test/functional/generators/xcode_gcc_vs_test.py | 5 +++++ 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/conans/client/generators/visualstudio.py b/conans/client/generators/visualstudio.py index f3b3b9fdd73..07f72a5bdc1 100644 --- a/conans/client/generators/visualstudio.py +++ b/conans/client/generators/visualstudio.py @@ -38,8 +38,8 @@ class VisualStudioGenerator(Generator): $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) - {system_deps}%(AdditionalDependencies) {libs}%(AdditionalDependencies) + {system_deps}%(AdditionalDependencies) {linker_flags} %(AdditionalOptions) diff --git a/conans/client/generators/xcode.py b/conans/client/generators/xcode.py index 63f4ad21f9c..e99acefb0e8 100644 --- a/conans/client/generators/xcode.py +++ b/conans/client/generators/xcode.py @@ -8,7 +8,7 @@ class XCodeGenerator(Generator): template = ''' HEADER_SEARCH_PATHS = $(inherited) {include_dirs} LIBRARY_SEARCH_PATHS = $(inherited) {lib_dirs} -OTHER_LDFLAGS = $(inherited) {linker_flags} {libs} {frameworks} +OTHER_LDFLAGS = $(inherited) {linker_flags} {libs} {system_deps} {frameworks} GCC_PREPROCESSOR_DEFINITIONS = $(inherited) {definitions} OTHER_CFLAGS = $(inherited) {c_compiler_flags} @@ -31,6 +31,7 @@ def __init__(self, conanfile): self.rootpaths = " ".join('"%s"' % d.replace("\\", "/") for d in deps_cpp_info.rootpaths) self.frameworks = " ".join(format_frameworks(deps_cpp_info.frameworks, compiler="apple-clang")) self.framework_paths = " ".join(deps_cpp_info.framework_paths) + self.system_deps = " ".join(['-l%s' % lib for lib in deps_cpp_info.system_deps]) @property def filename(self): diff --git a/conans/test/functional/generators/visual_studio_test.py b/conans/test/functional/generators/visual_studio_test.py index 14387d6b7b1..e265c969e6d 100644 --- a/conans/test/functional/generators/visual_studio_test.py +++ b/conans/test/functional/generators/visual_studio_test.py @@ -122,8 +122,8 @@ class Consumer(ConanFile): content = load(os.path.join(client.current_folder, "conanbuildinfo.props")) expected_content = """ $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) - sys1.lib;%(AdditionalDependencies) lib1.lib;%(AdditionalDependencies) + sys1.lib;%(AdditionalDependencies) %(AdditionalOptions) """ self.assertIn(expected_content, content.replace("\r", "")) diff --git a/conans/test/functional/generators/xcode_gcc_vs_test.py b/conans/test/functional/generators/xcode_gcc_vs_test.py index 7c713f2e010..edba164d6cc 100644 --- a/conans/test/functional/generators/xcode_gcc_vs_test.py +++ b/conans/test/functional/generators/xcode_gcc_vs_test.py @@ -31,6 +31,7 @@ def package_info(self): self.cpp_info.libs = ["hello"] self.cpp_info.cxxflags = ["-some_cxx_compiler_flag"] self.cpp_info.cflags = ["-some_c_compiler_flag"] + self.cpp_info.system_deps = ["system_dep1"] """}) client.run("export . Hello/0.1@lasote/stable") conanfile_txt = '''[requires] @@ -79,6 +80,7 @@ def package_info(self): definitions = element_content(xmldoc.getElementsByTagName("ConanPreprocessorDefinitions")[0]) lib_dirs = element_content(xmldoc.getElementsByTagName("ConanLibraryDirectories")[0]) libs = element_content(linker.getElementsByTagName("AdditionalDependencies")[0]) + system_deps = element_content(linker.getElementsByTagName("AdditionalDependencies")[1]) package_id = os.listdir(client.cache.package_layout(ref).packages())[0] pref = PackageReference(ref, package_id) @@ -91,6 +93,7 @@ def package_info(self): self.assertIn(expected_lib_dirs, lib_dirs) self.assertEqual("hello.lib;%(AdditionalDependencies)", libs) + self.assertEqual("system_dep1.lib;%(AdditionalDependencies)", system_deps) self.assertEqual("", definitions) self.assertIn(expected_include_dirs, include_dirs) @@ -109,3 +112,5 @@ def package_info(self): self.assertIn('OTHER_CPLUSPLUSFLAGS = $(inherited) %s' % expected_cpp_flags, xcode) self.assertIn('FRAMEWORK_SEARCH_PATHS = $(inherited) "%s"' % package_path.replace("\\", "/"), xcode) + self.assertIn('OTHER_LDFLAGS = $(inherited) -lhello -lsystem_dep1', + xcode) From 07496918da6945e3ae9aac0b00d7ccc57f8a6e7a Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 15:59:46 +0200 Subject: [PATCH 15/40] Add compiler_args generator --- conans/client/generators/compiler_args.py | 1 + .../client/generators/compiler_args_test.py | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/conans/client/generators/compiler_args.py b/conans/client/generators/compiler_args.py index c3ec9f249fb..55324f8eda4 100644 --- a/conans/client/generators/compiler_args.py +++ b/conans/client/generators/compiler_args.py @@ -62,6 +62,7 @@ def content(self): flags.extend(rpath_flags(the_os, self.compiler, self._deps_build_info.lib_paths)) flags.extend(format_library_paths(self._deps_build_info.lib_paths, compiler=self.compiler)) flags.extend(format_libraries(self._deps_build_info.libs, compiler=self.compiler)) + flags.extend(format_libraries(self._deps_build_info.system_deps, compiler=self.compiler)) flags.extend(self._deps_build_info.sharedlinkflags) flags.extend(self._deps_build_info.exelinkflags) flags.extend(self._libcxx_flags()) diff --git a/conans/test/unittests/client/generators/compiler_args_test.py b/conans/test/unittests/client/generators/compiler_args_test.py index a9a41ec6546..eb0478114d6 100644 --- a/conans/test/unittests/client/generators/compiler_args_test.py +++ b/conans/test/unittests/client/generators/compiler_args_test.py @@ -35,7 +35,7 @@ def visual_studio_extensions_test(self): self.assertEqual('-O2 -Ob2 -DNDEBUG -link mylib.lib other.lib', gen.content) @staticmethod - def _get_conanfile(settings, frameworks=False): + def _get_conanfile(settings, frameworks=False, system_deps=False): conan_file = ConanFileMock() conan_file.settings = settings conan_file.source_folder = "my_cache_source_folder" @@ -51,6 +51,8 @@ def _get_conanfile(settings, frameworks=False): cpp_info.cflags.append("c_flag1") cpp_info.cxxflags.append("cxx_flag1") cpp_info.defines.append("mydefine1") + if system_deps: + cpp_info.system_deps.append("system_dep1") if frameworks: cpp_info.frameworks = ["AVFoundation", "VideoToolbox"] cpp_info.framework_paths.extend(['path/to/Frameworks1', 'path/to/Frameworks2']) @@ -154,3 +156,17 @@ def apple_frameworks_test(self): '-Wl,-rpath,"path/to/lib1" -Lpath/to/lib1 -lmylib ' '-framework AVFoundation -framework VideoToolbox ' '-F path/to/Frameworks1 -F path/to/Frameworks2', args.content) + + def system_deps_test(self): + settings = Settings.loads(default_settings_yml) + settings.os = "Linux" + settings.compiler = "gcc" + settings.compiler.version = "8" + settings.arch = "x86_64" + settings.build_type = "Release" + + conan_file = self._get_conanfile(settings, system_deps=True) + args = CompilerArgsGenerator(conan_file) + self.assertEqual('-Dmydefine1 -Ipath/to/include1 cxx_flag1 c_flag1 -m64 -O3 -s -DNDEBUG ' + '-Wl,-rpath="path/to/lib1" -Lpath/to/lib1 -lmylib -lsystem_dep1', + args.content) From 7c76bb0ff0d3405866c2a97569245bf04badb013 Mon Sep 17 00:00:00 2001 From: danimtb Date: Wed, 2 Oct 2019 16:16:46 +0200 Subject: [PATCH 16/40] Add make generator --- conans/client/generators/make.py | 3 ++- conans/test/unittests/client/generators/make_test.py | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/conans/client/generators/make.py b/conans/client/generators/make.py index e778bab10b5..8f1d49f3f1e 100644 --- a/conans/client/generators/make.py +++ b/conans/client/generators/make.py @@ -53,6 +53,7 @@ def create_content_from_dep(self, pkg_name, cpp_info): ("BUILD_DIRS", self.assignment_append, cpp_info.build_paths), ("RES_DIRS", self.assignment_append, cpp_info.res_paths), ("LIBS", self.assignment_append, cpp_info.libs), + ("SYSTEM_DEPS", self.assignment_append, cpp_info.system_deps), ("DEFINES", self.assignment_append, cpp_info.defines), ("CFLAGS", self.assignment_append, cpp_info.cflags), ("CXXFLAGS", self.assignment_append, cpp_info.cxxflags), @@ -108,4 +109,4 @@ def create_makefile_var_value(self, values): def all_dep_vars(): return ["rootpath", "sysroot", "include_dirs", "lib_dirs", "bin_dirs", "build_dirs", "res_dirs", "libs", "defines", "cflags", "cxxflags", "sharedlinkflags", - "exelinkflags", "frameworks", "framework_paths"] + "exelinkflags", "frameworks", "framework_paths", "system_deps"] diff --git a/conans/test/unittests/client/generators/make_test.py b/conans/test/unittests/client/generators/make_test.py index 867207fe8dc..f54846c9ab1 100644 --- a/conans/test/unittests/client/generators/make_test.py +++ b/conans/test/unittests/client/generators/make_test.py @@ -41,6 +41,7 @@ def variables_setup_test(self): cpp_info.exelinkflags = ['-framework QuartzCore'] cpp_info.frameworks = ['AudioUnit'] cpp_info.frameworkdirs = ['SystemFrameworks'] + cpp_info.system_deps = ["system_dep1"] conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("MyPkg2/3.2.3@lasote/stables") cpp_info = CppInfo(tmp_folder2) @@ -54,6 +55,7 @@ def variables_setup_test(self): cpp_info.cxxflags = ['-pthread'] cpp_info.sharedlinkflags = ['-framework AudioFoundation'] cpp_info.exelinkflags = ['-framework VideoToolbox'] + cpp_info.system_deps = ["system_dep2"] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = MakeGenerator(conanfile) content = generator.content @@ -83,6 +85,9 @@ def variables_setup_test(self): CONAN_LIBS_MYPKG1 += \\ libfoo +CONAN_SYSTEM_DEPS_MYPKG1 += \\ +system_dep1 + CONAN_DEFINES_MYPKG1 += \\ MYDEFINE1 @@ -128,6 +133,9 @@ def variables_setup_test(self): CONAN_LIBS_MYPKG2 += \\ libbar +CONAN_SYSTEM_DEPS_MYPKG2 += \\ +system_dep2 + CONAN_DEFINES_MYPKG2 += \\ MYDEFINE2 From 002ddcf805a0c4d348039e3b9ed005c2be4ac598 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 3 Oct 2019 16:59:40 +0200 Subject: [PATCH 17/40] Add system deps variable to cmake find package --- conans/client/generators/cmake_find_package_common.py | 1 + conans/test/functional/generators/cmake_find_package_test.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/conans/client/generators/cmake_find_package_common.py b/conans/client/generators/cmake_find_package_common.py index a970b928abe..64c44f5c491 100644 --- a/conans/client/generators/cmake_find_package_common.py +++ b/conans/client/generators/cmake_find_package_common.py @@ -8,6 +8,7 @@ set({name}_LIBRARIES_TARGETS{build_type_suffix} "") # Will be filled later, if CMake 3 set({name}_LIBRARIES{build_type_suffix} "") # Will be filled later set({name}_LIBS{build_type_suffix} "") # Same as {name}_LIBRARIES +set({name}_SYSTEM_DEPS{build_type_suffix} {deps.system_deps}) {deps.find_frameworks} diff --git a/conans/test/functional/generators/cmake_find_package_test.py b/conans/test/functional/generators/cmake_find_package_test.py index 1c7ba2ab3f0..beda80dec35 100644 --- a/conans/test/functional/generators/cmake_find_package_test.py +++ b/conans/test/functional/generators/cmake_find_package_test.py @@ -242,6 +242,7 @@ def build(self): find_package(Test) message("Libraries to Link: ${Test_LIBS}") message("Version: ${Test_VERSION}") + message("System deps: ${Test_SYSTEM_DEPS}") get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) message("Target libs: ${tmp}") """) @@ -249,6 +250,7 @@ def build(self): client.run("create . user/channel --build missing") self.assertIn("Libraries to Link: sys1", client.out) self.assertIn("Version: 0.1", client.out) + self.assertIn("System deps: sys1", client.out) self.assertIn("-- Library sys1 not found in package, might be system one", client.out) self.assertIn("Target libs: sys1", client.out) From 997368d1b55929aa42b73a6701fad775278f2623 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 3 Oct 2019 17:15:59 +0200 Subject: [PATCH 18/40] check system deps for find package multi --- .../test/functional/generators/cmake_find_package_multi_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conans/test/functional/generators/cmake_find_package_multi_test.py b/conans/test/functional/generators/cmake_find_package_multi_test.py index 9b8d7dff36f..e894bcc0b4c 100644 --- a/conans/test/functional/generators/cmake_find_package_multi_test.py +++ b/conans/test/functional/generators/cmake_find_package_multi_test.py @@ -109,6 +109,7 @@ def package_info(self): set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) find_package(Test) + message("System deps: ${Test_SYSTEM_DEPS}") message("Libraries to Link: ${Test_LIBS}") get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) message("Target libs: ${tmp}") @@ -120,6 +121,7 @@ def package_info(self): client.run_command('cmake --build .') library_name = "sys1d" if build_type == "Debug" else "sys1" + self.assertIn("System deps: %s" % library_name, client.out) self.assertIn("Libraries to Link: %s" % library_name, client.out) self.assertIn("-- Library %s not found in package, might be system one" % library_name, client.out) From 69705b9c7bc344a50be43e2c053fb5f60669c26a Mon Sep 17 00:00:00 2001 From: danimtb Date: Fri, 4 Oct 2019 08:50:46 +0200 Subject: [PATCH 19/40] fix visual test --- .../functional/generators/visual_studio_test.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/conans/test/functional/generators/visual_studio_test.py b/conans/test/functional/generators/visual_studio_test.py index 7d97a709697..24b29cb778a 100644 --- a/conans/test/functional/generators/visual_studio_test.py +++ b/conans/test/functional/generators/visual_studio_test.py @@ -120,10 +120,11 @@ class Consumer(ConanFile): client.run("install conanfile_consumer.py") content = load(os.path.join(client.current_folder, "conanbuildinfo.props")) - expected_content = """ - $(ConanLibraryDirectories)%(AdditionalLibraryDirectories) - lib1.lib;%(AdditionalDependencies) - sys1.lib;%(AdditionalDependencies) - %(AdditionalOptions) - """ - self.assertIn(expected_content, content.replace("\r", "")) + self.assertIn("lib1.lib;", content) + self.assertIn("lib1.lib;", content) + self.assertIn("$(ConanLibraryDirectories)" + "%(AdditionalLibraryDirectories)", content) + self.assertIn("$(ConanLibraries)%(AdditionalDependencies)" + "", content) + self.assertIn("$(ConanSystemDeps)%(AdditionalDependencies)" + "", content) From da6f2af6ec7ca950623732ec18e434fdac8221ca Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 8 Oct 2019 09:44:23 +0200 Subject: [PATCH 20/40] cmake targets --- conans/client/generators/cmake.py | 3 +- conans/client/generators/cmake_common.py | 4 +- .../test/functional/generators/cmake_test.py | 54 ++++++++++++++++++- conans/test/utils/tools.py | 14 +++++ 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/conans/client/generators/cmake.py b/conans/client/generators/cmake.py index d4aed354446..b6796cf1e25 100644 --- a/conans/client/generators/cmake.py +++ b/conans/client/generators/cmake.py @@ -30,7 +30,8 @@ def join_defines(values, prefix=""): self.bin_paths = join_paths(cpp_info.bin_paths) self.build_paths = join_paths(cpp_info.build_paths) self.src_paths = join_paths(cpp_info.src_paths) - self.libs = join_flags(" ", cpp_info.libs + cpp_info.system_deps) + self.libs_and_system_deps = join_flags(" ", cpp_info.libs + cpp_info.system_deps) + self.libs = join_flags(" ", cpp_info.libs) self.system_deps = join_flags(" ", cpp_info.system_deps) framework_paths = join_paths(cpp_info.framework_paths) diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index 8d50a4a946a..a9ba2f499d4 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -84,7 +84,7 @@ def cmake_dependencies(dependencies, build_type=""): set(CONAN_LIB_DIRS{build_type} {deps.lib_paths} ${{CONAN_LIB_DIRS{build_type}}}) set(CONAN_BIN_DIRS{build_type} {deps.bin_paths} ${{CONAN_BIN_DIRS{build_type}}}) set(CONAN_RES_DIRS{build_type} {deps.res_paths} ${{CONAN_RES_DIRS{build_type}}}) -set(CONAN_LIBS{build_type} {deps.libs} ${{CONAN_LIBS{build_type}}}) +set(CONAN_LIBS{build_type} {deps.libs_and_system_deps} ${{CONAN_LIBS{build_type}}}) set(CONAN_SYSTEM_DEPS{build_type} {deps.system_deps} ${{CONAN_SYSTEM_DEPS{build_type}}}) set(CONAN_DEFINES{build_type} {deps.defines} ${{CONAN_DEFINES{build_type}}}) set(CONAN_CMAKE_MODULE_PATH{build_type} {deps.build_paths} ${{CONAN_CMAKE_MODULE_PATH{build_type}}}) @@ -164,7 +164,9 @@ def generate_targets_section(dependencies): for _, dep_info in dependencies: dep_name = dep_info.name use_deps = ["CONAN_PKG::%s" % dependencies_dict[d].name for d in dep_info.public_deps] + use_deps.extend(dep_info.system_deps) deps = "" if not use_deps else " ".join(use_deps) + print("deps:", deps) section.append(_target_template.format(name="CONAN_PKG::%s" % dep_name, deps=deps, uname=dep_name.upper(), pkg_name=dep_name)) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index cd8b131328b..e94e3363e18 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -7,7 +7,8 @@ from conans import load from conans.client.tools import replace_in_file -from conans.test.utils.tools import TestClient +from conans.model.ref import ConanFileReference +from conans.test.utils.tools import TestClient, GenConanfile, TurboTestClient class CMakeGeneratorTest(unittest.TestCase): @@ -136,10 +137,59 @@ class Consumer(ConanFile): content = load(os.path.join(client.current_folder, "conanbuildinfo.cmake")) self.assertIn("set(CONAN_LIBS lib1 sys1 ${CONAN_LIBS})", content) - self.assertIn("set(CONAN_LIBS_MYLIB lib1 sys1)", content) + self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) self.assertIn("set(CONAN_SYSTEM_DEPS sys1 ${CONAN_SYSTEM_DEPS})", content) self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB sys1)", content) # Check target has libraries and system deps available client.run_command("cmake .") self.assertIn("Target libs: lib1;sys1;", client.out) + + def targets_system_deps_test(self): + mylib = GenConanfile().with_package_info(cpp_info={"libs": ["lib1", "lib11"], + "system_deps": ["sys1"]}, + env_info={}) + mylib_ref = ConanFileReference("mylib", "1.0", "us", "ch") + + myotherlib = GenConanfile().with_package_info(cpp_info={"libs": ["lib2"], + "system_deps": ["sys2"]}, + env_info={}).with_require(mylib_ref) + myotherlib_ref = ConanFileReference("myotherlib", "1.0", "us", "ch") + + client = TurboTestClient() + client.create(mylib_ref, mylib) + client.create(myotherlib_ref, myotherlib) + + consumer = textwrap.dedent(""" + import os + from conans import ConanFile, CMake + + class Consumer(ConanFile): + requires = "myotherlib/1.0@us/ch" + generators = "cmake" + settings = "os", "compiler", "arch", "build_type" + exports_sources = ["CMakeLists.txt"] + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + """) + cmakelists = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.1) + project(consumer CXX) + include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) + conan_basic_setup(TARGETS) + get_target_property(ml_tlibs CONAN_PKG::mylib INTERFACE_LINK_LIBRARIES) + get_target_property(mol_tlibs CONAN_PKG::myotherlib INTERFACE_LINK_LIBRARIES) + message("mylib Target libs: ${ml_tlibs}") + message("myotherlib Target libs: ${mol_tlibs}") + """) + client.save({"conanfile.py": consumer, "CMakeLists.txt": cmakelists}) + client.run("create conanfile.py consumer/1.0@us/ch") + self.assertIn("mylib Target libs: " + "lib1;lib11;$<$:;>;$<$:;>;$<$:;>;$<$:;>;sys1", client.out) + self.assertIn("myotherlib Target libs: lib2;$<$:;>;" + "$<$:;>;$<$:;>;$<$:;>;" + "CONAN_PKG::mylib;sys2", client.out) diff --git a/conans/test/utils/tools.py b/conans/test/utils/tools.py index 80eb2ee7a44..536008952ff 100644 --- a/conans/test/utils/tools.py +++ b/conans/test/utils/tools.py @@ -1040,6 +1040,7 @@ def __init__(self): self._revision_mode = None self._package_info = {} self._package_id_lines = [] + self._exports_sources = [] def with_name(self, name): self._name = name @@ -1127,6 +1128,10 @@ def with_package_id(self, line): self._package_id_lines.append(line) return self + def with_exports_sources(self, exports_sources): + self._exports_sources = exports_sources + return self + @property def _name_line(self): if not self._name: @@ -1206,6 +1211,13 @@ def _requires_line(self): tmp = "requires = ({}, )".format(", ".join(items)) return tmp + @property + def _exports_sources_line(self): + if not self._exports_sources: + return "" + line = ", ".join(['"{}"'.format(r) for r in self._exports_sources]) + return "exports_sources = %s" % line + @property def _requirements_method(self): if not self._requirements: @@ -1291,6 +1303,8 @@ def __repr__(self): ret.append(" {}".format(self._generators_line)) if self._requires_line: ret.append(" {}".format(self._requires_line)) + if self._exports_sources_line: + ret.append(" {}".format(self._exports_sources_line)) if self._requirements_method: ret.append(" {}".format(self._requirements_method)) if self._build_requires_line: From 152949487893c4e02a97d8b1b9184e7c19b439d1 Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 14 Oct 2019 10:06:23 +0200 Subject: [PATCH 21/40] some asserts for system deps in cmake --- conans/test/functional/generators/cmake_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index e94e3363e18..1b20a9d1c23 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -187,9 +187,11 @@ def build(self): """) client.save({"conanfile.py": consumer, "CMakeLists.txt": cmakelists}) client.run("create conanfile.py consumer/1.0@us/ch") + self.assertNotIn("Library sys1 not found in package, might be system one", client.out) self.assertIn("mylib Target libs: " "lib1;lib11;$<$:;>;$<$:;>;$<$:;>;$<$:;>;sys1", client.out) + self.assertNotIn("Library sys2 not found in package, might be system one", client.out) self.assertIn("myotherlib Target libs: lib2;$<$:;>;" "$<$:;>;$<$:;>;$<$:;>;" "CONAN_PKG::mylib;sys2", client.out) From 913c10a243da190905f63e8c537f8785e1391ffc Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 14 Oct 2019 10:08:58 +0200 Subject: [PATCH 22/40] use CONAN_SYSTEM_DEPS in targets --- conans/client/generators/cmake_common.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index a9ba2f499d4..62f7394b9f9 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -113,15 +113,20 @@ def cmake_global_vars(deps, build_type=""): _target_template = """ conan_package_library_targets("${{CONAN_LIBS_{uname}}}" "${{CONAN_LIB_DIRS_{uname}}}" - CONAN_PACKAGE_TARGETS_{uname} "{deps}" "" {pkg_name}) + CONAN_PACKAGE_TARGETS_{uname} "${{CONAN_SYSTEM_DEPS_{uname}}} {deps}" + "" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_DEBUG}}" "${{CONAN_LIB_DIRS_{uname}_DEBUG}}" - CONAN_PACKAGE_TARGETS_{uname}_DEBUG "{deps}" "debug" {pkg_name}) + CONAN_PACKAGE_TARGETS_{uname}_DEBUG "${{CONAN_SYSTEM_DEPS_{uname}_DEBUG}} {deps}" + "debug" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_RELEASE}}" "${{CONAN_LIB_DIRS_{uname}_RELEASE}}" - CONAN_PACKAGE_TARGETS_{uname}_RELEASE "{deps}" "release" {pkg_name}) + CONAN_PACKAGE_TARGETS_{uname}_RELEASE "${{CONAN_SYSTEM_DEPS_{uname}_RELEASE}} {deps}" + "release" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_RELWITHDEBINFO}}" "${{CONAN_LIB_DIRS_{uname}_RELWITHDEBINFO}}" - CONAN_PACKAGE_TARGETS_{uname}_RELWITHDEBINFO "{deps}" "relwithdebinfo" {pkg_name}) + CONAN_PACKAGE_TARGETS_{uname}_RELWITHDEBINFO "${{CONAN_SYSTEM_DEPS_{uname}_RELWITHDEBINFO}} {deps}" + "relwithdebinfo" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_MINSIZEREL}}" "${{CONAN_LIB_DIRS_{uname}_MINSIZEREL}}" - CONAN_PACKAGE_TARGETS_{uname}_MINSIZEREL "{deps}" "minsizerel" {pkg_name}) + CONAN_PACKAGE_TARGETS_{uname}_MINSIZEREL "${{CONAN_SYSTEM_DEPS_{uname}_MINSIZEREL}} {deps}" + "minsizerel" {pkg_name}) add_library({name} INTERFACE IMPORTED) @@ -164,9 +169,7 @@ def generate_targets_section(dependencies): for _, dep_info in dependencies: dep_name = dep_info.name use_deps = ["CONAN_PKG::%s" % dependencies_dict[d].name for d in dep_info.public_deps] - use_deps.extend(dep_info.system_deps) deps = "" if not use_deps else " ".join(use_deps) - print("deps:", deps) section.append(_target_template.format(name="CONAN_PKG::%s" % dep_name, deps=deps, uname=dep_name.upper(), pkg_name=dep_name)) From b50e942b84215202eac27091deddf887b94f56d4 Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 14 Oct 2019 18:43:16 +0200 Subject: [PATCH 23/40] update cmake tests --- .../test/functional/generators/cmake_test.py | 57 ++++++++++++++----- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index 1b20a9d1c23..e94f9fb6497 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -108,6 +108,10 @@ def system_deps_test(self): class MyLib(ConanFile): settings = "os", "compiler", "arch", "build_type" + exports_sources = "*" + + def package(self): + self.copy("*", dst="lib") def package_info(self): self.cpp_info.system_deps = ["sys1"] @@ -128,10 +132,12 @@ class Consumer(ConanFile): conan_basic_setup(TARGETS) get_target_property(tmp CONAN_PKG::mylib INTERFACE_LINK_LIBRARIES) message("Target libs: ${tmp}") + get_target_property(tmpp CONAN_LIB::mylib_lib1 INTERFACE_LINK_LIBRARIES) + message("CONAN_LIB::mylib_lib1 system libs: ${tmpp}") """) client = TestClient() client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer, - "CMakeLists.txt": cmakelists}) + "CMakeLists.txt": cmakelists, "lib1.lib": "", "lib1.a": ""}) client.run("create conanfile_mylib.py mylib/1.0@us/ch") client.run("install conanfile_consumer.py") @@ -143,17 +149,22 @@ class Consumer(ConanFile): # Check target has libraries and system deps available client.run_command("cmake .") - self.assertIn("Target libs: lib1;sys1;", client.out) + self.assertIn("Target libs: CONAN_LIB::mylib_lib1;", client.out) + self.assertIn("CONAN_LIB::mylib_lib1 system libs: sys1", client.out) + print(client.out) def targets_system_deps_test(self): mylib = GenConanfile().with_package_info(cpp_info={"libs": ["lib1", "lib11"], "system_deps": ["sys1"]}, - env_info={}) + env_info={})\ + .with_package_file("lib/lib1.lib", " ").with_package_file("lib/lib1.a", " ")\ + .with_package_file("lib/lib11.lib", " ").with_package_file("lib/lib11.a", " ") mylib_ref = ConanFileReference("mylib", "1.0", "us", "ch") myotherlib = GenConanfile().with_package_info(cpp_info={"libs": ["lib2"], "system_deps": ["sys2"]}, - env_info={}).with_require(mylib_ref) + env_info={}).with_require(mylib_ref) \ + .with_package_file("lib/lib2.lib", " ").with_package_file("lib/lib2.a", " ") myotherlib_ref = ConanFileReference("myotherlib", "1.0", "us", "ch") client = TurboTestClient() @@ -179,19 +190,35 @@ def build(self): cmake_minimum_required(VERSION 3.1) project(consumer CXX) include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) - conan_basic_setup(TARGETS) - get_target_property(ml_tlibs CONAN_PKG::mylib INTERFACE_LINK_LIBRARIES) - get_target_property(mol_tlibs CONAN_PKG::myotherlib INTERFACE_LINK_LIBRARIES) - message("mylib Target libs: ${ml_tlibs}") - message("myotherlib Target libs: ${mol_tlibs}") + conan_basic_setup("TARGETS") + + get_target_property(ml_pkg_libs CONAN_PKG::mylib INTERFACE_LINK_LIBRARIES) + message("CONAN_PKG::mylib libs: ${ml_pkg_libs}") + get_target_property(ml_lib1_libs CONAN_LIB::mylib_lib1 INTERFACE_LINK_LIBRARIES) + message("CONAN_LIB::mylib_lib1 libs: ${ml_lib1_libs}") + get_target_property(ml_lib11_libs CONAN_LIB::mylib_lib11 INTERFACE_LINK_LIBRARIES) + message("CONAN_LIB::mylib_lib11 libs: ${ml_lib11_libs}") + + get_target_property(mol_pkg_libs CONAN_PKG::myotherlib INTERFACE_LINK_LIBRARIES) + message("CONAN_PKG::myotherlib libs: ${mol_pkg_libs}") + get_target_property(ml_lib2_libs CONAN_LIB::myotherlib_lib2 INTERFACE_LINK_LIBRARIES) + message("CONAN_LIB::myotherlib_lib2 libs: ${ml_lib2_libs}") """) + client.save({"conanfile.py": consumer, "CMakeLists.txt": cmakelists}) client.run("create conanfile.py consumer/1.0@us/ch") + self.assertNotIn("Library sys1 not found in package, might be system one", client.out) - self.assertIn("mylib Target libs: " - "lib1;lib11;$<$:;>;$<$:;>;$<$:;>;$<$:;>;sys1", client.out) + self.assertIn("CONAN_PKG::mylib libs: " + "CONAN_LIB::mylib_lib1;CONAN_LIB::mylib_lib11;$<$:;>;" + "$<$:;>;$<$:;>;$<$:;>", + client.out) + self.assertIn("CONAN_LIB::mylib_lib1 libs: sys1", client.out) + self.assertIn("CONAN_LIB::mylib_lib11 libs: sys1", client.out) + self.assertNotIn("Library sys2 not found in package, might be system one", client.out) - self.assertIn("myotherlib Target libs: lib2;$<$:;>;" - "$<$:;>;$<$:;>;$<$:;>;" - "CONAN_PKG::mylib;sys2", client.out) + self.assertIn("CONAN_PKG::myotherlib libs: " + "CONAN_LIB::myotherlib_lib2;$<$:;>;" + "$<$:;>;$<$:;>;$<$:;>", + client.out) + self.assertIn("CONAN_LIB::myotherlib_lib2 libs: sys2;CONAN_PKG::mylib", client.out) From 00605c86a6452d5eebe7fd4d7715081a02215508 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 15 Oct 2019 09:01:24 +0200 Subject: [PATCH 24/40] fix test --- conans/test/functional/generators/cmake_multi_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/conans/test/functional/generators/cmake_multi_test.py b/conans/test/functional/generators/cmake_multi_test.py index 875de758df8..65d20d760b0 100644 --- a/conans/test/functional/generators/cmake_multi_test.py +++ b/conans/test/functional/generators/cmake_multi_test.py @@ -303,8 +303,8 @@ class Consumer(ConanFile): self.assertIn("set(CONAN_LIBS_DEBUG sys1d ${CONAN_LIBS_DEBUG})", content) self.assertIn("set(CONAN_LIBS_RELEASE sys1 ${CONAN_LIBS_RELEASE})", content) self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) - self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE sys1)", content) - self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG sys1d)", content) + self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE )", content) + self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG )", content) self.assertIn("set(CONAN_SYSTEM_DEPS ${CONAN_SYSTEM_DEPS})", content) self.assertIn("set(CONAN_SYSTEM_DEPS_DEBUG sys1d ${CONAN_SYSTEM_DEPS_DEBUG})", content) From 8e45753586a3e7cb79edc4439bda69243ed64a0f Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 15 Oct 2019 09:07:59 +0200 Subject: [PATCH 25/40] fix using libs_system_frameworks --- conans/client/generators/cmake.py | 5 +++-- conans/client/generators/cmake_common.py | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/conans/client/generators/cmake.py b/conans/client/generators/cmake.py index b6796cf1e25..8ff062c3d0a 100644 --- a/conans/client/generators/cmake.py +++ b/conans/client/generators/cmake.py @@ -30,7 +30,8 @@ def join_defines(values, prefix=""): self.bin_paths = join_paths(cpp_info.bin_paths) self.build_paths = join_paths(cpp_info.build_paths) self.src_paths = join_paths(cpp_info.src_paths) - self.libs_and_system_deps = join_flags(" ", cpp_info.libs + cpp_info.system_deps) + # libs_system_frameworks == Package libs, system deps and frameworks + self.libs_system_frameworks = join_flags(" ", cpp_info.libs + cpp_info.system_deps) self.libs = join_flags(" ", cpp_info.libs) self.system_deps = join_flags(" ", cpp_info.system_deps) @@ -45,7 +46,7 @@ def join_defines(values, prefix=""): framework=framework, framework_paths=framework_paths) var = '${%s}' % var - self.libs += " " + var + self.libs_system_frameworks += " " + var self.find_frameworks += find_framework self.defines = join_defines(cpp_info.defines, "-D") diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index 62f7394b9f9..64e76069910 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -6,7 +6,7 @@ set(CONAN_RES_DIRS_{dep}{build_type} {deps.res_paths}) set(CONAN_SRC_DIRS_{dep}{build_type} {deps.src_paths}) set(CONAN_BUILD_DIRS_{dep}{build_type} {deps.build_paths}) -set(CONAN_LIBS_{dep}{build_type} {deps.libs}) +set(CONAN_LIBS_{dep}{build_type} {deps.libs_system_frameworks}) set(CONAN_SYSTEM_DEPS_{dep}{build_type} {deps.system_deps}) set(CONAN_DEFINES_{dep}{build_type} {deps.defines}) # COMPILE_DEFINITIONS are equal to CONAN_DEFINES without -D, for targets @@ -84,7 +84,7 @@ def cmake_dependencies(dependencies, build_type=""): set(CONAN_LIB_DIRS{build_type} {deps.lib_paths} ${{CONAN_LIB_DIRS{build_type}}}) set(CONAN_BIN_DIRS{build_type} {deps.bin_paths} ${{CONAN_BIN_DIRS{build_type}}}) set(CONAN_RES_DIRS{build_type} {deps.res_paths} ${{CONAN_RES_DIRS{build_type}}}) -set(CONAN_LIBS{build_type} {deps.libs_and_system_deps} ${{CONAN_LIBS{build_type}}}) +set(CONAN_LIBS{build_type} {deps.libs_system_frameworks} ${{CONAN_LIBS{build_type}}}) set(CONAN_SYSTEM_DEPS{build_type} {deps.system_deps} ${{CONAN_SYSTEM_DEPS{build_type}}}) set(CONAN_DEFINES{build_type} {deps.defines} ${{CONAN_DEFINES{build_type}}}) set(CONAN_CMAKE_MODULE_PATH{build_type} {deps.build_paths} ${{CONAN_CMAKE_MODULE_PATH{build_type}}}) From 4e80185fdf12cffc31168f8e8ba4cdbb27627684 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 15 Oct 2019 10:10:27 +0200 Subject: [PATCH 26/40] bring deps.libs back --- conans/client/generators/cmake_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index 64e76069910..7f2cfeb7936 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -6,7 +6,7 @@ set(CONAN_RES_DIRS_{dep}{build_type} {deps.res_paths}) set(CONAN_SRC_DIRS_{dep}{build_type} {deps.src_paths}) set(CONAN_BUILD_DIRS_{dep}{build_type} {deps.build_paths}) -set(CONAN_LIBS_{dep}{build_type} {deps.libs_system_frameworks}) +set(CONAN_LIBS_{dep}{build_type} {deps.libs}) set(CONAN_SYSTEM_DEPS_{dep}{build_type} {deps.system_deps}) set(CONAN_DEFINES_{dep}{build_type} {deps.defines}) # COMPILE_DEFINITIONS are equal to CONAN_DEFINES without -D, for targets From dd0735cabf03deae86a86fc074da2a16f60cf318 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 15 Oct 2019 10:17:41 +0200 Subject: [PATCH 27/40] Modify frameworks test --- conans/test/unittests/client/generators/cmake_test.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/conans/test/unittests/client/generators/cmake_test.py b/conans/test/unittests/client/generators/cmake_test.py index 6679c2468f2..3d77a10992a 100644 --- a/conans/test/unittests/client/generators/cmake_test.py +++ b/conans/test/unittests/client/generators/cmake_test.py @@ -340,8 +340,7 @@ def apple_frameworks_test(self): '"path/to/Frameworks1"\n\t\t\t"path/to/Frameworks2")', content) self.assertIn('find_library(CONAN_FRAMEWORK_OPENCL OpenCL PATHS ' '"path/to/Frameworks1"\n\t\t\t"path/to/Frameworks2")', content) - self.assertIn('set(CONAN_LIBS_MYPKG ${CONAN_FRAMEWORK_OPENGL} ' - '${CONAN_FRAMEWORK_OPENCL})', content) + self.assertIn('set(CONAN_LIBS_MYPKG )', content) #FIXME: Add a CONAN_FRAMEWORKS_MYPKG self.assertIn('set(CONAN_LIBS ${CONAN_FRAMEWORK_OPENGL} ' '${CONAN_FRAMEWORK_OPENCL} ${CONAN_LIBS})', content) From 79c6ca61013330f91f0b1b6cd77b4808a8612399 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 15 Oct 2019 10:53:17 +0200 Subject: [PATCH 28/40] fix name of linux fake libs --- conans/test/functional/generators/cmake_test.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index e94f9fb6497..3cd6680796e 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -137,7 +137,7 @@ class Consumer(ConanFile): """) client = TestClient() client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer, - "CMakeLists.txt": cmakelists, "lib1.lib": "", "lib1.a": ""}) + "CMakeLists.txt": cmakelists, "lib1.lib": "", "liblib1.a": ""}) client.run("create conanfile_mylib.py mylib/1.0@us/ch") client.run("install conanfile_consumer.py") @@ -157,14 +157,14 @@ def targets_system_deps_test(self): mylib = GenConanfile().with_package_info(cpp_info={"libs": ["lib1", "lib11"], "system_deps": ["sys1"]}, env_info={})\ - .with_package_file("lib/lib1.lib", " ").with_package_file("lib/lib1.a", " ")\ - .with_package_file("lib/lib11.lib", " ").with_package_file("lib/lib11.a", " ") + .with_package_file("lib/lib1.lib", " ").with_package_file("lib/liblib1.a", " ")\ + .with_package_file("lib/lib11.lib", " ").with_package_file("lib/liblib11.a", " ") mylib_ref = ConanFileReference("mylib", "1.0", "us", "ch") myotherlib = GenConanfile().with_package_info(cpp_info={"libs": ["lib2"], "system_deps": ["sys2"]}, env_info={}).with_require(mylib_ref) \ - .with_package_file("lib/lib2.lib", " ").with_package_file("lib/lib2.a", " ") + .with_package_file("lib/lib2.lib", " ").with_package_file("lib/liblib2.a", " ") myotherlib_ref = ConanFileReference("myotherlib", "1.0", "us", "ch") client = TurboTestClient() From bafc3eb3379e3e2051297bc4c49c06f13f805e3d Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 15 Oct 2019 12:07:48 +0200 Subject: [PATCH 29/40] Rename system_deps to system_libs --- conans/client/generators/cmake.py | 4 ++-- conans/client/generators/cmake_common.py | 14 ++++++------ .../generators/cmake_find_package_common.py | 2 +- conans/client/generators/compiler_args.py | 2 +- conans/client/generators/json_generator.py | 2 +- conans/client/generators/make.py | 4 ++-- conans/client/generators/pkg_config.py | 2 +- conans/client/generators/text.py | 4 ++-- conans/client/generators/visualstudio.py | 4 ++-- conans/client/generators/xcode.py | 4 ++-- conans/model/build_info.py | 4 ++-- .../cmake_find_package_multi_test.py | 8 +++---- .../generators/cmake_find_package_test.py | 6 ++--- .../functional/generators/cmake_multi_test.py | 21 +++++++++--------- .../test/functional/generators/cmake_test.py | 14 ++++++------ .../test/functional/generators/json_test.py | 6 ++--- .../functional/generators/pkg_config_test.py | 6 ++--- .../generators/visual_studio_test.py | 4 ++-- .../generators/xcode_gcc_vs_test.py | 8 +++---- conans/test/integration/package_info_test.py | 22 +++++++++---------- .../client/generators/compiler_args_test.py | 12 +++++----- .../unittests/client/generators/make_test.py | 12 +++++----- .../test/unittests/model/build_info_test.py | 12 +++++----- 23 files changed, 88 insertions(+), 89 deletions(-) diff --git a/conans/client/generators/cmake.py b/conans/client/generators/cmake.py index 8ff062c3d0a..fb8293eae65 100644 --- a/conans/client/generators/cmake.py +++ b/conans/client/generators/cmake.py @@ -31,9 +31,9 @@ def join_defines(values, prefix=""): self.build_paths = join_paths(cpp_info.build_paths) self.src_paths = join_paths(cpp_info.src_paths) # libs_system_frameworks == Package libs, system deps and frameworks - self.libs_system_frameworks = join_flags(" ", cpp_info.libs + cpp_info.system_deps) + self.libs_system_frameworks = join_flags(" ", cpp_info.libs + cpp_info.system_libs) self.libs = join_flags(" ", cpp_info.libs) - self.system_deps = join_flags(" ", cpp_info.system_deps) + self.system_libs = join_flags(" ", cpp_info.system_libs) framework_paths = join_paths(cpp_info.framework_paths) self.find_frameworks = "" diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index 7f2cfeb7936..7f29bcc4b02 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -7,7 +7,7 @@ set(CONAN_SRC_DIRS_{dep}{build_type} {deps.src_paths}) set(CONAN_BUILD_DIRS_{dep}{build_type} {deps.build_paths}) set(CONAN_LIBS_{dep}{build_type} {deps.libs}) -set(CONAN_SYSTEM_DEPS_{dep}{build_type} {deps.system_deps}) +set(CONAN_SYSTEM_LIBS_{dep}{build_type} {deps.system_libs}) set(CONAN_DEFINES_{dep}{build_type} {deps.defines}) # COMPILE_DEFINITIONS are equal to CONAN_DEFINES without -D, for targets set(CONAN_COMPILE_DEFINITIONS_{dep}{build_type} {deps.compile_definitions}) @@ -85,7 +85,7 @@ def cmake_dependencies(dependencies, build_type=""): set(CONAN_BIN_DIRS{build_type} {deps.bin_paths} ${{CONAN_BIN_DIRS{build_type}}}) set(CONAN_RES_DIRS{build_type} {deps.res_paths} ${{CONAN_RES_DIRS{build_type}}}) set(CONAN_LIBS{build_type} {deps.libs_system_frameworks} ${{CONAN_LIBS{build_type}}}) -set(CONAN_SYSTEM_DEPS{build_type} {deps.system_deps} ${{CONAN_SYSTEM_DEPS{build_type}}}) +set(CONAN_SYSTEM_LIBS{build_type} {deps.system_libs} ${{CONAN_SYSTEM_LIBS{build_type}}}) set(CONAN_DEFINES{build_type} {deps.defines} ${{CONAN_DEFINES{build_type}}}) set(CONAN_CMAKE_MODULE_PATH{build_type} {deps.build_paths} ${{CONAN_CMAKE_MODULE_PATH{build_type}}}) @@ -113,19 +113,19 @@ def cmake_global_vars(deps, build_type=""): _target_template = """ conan_package_library_targets("${{CONAN_LIBS_{uname}}}" "${{CONAN_LIB_DIRS_{uname}}}" - CONAN_PACKAGE_TARGETS_{uname} "${{CONAN_SYSTEM_DEPS_{uname}}} {deps}" + CONAN_PACKAGE_TARGETS_{uname} "${{CONAN_SYSTEM_LIBS_{uname}}} {deps}" "" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_DEBUG}}" "${{CONAN_LIB_DIRS_{uname}_DEBUG}}" - CONAN_PACKAGE_TARGETS_{uname}_DEBUG "${{CONAN_SYSTEM_DEPS_{uname}_DEBUG}} {deps}" + CONAN_PACKAGE_TARGETS_{uname}_DEBUG "${{CONAN_SYSTEM_LIBS_{uname}_DEBUG}} {deps}" "debug" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_RELEASE}}" "${{CONAN_LIB_DIRS_{uname}_RELEASE}}" - CONAN_PACKAGE_TARGETS_{uname}_RELEASE "${{CONAN_SYSTEM_DEPS_{uname}_RELEASE}} {deps}" + CONAN_PACKAGE_TARGETS_{uname}_RELEASE "${{CONAN_SYSTEM_LIBS_{uname}_RELEASE}} {deps}" "release" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_RELWITHDEBINFO}}" "${{CONAN_LIB_DIRS_{uname}_RELWITHDEBINFO}}" - CONAN_PACKAGE_TARGETS_{uname}_RELWITHDEBINFO "${{CONAN_SYSTEM_DEPS_{uname}_RELWITHDEBINFO}} {deps}" + CONAN_PACKAGE_TARGETS_{uname}_RELWITHDEBINFO "${{CONAN_SYSTEM_LIBS_{uname}_RELWITHDEBINFO}} {deps}" "relwithdebinfo" {pkg_name}) conan_package_library_targets("${{CONAN_LIBS_{uname}_MINSIZEREL}}" "${{CONAN_LIB_DIRS_{uname}_MINSIZEREL}}" - CONAN_PACKAGE_TARGETS_{uname}_MINSIZEREL "${{CONAN_SYSTEM_DEPS_{uname}_MINSIZEREL}} {deps}" + CONAN_PACKAGE_TARGETS_{uname}_MINSIZEREL "${{CONAN_SYSTEM_LIBS_{uname}_MINSIZEREL}} {deps}" "minsizerel" {pkg_name}) add_library({name} INTERFACE IMPORTED) diff --git a/conans/client/generators/cmake_find_package_common.py b/conans/client/generators/cmake_find_package_common.py index 64c44f5c491..8f0d537a452 100644 --- a/conans/client/generators/cmake_find_package_common.py +++ b/conans/client/generators/cmake_find_package_common.py @@ -8,7 +8,7 @@ set({name}_LIBRARIES_TARGETS{build_type_suffix} "") # Will be filled later, if CMake 3 set({name}_LIBRARIES{build_type_suffix} "") # Will be filled later set({name}_LIBS{build_type_suffix} "") # Same as {name}_LIBRARIES -set({name}_SYSTEM_DEPS{build_type_suffix} {deps.system_deps}) +set({name}_SYSTEM_LIBS{build_type_suffix} {deps.system_libs}) {deps.find_frameworks} diff --git a/conans/client/generators/compiler_args.py b/conans/client/generators/compiler_args.py index 55324f8eda4..8706964e21c 100644 --- a/conans/client/generators/compiler_args.py +++ b/conans/client/generators/compiler_args.py @@ -62,7 +62,7 @@ def content(self): flags.extend(rpath_flags(the_os, self.compiler, self._deps_build_info.lib_paths)) flags.extend(format_library_paths(self._deps_build_info.lib_paths, compiler=self.compiler)) flags.extend(format_libraries(self._deps_build_info.libs, compiler=self.compiler)) - flags.extend(format_libraries(self._deps_build_info.system_deps, compiler=self.compiler)) + flags.extend(format_libraries(self._deps_build_info.system_libs, compiler=self.compiler)) flags.extend(self._deps_build_info.sharedlinkflags) flags.extend(self._deps_build_info.exelinkflags) flags.extend(self._libcxx_flags()) diff --git a/conans/client/generators/json_generator.py b/conans/client/generators/json_generator.py index 27bafd4ccb7..659c857eb8b 100644 --- a/conans/client/generators/json_generator.py +++ b/conans/client/generators/json_generator.py @@ -11,7 +11,7 @@ def serialize_cpp_info(cpp_info): "sysroot", "include_paths", "lib_paths", "bin_paths", "build_paths", "res_paths", "libs", - "system_deps", + "system_libs", "defines", "cflags", "cxxflags", "sharedlinkflags", "exelinkflags", "frameworks", "framework_paths" ] diff --git a/conans/client/generators/make.py b/conans/client/generators/make.py index 8f1d49f3f1e..99d1b8f5eb0 100644 --- a/conans/client/generators/make.py +++ b/conans/client/generators/make.py @@ -53,7 +53,7 @@ def create_content_from_dep(self, pkg_name, cpp_info): ("BUILD_DIRS", self.assignment_append, cpp_info.build_paths), ("RES_DIRS", self.assignment_append, cpp_info.res_paths), ("LIBS", self.assignment_append, cpp_info.libs), - ("SYSTEM_DEPS", self.assignment_append, cpp_info.system_deps), + ("SYSTEM_LIBS", self.assignment_append, cpp_info.system_libs), ("DEFINES", self.assignment_append, cpp_info.defines), ("CFLAGS", self.assignment_append, cpp_info.cflags), ("CXXFLAGS", self.assignment_append, cpp_info.cxxflags), @@ -109,4 +109,4 @@ def create_makefile_var_value(self, values): def all_dep_vars(): return ["rootpath", "sysroot", "include_dirs", "lib_dirs", "bin_dirs", "build_dirs", "res_dirs", "libs", "defines", "cflags", "cxxflags", "sharedlinkflags", - "exelinkflags", "frameworks", "framework_paths", "system_deps"] + "exelinkflags", "frameworks", "framework_paths", "system_libs"] diff --git a/conans/client/generators/pkg_config.py b/conans/client/generators/pkg_config.py index 2cc5b01ec49..066b4cb34fd 100644 --- a/conans/client/generators/pkg_config.py +++ b/conans/client/generators/pkg_config.py @@ -61,7 +61,7 @@ def single_pc_file_contents(self, cpp_info): lines.append("Description: %s" % description) lines.append("Version: %s" % cpp_info.version) libdirs_flags = ["-L${%s}" % name for name in libdir_vars] - libnames_flags = ["-l%s " % name for name in (cpp_info.libs + cpp_info.system_deps)] + libnames_flags = ["-l%s " % name for name in (cpp_info.libs + cpp_info.system_libs)] shared_flags = cpp_info.sharedlinkflags + cpp_info.exelinkflags the_os = (self.conanfile.settings.get_safe("os_build") or self.conanfile.settings.get_safe("os")) diff --git a/conans/client/generators/text.py b/conans/client/generators/text.py index 25d2379e2f6..e33bd688930 100644 --- a/conans/client/generators/text.py +++ b/conans/client/generators/text.py @@ -22,7 +22,7 @@ def __init__(self, cpp_info): self.build_paths = "\n".join(p.replace("\\", "/") for p in cpp_info.build_paths) self.libs = "\n".join(cpp_info.libs) - self.system_deps = "\n".join(cpp_info.system_deps) + self.system_libs = "\n".join(cpp_info.system_libs) self.defines = "\n".join(cpp_info.defines) self.cxxflags = "\n".join(cpp_info.cxxflags) self.cflags = "\n".join(cpp_info.cflags) @@ -144,7 +144,7 @@ def content(self): '[resdirs{dep}{config}]\n{deps.res_paths}\n\n' '[builddirs{dep}{config}]\n{deps.build_paths}\n\n' '[libs{dep}{config}]\n{deps.libs}\n\n' - '[system_deps{dep}{config}]\n{deps.system_deps}\n\n' + '[system_libs{dep}{config}]\n{deps.system_libs}\n\n' '[defines{dep}{config}]\n{deps.defines}\n\n' '[cppflags{dep}{config}]\n{deps.cxxflags}\n\n' # Backwards compatibility '[cxxflags{dep}{config}]\n{deps.cxxflags}\n\n' diff --git a/conans/client/generators/visualstudio.py b/conans/client/generators/visualstudio.py index de090499ace..1a47bfdb7c3 100644 --- a/conans/client/generators/visualstudio.py +++ b/conans/client/generators/visualstudio.py @@ -86,8 +86,8 @@ def has_valid_ext(lib): 'lib_dirs': "".join("%s;" % p for p in build_info.lib_paths), 'libs': "".join(['%s.lib;' % lib if not has_valid_ext(lib) else '%s;' % lib for lib in build_info.libs]), - 'system_deps': "".join(['%s.lib;' % sys_dep if not has_valid_ext(sys_dep) - else '%s;' % sys_dep for sys_dep in build_info.system_deps]), + 'system_libs': "".join(['%s.lib;' % sys_dep if not has_valid_ext(sys_dep) + else '%s;' % sys_dep for sys_dep in build_info.system_libs]), 'definitions': "".join("%s;" % d for d in build_info.defines), 'compiler_flags': " ".join(build_info.cxxflags + build_info.cflags), 'linker_flags': " ".join(build_info.sharedlinkflags), diff --git a/conans/client/generators/xcode.py b/conans/client/generators/xcode.py index e99acefb0e8..4f48a704c61 100644 --- a/conans/client/generators/xcode.py +++ b/conans/client/generators/xcode.py @@ -8,7 +8,7 @@ class XCodeGenerator(Generator): template = ''' HEADER_SEARCH_PATHS = $(inherited) {include_dirs} LIBRARY_SEARCH_PATHS = $(inherited) {lib_dirs} -OTHER_LDFLAGS = $(inherited) {linker_flags} {libs} {system_deps} {frameworks} +OTHER_LDFLAGS = $(inherited) {linker_flags} {libs} {system_libs} {frameworks} GCC_PREPROCESSOR_DEFINITIONS = $(inherited) {definitions} OTHER_CFLAGS = $(inherited) {c_compiler_flags} @@ -31,7 +31,7 @@ def __init__(self, conanfile): self.rootpaths = " ".join('"%s"' % d.replace("\\", "/") for d in deps_cpp_info.rootpaths) self.frameworks = " ".join(format_frameworks(deps_cpp_info.frameworks, compiler="apple-clang")) self.framework_paths = " ".join(deps_cpp_info.framework_paths) - self.system_deps = " ".join(['-l%s' % lib for lib in deps_cpp_info.system_deps]) + self.system_libs = " ".join(['-l%s' % lib for lib in deps_cpp_info.system_libs]) @property def filename(self): diff --git a/conans/model/build_info.py b/conans/model/build_info.py index cfef657c9e4..d2d3098b919 100644 --- a/conans/model/build_info.py +++ b/conans/model/build_info.py @@ -19,7 +19,7 @@ class _CppInfo(object): """ def __init__(self): self.name = None - self.system_deps = [] # Ordered list of system dependencies + self.system_libs = [] # Ordered list of system libraries self.includedirs = [] # Ordered list of include paths self.srcdirs = [] # Ordered list of source paths self.libdirs = [] # Directories to find libraries @@ -156,7 +156,7 @@ def update(self, dep_cpp_info): def merge_lists(seq1, seq2): return [s for s in seq1 if s not in seq2] + seq2 - self.system_deps = merge_lists(self.system_deps, dep_cpp_info.system_deps) + self.system_libs = merge_lists(self.system_libs, dep_cpp_info.system_libs) self.includedirs = merge_lists(self.includedirs, dep_cpp_info.include_paths) self.srcdirs = merge_lists(self.srcdirs, dep_cpp_info.src_paths) self.libdirs = merge_lists(self.libdirs, dep_cpp_info.lib_paths) diff --git a/conans/test/functional/generators/cmake_find_package_multi_test.py b/conans/test/functional/generators/cmake_find_package_multi_test.py index e894bcc0b4c..fb8bdce94e2 100644 --- a/conans/test/functional/generators/cmake_find_package_multi_test.py +++ b/conans/test/functional/generators/cmake_find_package_multi_test.py @@ -78,7 +78,7 @@ def test_native_export_multi(self): os.remove(os.path.join(c.current_folder, "example")) @unittest.skipUnless(platform.system() != "Windows", "Skip Visual Studio config for build type") - def cmake_find_package_system_deps_test(self): + def cmake_find_package_system_libs_test(self): conanfile = textwrap.dedent(""" from conans import ConanFile, tools @@ -88,9 +88,9 @@ class Test(ConanFile): settings = "build_type" def package_info(self): if self.settings.build_type == "Debug": - self.cpp_info.system_deps.append("sys1d") + self.cpp_info.system_libs.append("sys1d") else: - self.cpp_info.system_deps.append("sys1") + self.cpp_info.system_libs.append("sys1") """) client = TestClient() client.save({"conanfile.py": conanfile}) @@ -109,7 +109,7 @@ def package_info(self): set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) find_package(Test) - message("System deps: ${Test_SYSTEM_DEPS}") + message("System libs: ${Test_SYSTEM_LIBS}") message("Libraries to Link: ${Test_LIBS}") get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) message("Target libs: ${tmp}") diff --git a/conans/test/functional/generators/cmake_find_package_test.py b/conans/test/functional/generators/cmake_find_package_test.py index beda80dec35..1ef9d736702 100644 --- a/conans/test/functional/generators/cmake_find_package_test.py +++ b/conans/test/functional/generators/cmake_find_package_test.py @@ -206,7 +206,7 @@ def cmake_find_package_test(self): self.assertIn("Conan: Using autogenerated FindHello1.cmake", client.out) self.assertIn("Version1: 0.1", client.out) - def cmake_find_package_system_deps_test(self): + def cmake_find_package_system_libs_test(self): conanfile = textwrap.dedent(""" from conans import ConanFile, tools @@ -215,7 +215,7 @@ class Test(ConanFile): version = "0.1" def package_info(self): - self.cpp_info.system_deps.append("sys1") + self.cpp_info.system_libs.append("sys1") """) client = TestClient() client.save({"conanfile.py": conanfile}) @@ -242,7 +242,7 @@ def build(self): find_package(Test) message("Libraries to Link: ${Test_LIBS}") message("Version: ${Test_VERSION}") - message("System deps: ${Test_SYSTEM_DEPS}") + message("System deps: ${Test_SYSTEM_LIBS}") get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) message("Target libs: ${tmp}") """) diff --git a/conans/test/functional/generators/cmake_multi_test.py b/conans/test/functional/generators/cmake_multi_test.py index 65d20d760b0..0a34b2cc7f5 100644 --- a/conans/test/functional/generators/cmake_multi_test.py +++ b/conans/test/functional/generators/cmake_multi_test.py @@ -272,9 +272,9 @@ def cmake_multi_test(self): self.assertIn("Hello Release Hello0", client.out) -class CMakeMultiSystemDepsTest(unittest.TestCase): +class CMakeMultiSystemLibsTest(unittest.TestCase): - def system_deps_test(self): + def system_libs_test(self): mylib = textwrap.dedent(""" import os from conans import ConanFile @@ -282,8 +282,8 @@ def system_deps_test(self): class MyLib(ConanFile): def package_info(self): - self.cpp_info.debug.system_deps = ["sys1d"] - self.cpp_info.release.system_deps = ["sys1"] + self.cpp_info.debug.system_libs = ["sys1d"] + self.cpp_info.release.system_libs = ["sys1"] self.cpp_info.libs = ["lib1"] """) consumer = textwrap.dedent(""" @@ -306,12 +306,12 @@ class Consumer(ConanFile): self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE )", content) self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG )", content) - self.assertIn("set(CONAN_SYSTEM_DEPS ${CONAN_SYSTEM_DEPS})", content) - self.assertIn("set(CONAN_SYSTEM_DEPS_DEBUG sys1d ${CONAN_SYSTEM_DEPS_DEBUG})", content) - self.assertIn("set(CONAN_SYSTEM_DEPS_RELEASE sys1 ${CONAN_SYSTEM_DEPS_RELEASE})", content) - self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB )", content) - self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB_RELEASE sys1)", content) - self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB_DEBUG sys1d)", content) + self.assertIn("set(CONAN_SYSTEM_LIBS ${CONAN_SYSTEM_LIBS})", content) + self.assertIn("set(CONAN_SYSTEM_LIBS_DEBUG sys1d ${CONAN_SYSTEM_LIBS_DEBUG})", content) + self.assertIn("set(CONAN_SYSTEM_LIBS_RELEASE sys1 ${CONAN_SYSTEM_LIBS_RELEASE})", content) + self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB )", content) + self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB_RELEASE sys1)", content) + self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB_DEBUG sys1d)", content) class CMakeMultiSyntaxTest(unittest.TestCase): @@ -347,4 +347,3 @@ def conan_basic_setup_output_dirs_warning_test(self): self.assertTrue("CMake Warning at conanbuildinfo_multi.cmake", self.client.out) self.assertTrue("Conan: NO_OUTPUT_DIRS has no effect with cmake_multi generator", self.client.out) - diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index 3cd6680796e..bc6e2d6295d 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -101,7 +101,7 @@ def no_output_test(self): self.assertNotIn("Conan: Adjusting default RPATHs Conan policies", client.out) self.assertNotIn("Conan: Adjusting language standard", client.out) - def system_deps_test(self): + def system_libs_test(self): mylib = textwrap.dedent(""" import os from conans import ConanFile @@ -114,7 +114,7 @@ def package(self): self.copy("*", dst="lib") def package_info(self): - self.cpp_info.system_deps = ["sys1"] + self.cpp_info.system_libs = ["sys1"] self.cpp_info.libs = ["lib1"] """) consumer = textwrap.dedent(""" @@ -144,8 +144,8 @@ class Consumer(ConanFile): content = load(os.path.join(client.current_folder, "conanbuildinfo.cmake")) self.assertIn("set(CONAN_LIBS lib1 sys1 ${CONAN_LIBS})", content) self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) - self.assertIn("set(CONAN_SYSTEM_DEPS sys1 ${CONAN_SYSTEM_DEPS})", content) - self.assertIn("set(CONAN_SYSTEM_DEPS_MYLIB sys1)", content) + self.assertIn("set(CONAN_SYSTEM_LIBS sys1 ${CONAN_SYSTEM_LIBS})", content) + self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB sys1)", content) # Check target has libraries and system deps available client.run_command("cmake .") @@ -153,16 +153,16 @@ class Consumer(ConanFile): self.assertIn("CONAN_LIB::mylib_lib1 system libs: sys1", client.out) print(client.out) - def targets_system_deps_test(self): + def targets_system_libs_test(self): mylib = GenConanfile().with_package_info(cpp_info={"libs": ["lib1", "lib11"], - "system_deps": ["sys1"]}, + "system_libs": ["sys1"]}, env_info={})\ .with_package_file("lib/lib1.lib", " ").with_package_file("lib/liblib1.a", " ")\ .with_package_file("lib/lib11.lib", " ").with_package_file("lib/liblib11.a", " ") mylib_ref = ConanFileReference("mylib", "1.0", "us", "ch") myotherlib = GenConanfile().with_package_info(cpp_info={"libs": ["lib2"], - "system_deps": ["sys2"]}, + "system_libs": ["sys2"]}, env_info={}).with_require(mylib_ref) \ .with_package_file("lib/lib2.lib", " ").with_package_file("lib/liblib2.a", " ") myotherlib_ref = ConanFileReference("myotherlib", "1.0", "us", "ch") diff --git a/conans/test/functional/generators/json_test.py b/conans/test/functional/generators/json_test.py index 825ce0c69f9..98cf9d69e7a 100644 --- a/conans/test/functional/generators/json_test.py +++ b/conans/test/functional/generators/json_test.py @@ -118,7 +118,7 @@ def package_info(self): self.assertEqual(deps_info[dupe], deps_info_debug[dupe]) self.assertEqual(deps_info[dupe], deps_info_release[dupe]) - def system_deps_test(self): + def system_libs_test(self): conanfile = textwrap.dedent(""" from conans import ConanFile @@ -128,7 +128,7 @@ class Lib(ConanFile): def package_info(self): self.cpp_info.libs = ["LIB1"] - self.cpp_info.system_deps = ["SYSTEM_DEP1"] + self.cpp_info.system_libs = ["SYSTEM_LIB1"] """) client = TestClient() client.save({'conanfile.py': conanfile}) @@ -139,4 +139,4 @@ def package_info(self): my_json = load(os.path.join(client.current_folder, "conanbuildinfo.json")) my_json = json.loads(my_json) self.assertListEqual(my_json["dependencies"][0]["libs"], ["LIB1"]) - self.assertListEqual(my_json["dependencies"][0]["system_deps"], ["SYSTEM_DEP1"]) + self.assertListEqual(my_json["dependencies"][0]["system_libs"], ["SYSTEM_LIB1"]) diff --git a/conans/test/functional/generators/pkg_config_test.py b/conans/test/functional/generators/pkg_config_test.py index 9283dc8347d..84b21de20c9 100644 --- a/conans/test/functional/generators/pkg_config_test.py +++ b/conans/test/functional/generators/pkg_config_test.py @@ -136,7 +136,7 @@ def package_info(self): pc_content = load(pc_path) self.assertIn("-Wl,-rpath=\"${libdir}\"", pc_content) - def system_deps_test(self): + def system_libs_test(self): conanfile = """ from conans import ConanFile @@ -146,7 +146,7 @@ class PkgConfigConan(ConanFile): def package_info(self): self.cpp_info.libs = ["mylib1", "mylib2"] - self.cpp_info.system_deps = ["system_dep1", "system_dep2"] + self.cpp_info.system_libs = ["system_lib1", "system_lib2"] """ client = TestClient() client.save({"conanfile.py": conanfile}) @@ -155,5 +155,5 @@ def package_info(self): pc_path = os.path.join(client.current_folder, "MyLib.pc") pc_content = load(pc_path) - self.assertIn("Libs: -L${libdir} -lmylib1 -lmylib2 -lsystem_dep1 -lsystem_dep2 ", + self.assertIn("Libs: -L${libdir} -lmylib1 -lmylib2 -lsystem_lib1 -lsystem_lib2 ", pc_content) diff --git a/conans/test/functional/generators/visual_studio_test.py b/conans/test/functional/generators/visual_studio_test.py index 24b29cb778a..009bf515429 100644 --- a/conans/test/functional/generators/visual_studio_test.py +++ b/conans/test/functional/generators/visual_studio_test.py @@ -94,7 +94,7 @@ def build(self): client.run_command(r"x64\Release\MyProject.exe") self.assertIn("Hello world!!!", client.out) - def system_deps_test(self): + def system_libs_test(self): mylib = textwrap.dedent(""" import os from conans import ConanFile @@ -103,7 +103,7 @@ class MyLib(ConanFile): settings = "os", "compiler", "arch", "build_type" def package_info(self): - self.cpp_info.system_deps = ["sys1"] + self.cpp_info.system_libs = ["sys1"] self.cpp_info.libs = ["lib1"] """) consumer = textwrap.dedent(""" diff --git a/conans/test/functional/generators/xcode_gcc_vs_test.py b/conans/test/functional/generators/xcode_gcc_vs_test.py index b9102902d46..7c3edc8f336 100644 --- a/conans/test/functional/generators/xcode_gcc_vs_test.py +++ b/conans/test/functional/generators/xcode_gcc_vs_test.py @@ -26,7 +26,7 @@ def package_info(self): self.cpp_info.libs = ["hello"] self.cpp_info.cxxflags = ["-some_cxx_compiler_flag"] self.cpp_info.cflags = ["-some_c_compiler_flag"] - self.cpp_info.system_deps = ["system_dep1"] + self.cpp_info.system_libs = ["system_lib1"] """}) client.run("export . Hello/0.1@lasote/stable") conanfile_txt = '''[requires] @@ -78,7 +78,7 @@ def element_content(node): definitions = element_content(xmldoc.getElementsByTagName("ConanPreprocessorDefinitions")[0]) lib_dirs = element_content(xmldoc.getElementsByTagName("ConanLibraryDirectories")[0]) libs = element_content(linker.getElementsByTagName("AdditionalDependencies")[0]) - system_deps = element_content(linker.getElementsByTagName("AdditionalDependencies")[1]) + system_libs = element_content(linker.getElementsByTagName("AdditionalDependencies")[1]) package_id = os.listdir(client.cache.package_layout(ref).packages())[0] pref = PackageReference(ref, package_id) @@ -91,7 +91,7 @@ def element_content(node): self.assertIn(expected_lib_dirs, lib_dirs) self.assertEqual("$(ConanLibraries)%(AdditionalDependencies)", libs) - self.assertEqual("$(ConanSystemDeps)%(AdditionalDependencies)", system_deps) + self.assertEqual("$(ConanSystemDeps)%(AdditionalDependencies)", system_libs) self.assertEqual("", definitions) self.assertIn(expected_include_dirs, include_dirs) @@ -110,5 +110,5 @@ def element_content(node): self.assertIn('OTHER_CPLUSPLUSFLAGS = $(inherited) %s' % expected_cpp_flags, xcode) self.assertIn('FRAMEWORK_SEARCH_PATHS = $(inherited) "%s"' % package_path.replace("\\", "/"), xcode) - self.assertIn('OTHER_LDFLAGS = $(inherited) -lhello -lsystem_dep1', + self.assertIn('OTHER_LDFLAGS = $(inherited) -lhello -lsystem_lib1', xcode) diff --git a/conans/test/integration/package_info_test.py b/conans/test/integration/package_info_test.py index a492c336f99..87099bfa1db 100644 --- a/conans/test/integration/package_info_test.py +++ b/conans/test/integration/package_info_test.py @@ -89,14 +89,14 @@ def build(self): self.assertIn("intermediate name: intermediate", client.out) self.assertIn("dep name: MyCustomGreatName", client.out) - def package_info_system_deps_test(self): + def package_info_system_libs_test(self): dep = textwrap.dedent(""" from conans import ConanFile class Dep(ConanFile): def package_info(self): - self.cpp_info.system_deps = ["sysdep1"] + self.cpp_info.system_libs = ["sysdep1"] """) intermediate = textwrap.dedent(""" from conans import ConanFile @@ -105,7 +105,7 @@ class Intermediate(ConanFile): requires = "dep/1.0@us/ch" def package_info(self): - self.cpp_info.system_deps = ["sysdep2", "sysdep3"] + self.cpp_info.system_libs = ["sysdep2", "sysdep3"] """) consumer = textwrap.dedent(""" from conans import ConanFile @@ -114,9 +114,9 @@ class Consumer(ConanFile): requires = "intermediate/1.0@us/ch" def build(self): - self.output.info("System deps: %s" % self.deps_cpp_info.system_deps) + self.output.info("System deps: %s" % self.deps_cpp_info.system_libs) for dep_key, dep_value in self.deps_cpp_info.dependencies: - self.output.info("%s system deps: %s" % (dep_key, dep_value.system_deps)) + self.output.info("%s system deps: %s" % (dep_key, dep_value.system_libs)) """) client = TestClient() @@ -126,9 +126,9 @@ def build(self): client.run("create conanfile_dep.py dep/1.0@us/ch") client.run("create conanfile_intermediate.py intermediate/1.0@us/ch") client.run("create conanfile_consumer.py consumer/1.0@us/ch") - dep_system_deps = ["sysdep1"] - intermediate_system_deps = ["sysdep2", "sysdep3"] - merged_system_deps = intermediate_system_deps + dep_system_deps - self.assertIn("System deps: %s" % merged_system_deps, client.out) - self.assertIn("intermediate system deps: %s" % intermediate_system_deps, client.out) - self.assertIn("dep system deps: %s" % dep_system_deps, client.out) + dep_system_libs = ["sysdep1"] + intermediate_system_libs = ["sysdep2", "sysdep3"] + merged_system_libs = intermediate_system_libs + dep_system_libs + self.assertIn("System deps: %s" % merged_system_libs, client.out) + self.assertIn("intermediate system deps: %s" % intermediate_system_libs, client.out) + self.assertIn("dep system deps: %s" % dep_system_libs, client.out) diff --git a/conans/test/unittests/client/generators/compiler_args_test.py b/conans/test/unittests/client/generators/compiler_args_test.py index eb0478114d6..a7e0d348636 100644 --- a/conans/test/unittests/client/generators/compiler_args_test.py +++ b/conans/test/unittests/client/generators/compiler_args_test.py @@ -35,7 +35,7 @@ def visual_studio_extensions_test(self): self.assertEqual('-O2 -Ob2 -DNDEBUG -link mylib.lib other.lib', gen.content) @staticmethod - def _get_conanfile(settings, frameworks=False, system_deps=False): + def _get_conanfile(settings, frameworks=False, system_libs=False): conan_file = ConanFileMock() conan_file.settings = settings conan_file.source_folder = "my_cache_source_folder" @@ -51,8 +51,8 @@ def _get_conanfile(settings, frameworks=False, system_deps=False): cpp_info.cflags.append("c_flag1") cpp_info.cxxflags.append("cxx_flag1") cpp_info.defines.append("mydefine1") - if system_deps: - cpp_info.system_deps.append("system_dep1") + if system_libs: + cpp_info.system_libs.append("system_lib1") if frameworks: cpp_info.frameworks = ["AVFoundation", "VideoToolbox"] cpp_info.framework_paths.extend(['path/to/Frameworks1', 'path/to/Frameworks2']) @@ -157,7 +157,7 @@ def apple_frameworks_test(self): '-framework AVFoundation -framework VideoToolbox ' '-F path/to/Frameworks1 -F path/to/Frameworks2', args.content) - def system_deps_test(self): + def system_libs_test(self): settings = Settings.loads(default_settings_yml) settings.os = "Linux" settings.compiler = "gcc" @@ -165,8 +165,8 @@ def system_deps_test(self): settings.arch = "x86_64" settings.build_type = "Release" - conan_file = self._get_conanfile(settings, system_deps=True) + conan_file = self._get_conanfile(settings, system_libs=True) args = CompilerArgsGenerator(conan_file) self.assertEqual('-Dmydefine1 -Ipath/to/include1 cxx_flag1 c_flag1 -m64 -O3 -s -DNDEBUG ' - '-Wl,-rpath="path/to/lib1" -Lpath/to/lib1 -lmylib -lsystem_dep1', + '-Wl,-rpath="path/to/lib1" -Lpath/to/lib1 -lmylib -lsystem_lib1', args.content) diff --git a/conans/test/unittests/client/generators/make_test.py b/conans/test/unittests/client/generators/make_test.py index f54846c9ab1..2c44d4aa946 100644 --- a/conans/test/unittests/client/generators/make_test.py +++ b/conans/test/unittests/client/generators/make_test.py @@ -41,7 +41,7 @@ def variables_setup_test(self): cpp_info.exelinkflags = ['-framework QuartzCore'] cpp_info.frameworks = ['AudioUnit'] cpp_info.frameworkdirs = ['SystemFrameworks'] - cpp_info.system_deps = ["system_dep1"] + cpp_info.system_libs = ["system_lib1"] conanfile.deps_cpp_info.update(cpp_info, ref.name) ref = ConanFileReference.loads("MyPkg2/3.2.3@lasote/stables") cpp_info = CppInfo(tmp_folder2) @@ -55,7 +55,7 @@ def variables_setup_test(self): cpp_info.cxxflags = ['-pthread'] cpp_info.sharedlinkflags = ['-framework AudioFoundation'] cpp_info.exelinkflags = ['-framework VideoToolbox'] - cpp_info.system_deps = ["system_dep2"] + cpp_info.system_libs = ["system_lib2"] conanfile.deps_cpp_info.update(cpp_info, ref.name) generator = MakeGenerator(conanfile) content = generator.content @@ -85,8 +85,8 @@ def variables_setup_test(self): CONAN_LIBS_MYPKG1 += \\ libfoo -CONAN_SYSTEM_DEPS_MYPKG1 += \\ -system_dep1 +CONAN_SYSTEM_LIBS_MYPKG1 += \\ +system_lib1 CONAN_DEFINES_MYPKG1 += \\ MYDEFINE1 @@ -133,8 +133,8 @@ def variables_setup_test(self): CONAN_LIBS_MYPKG2 += \\ libbar -CONAN_SYSTEM_DEPS_MYPKG2 += \\ -system_dep2 +CONAN_SYSTEM_LIBS_MYPKG2 += \\ +system_lib2 CONAN_DEFINES_MYPKG2 += \\ MYDEFINE2 diff --git a/conans/test/unittests/model/build_info_test.py b/conans/test/unittests/model/build_info_test.py index 75fd9cd6ff6..cd06b3572c5 100644 --- a/conans/test/unittests/model/build_info_test.py +++ b/conans/test/unittests/model/build_info_test.py @@ -174,17 +174,17 @@ def cpp_info_test(self): self.assertEqual(info.bin_paths, [abs_bin, os.path.join(folder, "local_bindir")]) - def cpp_info_system_deps_test(self): + def cpp_info_system_libs_test(self): info1 = CppInfo("folder1") - info1.system_deps = ["sysdep1"] + info1.system_libs = ["sysdep1"] info2 = CppInfo("folder2") - info2.system_deps = ["sysdep2", "sysdep3"] + info2.system_libs = ["sysdep2", "sysdep3"] deps_cpp_info = DepsCppInfo() deps_cpp_info.update(info1, "dep1") deps_cpp_info.update(info2, "dep2") - self.assertEqual(["sysdep1", "sysdep2", "sysdep3"], deps_cpp_info.system_deps) - self.assertEqual(["sysdep1"], deps_cpp_info["dep1"].system_deps) - self.assertEqual(["sysdep2", "sysdep3"], deps_cpp_info["dep2"].system_deps) + self.assertEqual(["sysdep1", "sysdep2", "sysdep3"], deps_cpp_info.system_libs) + self.assertEqual(["sysdep1"], deps_cpp_info["dep1"].system_libs) + self.assertEqual(["sysdep2", "sysdep3"], deps_cpp_info["dep2"].system_libs) def cpp_info_name_test(self): folder = temp_folder() From 39fce202206de9aa41d8bd203e90eec39242eb5d Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 15 Oct 2019 13:00:42 +0200 Subject: [PATCH 30/40] fix visual generator and test --- conans/client/generators/visualstudio.py | 2 +- conans/test/functional/generators/visual_studio_test.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conans/client/generators/visualstudio.py b/conans/client/generators/visualstudio.py index 1a47bfdb7c3..147351468f2 100644 --- a/conans/client/generators/visualstudio.py +++ b/conans/client/generators/visualstudio.py @@ -27,7 +27,7 @@ class VisualStudioGenerator(Generator): {lib_dirs} {bin_dirs} {libs} - {libs} + {system_libs} PATH=%PATH%;{bin_dirs} diff --git a/conans/test/functional/generators/visual_studio_test.py b/conans/test/functional/generators/visual_studio_test.py index 009bf515429..029eac37a15 100644 --- a/conans/test/functional/generators/visual_studio_test.py +++ b/conans/test/functional/generators/visual_studio_test.py @@ -121,7 +121,7 @@ class Consumer(ConanFile): content = load(os.path.join(client.current_folder, "conanbuildinfo.props")) self.assertIn("lib1.lib;", content) - self.assertIn("lib1.lib;", content) + self.assertIn("sys1.lib;", content) self.assertIn("$(ConanLibraryDirectories)" "%(AdditionalLibraryDirectories)", content) self.assertIn("$(ConanLibraries)%(AdditionalDependencies)" From 189739aac0f596f5d50d026d2415bb430776c182 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 24 Oct 2019 10:54:41 +0200 Subject: [PATCH 31/40] Review: change to client.load() --- conans/test/functional/generators/cmake_multi_test.py | 2 +- conans/test/functional/generators/cmake_test.py | 2 +- conans/test/functional/generators/json_test.py | 3 +-- conans/test/functional/generators/pkg_config_test.py | 3 +-- conans/test/functional/generators/visual_studio_test.py | 2 +- 5 files changed, 5 insertions(+), 7 deletions(-) diff --git a/conans/test/functional/generators/cmake_multi_test.py b/conans/test/functional/generators/cmake_multi_test.py index 0a34b2cc7f5..7dcd81e778d 100644 --- a/conans/test/functional/generators/cmake_multi_test.py +++ b/conans/test/functional/generators/cmake_multi_test.py @@ -298,7 +298,7 @@ class Consumer(ConanFile): client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer}) client.run("create conanfile_mylib.py mylib/1.0@us/ch") client.run("install conanfile_consumer.py") - content = load(os.path.join(client.current_folder, "conanbuildinfo.cmake")) + content = client.load("conanbuildinfo.cmake") self.assertIn("set(CONAN_LIBS lib1 ${CONAN_LIBS})", content) self.assertIn("set(CONAN_LIBS_DEBUG sys1d ${CONAN_LIBS_DEBUG})", content) self.assertIn("set(CONAN_LIBS_RELEASE sys1 ${CONAN_LIBS_RELEASE})", content) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index bc6e2d6295d..2aa5195af9b 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -141,7 +141,7 @@ class Consumer(ConanFile): client.run("create conanfile_mylib.py mylib/1.0@us/ch") client.run("install conanfile_consumer.py") - content = load(os.path.join(client.current_folder, "conanbuildinfo.cmake")) + content = client.load("conanbuildinfo.cmake") self.assertIn("set(CONAN_LIBS lib1 sys1 ${CONAN_LIBS})", content) self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) self.assertIn("set(CONAN_SYSTEM_LIBS sys1 ${CONAN_SYSTEM_LIBS})", content) diff --git a/conans/test/functional/generators/json_test.py b/conans/test/functional/generators/json_test.py index 98cf9d69e7a..5aebd68b508 100644 --- a/conans/test/functional/generators/json_test.py +++ b/conans/test/functional/generators/json_test.py @@ -86,8 +86,7 @@ def package_info(self): client.run("create . Hello/0.1@lasote/testing") client.run("install Hello/0.1@lasote/testing -g json") - my_json = load(os.path.join(client.current_folder, "conanbuildinfo.json")) - my_json = json.loads(my_json) + my_json = json.loads(client.load("conanbuildinfo.json")) # Nodes with cpp_info deps_info = my_json["dependencies"][0] diff --git a/conans/test/functional/generators/pkg_config_test.py b/conans/test/functional/generators/pkg_config_test.py index 84b21de20c9..d5da4ec5228 100644 --- a/conans/test/functional/generators/pkg_config_test.py +++ b/conans/test/functional/generators/pkg_config_test.py @@ -153,7 +153,6 @@ def package_info(self): client.run("create .") client.run("install MyLib/0.1@ -g pkg_config") - pc_path = os.path.join(client.current_folder, "MyLib.pc") - pc_content = load(pc_path) + pc_content = client.load("MyLib.pc") self.assertIn("Libs: -L${libdir} -lmylib1 -lmylib2 -lsystem_lib1 -lsystem_lib2 ", pc_content) diff --git a/conans/test/functional/generators/visual_studio_test.py b/conans/test/functional/generators/visual_studio_test.py index 029eac37a15..1162e87dfc8 100644 --- a/conans/test/functional/generators/visual_studio_test.py +++ b/conans/test/functional/generators/visual_studio_test.py @@ -119,7 +119,7 @@ class Consumer(ConanFile): client.run("create conanfile_mylib.py mylib/1.0@us/ch") client.run("install conanfile_consumer.py") - content = load(os.path.join(client.current_folder, "conanbuildinfo.props")) + content = client.load("conanbuildinfo.props") self.assertIn("lib1.lib;", content) self.assertIn("sys1.lib;", content) self.assertIn("$(ConanLibraryDirectories)" From cd7695bfea7475e3df0a3b03ce66753f2167efbe Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 24 Oct 2019 10:55:13 +0200 Subject: [PATCH 32/40] Review: Fix cmake_find_package_multi --- .../generators/cmake_find_package_multi.py | 16 ++++---- .../cmake_find_package_multi_test.py | 39 +++++++++++++------ 2 files changed, 35 insertions(+), 20 deletions(-) diff --git a/conans/client/generators/cmake_find_package_multi.py b/conans/client/generators/cmake_find_package_multi.py index aa126bc91af..569f001501d 100644 --- a/conans/client/generators/cmake_find_package_multi.py +++ b/conans/client/generators/cmake_find_package_multi.py @@ -35,25 +35,25 @@ class CMakeFindPackageMultiGenerator(Generator): target_properties = """ # Assign target properties -set_property(TARGET {name}::{name} +set_property(TARGET {name}::{name} PROPERTY INTERFACE_LINK_LIBRARIES - $<$:${{{name}_LIBRARIES_TARGETS_RELEASE}} ${{{name}_LINKER_FLAGS_RELEASE_LIST}}> - $<$:${{{name}_LIBRARIES_TARGETS_RELWITHDEBINFO}} ${{{name}_LINKER_FLAGS_RELWITHDEBINFO_LIST}}> - $<$:${{{name}_LIBRARIES_TARGETS_MINSIZEREL}} ${{{name}_LINKER_FLAGS_MINSIZEREL_LIST}}> - $<$:${{{name}_LIBRARIES_TARGETS_DEBUG}} ${{{name}_LINKER_FLAGS_DEBUG_LIST}}>) -set_property(TARGET {name}::{name} + $<$:${{{name}_LIBRARIES_TARGETS_RELEASE}} ${{{name}_SYSTEM_LIBS_RELEASE}} ${{{name}_LINKER_FLAGS_RELEASE_LIST}}> + $<$:${{{name}_LIBRARIES_TARGETS_RELWITHDEBINFO}} ${{{name}_SYSTEM_LIBS_RELWITHDEBINFO}} ${{{name}_LINKER_FLAGS_RELWITHDEBINFO_LIST}}> + $<$:${{{name}_LIBRARIES_TARGETS_MINSIZEREL}} ${{{name}_SYSTEM_LIBS_MINSIZEREL}} ${{{name}_LINKER_FLAGS_MINSIZEREL_LIST}}> + $<$:${{{name}_LIBRARIES_TARGETS_DEBUG}} ${{{name}_SYSTEM_LIBS_DEBUG}} ${{{name}_LINKER_FLAGS_DEBUG_LIST}}>) +set_property(TARGET {name}::{name} PROPERTY INTERFACE_INCLUDE_DIRECTORIES $<$:${{{name}_INCLUDE_DIRS_RELEASE}}> $<$:${{{name}_INCLUDE_DIRS_RELWITHDEBINFO}}> $<$:${{{name}_INCLUDE_DIRS_MINSIZEREL}}> $<$:${{{name}_INCLUDE_DIRS_DEBUG}}>) -set_property(TARGET {name}::{name} +set_property(TARGET {name}::{name} PROPERTY INTERFACE_COMPILE_DEFINITIONS $<$:${{{name}_COMPILE_DEFINITIONS_RELEASE}}> $<$:${{{name}_COMPILE_DEFINITIONS_RELWITHDEBINFO}}> $<$:${{{name}_COMPILE_DEFINITIONS_MINSIZEREL}}> $<$:${{{name}_COMPILE_DEFINITIONS_DEBUG}}>) -set_property(TARGET {name}::{name} +set_property(TARGET {name}::{name} PROPERTY INTERFACE_COMPILE_OPTIONS $<$:${{{name}_COMPILE_OPTIONS_RELEASE_LIST}}> $<$:${{{name}_COMPILE_OPTIONS_RELWITHDEBINFO_LIST}}> diff --git a/conans/test/functional/generators/cmake_find_package_multi_test.py b/conans/test/functional/generators/cmake_find_package_multi_test.py index fb8bdce94e2..328ae4e3709 100644 --- a/conans/test/functional/generators/cmake_find_package_multi_test.py +++ b/conans/test/functional/generators/cmake_find_package_multi_test.py @@ -77,7 +77,6 @@ def test_native_export_multi(self): self.assertIn("bye World {}!".format(bt), c.out) os.remove(os.path.join(c.current_folder, "example")) - @unittest.skipUnless(platform.system() != "Windows", "Skip Visual Studio config for build type") def cmake_find_package_system_libs_test(self): conanfile = textwrap.dedent(""" from conans import ConanFile, tools @@ -87,6 +86,7 @@ class Test(ConanFile): version = "0.1" settings = "build_type" def package_info(self): + self.cpp_info.libs = ["lib1"] if self.settings.build_type == "Debug": self.cpp_info.system_libs.append("sys1d") else: @@ -103,26 +103,41 @@ def package_info(self): [generators] cmake_find_package_multi """) - cmakelists = textwrap.dedent(""" + cmakelists_release = textwrap.dedent(""" cmake_minimum_required(VERSION 3.1) project(consumer CXX) set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) find_package(Test) - message("System libs: ${Test_SYSTEM_LIBS}") - message("Libraries to Link: ${Test_LIBS}") + message("System libs: ${Test_SYSTEM_LIBS_RELEASE}") + message("Libraries to Link: ${Test_LIBS_RELEASE}") + get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) + message("Target libs: ${tmp}") + """) + cmakelists_debug = textwrap.dedent(""" + cmake_minimum_required(VERSION 3.1) + project(consumer CXX) + set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}) + set(CMAKE_MODULE_PATH ${CMAKE_BINARY_DIR}) + find_package(Test) + message("System libs: ${Test_SYSTEM_LIBS_DEBUG}") + message("Libraries to Link: ${Test_LIBS_DEBUG}") get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) message("Target libs: ${tmp}") """) - client.save({"conanfile.txt": conanfile, "CMakeLists.txt": cmakelists}) for build_type in ["Release", "Debug"]: + cmakelists = cmakelists_release if build_type == "Release" else cmakelists_debug + client.save({"conanfile.txt": conanfile, "CMakeLists.txt": cmakelists}, clean_first=True) client.run("install conanfile.txt --build missing -s build_type=%s" % build_type) - client.run_command('cmake .. -DCMAKE_BUILD_TYPE={}'.format(build_type)) - client.run_command('cmake --build .') + client.run_command('cmake . -DCMAKE_BUILD_TYPE={0}'.format(build_type)) library_name = "sys1d" if build_type == "Debug" else "sys1" - self.assertIn("System deps: %s" % library_name, client.out) - self.assertIn("Libraries to Link: %s" % library_name, client.out) - self.assertIn("-- Library %s not found in package, might be system one" % library_name, - client.out) - self.assertIn("Target libs: %s" % library_name, client.out) + self.assertIn("System libs: %s" % library_name, client.out) + self.assertIn("Libraries to Link: lib1", client.out) + self.assertNotIn("-- Library %s not found in package, might be system one" % + library_name, client.out) + if build_type == "Release": + target_libs = "$<$:lib1;sys1;>;$<$:;>;$<$:;>;$<$:;>" + else: + target_libs = "$<$:;>;$<$:;>;$<$:;>;$<$:lib1;sys1d;>" + self.assertIn("Target libs: %s" % target_libs, client.out) From 84e41cd059d61f0ef7cf20f3dbcc678c6fc8b6a0 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 24 Oct 2019 11:01:13 +0200 Subject: [PATCH 33/40] remove with_exports_sources() --- conans/test/utils/tools.py | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/conans/test/utils/tools.py b/conans/test/utils/tools.py index 536008952ff..80eb2ee7a44 100644 --- a/conans/test/utils/tools.py +++ b/conans/test/utils/tools.py @@ -1040,7 +1040,6 @@ def __init__(self): self._revision_mode = None self._package_info = {} self._package_id_lines = [] - self._exports_sources = [] def with_name(self, name): self._name = name @@ -1128,10 +1127,6 @@ def with_package_id(self, line): self._package_id_lines.append(line) return self - def with_exports_sources(self, exports_sources): - self._exports_sources = exports_sources - return self - @property def _name_line(self): if not self._name: @@ -1211,13 +1206,6 @@ def _requires_line(self): tmp = "requires = ({}, )".format(", ".join(items)) return tmp - @property - def _exports_sources_line(self): - if not self._exports_sources: - return "" - line = ", ".join(['"{}"'.format(r) for r in self._exports_sources]) - return "exports_sources = %s" % line - @property def _requirements_method(self): if not self._requirements: @@ -1303,8 +1291,6 @@ def __repr__(self): ret.append(" {}".format(self._generators_line)) if self._requires_line: ret.append(" {}".format(self._requires_line)) - if self._exports_sources_line: - ret.append(" {}".format(self._exports_sources_line)) if self._requirements_method: ret.append(" {}".format(self._requirements_method)) if self._build_requires_line: From 25e58211ed937cb2c20ba03ce215acadc3154471 Mon Sep 17 00:00:00 2001 From: danimtb Date: Thu, 24 Oct 2019 12:15:22 +0200 Subject: [PATCH 34/40] fix system libs link in cmake_find_package --- .../client/generators/cmake_find_package.py | 2 +- .../generators/cmake_find_package_test.py | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/conans/client/generators/cmake_find_package.py b/conans/client/generators/cmake_find_package.py index c108a3c4bf7..ade28d21786 100644 --- a/conans/client/generators/cmake_find_package.py +++ b/conans/client/generators/cmake_find_package.py @@ -20,7 +20,7 @@ if({name}_INCLUDE_DIRS) set_target_properties({name}::{name} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${{{name}_INCLUDE_DIRS}}") endif() - set_property(TARGET {name}::{name} PROPERTY INTERFACE_LINK_LIBRARIES ${{{name}_LIBRARIES_TARGETS}} "${{{name}_LINKER_FLAGS_LIST}}") + set_property(TARGET {name}::{name} PROPERTY INTERFACE_LINK_LIBRARIES ${{{name}_LIBRARIES_TARGETS}} ${{{name}_SYSTEM_LIBS}} "${{{name}_LINKER_FLAGS_LIST}}") set_property(TARGET {name}::{name} PROPERTY INTERFACE_COMPILE_DEFINITIONS ${{{name}_COMPILE_DEFINITIONS}}) set_property(TARGET {name}::{name} PROPERTY INTERFACE_COMPILE_OPTIONS "${{{name}_COMPILE_OPTIONS_LIST}}") """ diff --git a/conans/test/functional/generators/cmake_find_package_test.py b/conans/test/functional/generators/cmake_find_package_test.py index 1ef9d736702..8d3c2718427 100644 --- a/conans/test/functional/generators/cmake_find_package_test.py +++ b/conans/test/functional/generators/cmake_find_package_test.py @@ -206,7 +206,7 @@ def cmake_find_package_test(self): self.assertIn("Conan: Using autogenerated FindHello1.cmake", client.out) self.assertIn("Version1: 0.1", client.out) - def cmake_find_package_system_libs_test(self): + def cmake_find_package_cpp_info_system_libs_test(self): conanfile = textwrap.dedent(""" from conans import ConanFile, tools @@ -215,7 +215,8 @@ class Test(ConanFile): version = "0.1" def package_info(self): - self.cpp_info.system_libs.append("sys1") + self.cpp_info.libs = ["lib1"] + self.cpp_info.system_libs = ["sys1"] """) client = TestClient() client.save({"conanfile.py": conanfile}) @@ -240,19 +241,19 @@ def build(self): cmake_minimum_required(VERSION 3.1) project(consumer) find_package(Test) - message("Libraries to Link: ${Test_LIBS}") - message("Version: ${Test_VERSION}") + message("Package libs: ${Test_LIBS}") + message("Package version: ${Test_VERSION}") message("System deps: ${Test_SYSTEM_LIBS}") get_target_property(tmp Test::Test INTERFACE_LINK_LIBRARIES) - message("Target libs: ${tmp}") + message("Target linked libs: ${tmp}") """) client.save({"conanfile.py": conanfile, "CMakeLists.txt": cmakelists}) client.run("create . user/channel --build missing") - self.assertIn("Libraries to Link: sys1", client.out) - self.assertIn("Version: 0.1", client.out) + self.assertIn("Package libs: lib1", client.out) + self.assertIn("Package version: 0.1", client.out) self.assertIn("System deps: sys1", client.out) - self.assertIn("-- Library sys1 not found in package, might be system one", client.out) - self.assertIn("Target libs: sys1", client.out) + self.assertNotIn("-- Library sys1 not found in package, might be system one", client.out) + self.assertIn("Target linked libs: lib1;sys1;;", client.out) @unittest.skipUnless(platform.system() == "Darwin", "Requires Apple Frameworks") def cmake_find_package_frameworks_test(self): From 3fda20b67219346900caf08000736bfb37398297 Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 28 Oct 2019 11:15:10 +0100 Subject: [PATCH 35/40] review --- conans/test/functional/generators/cmake_multi_test.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/conans/test/functional/generators/cmake_multi_test.py b/conans/test/functional/generators/cmake_multi_test.py index 7dcd81e778d..2fe054d74d2 100644 --- a/conans/test/functional/generators/cmake_multi_test.py +++ b/conans/test/functional/generators/cmake_multi_test.py @@ -285,6 +285,7 @@ def package_info(self): self.cpp_info.debug.system_libs = ["sys1d"] self.cpp_info.release.system_libs = ["sys1"] self.cpp_info.libs = ["lib1"] + self.cpp_info.debug.libs = ["lib1debug"] """) consumer = textwrap.dedent(""" import os @@ -300,11 +301,11 @@ class Consumer(ConanFile): client.run("install conanfile_consumer.py") content = client.load("conanbuildinfo.cmake") self.assertIn("set(CONAN_LIBS lib1 ${CONAN_LIBS})", content) - self.assertIn("set(CONAN_LIBS_DEBUG sys1d ${CONAN_LIBS_DEBUG})", content) + self.assertIn("set(CONAN_LIBS_DEBUG lib1debug sys1d ${CONAN_LIBS_DEBUG})", content) self.assertIn("set(CONAN_LIBS_RELEASE sys1 ${CONAN_LIBS_RELEASE})", content) self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE )", content) - self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG )", content) + self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG lib1debug)", content) self.assertIn("set(CONAN_SYSTEM_LIBS ${CONAN_SYSTEM_LIBS})", content) self.assertIn("set(CONAN_SYSTEM_LIBS_DEBUG sys1d ${CONAN_SYSTEM_LIBS_DEBUG})", content) From d2c357261449aa917649ba16cf94b582623580dc Mon Sep 17 00:00:00 2001 From: danimtb Date: Mon, 28 Oct 2019 14:34:46 +0100 Subject: [PATCH 36/40] Fix cmake multi and test --- conans/client/generators/cmake_multi.py | 1 + .../functional/generators/cmake_multi_test.py | 26 +++++++++---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/conans/client/generators/cmake_multi.py b/conans/client/generators/cmake_multi.py index 3ec47942ebe..af1c0e2e7de 100644 --- a/conans/client/generators/cmake_multi.py +++ b/conans/client/generators/cmake_multi.py @@ -26,6 +26,7 @@ def add_lists(seq1, seq2): 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) return result return cpp_info diff --git a/conans/test/functional/generators/cmake_multi_test.py b/conans/test/functional/generators/cmake_multi_test.py index 2fe054d74d2..f2f0ac0f1da 100644 --- a/conans/test/functional/generators/cmake_multi_test.py +++ b/conans/test/functional/generators/cmake_multi_test.py @@ -286,32 +286,32 @@ def package_info(self): self.cpp_info.release.system_libs = ["sys1"] self.cpp_info.libs = ["lib1"] self.cpp_info.debug.libs = ["lib1debug"] + self.cpp_info.release.libs = ["lib1release"] """) consumer = textwrap.dedent(""" import os from conans import ConanFile class Consumer(ConanFile): + settings = "build_type" requires = "mylib/1.0@us/ch" - generators = "cmake" + generators = "cmake_multi" """) client = TestClient() client.save({"conanfile_mylib.py": mylib, "conanfile_consumer.py": consumer}) client.run("create conanfile_mylib.py mylib/1.0@us/ch") - client.run("install conanfile_consumer.py") - content = client.load("conanbuildinfo.cmake") - self.assertIn("set(CONAN_LIBS lib1 ${CONAN_LIBS})", content) - self.assertIn("set(CONAN_LIBS_DEBUG lib1debug sys1d ${CONAN_LIBS_DEBUG})", content) - self.assertIn("set(CONAN_LIBS_RELEASE sys1 ${CONAN_LIBS_RELEASE})", content) - self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) - self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE )", content) - self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG lib1debug)", content) - - self.assertIn("set(CONAN_SYSTEM_LIBS ${CONAN_SYSTEM_LIBS})", content) - self.assertIn("set(CONAN_SYSTEM_LIBS_DEBUG sys1d ${CONAN_SYSTEM_LIBS_DEBUG})", content) + client.run("install conanfile_consumer.py -s build_type=Release") + content = client.load("conanbuildinfo_release.cmake") + self.assertIn("set(CONAN_LIBS_RELEASE lib1 lib1release sys1 ${CONAN_LIBS_RELEASE})", content) + self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE lib1 lib1release)", content) self.assertIn("set(CONAN_SYSTEM_LIBS_RELEASE sys1 ${CONAN_SYSTEM_LIBS_RELEASE})", content) - self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB )", content) self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB_RELEASE sys1)", content) + + client.run("install conanfile_consumer.py -s build_type=Debug") + content = client.load("conanbuildinfo_debug.cmake") + self.assertIn("set(CONAN_LIBS_DEBUG lib1 lib1debug sys1d ${CONAN_LIBS_DEBUG})", content) + self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG lib1 lib1debug)", content) + self.assertIn("set(CONAN_SYSTEM_LIBS_DEBUG sys1d ${CONAN_SYSTEM_LIBS_DEBUG})", content) self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB_DEBUG sys1d)", content) From 4a50947a70564e2277fb6e20e12da27339920f19 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 29 Oct 2019 13:46:12 +0100 Subject: [PATCH 37/40] Add CONAN_PKG_LIBS_ --- conans/client/generators/cmake.py | 3 ++- conans/client/generators/cmake_common.py | 3 ++- conans/test/functional/generators/cmake_multi_test.py | 6 ++++-- conans/test/functional/generators/cmake_test.py | 3 ++- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/conans/client/generators/cmake.py b/conans/client/generators/cmake.py index fb8293eae65..be4fd6ef9dd 100644 --- a/conans/client/generators/cmake.py +++ b/conans/client/generators/cmake.py @@ -30,10 +30,11 @@ def join_defines(values, prefix=""): self.bin_paths = join_paths(cpp_info.bin_paths) self.build_paths = join_paths(cpp_info.build_paths) self.src_paths = join_paths(cpp_info.src_paths) - # libs_system_frameworks == Package libs, system deps and frameworks self.libs_system_frameworks = join_flags(" ", cpp_info.libs + cpp_info.system_libs) self.libs = join_flags(" ", cpp_info.libs) self.system_libs = join_flags(" ", cpp_info.system_libs) + self.libs = join_flags(" ", cpp_info.libs) + self.system_libs = join_flags(" ", cpp_info.system_libs) framework_paths = join_paths(cpp_info.framework_paths) self.find_frameworks = "" diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index 7f29bcc4b02..09746309d96 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -6,7 +6,8 @@ set(CONAN_RES_DIRS_{dep}{build_type} {deps.res_paths}) set(CONAN_SRC_DIRS_{dep}{build_type} {deps.src_paths}) set(CONAN_BUILD_DIRS_{dep}{build_type} {deps.build_paths}) -set(CONAN_LIBS_{dep}{build_type} {deps.libs}) +set(CONAN_LIBS_{dep}{build_type} {deps.libs_system_frameworks}) +set(CONAN_PKG_LIBS_{dep}{build_type} {deps.libs}) set(CONAN_SYSTEM_LIBS_{dep}{build_type} {deps.system_libs}) set(CONAN_DEFINES_{dep}{build_type} {deps.defines}) # COMPILE_DEFINITIONS are equal to CONAN_DEFINES without -D, for targets diff --git a/conans/test/functional/generators/cmake_multi_test.py b/conans/test/functional/generators/cmake_multi_test.py index f2f0ac0f1da..8433e3317d0 100644 --- a/conans/test/functional/generators/cmake_multi_test.py +++ b/conans/test/functional/generators/cmake_multi_test.py @@ -303,14 +303,16 @@ class Consumer(ConanFile): client.run("install conanfile_consumer.py -s build_type=Release") content = client.load("conanbuildinfo_release.cmake") self.assertIn("set(CONAN_LIBS_RELEASE lib1 lib1release sys1 ${CONAN_LIBS_RELEASE})", content) - self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE lib1 lib1release)", content) + self.assertIn("set(CONAN_LIBS_MYLIB_RELEASE lib1 lib1release sys1)", content) + self.assertIn("set(CONAN_PKG_LIBS_MYLIB_RELEASE lib1 lib1release)", content) self.assertIn("set(CONAN_SYSTEM_LIBS_RELEASE sys1 ${CONAN_SYSTEM_LIBS_RELEASE})", content) self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB_RELEASE sys1)", content) client.run("install conanfile_consumer.py -s build_type=Debug") content = client.load("conanbuildinfo_debug.cmake") self.assertIn("set(CONAN_LIBS_DEBUG lib1 lib1debug sys1d ${CONAN_LIBS_DEBUG})", content) - self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG lib1 lib1debug)", content) + self.assertIn("set(CONAN_LIBS_MYLIB_DEBUG lib1 lib1debug sys1d)", content) + self.assertIn("set(CONAN_PKG_LIBS_MYLIB_DEBUG lib1 lib1debug)", content) self.assertIn("set(CONAN_SYSTEM_LIBS_DEBUG sys1d ${CONAN_SYSTEM_LIBS_DEBUG})", content) self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB_DEBUG sys1d)", content) diff --git a/conans/test/functional/generators/cmake_test.py b/conans/test/functional/generators/cmake_test.py index 2aa5195af9b..b127f94f2a9 100644 --- a/conans/test/functional/generators/cmake_test.py +++ b/conans/test/functional/generators/cmake_test.py @@ -143,7 +143,8 @@ class Consumer(ConanFile): content = client.load("conanbuildinfo.cmake") self.assertIn("set(CONAN_LIBS lib1 sys1 ${CONAN_LIBS})", content) - self.assertIn("set(CONAN_LIBS_MYLIB lib1)", content) + self.assertIn("set(CONAN_LIBS_MYLIB lib1 sys1)", content) + self.assertIn("set(CONAN_PKG_LIBS_MYLIB lib1)", content) self.assertIn("set(CONAN_SYSTEM_LIBS sys1 ${CONAN_SYSTEM_LIBS})", content) self.assertIn("set(CONAN_SYSTEM_LIBS_MYLIB sys1)", content) From 556c753c7105d4dbeba0d278ce2447d746c0ab29 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 29 Oct 2019 14:03:28 +0100 Subject: [PATCH 38/40] revert changes in frameworks test --- conans/test/unittests/client/generators/cmake_test.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/conans/test/unittests/client/generators/cmake_test.py b/conans/test/unittests/client/generators/cmake_test.py index 3d77a10992a..dab935d472c 100644 --- a/conans/test/unittests/client/generators/cmake_test.py +++ b/conans/test/unittests/client/generators/cmake_test.py @@ -340,7 +340,8 @@ def apple_frameworks_test(self): '"path/to/Frameworks1"\n\t\t\t"path/to/Frameworks2")', content) self.assertIn('find_library(CONAN_FRAMEWORK_OPENCL OpenCL PATHS ' '"path/to/Frameworks1"\n\t\t\t"path/to/Frameworks2")', content) - self.assertIn('set(CONAN_LIBS_MYPKG )', content) #FIXME: Add a CONAN_FRAMEWORKS_MYPKG + self.assertIn('set(CONAN_LIBS_MYPKG ${CONAN_FRAMEWORK_OPENGL} ${CONAN_FRAMEWORK_OPENCL})', + content) #FIXME: Add a CONAN_FRAMEWORKS_MYPKG self.assertIn('set(CONAN_LIBS ${CONAN_FRAMEWORK_OPENGL} ' '${CONAN_FRAMEWORK_OPENCL} ${CONAN_LIBS})', content) From 583c37453ce2304d218940e9b1331baebb0bd1cd Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 29 Oct 2019 14:03:57 +0100 Subject: [PATCH 39/40] Use CONAN_PKG_LIBS when generating targets --- conans/client/generators/cmake_common.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/conans/client/generators/cmake_common.py b/conans/client/generators/cmake_common.py index 09746309d96..544125aeecb 100644 --- a/conans/client/generators/cmake_common.py +++ b/conans/client/generators/cmake_common.py @@ -113,19 +113,19 @@ def cmake_global_vars(deps, build_type=""): _target_template = """ - conan_package_library_targets("${{CONAN_LIBS_{uname}}}" "${{CONAN_LIB_DIRS_{uname}}}" + conan_package_library_targets("${{CONAN_PKG_LIBS_{uname}}}" "${{CONAN_LIB_DIRS_{uname}}}" CONAN_PACKAGE_TARGETS_{uname} "${{CONAN_SYSTEM_LIBS_{uname}}} {deps}" "" {pkg_name}) - conan_package_library_targets("${{CONAN_LIBS_{uname}_DEBUG}}" "${{CONAN_LIB_DIRS_{uname}_DEBUG}}" + conan_package_library_targets("${{CONAN_PKG_LIBS_{uname}_DEBUG}}" "${{CONAN_LIB_DIRS_{uname}_DEBUG}}" CONAN_PACKAGE_TARGETS_{uname}_DEBUG "${{CONAN_SYSTEM_LIBS_{uname}_DEBUG}} {deps}" "debug" {pkg_name}) - conan_package_library_targets("${{CONAN_LIBS_{uname}_RELEASE}}" "${{CONAN_LIB_DIRS_{uname}_RELEASE}}" + conan_package_library_targets("${{CONAN_PKG_LIBS_{uname}_RELEASE}}" "${{CONAN_LIB_DIRS_{uname}_RELEASE}}" CONAN_PACKAGE_TARGETS_{uname}_RELEASE "${{CONAN_SYSTEM_LIBS_{uname}_RELEASE}} {deps}" "release" {pkg_name}) - conan_package_library_targets("${{CONAN_LIBS_{uname}_RELWITHDEBINFO}}" "${{CONAN_LIB_DIRS_{uname}_RELWITHDEBINFO}}" + conan_package_library_targets("${{CONAN_PKG_LIBS_{uname}_RELWITHDEBINFO}}" "${{CONAN_LIB_DIRS_{uname}_RELWITHDEBINFO}}" CONAN_PACKAGE_TARGETS_{uname}_RELWITHDEBINFO "${{CONAN_SYSTEM_LIBS_{uname}_RELWITHDEBINFO}} {deps}" "relwithdebinfo" {pkg_name}) - conan_package_library_targets("${{CONAN_LIBS_{uname}_MINSIZEREL}}" "${{CONAN_LIB_DIRS_{uname}_MINSIZEREL}}" + conan_package_library_targets("${{CONAN_PKG_LIBS_{uname}_MINSIZEREL}}" "${{CONAN_LIB_DIRS_{uname}_MINSIZEREL}}" CONAN_PACKAGE_TARGETS_{uname}_MINSIZEREL "${{CONAN_SYSTEM_LIBS_{uname}_MINSIZEREL}} {deps}" "minsizerel" {pkg_name}) From bc7964ef90f4cfaeace28d6ec2af18b2d6ec7e25 Mon Sep 17 00:00:00 2001 From: danimtb Date: Tue, 29 Oct 2019 15:52:16 +0100 Subject: [PATCH 40/40] remove repeated lines --- conans/client/generators/cmake.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/conans/client/generators/cmake.py b/conans/client/generators/cmake.py index be4fd6ef9dd..0165ad84f67 100644 --- a/conans/client/generators/cmake.py +++ b/conans/client/generators/cmake.py @@ -33,8 +33,6 @@ def join_defines(values, prefix=""): self.libs_system_frameworks = join_flags(" ", cpp_info.libs + cpp_info.system_libs) self.libs = join_flags(" ", cpp_info.libs) self.system_libs = join_flags(" ", cpp_info.system_libs) - self.libs = join_flags(" ", cpp_info.libs) - self.system_libs = join_flags(" ", cpp_info.system_libs) framework_paths = join_paths(cpp_info.framework_paths) self.find_frameworks = ""