aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2018-07-12 06:42:11 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-07-12 06:43:30 -0700
commit30b85c0ab6f03106649c6b5bc4a8cc528a9356c4 (patch)
tree345898cc91aa1fda825c4f974daf958d525a8fe4
parent84bfb9aff771e5b6f87754d80d33b9f34a40b6b9 (diff)
Do not expose interface building related variables in the Skylark C++ toolchain API
RELNOTES: None. PiperOrigin-RevId: 204291210
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariables.java40
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java1
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java28
5 files changed, 55 insertions, 20 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index baaf365864..55bcc8f5e7 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -197,7 +197,8 @@ public class CcModule
/* librariesToLink= */ null,
asStringNestedSet(librarySearchDirectories),
/* isLegacyFullyStaticLinkingMode= */ false,
- isStaticLinkingMode);
+ isStaticLinkingMode,
+ /* addIfsoRelatedVariables= */ false);
}
@Override
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 fc4c3f1308..56bca06241 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
@@ -951,7 +951,8 @@ public class CppLinkActionBuilder {
collectedLibrariesToLink.getLibrariesToLink(),
collectedLibrariesToLink.getLibrarySearchDirectories(),
linkingMode.equals(LinkingMode.LEGACY_FULLY_STATIC),
- linkingMode.equals(LinkingMode.STATIC));
+ linkingMode.equals(LinkingMode.STATIC),
+ /* addIfsoRelatedVariables= */ true);
} catch (EvalException e) {
ruleContext.ruleError(e.getMessage());
variables = CcToolchainVariables.EMPTY;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariables.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariables.java
index 6f60ef01cb..b57dc237be 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariables.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariables.java
@@ -121,7 +121,8 @@ public enum LinkBuildVariables {
SequenceBuilder librariesToLink,
Iterable<String> librarySearchDirectories,
boolean isLegacyFullyStaticLinkingMode,
- boolean isStaticLinkingMode)
+ boolean isStaticLinkingMode,
+ boolean addIfsoRelatedVariables)
throws EvalException {
CcToolchainVariables.Builder buildVariables =
new CcToolchainVariables.Builder(ccToolchainProvider.getBuildVariables());
@@ -213,23 +214,26 @@ public enum LinkBuildVariables {
buildVariables.addStringVariable(THINLTO_PARAM_FILE.getVariableName(), thinltoParamFile);
}
}
- boolean shouldGenerateInterfaceLibrary =
- outputFile != null
- && interfaceLibraryBuilder != null
- && interfaceLibraryOutput != null
- && !isLtoIndexing;
- buildVariables.addStringVariable(
- GENERATE_INTERFACE_LIBRARY.getVariableName(),
- shouldGenerateInterfaceLibrary ? "yes" : "no");
- buildVariables.addStringVariable(
- INTERFACE_LIBRARY_BUILDER.getVariableName(),
- shouldGenerateInterfaceLibrary ? interfaceLibraryBuilder : "ignored");
- buildVariables.addStringVariable(
- INTERFACE_LIBRARY_INPUT.getVariableName(),
- shouldGenerateInterfaceLibrary ? outputFile : "ignored");
- buildVariables.addStringVariable(
- INTERFACE_LIBRARY_OUTPUT.getVariableName(),
- shouldGenerateInterfaceLibrary ? interfaceLibraryOutput : "ignored");
+
+ if (addIfsoRelatedVariables) {
+ boolean shouldGenerateInterfaceLibrary =
+ outputFile != null
+ && interfaceLibraryBuilder != null
+ && interfaceLibraryOutput != null
+ && !isLtoIndexing;
+ buildVariables.addStringVariable(
+ GENERATE_INTERFACE_LIBRARY.getVariableName(),
+ shouldGenerateInterfaceLibrary ? "yes" : "no");
+ buildVariables.addStringVariable(
+ INTERFACE_LIBRARY_BUILDER.getVariableName(),
+ shouldGenerateInterfaceLibrary ? interfaceLibraryBuilder : "ignored");
+ buildVariables.addStringVariable(
+ INTERFACE_LIBRARY_INPUT.getVariableName(),
+ shouldGenerateInterfaceLibrary ? outputFile : "ignored");
+ buildVariables.addStringVariable(
+ INTERFACE_LIBRARY_OUTPUT.getVariableName(),
+ shouldGenerateInterfaceLibrary ? interfaceLibraryOutput : "ignored");
+ }
if (defFile != null) {
buildVariables.addStringVariable(DEF_FILE_PATH.getVariableName(), defFile);
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 f0927f5241..9b595bffd5 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
@@ -560,6 +560,7 @@ public class CppLinkActionTest extends BuildViewTestCase {
public void testInterfaceOutputForDynamicLibrary() throws Exception {
FeatureConfiguration featureConfiguration =
CcToolchainFeaturesTest.buildFeatures(
+ "supports_interface_shared_objects: true ",
"feature {",
" name: 'build_interface_libraries'",
" flag_set {",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
index d52b0c438e..798892554c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcCommonTest.java
@@ -607,6 +607,34 @@ public class SkylarkCcCommonTest extends BuildViewTestCase {
}
@Test
+ public void testIfsoRelatedVariablesAreNotExposed() throws Exception {
+ AnalysisMock.get()
+ .ccSupport()
+ .setupCrosstool(
+ mockToolsConfig,
+ "feature {",
+ " name: 'uses_ifso_variables'",
+ " enabled: true",
+ " flag_set {",
+ " action: 'c++-link-dynamic-library'",
+ " flag_group {",
+ " expand_if_all_available: 'generate_interface_library'",
+ " flag: '--generate_interface_library_was_available'",
+ " }",
+ " }",
+ "}");
+ useConfiguration();
+ assertThat(
+ commandLineForVariables(
+ CppActionNames.CPP_LINK_DYNAMIC_LIBRARY,
+ "cc_common.create_link_variables(",
+ "feature_configuration = feature_configuration,",
+ "cc_toolchain = toolchain,",
+ ")"))
+ .doesNotContain("--generate_interface_library_was_available");
+ }
+
+ @Test
public void testOutputFileLinkVariables() throws Exception {
assertThat(
commandLineForVariables(