aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java12
-rw-r--r--tools/cpp/CROSSTOOL.tpl54
2 files changed, 36 insertions, 30 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
index 3d03ece32d..e8cc186214 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeatures.java
@@ -1072,19 +1072,7 @@ public class CcToolchainFeatures implements Serializable {
return new StringValue(type.name);
} else if (IS_WHOLE_ARCHIVE_FIELD_NAME.equals(field)) {
return new IntegerValue(isWholeArchive ? 1 : 0);
- } else if ("whole_archive_presence".equals(field)) {
- // TODO(b/33403458): Cleanup this workaround once bazel >=0.4.3 is released.
- return isWholeArchive ? new IntegerValue(0) : null;
- } else if ("no_whole_archive_presence".equals(field)) {
- // TODO(b/33403458): Cleanup this workaround once bazel >=0.4.3 is released.
- return !isWholeArchive ? new IntegerValue(0) : null;
} else {
- // TODO(b/33403458): Cleanup this workaround once bazel >=0.4.3 is released.
- for (Type t : Type.values()) {
- if ((t.name + "_presence").equals(field)) {
- return type.equals(t) ? new IntegerValue(0) : null;
- }
- }
return null;
}
}
diff --git a/tools/cpp/CROSSTOOL.tpl b/tools/cpp/CROSSTOOL.tpl
index ae1718a198..5b382926a3 100644
--- a/tools/cpp/CROSSTOOL.tpl
+++ b/tools/cpp/CROSSTOOL.tpl
@@ -486,69 +486,87 @@ toolchain {
flag_group {
iterate_over: 'libraries_to_link'
flag_group {
- expand_if_all_available: 'libraries_to_link.object_file_group_presence'
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file_group'
+ }
iterate_over: 'libraries_to_link.object_files'
flag_group {
- expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ expand_if_false: 'libraries_to_link.is_whole_archive'
flag: '%{libraries_to_link.object_files}'
}
flag_group {
- expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ expand_if_true: 'libraries_to_link.is_whole_archive'
flag: '/WHOLEARCHIVE:%{libraries_to_link.object_files}'
}
}
flag_group {
- expand_if_all_available: 'libraries_to_link.object_file_presence'
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'object_file'
+ }
flag_group {
- expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ expand_if_false: 'libraries_to_link.is_whole_archive'
flag: '%{libraries_to_link.name}'
}
flag_group {
- expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ expand_if_true: 'libraries_to_link.is_whole_archive'
flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
}
}
flag_group {
- expand_if_all_available: 'libraries_to_link.interface_library_presence'
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'interface_library'
+ }
flag_group {
- expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ expand_if_false: 'libraries_to_link.is_whole_archive'
flag: '%{libraries_to_link.name}'
}
flag_group {
- expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ expand_if_true: 'libraries_to_link.is_whole_archive'
flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
}
}
flag_group {
- expand_if_all_available: 'libraries_to_link.static_library_presence'
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'static_library'
+ }
flag_group {
- expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ expand_if_false: 'libraries_to_link.is_whole_archive'
flag: '%{libraries_to_link.name}'
}
flag_group {
- expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ expand_if_true: 'libraries_to_link.is_whole_archive'
flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
}
}
flag_group {
- expand_if_all_available: 'libraries_to_link.dynamic_library_presence'
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'dynamic_library'
+ }
flag_group {
- expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ expand_if_false: 'libraries_to_link.is_whole_archive'
flag: '%{libraries_to_link.name}'
}
flag_group {
- expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ expand_if_true: 'libraries_to_link.is_whole_archive'
flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
}
}
flag_group {
- expand_if_all_available: 'libraries_to_link.versioned_dynamic_library_presence'
+ expand_if_equal: {
+ variable: 'libraries_to_link.type'
+ value: 'versioned_dynamic_library'
+ }
flag_group {
- expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ expand_if_false: 'libraries_to_link.is_whole_archive'
flag: '%{libraries_to_link.name}'
}
flag_group {
- expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ expand_if_true: 'libraries_to_link.is_whole_archive'
flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
}
}