aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2018-02-01 08:07:00 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-02-01 08:08:57 -0800
commit186068f8e2afcfcbb3e15f8791a7df0407217483 (patch)
tree669a97a29628d0756c804dd0f9231406f4fc0dab /src
parenta904b85376251775d58852a0e8480c0db032bac8 (diff)
Automated rollback of commit aa8ce5653f92473b331e500a3614245dae38dfc4.
*** Reason for rollback *** Breaks //third_party/msvc crosstool *** Original change description *** RELNOTES: Fix how libraries to link is specified to archiver actions. start-lib/end-lib should not be passed to ar. Fix how the libraries to link are passed to ar by not using the generic feature "libraries_to_link" PiperOrigin-RevId: 184140734
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppActionConfigs.java33
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java52
2 files changed, 8 insertions, 77 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 bab2726259..9a28f7b5c9 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,6 +455,7 @@ public class CppActionConfigs {
" tool_path: '" + arToolPath + "'",
" }",
" implies: 'archiver_flags'",
+ " implies: 'libraries_to_link'",
" implies: 'linker_param_file'",
"}",
"action_config {",
@@ -464,6 +465,7 @@ public class CppActionConfigs {
" tool_path: '" + arToolPath + "'",
" }",
" implies: 'archiver_flags'",
+ " implies: 'libraries_to_link'",
" implies: 'linker_param_file'",
"}",
"action_config {",
@@ -473,6 +475,7 @@ public class CppActionConfigs {
" tool_path: '" + arToolPath + "'",
" }",
" implies: 'archiver_flags'",
+ " implies: 'libraries_to_link'",
" implies: 'linker_param_file'",
"}",
"action_config {",
@@ -482,6 +485,7 @@ public class CppActionConfigs {
" tool_path: '" + arToolPath + "'",
" }",
" implies: 'archiver_flags'",
+ " implies: 'libraries_to_link'",
" implies: 'linker_param_file'",
"}",
ifTrue(
@@ -613,31 +617,6 @@ 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"),
@@ -647,6 +626,10 @@ 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/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
index a6bda43c08..36c2daa8ae 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
@@ -728,56 +728,4 @@ public class CppLinkActionTest extends BuildViewTestCase {
verifyArguments(
linkAction.getCommandLine(expander), treeFileArtifactsPaths, treeArtifactsPaths);
}
-
- @Test
- public void testStaticLinking() throws Exception {
- ImmutableList<LinkTargetType> targetTypesToTest =
- ImmutableList.of(
- LinkTargetType.STATIC_LIBRARY,
- LinkTargetType.PIC_STATIC_LIBRARY,
- LinkTargetType.ALWAYS_LINK_STATIC_LIBRARY,
- LinkTargetType.ALWAYS_LINK_PIC_STATIC_LIBRARY);
-
- Artifact testTreeArtifact = createTreeArtifact("library_directory");
-
- TreeFileArtifact library0 = ActionInputHelper.treeFileArtifact(testTreeArtifact, "library0.o");
- TreeFileArtifact library1 = ActionInputHelper.treeFileArtifact(testTreeArtifact, "library1.o");
-
- ArtifactExpander expander =
- (artifact, output) -> {
- if (artifact.equals(testTreeArtifact)) {
- output.add(library0);
- output.add(library1);
- }
- };
-
- Artifact objectFile = scratchArtifact("objectFile.o");
-
- for (LinkTargetType linkType : targetTypesToTest) {
-
- scratch.deleteFile("dummyRuleContext/BUILD");
- Artifact output = scratchArtifact("output." + linkType.getExtension());
-
- CppLinkActionBuilder builder =
- createLinkBuilder(
- linkType,
- output.getExecPathString(),
- ImmutableList.<Artifact>of(),
- ImmutableList.<LibraryToLink>of(),
- getMockFeatureConfiguration())
- .setLibraryIdentifier("foo")
- .addObjectFiles(ImmutableList.of(testTreeArtifact))
- .addObjectFile(objectFile)
- // Makes sure this doesn't use a params file.
- .setFake(true);
-
- CppLinkAction linkAction = builder.build();
- assertThat(linkAction.getCommandLine(expander))
- .containsAllOf(
- library0.getExecPathString(),
- library1.getExecPathString(),
- objectFile.getExecPathString())
- .inOrder();
- }
- }
}