Expose type of library_to_link in CROSSTOOL
This cl relieves us from hard-coding -l and -l: flags in Bazel. To be able to
express the behavior in CROSSTOOL, we need to know what type of library are we
dealing with.
--
PiperOrigin-RevId: 145271426
MOS_MIGRATED_REVID=145271426
diff --git a/tools/cpp/CROSSTOOL.tpl b/tools/cpp/CROSSTOOL.tpl
index c73cb42..75c9f88 100644
--- a/tools/cpp/CROSSTOOL.tpl
+++ b/tools/cpp/CROSSTOOL.tpl
@@ -477,14 +477,71 @@
flag_group {
iterate_over: 'libraries_to_link'
flag_group {
- expand_if_true: 'libraries_to_link.is_whole_archive'
- iterate_over: 'libraries_to_link.names'
- flag: '/WHOLEARCHIVE:%{libraries_to_link.names}'
+ expand_if_all_available: 'libraries_to_link.object_file_group_presence'
+ iterate_over: 'libraries_to_link.object_files'
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ flag: '%{libraries_to_link.object_files}'
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.object_files}'
+ }
}
flag_group {
- expand_if_false: 'libraries_to_link.is_whole_archive'
- iterate_over: 'libraries_to_link.names'
- flag: '%{libraries_to_link.names}'
+ expand_if_all_available: 'libraries_to_link.object_file_presence'
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.interface_library_presence'
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.static_library_presence'
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.dynamic_library_presence'
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.versioned_dynamic_library_presence'
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.no_whole_archive_presence'
+ flag: '%{libraries_to_link.name}'
+ }
+ flag_group {
+ expand_if_all_available: 'libraries_to_link.whole_archive_presence'
+ flag: '/WHOLEARCHIVE:%{libraries_to_link.name}'
+ }
}
}
}