aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2018-03-21 04:42:02 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-21 04:44:05 -0700
commit3dab964407a2f1e12feb439d8507079bc06cb769 (patch)
tree5defa831bb6e2669bf7ca1308092a8974ed5cc33 /src/test
parent755d3bec0e7136c34eb9be424c6e1b9a59fbf56c (diff)
Assume toolchain supportsDynamicLinker from presence of "dynamic_linking_mode" feature
Toolchains no longer have to provide linking_mode_flags { mode: DYNAMIC } to state that they support dynamic linking mode. It is enough to provide a feature. This is part of ongoing work to get rid of linking_mode_flags from the CROSSTOOL. RELNOTES: None. PiperOrigin-RevId: 189890583
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java19
3 files changed, 31 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
index 5010faf11d..eb613ba2df 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
@@ -85,6 +85,7 @@ public final class BazelMockCcSupport extends MockCcSupport {
" toolchains = {",
" 'local|compiler': ':cc-compiler-local',",
" 'k8|compiler': ':cc-compiler-k8',",
+ " 'k8|compiler_no_dyn_linker': ':cc-no-dyn-compiler-k8',",
" 'piii|compiler': ':cc-compiler-piii',",
" 'darwin|compiler': ':cc-compiler-darwin',",
" 'ios_x86_64|compiler': ':cc-compiler-ios_x86_64',",
@@ -99,6 +100,13 @@ public final class BazelMockCcSupport extends MockCcSupport {
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
+ "cc_toolchain(name = 'cc-no-dyn-compiler-k8', all_files = ':empty', ",
+ " compiler_files = ':empty', cpu = 'k8', compiler = 'compiler_no_dyn_linker', ",
+ " libc = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " ar_files = ':empty', as_files = ':empty', linker_files = ':empty',",
+ " module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
+ " objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
+ ")",
"cc_toolchain(name = 'cc-compiler-ppc', all_files = ':empty', compiler_files = ':empty',",
" cpu = 'ppc', compiler = 'compiler', libc = 'local', dwp_files = ':empty',",
" dynamic_runtime_libs = [':empty'], ",
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java
index d55d3b53a6..81c86f9d9a 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/MockCcSupport.java
@@ -24,6 +24,7 @@ import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.rules.cpp.CppCompileAction;
+import com.google.devtools.build.lib.rules.cpp.CppRuleClasses;
import com.google.devtools.build.lib.rules.cpp.Link.LinkTargetType;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -128,6 +129,9 @@ public abstract class MockCcSupport {
/** This feature will prevent bazel from patching the crosstool. */
public static final String NO_LEGACY_FEATURES_FEATURE = "feature { name: 'no_legacy_features' }";
+ public static final String DYNAMIC_LINKING_MODE_FEATURE =
+ "feature { name: '" + CppRuleClasses.DYNAMIC_LINKING_MODE + "'}";
+
/** Feature expected by the C++ rules when pic build is requested */
public static final String PIC_FEATURE =
""
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
index c4afac299f..cfc288ab48 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
@@ -912,4 +912,23 @@ public class CcToolchainTest extends BuildViewTestCase {
(CcToolchainProvider) target.get(ToolchainInfo.PROVIDER);
assertThat(toolchainProvider.getAbi()).isEqualTo("banana");
}
+
+ @Test
+ public void testSupportsDynamicLinkerCheckFeatures() throws Exception {
+ writeDummyCcToolchain();
+
+ getAnalysisMock()
+ .ccSupport()
+ .setupCrosstool(mockToolsConfig, MockCcSupport.DYNAMIC_LINKING_MODE_FEATURE);
+
+ // To make sure the toolchain doesn't define linking_mode_flags { mode: DYNAMIC } as that would
+ // also result in supportsDynamicLinker returning true
+ useConfiguration("--compiler=compiler_no_dyn_linker", "--cpu=k8");
+
+ ConfiguredTarget target = getConfiguredTarget("//a:b");
+ CcToolchainProvider toolchainProvider =
+ (CcToolchainProvider) target.get(ToolchainInfo.PROVIDER);
+
+ assertThat(toolchainProvider.supportsDynamicLinker()).isTrue();
+ }
}