diff options
author | 2017-09-20 10:25:48 +0200 | |
---|---|---|
committer | 2017-09-20 11:59:04 +0200 | |
commit | 481657d6149b3c68b893ad8221ac1bccccf1060d (patch) | |
tree | db33e89dbfd5f9df16143de5553cbaf1ab638159 /src/test/java/com/google/devtools/build/lib/rules | |
parent | e28b772d85a463e4fe154767d0d82c0fb9e63c3d (diff) |
Windows: Make dynamic libraries available to binary at runtime
When copy_dynamic_libraries_to_binary is enabled, we copy the shared
libraries required by the binary to the binary's directory.
Bazel will throw errors if there are confilct actions generating the
same artifacts.
Change-Id: I09a5a599ca0ec7a67efd49d5aa89481450fa4e90
PiperOrigin-RevId: 169364498
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java index 98ba0c223f..0770ead00d 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java @@ -1186,6 +1186,52 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase { } @Test + public void testCcLinkParamsHasExecutionDynamicLibraries() throws Exception { + AnalysisMock.get() + .ccSupport() + .setupCrosstool( + mockToolsConfig, MockCcSupport.COPY_DYNAMIC_LIBRARIES_TO_BINARY_CONFIGURATION); + useConfiguration("--cpu=k8", "--features=copy_dynamic_libraries_to_binary"); + ConfiguredTarget target = + scratchConfiguredTarget("a", "foo", "cc_library(name = 'foo', srcs = ['foo.cc'])"); + Iterable<Artifact> libraries = + target + .get(CcLinkParamsInfo.PROVIDER) + .getCcLinkParams(false, true) + .getExecutionDynamicLibraries(); + assertThat(artifactsToStrings(libraries)).doesNotContain("bin a/libfoo.ifso"); + assertThat(artifactsToStrings(libraries)).contains("bin a/libfoo.so"); + } + + @Test + public void testCcLinkParamsHasExecutionDynamicLibrariesWithoutCopyFeature() throws Exception { + useConfiguration("--cpu=k8"); + ConfiguredTarget target = + scratchConfiguredTarget("a", "foo", "cc_library(name = 'foo', srcs = ['foo.cc'])"); + Iterable<Artifact> libraries = + target + .get(CcLinkParamsInfo.PROVIDER) + .getCcLinkParams(false, true) + .getExecutionDynamicLibraries(); + assertThat(artifactsToStrings(libraries)).doesNotContain("bin _solib_k8/liba_Slibfoo.ifso"); + assertThat(artifactsToStrings(libraries)).contains("bin _solib_k8/liba_Slibfoo.so"); + } + + @Test + public void testCcLinkParamsDoNotHasExecutionDynamicLibraries() throws Exception { + useConfiguration("--cpu=k8"); + ConfiguredTarget target = + scratchConfiguredTarget( + "a", "foo", "cc_library(name = 'foo', srcs = ['foo.cc'], linkstatic=1)"); + Iterable<Artifact> libraries = + target + .get(CcLinkParamsInfo.PROVIDER) + .getCcLinkParams(false, true) + .getExecutionDynamicLibraries(); + assertThat(artifactsToStrings(libraries)).isEmpty(); + } + + @Test public void forbidBuildingAndWrappingSameLibraryIdentifier() throws Exception { useConfiguration("--cpu=k8"); checkError( |