aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java140
1 files changed, 130 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java
index f0bd59a746..d614c3d063 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionConfigs.java
@@ -294,7 +294,10 @@ public class CppLinkActionConfigs {
" flag_group {",
" iterate_over: 'libraries_to_link'",
" flag_group {",
- " expand_if_true: 'libraries_to_link.is_lib_group'",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'object_file_group'",
+ " }",
" flag: '-Wl,--start-lib'",
" }",
ifLinux(
@@ -304,8 +307,47 @@ public class CppLinkActionConfigs {
" flag: '-Wl,-whole-archive'",
" }",
" flag_group {",
- " iterate_over: 'libraries_to_link.names'",
- " flag: '%{libraries_to_link.names}'",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'object_file_group'",
+ " }",
+ " iterate_over: 'libraries_to_link.object_files'",
+ " flag: '%{libraries_to_link.object_files}'",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'object_file'",
+ " }",
+ " flag: '%{libraries_to_link.name}'",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'interface_library'",
+ " }",
+ " flag: '%{libraries_to_link.name}'",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'static_library'",
+ " }",
+ " flag: '%{libraries_to_link.name}'",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'dynamic_library'",
+ " }",
+ " flag: '-l%{libraries_to_link.name}'",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'versioned_dynamic_library'",
+ " }",
+ " flag: '-l:%{libraries_to_link.name}'",
" }",
" flag_group {",
" expand_if_true: 'libraries_to_link.is_whole_archive'",
@@ -314,17 +356,95 @@ public class CppLinkActionConfigs {
ifMac(
platform,
" flag_group {",
- " expand_if_true: 'libraries_to_link.is_whole_archive'",
- " iterate_over: 'libraries_to_link.names'",
- " flag: '-Wl,-force_load,%{libraries_to_link.names}'",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'object_file_group'",
+ " }",
+ " iterate_over: 'libraries_to_link.object_files'",
+ " flag_group {",
+ " expand_if_false: 'libraries_to_link.is_whole_archive'",
+ " flag: '%{libraries_to_link.object_files}'",
+ " }",
+ " flag_group {",
+ " expand_if_true: 'libraries_to_link.is_whole_archive'",
+ " flag: '-Wl,-force_load,%{libraries_to_link.object_files}'",
+ " }",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'object_file'",
+ " }",
+ " 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: '-Wl,-force_load,%{libraries_to_link.name}'",
+ " }",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " 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: '-Wl,-force_load,%{libraries_to_link.name}'",
+ " }",
+ " }",
+ " flag_group {",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'static_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: '-Wl,-force_load,%{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: '-l%{libraries_to_link.name}'",
+ " }",
+ " flag_group {",
+ " expand_if_true: 'libraries_to_link.is_whole_archive'",
+ " flag: '-Wl,-force_load,-l%{libraries_to_link.name}'",
+ " }",
" }",
" flag_group {",
- " expand_if_false: 'libraries_to_link.is_whole_archive'",
- " iterate_over: 'libraries_to_link.names'",
- " flag: '%{libraries_to_link.names}'",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'versioned_dynamic_library'",
+ " }",
+ " flag_group {",
+ " expand_if_false: 'libraries_to_link.is_whole_archive'",
+ " flag: '-l:%{libraries_to_link.name}'",
+ " }",
+ " flag_group {",
+ " expand_if_true: 'libraries_to_link.is_whole_archive'",
+ " flag: '-Wl,-force_load,-l:%{libraries_to_link.name}'",
+ " }",
" }"),
" flag_group {",
- " expand_if_true: 'libraries_to_link.is_lib_group'",
+ " expand_if_equal: {",
+ " variable: 'libraries_to_link.type'",
+ " value: 'object_file_group'",
+ " }",
" flag: '-Wl,--end-lib'",
" }",
" }",