diff options
author | pcloudy <pcloudy@google.com> | 2018-07-09 05:59:07 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-09 06:00:18 -0700 |
commit | 4e42e1767d1752d6e3fde78a6b184c2231b12ebb (patch) | |
tree | 8cadd68b0503dae8605144feaa3fba1b20804821 | |
parent | 35ff63a50997ca3af603629ee2d9d30b44aae27b (diff) |
Windows, CROSSTOOL: Fix feature for linking interface library and dynamic library
1. Do not apply /WHOLEARCHIVE to interface library
2. On Windows, we cannot link dll directly, so remove related flag_groups
RELNOTES: None
PiperOrigin-RevId: 203752406
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/LibrariesToLinkCollector.java | 5 | ||||
-rw-r--r-- | tools/cpp/CROSSTOOL.tpl | 33 |
2 files changed, 5 insertions, 33 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LibrariesToLinkCollector.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LibrariesToLinkCollector.java index ad262b8b24..e09e74f109 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LibrariesToLinkCollector.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LibrariesToLinkCollector.java @@ -285,6 +285,11 @@ public class LibrariesToLinkCollector { Preconditions.checkState( !Link.useStartEndLib( input, CppHelper.getArchiveType(cppConfiguration, ccToolchainProvider))); + if (featureConfiguration.isEnabled(CppRuleClasses.TARGETS_WINDOWS)) { + // On Windows, dynamic library (dll) cannot be linked directly. + Preconditions.checkState( + !CppFileTypes.SHARED_LIBRARY.matches(input.getArtifact().getFilename())); + } expandedLinkerInputsBuilder.add(input); Artifact inputArtifact = input.getArtifact(); diff --git a/tools/cpp/CROSSTOOL.tpl b/tools/cpp/CROSSTOOL.tpl index fa6da1e342..2460b33d39 100644 --- a/tools/cpp/CROSSTOOL.tpl +++ b/tools/cpp/CROSSTOOL.tpl @@ -678,13 +678,8 @@ toolchain { value: 'interface_library' } flag_group { - expand_if_false: 'libraries_to_link.is_whole_archive' flag: '%{libraries_to_link.name}' } - flag_group { - expand_if_true: 'libraries_to_link.is_whole_archive' - flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' - } } flag_group { expand_if_equal: { @@ -700,34 +695,6 @@ toolchain { flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' } } - flag_group { - expand_if_equal: { - variable: 'libraries_to_link.type' - value: 'dynamic_library' - } - flag_group { - expand_if_false: 'libraries_to_link.is_whole_archive' - flag: '%{libraries_to_link.name}' - } - flag_group { - expand_if_true: 'libraries_to_link.is_whole_archive' - flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' - } - } - flag_group { - expand_if_equal: { - variable: 'libraries_to_link.type' - value: 'versioned_dynamic_library' - } - flag_group { - expand_if_false: 'libraries_to_link.is_whole_archive' - flag: '%{libraries_to_link.name}' - } - flag_group { - expand_if_true: 'libraries_to_link.is_whole_archive' - flag: '/WHOLEARCHIVE:%{libraries_to_link.name}' - } - } } } } |