diff options
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.java | 140 |
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'", " }", " }", |