diff options
author | 2018-02-02 02:19:58 -0800 | |
---|---|---|
committer | 2018-02-02 02:22:00 -0800 | |
commit | 6d24ca921bb987155c201bbcfae641a6180c23d2 (patch) | |
tree | 2ebd7fb5f1e9e88b5772dd826540efa52ddf9454 /src/main/java/com | |
parent | 46cd4fd2e120fe3c5f08f44422bc5d3ddaecde42 (diff) |
Change how the libraries_to_link are expanded for archiver
This makes object_file_group work correctly for archiving (So far
object_file_group was only possible for linking, but with the introduction of
tree artifact support, it can appear also for archiving).
RELNOTES: Fix how libraries_to_link are expanded in the archiver command line.
PiperOrigin-RevId: 184258745
Diffstat (limited to 'src/main/java/com')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java | 33 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java | 2 |
2 files changed, 27 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java index 9a28f7b5c9..bab2726259 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java @@ -455,7 +455,6 @@ public class CppActionConfigs { " tool_path: '" + arToolPath + "'", " }", " implies: 'archiver_flags'", - " implies: 'libraries_to_link'", " implies: 'linker_param_file'", "}", "action_config {", @@ -465,7 +464,6 @@ public class CppActionConfigs { " tool_path: '" + arToolPath + "'", " }", " implies: 'archiver_flags'", - " implies: 'libraries_to_link'", " implies: 'linker_param_file'", "}", "action_config {", @@ -475,7 +473,6 @@ public class CppActionConfigs { " tool_path: '" + arToolPath + "'", " }", " implies: 'archiver_flags'", - " implies: 'libraries_to_link'", " implies: 'linker_param_file'", "}", "action_config {", @@ -485,7 +482,6 @@ public class CppActionConfigs { " tool_path: '" + arToolPath + "'", " }", " implies: 'archiver_flags'", - " implies: 'libraries_to_link'", " implies: 'linker_param_file'", "}", ifTrue( @@ -617,6 +613,31 @@ public class CppActionConfigs { " flag: '%{output_execpath}'"), " }", " }", + " flag_set { ", + " expand_if_all_available: 'libraries_to_link'", + " action: 'c++-link-static-library'", + " action: 'c++-link-alwayslink-static-library'", + " action: 'c++-link-pic-static-library'", + " action: 'c++-link-alwayslink-pic-static-library'", + " flag_group {", + " iterate_over: 'libraries_to_link'", + " flag_group {", + " expand_if_equal {", + " variable: 'libraries_to_link.type'", + " value: 'object_file'", + " }", + " flag: '%{libraries_to_link.name}'", + " }", + " flag_group {", + " expand_if_equal {", + " variable: 'libraries_to_link.type'", + " value: 'object_file_group'", + " }", + " iterate_over: 'libraries_to_link.object_files'", + " flag: '%{libraries_to_link.object_files}'", + " }", + " }", + " }", "}"), ifTrue( !existingFeatureNames.contains("libraries_to_link"), @@ -626,10 +647,6 @@ public class CppActionConfigs { " expand_if_all_available: 'libraries_to_link'", " action: 'c++-link-executable'", " action: 'c++-link-dynamic-library'", - " action: 'c++-link-static-library'", - " action: 'c++-link-alwayslink-static-library'", - " action: 'c++-link-pic-static-library'", - " action: 'c++-link-alwayslink-pic-static-library'", " flag_group {", " iterate_over: 'libraries_to_link'", " flag_group {", diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java index c681ac7b97..ea3e92b70a 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java @@ -1666,6 +1666,8 @@ public class CppLinkActionBuilder { buildVariables.addCustomBuiltVariable( LIBRARIES_TO_LINK_VARIABLE, linkArgCollector.getLibrariesToLink()); + // TODO(b/72803478): Remove once existing crosstools have been migrated + buildVariables.addStringVariable("libs_to_link_dont_emit_objects_for_archiver", ""); buildVariables.addStringSequenceVariable( LIBRARY_SEARCH_DIRECTORIES_VARIABLE, linkArgCollector.getLibrarySearchDirectories()); |