aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2018-02-02 02:19:58 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-02 02:22:00 -0800
commit6d24ca921bb987155c201bbcfae641a6180c23d2 (patch)
tree2ebd7fb5f1e9e88b5772dd826540efa52ddf9454 /src/main/java/com
parent46cd4fd2e120fe3c5f08f44422bc5d3ddaecde42 (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.java33
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java2
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());