From 6a0cce969fa39ad2294a2eeb7975041218677597 Mon Sep 17 00:00:00 2001 From: czoido Date: Mon, 20 Jun 2022 16:19:17 +0200 Subject: [PATCH 1/5] wip --- conan/tools/apple/xcodedeps.py | 65 ++++++++++------------------------ 1 file changed, 18 insertions(+), 47 deletions(-) diff --git a/conan/tools/apple/xcodedeps.py b/conan/tools/apple/xcodedeps.py index 2cc64fbe6e6..56aef019f9c 100644 --- a/conan/tools/apple/xcodedeps.py +++ b/conan/tools/apple/xcodedeps.py @@ -59,36 +59,17 @@ def _add_includes_to_file_or_create(filename, template, files_to_include): class XcodeDeps(object): general_name = "conandeps.xcconfig" - _vars_xconfig = textwrap.dedent("""\ - // Definition of Conan variables for {{pkg_name}}::{{comp_name}} - CONAN_{{pkg_name}}_{{comp_name}}_BINARY_DIRECTORIES{{condition}} = {{bin_dirs}} - CONAN_{{pkg_name}}_{{comp_name}}_C_COMPILER_FLAGS{{condition}} = {{c_compiler_flags}} - CONAN_{{pkg_name}}_{{comp_name}}_CXX_COMPILER_FLAGS{{condition}} = {{cxx_compiler_flags}} - CONAN_{{pkg_name}}_{{comp_name}}_LINKER_FLAGS{{condition}} = {{linker_flags}} - CONAN_{{pkg_name}}_{{comp_name}}_PREPROCESSOR_DEFINITIONS{{condition}} = {{definitions}} - CONAN_{{pkg_name}}_{{comp_name}}_INCLUDE_DIRECTORIES{{condition}} = {{include_dirs}} - CONAN_{{pkg_name}}_{{comp_name}}_RESOURCE_DIRECTORIES{{condition}} = {{res_dirs}} - CONAN_{{pkg_name}}_{{comp_name}}_LIBRARY_DIRECTORIES{{condition}} = {{lib_dirs}} - CONAN_{{pkg_name}}_{{comp_name}}_LIBRARIES{{condition}} = {{libs}} - CONAN_{{pkg_name}}_{{comp_name}}_SYSTEM_LIBS{{condition}} = {{system_libs}} - CONAN_{{pkg_name}}_{{comp_name}}_FRAMEWORKS_DIRECTORIES{{condition}} = {{frameworkdirs}} - CONAN_{{pkg_name}}_{{comp_name}}_FRAMEWORKS{{condition}} = {{frameworks}} - """) - _conf_xconfig = textwrap.dedent("""\ - // Include {{pkg_name}}::{{comp_name}} vars - #include "{{vars_filename}}" - // Compiler options for {{pkg_name}}::{{pkg_name}} - HEADER_SEARCH_PATHS_{{pkg_name}}_{{comp_name}} = $(CONAN_{{pkg_name}}_{{comp_name}}_INCLUDE_DIRECTORIES) - GCC_PREPROCESSOR_DEFINITIONS_{{pkg_name}}_{{comp_name}} = $(CONAN_{{pkg_name}}_{{comp_name}}_PREPROCESSOR_DEFINITIONS) - OTHER_CFLAGS_{{pkg_name}}_{{comp_name}} = $(CONAN_{{pkg_name}}_{{comp_name}}_C_COMPILER_FLAGS) - OTHER_CPLUSPLUSFLAGS_{{pkg_name}}_{{comp_name}} = $(CONAN_{{pkg_name}}_{{comp_name}}_CXX_COMPILER_FLAGS) - FRAMEWORK_SEARCH_PATHS_{{pkg_name}}_{{comp_name}} = $(CONAN_{{pkg_name}}_{{comp_name}}_FRAMEWORKS_DIRECTORIES) + HEADER_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}{{condition}} = {{include_dirs}} + GCC_PREPROCESSOR_DEFINITIONS_{{pkg_name}}_{{comp_name}}{{condition}} = {{definitions}} + OTHER_CFLAGS_{{pkg_name}}_{{comp_name}}{{condition}} = {{c_compiler_flags}} + OTHER_CPLUSPLUSFLAGS_{{pkg_name}}_{{comp_name}}{{condition}} = {{cxx_compiler_flags}} + FRAMEWORK_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}{{condition}} = {{frameworkdirs}} // Link options for {{name}} - LIBRARY_SEARCH_PATHS_{{pkg_name}}_{{comp_name}} = $(CONAN_{{pkg_name}}_{{comp_name}}_LIBRARY_DIRECTORIES) - OTHER_LDFLAGS_{{pkg_name}}_{{comp_name}} = $(CONAN_{{pkg_name}}_{{comp_name}}_LINKER_FLAGS) $(CONAN_{{pkg_name}}_{{comp_name}}_LIBRARIES) $(CONAN_{{pkg_name}}_{{comp_name}}_SYSTEM_LIBS) $(CONAN_{{pkg_name}}_{{comp_name}}_FRAMEWORKS) + LIBRARY_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}{{condition}} = {{lib_dirs}} + OTHER_LDFLAGS_{{pkg_name}}_{{comp_name}}{{condition}} = {{linker_flags}} {{libs}} {{system_libs}} {{frameworks}} """) _dep_xconfig = textwrap.dedent("""\ @@ -100,15 +81,15 @@ class XcodeDeps(object): {% endfor %} #include "{{dep_xconfig_filename}}" - HEADER_SEARCH_PATHS = $(inherited) $(HEADER_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) - GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GCC_PREPROCESSOR_DEFINITIONS_{{pkg_name}}_{{comp_name}}) - OTHER_CFLAGS = $(inherited) $(OTHER_CFLAGS_{{pkg_name}}_{{comp_name}}) - OTHER_CPLUSPLUSFLAGS = $(inherited) $(OTHER_CPLUSPLUSFLAGS_{{pkg_name}}_{{comp_name}}) - FRAMEWORK_SEARCH_PATHS = $(inherited) $(FRAMEWORK_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) + HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) + GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_{{pkg_name}}_{{comp_name}}) + OTHER_CFLAGS = $(OTHER_CFLAGS_{{pkg_name}}_{{comp_name}}) + OTHER_CPLUSPLUSFLAGS = $(OTHER_CPLUSPLUSFLAGS_{{pkg_name}}_{{comp_name}}) + FRAMEWORK_SEARCH_PATHS = $(FRAMEWORK_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) // Link options for {{pkg_name}}_{{comp_name}} - LIBRARY_SEARCH_PATHS = $(inherited) $(LIBRARY_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) - OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_{{pkg_name}}_{{comp_name}}) + LIBRARY_SEARCH_PATHS = $(LIBRARY_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) + OTHER_LDFLAGS = $(OTHER_LDFLAGS_{{pkg_name}}_{{comp_name}}) """) _all_xconfig = textwrap.dedent("""\ @@ -140,9 +121,9 @@ def generate(self): for generator_file, content in generator_files.items(): save(generator_file, content) - def _vars_xconfig_file(self, pkg_name, comp_name, cpp_info): + def _conf_xconfig_file(self, pkg_name, comp_name, cpp_info): """ - returns a .xcconfig file with the variables definition for one package for one configuration + content for conan_poco_x86_release.xcconfig, containing the activation """ fields = { @@ -163,16 +144,9 @@ def _vars_xconfig_file(self, pkg_name, comp_name, cpp_info): 'exe_flags': " ".join('"{}"'.format(p.replace('"', '\\"')) for p in cpp_info.exelinkflags), 'condition': _xcconfig_conditional(self._conanfile.settings) } - formatted_template = Template(self._vars_xconfig).render(**fields) - return formatted_template - def _conf_xconfig_file(self, pkg_name, comp_name, vars_xconfig_name): - """ - content for conan_poco_x86_release.xcconfig, containing the activation - """ template = Template(self._conf_xconfig) - content_multi = template.render(pkg_name=pkg_name, comp_name=comp_name, - vars_filename=vars_xconfig_name) + content_multi = template.render(**fields) return content_multi def _dep_xconfig_file(self, pkg_name, comp_name, name_general, dep_xconfig_filename, reqs): @@ -225,12 +199,9 @@ def get_content_for_component(self, pkg_name, component_name, cpp_info, reqs): result = {} conf_name = _xcconfig_settings_filename(self._conanfile.settings) - # One file per configuration, with just the variables - vars_xconfig_name = "conan_{}_{}_vars{}.xcconfig".format(pkg_name, component_name, conf_name) - result[vars_xconfig_name] = self._vars_xconfig_file(pkg_name, component_name, cpp_info) props_name = "conan_{}_{}{}.xcconfig".format(pkg_name, component_name, conf_name) - result[props_name] = self._conf_xconfig_file(pkg_name, component_name, vars_xconfig_name) + result[props_name] = self._conf_xconfig_file(pkg_name, component_name, cpp_info) # The entry point for each package file_dep_name = "conan_{}_{}.xcconfig".format(pkg_name, component_name) From 503b300958ab0596ba2b8533d85192bcc452281d Mon Sep 17 00:00:00 2001 From: czoido Date: Mon, 20 Jun 2022 16:40:05 +0200 Subject: [PATCH 2/5] wip --- conan/tools/apple/xcodedeps.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/conan/tools/apple/xcodedeps.py b/conan/tools/apple/xcodedeps.py index 56aef019f9c..b6bc4b67325 100644 --- a/conan/tools/apple/xcodedeps.py +++ b/conan/tools/apple/xcodedeps.py @@ -81,15 +81,15 @@ class XcodeDeps(object): {% endfor %} #include "{{dep_xconfig_filename}}" - HEADER_SEARCH_PATHS = $(HEADER_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) - GCC_PREPROCESSOR_DEFINITIONS = $(GCC_PREPROCESSOR_DEFINITIONS_{{pkg_name}}_{{comp_name}}) - OTHER_CFLAGS = $(OTHER_CFLAGS_{{pkg_name}}_{{comp_name}}) - OTHER_CPLUSPLUSFLAGS = $(OTHER_CPLUSPLUSFLAGS_{{pkg_name}}_{{comp_name}}) - FRAMEWORK_SEARCH_PATHS = $(FRAMEWORK_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) + HEADER_SEARCH_PATHS = $(inherited) $(HEADER_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) + GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(GCC_PREPROCESSOR_DEFINITIONS_{{pkg_name}}_{{comp_name}}) + OTHER_CFLAGS = $(inherited) $(OTHER_CFLAGS_{{pkg_name}}_{{comp_name}}) + OTHER_CPLUSPLUSFLAGS = $(inherited) $(OTHER_CPLUSPLUSFLAGS_{{pkg_name}}_{{comp_name}}) + FRAMEWORK_SEARCH_PATHS = $(inherited) $(FRAMEWORK_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) // Link options for {{pkg_name}}_{{comp_name}} - LIBRARY_SEARCH_PATHS = $(LIBRARY_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) - OTHER_LDFLAGS = $(OTHER_LDFLAGS_{{pkg_name}}_{{comp_name}}) + LIBRARY_SEARCH_PATHS = $(inherited) $(LIBRARY_SEARCH_PATHS_{{pkg_name}}_{{comp_name}}) + OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_{{pkg_name}}_{{comp_name}}) """) _all_xconfig = textwrap.dedent("""\ From 4522575eda5723c062da3bcf18f051ac1d395168 Mon Sep 17 00:00:00 2001 From: czoido Date: Mon, 20 Jun 2022 16:45:56 +0200 Subject: [PATCH 3/5] fix tests --- .../functional/toolchains/apple/test_xcodedeps_build_configs.py | 2 +- .../functional/toolchains/apple/test_xcodedeps_components.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/conans/test/functional/toolchains/apple/test_xcodedeps_build_configs.py b/conans/test/functional/toolchains/apple/test_xcodedeps_build_configs.py index 93f89b95d11..7ff37ff78df 100644 --- a/conans/test/functional/toolchains/apple/test_xcodedeps_build_configs.py +++ b/conans/test/functional/toolchains/apple/test_xcodedeps_build_configs.py @@ -114,7 +114,7 @@ def test_xcodedeps_dashes_names_and_arch(): "project.yml": xcode_project}, clean_first=True) client.run("install . -s arch=armv8 --build=missing -g XcodeDeps") assert os.path.exists(os.path.join(client.current_folder, - "conan_hello_dashes_hello_dashes_vars_release_arm64.xcconfig")) + "conan_hello_dashes_hello_dashes_release_arm64.xcconfig")) client.run_command("xcodegen generate") client.run_command("xcodebuild -project app.xcodeproj -arch arm64") assert "BUILD SUCCEEDED" in client.out diff --git a/conans/test/functional/toolchains/apple/test_xcodedeps_components.py b/conans/test/functional/toolchains/apple/test_xcodedeps_components.py index 397b3d1fbc4..4ccd40f286d 100644 --- a/conans/test/functional/toolchains/apple/test_xcodedeps_components.py +++ b/conans/test/functional/toolchains/apple/test_xcodedeps_components.py @@ -225,5 +225,4 @@ def build_requirements(self): assert os.path.isfile(os.path.join(client.current_folder, "conan_gtest.xcconfig")) assert os.path.isfile(os.path.join(client.current_folder, "conan_gtest_gtest.xcconfig")) assert os.path.isfile(os.path.join(client.current_folder, "conan_gtest_gtest_release_x86_64.xcconfig")) - assert os.path.isfile(os.path.join(client.current_folder, "conan_gtest_gtest_vars_release_x86_64.xcconfig")) assert '#include "conan_gtest.xcconfig"' in client.load("conandeps.xcconfig") From 998cc15525b41fda7835f227f8f02fe77c8b45bd Mon Sep 17 00:00:00 2001 From: czoido Date: Mon, 20 Jun 2022 16:54:01 +0200 Subject: [PATCH 4/5] update test --- .../toolchains/apple/test_xcodedeps.py | 43 ++++--------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/conans/test/integration/toolchains/apple/test_xcodedeps.py b/conans/test/integration/toolchains/apple/test_xcodedeps.py index a992463a779..1a5ddb5f430 100644 --- a/conans/test/integration/toolchains/apple/test_xcodedeps.py +++ b/conans/test/integration/toolchains/apple/test_xcodedeps.py @@ -17,30 +17,14 @@ "OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_{name}_{name})", ] -_expected_vars_xconfig = [ - "CONAN_{name}_{name}_BINARY_DIRECTORIES[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_C_COMPILER_FLAGS[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_CXX_COMPILER_FLAGS[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_LINKER_FLAGS[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_PREPROCESSOR_DEFINITIONS[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_INCLUDE_DIRECTORIES[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_RESOURCE_DIRECTORIES[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_LIBRARY_DIRECTORIES[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_LIBRARIES[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = -l{name}", - "CONAN_{name}_{name}_SYSTEM_LIBS[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_FRAMEWORKS_DIRECTORIES[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] =", - "CONAN_{name}_{name}_FRAMEWORKS[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = -framework framework_{name}" -] - _expected_conf_xconfig = [ - "#include \"{vars_name}\"", - "HEADER_SEARCH_PATHS_{name}_{name} = $(CONAN_{name}_{name}_INCLUDE_DIRECTORIES", - "GCC_PREPROCESSOR_DEFINITIONS_{name}_{name} = $(CONAN_{name}_{name}_PREPROCESSOR_DEFINITIONS", - "OTHER_CFLAGS_{name}_{name} = $(CONAN_{name}_{name}_C_COMPILER_FLAGS", - "OTHER_CPLUSPLUSFLAGS_{name}_{name} = $(CONAN_{name}_{name}_CXX_COMPILER_FLAGS", - "FRAMEWORK_SEARCH_PATHS_{name}_{name} = $(CONAN_{name}_{name}_FRAMEWORKS_DIRECTORIES", - "LIBRARY_SEARCH_PATHS_{name}_{name} = $(CONAN_{name}_{name}_LIBRARY_DIRECTORIES", - "OTHER_LDFLAGS_{name}_{name} = $(CONAN_{name}_{name}_LINKER_FLAGS) $(CONAN_{name}_{name}_LIBRARIES) $(CONAN_{name}_{name}_SYSTEM_LIBS) $(CONAN_{name}_{name}_FRAMEWORKS" + "HEADER_SEARCH_PATHS_{name}_{name}[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = ", + "GCC_PREPROCESSOR_DEFINITIONS_{name}_{name}[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = ", + "OTHER_CFLAGS_{name}_{name}[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = ", + "OTHER_CPLUSPLUSFLAGS_{name}_{name}[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = ", + "FRAMEWORK_SEARCH_PATHS_{name}_{name}[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = ", + "LIBRARY_SEARCH_PATHS_{name}_{name}[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = ", + "OTHER_LDFLAGS_{name}_{name}[config={configuration}][arch={architecture}][sdk={sdk}{sdk_version}] = " ] @@ -50,8 +34,6 @@ def expected_files(current_folder, configuration, architecture, sdk, sdk_version deps = ["hello", "goodbye"] files.extend( [os.path.join(current_folder, "conan_{dep}_{dep}{name}.xcconfig".format(dep=dep, name=name)) for dep in deps]) - files.extend( - [os.path.join(current_folder, "conan_{dep}_{dep}_vars{name}.xcconfig".format(dep=dep, name=name)) for dep in deps]) files.append(os.path.join(current_folder, "conandeps.xcconfig")) return files @@ -67,17 +49,10 @@ def check_contents(client, deps, configuration, architecture, sdk, sdk_version): line = var.format(name=dep_name) assert line in dep_xconfig - vars_name = "conan_{}_{}_vars{}.xcconfig".format(dep_name, dep_name, - _get_filename(configuration, architecture, sdk, sdk_version)) - conan_vars = client.load(vars_name) - for var in _expected_vars_xconfig: - line = var.format(name=dep_name, configuration=configuration, architecture=architecture, - sdk=sdk, sdk_version=sdk_version) - assert line in conan_vars - conan_conf = client.load(conf_name) for var in _expected_conf_xconfig: - assert var.format(vars_name=vars_name, name=dep_name) in conan_conf + assert var.format(name=dep_name, configuration=configuration, architecture=architecture, + sdk=sdk, sdk_version=sdk_version) in conan_conf @pytest.mark.skipif(platform.system() != "Darwin", reason="Only for MacOS") From b1c09569fa51d9ac85cb0f69e362c7e7b2e621bb Mon Sep 17 00:00:00 2001 From: czoido Date: Mon, 20 Jun 2022 17:19:25 +0200 Subject: [PATCH 5/5] remove unused --- conan/tools/apple/xcodedeps.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/conan/tools/apple/xcodedeps.py b/conan/tools/apple/xcodedeps.py index b6bc4b67325..24c3fc16adf 100644 --- a/conan/tools/apple/xcodedeps.py +++ b/conan/tools/apple/xcodedeps.py @@ -129,8 +129,6 @@ def _conf_xconfig_file(self, pkg_name, comp_name, cpp_info): fields = { 'pkg_name': pkg_name, 'comp_name': comp_name, - 'bin_dirs': " ".join('"{}"'.format(p) for p in cpp_info.bindirs), - 'res_dirs': " ".join('"{}"'.format(p) for p in cpp_info.resdirs), 'include_dirs': " ".join('"{}"'.format(p) for p in cpp_info.includedirs), 'lib_dirs': " ".join('"{}"'.format(p) for p in cpp_info.libdirs), 'libs': " ".join("-l{}".format(lib) for lib in cpp_info.libs),