From 71481ee8c0398918298a744904dc98d61859ef5b Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Fri, 21 Aug 2015 18:10:51 +0000 Subject: [PATCH] llvm-build: Factor out duplicate cmake export listing. Patch by Brad King. The write_cmake_fragment and write_cmake_exports_fragment methods share some logic for selecting libraries that CMake needs to know about. Factor it out into a helper to avoid duplication. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245716 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/llvm-build/llvmbuild/main.py | 63 +++++++++++++++++------------- 1 file changed, 36 insertions(+), 27 deletions(-) diff --git a/utils/llvm-build/llvmbuild/main.py b/utils/llvm-build/llvmbuild/main.py index 353741fdbf8..5742b05d4f9 100644 --- a/utils/llvm-build/llvmbuild/main.py +++ b/utils/llvm-build/llvmbuild/main.py @@ -501,6 +501,28 @@ subdirectories = %s if (path.startswith(self.source_root) and os.path.exists(path)): yield path + def foreach_cmake_library(self, f, + enabled_optional_components, + skip_disabled): + for ci in self.ordered_component_infos: + # Skip optional components which are not enabled. + if ci.type_name == 'OptionalLibrary' \ + and ci.name not in enabled_optional_components: + continue + + # We only write the information for libraries currently. + if ci.type_name not in ('Library', 'OptionalLibrary'): + continue + + # Skip disabled targets. + if skip_disabled: + tg = ci.get_parent_target_group() + if tg and not tg.enabled: + continue + + f(ci) + + def write_cmake_fragment(self, output_path, enabled_optional_components): """ write_cmake_fragment(output_path) -> None @@ -569,21 +591,17 @@ configure_file(\"%s\" # The following property assignments effectively create a map from component # names to required libraries, in a way that is easily accessed from CMake. """) - for ci in self.ordered_component_infos: - # Skip optional components which are not enabled. - if ci.type_name == 'OptionalLibrary' \ - and ci.name not in enabled_optional_components: - continue - - # We only write the information for certain components currently. - if ci.type_name not in ('Library', 'OptionalLibrary'): - continue - - f.write("""\ + self.foreach_cmake_library( + lambda ci: + f.write("""\ set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_%s %s)\n""" % ( ci.get_prefixed_library_name(), " ".join(sorted( dep.get_prefixed_library_name() for dep in self.get_required_libraries_for_component(ci))))) + , + enabled_optional_components, + skip_disabled = False + ) f.close() @@ -608,26 +626,17 @@ set_property(GLOBAL PROPERTY LLVMBUILD_LIB_DEPS_%s %s)\n""" % ( # The following property assignments tell CMake about link # dependencies of libraries imported from LLVM. """) - for ci in self.ordered_component_infos: - # Skip optional components which are not enabled. - if ci.type_name == 'OptionalLibrary' \ - and ci.name not in enabled_optional_components: - continue - - # We only write the information for libraries currently. - if ci.type_name not in ('Library', 'OptionalLibrary'): - continue - - # Skip disabled targets. - tg = ci.get_parent_target_group() - if tg and not tg.enabled: - continue - - f.write("""\ + self.foreach_cmake_library( + lambda ci: + f.write("""\ set_property(TARGET %s PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES %s)\n""" % ( ci.get_prefixed_library_name(), " ".join(sorted( dep.get_prefixed_library_name() for dep in self.get_required_libraries_for_component(ci))))) + , + enabled_optional_components, + skip_disabled = True + ) f.close() -- 2.34.1