diff options
author | hlopko <hlopko@google.com> | 2018-07-12 06:42:11 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-12 06:43:30 -0700 |
commit | 30b85c0ab6f03106649c6b5bc4a8cc528a9356c4 (patch) | |
tree | 345898cc91aa1fda825c4f974daf958d525a8fe4 | |
parent | 84bfb9aff771e5b6f87754d80d33b9f34a40b6b9 (diff) |
Do not expose interface building related variables in the Skylark C++ toolchain API
RELNOTES: None.
PiperOrigin-RevId: 204291210
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( |