Do not use static_linking_mode for dynamic libraries and objc rules

Another dark corner corner of crosstools appeared, and apparently we didn't enable MOSTLY STATIC linking mode flags for dynamic libraries or objc. This cl addresses that in the legacy fields migrator.

RELNOTES: None.
PiperOrigin-RevId: 233397974
This commit is contained in:
hlopko 2019-02-11 06:47:11 -08:00 committed by Copybara-Service
parent dfb180b486
commit 49a6c21b32
2 changed files with 11 additions and 3 deletions

View File

@ -46,6 +46,8 @@ NODEPS_DYNAMIC_LIBRARY_LINK_ACTIONS = ["c++-link-nodeps-dynamic-library"]
TRANSITIVE_LINK_ACTIONS = ["c++-link-executable", "c++-link-dynamic-library"] TRANSITIVE_LINK_ACTIONS = ["c++-link-executable", "c++-link-dynamic-library"]
CC_LINK_EXECUTABLE = ["c++-link-executable"]
def compile_actions(toolchain): def compile_actions(toolchain):
"""Returns compile actions for cc or objc rules.""" """Returns compile actions for cc or objc rules."""
@ -403,8 +405,12 @@ def _extract_legacy_link_flag_sets_for(toolchain):
feature_name, feature_name,
transitive_link_actions(toolchain), lmf.linker_flag, [] transitive_link_actions(toolchain), lmf.linker_flag, []
]) ])
else: elif mode == "MOSTLY_STATIC":
result.append( result.append(
[feature_name,
CC_LINK_EXECUTABLE, lmf.linker_flag, []])
else:
result.append(
[feature_name, [feature_name,
link_actions(toolchain), lmf.linker_flag, []]) link_actions(toolchain), lmf.linker_flag, []])

View File

@ -9,6 +9,7 @@ from tools.migration.legacy_fields_migration_lib import ALL_OBJC_LINK_ACTIONS
from tools.migration.legacy_fields_migration_lib import DYNAMIC_LIBRARY_LINK_ACTIONS from tools.migration.legacy_fields_migration_lib import DYNAMIC_LIBRARY_LINK_ACTIONS
from tools.migration.legacy_fields_migration_lib import NODEPS_DYNAMIC_LIBRARY_LINK_ACTIONS from tools.migration.legacy_fields_migration_lib import NODEPS_DYNAMIC_LIBRARY_LINK_ACTIONS
from tools.migration.legacy_fields_migration_lib import TRANSITIVE_LINK_ACTIONS from tools.migration.legacy_fields_migration_lib import TRANSITIVE_LINK_ACTIONS
from tools.migration.legacy_fields_migration_lib import CC_LINK_EXECUTABLE
from tools.migration.legacy_fields_migration_lib import migrate_legacy_fields from tools.migration.legacy_fields_migration_lib import migrate_legacy_fields
@ -412,6 +413,7 @@ class LegacyFieldsMigrationLibTest(unittest.TestCase):
# flag set for linking_mode_flags # flag set for linking_mode_flags
self.assertEqual(len(output.feature[0].flag_set[2].with_feature), 1) self.assertEqual(len(output.feature[0].flag_set[2].with_feature), 1)
self.assertEqual(output.feature[0].flag_set[2].action, CC_LINK_EXECUTABLE)
self.assertEqual(output.feature[0].flag_set[2].with_feature[0].feature[0], self.assertEqual(output.feature[0].flag_set[2].with_feature[0].feature[0],
"static_linking_mode") "static_linking_mode")
self.assertEqual(output.feature[0].flag_set[2].flag_group[0].flag, self.assertEqual(output.feature[0].flag_set[2].flag_group[0].flag,
@ -496,7 +498,7 @@ class LegacyFieldsMigrationLibTest(unittest.TestCase):
self.assertEqual(output.feature[0].flag_set[1].flag_group[0].flag, self.assertEqual(output.feature[0].flag_set[1].flag_group[0].flag,
["cmf-flag-2"]) ["cmf-flag-2"])
self.assertEqual(output.feature[0].flag_set[2].action, ALL_CC_LINK_ACTIONS) self.assertEqual(output.feature[0].flag_set[2].action, CC_LINK_EXECUTABLE)
self.assertEqual(output.feature[0].flag_set[2].with_feature[0].feature[0], self.assertEqual(output.feature[0].flag_set[2].with_feature[0].feature[0],
"static_linking_mode") "static_linking_mode")
self.assertEqual(output.feature[0].flag_set[2].flag_group[0].flag, self.assertEqual(output.feature[0].flag_set[2].flag_group[0].flag,
@ -550,7 +552,7 @@ class LegacyFieldsMigrationLibTest(unittest.TestCase):
self.assertEqual(output.feature[0].flag_set[1].action[:], self.assertEqual(output.feature[0].flag_set[1].action[:],
ALL_CC_LINK_ACTIONS + ALL_OBJC_LINK_ACTIONS) ALL_CC_LINK_ACTIONS + ALL_OBJC_LINK_ACTIONS)
self.assertEqual(output.feature[0].flag_set[2].action[:], self.assertEqual(output.feature[0].flag_set[2].action[:],
ALL_CC_LINK_ACTIONS + ALL_OBJC_LINK_ACTIONS) CC_LINK_EXECUTABLE)
self.assertEqual(output.feature[0].flag_set[3].action[:], self.assertEqual(output.feature[0].flag_set[3].action[:],
DYNAMIC_LIBRARY_LINK_ACTIONS) DYNAMIC_LIBRARY_LINK_ACTIONS)
self.assertEqual(output.feature[0].flag_set[4].action[:], self.assertEqual(output.feature[0].flag_set[4].action[:],