diff --git a/conan/tools/apple/xcodedeps.py b/conan/tools/apple/xcodedeps.py index 2cc64fbe6e6..24c3fc16adf 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("""\ @@ -140,16 +121,14 @@ 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 = { '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), @@ -163,16 +142,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 +197,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) 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") 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")