diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java index e3ace8fe12a5ef..5312500b4c6115 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommandLineOptions.java @@ -103,7 +103,7 @@ public class ObjcCommandLineOptions extends FragmentOptions { @Option( name = "incompatible_avoid_hardcoded_objc_compilation_flags", - defaultValue = "false", + defaultValue = "true", documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, effectTags = { OptionEffectTag.AFFECTS_OUTPUTS, diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java index a996dcf63f9097..17dee7932f74fe 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java @@ -1131,9 +1131,14 @@ public void testPopulatesCompilationArtifacts() throws Exception { checkPopulatesCompilationArtifacts(RULE_TYPE); } + @Test + public void testCompilationActionsForDebugLegacyFlags() throws Exception { + checkClangCoptsForCompilationMode(RULE_TYPE, CompilationMode.DBG, true); + } + @Test public void testCompilationActionsForDebug() throws Exception { - checkClangCoptsForCompilationMode(RULE_TYPE, CompilationMode.DBG); + checkClangCoptsForCompilationMode(RULE_TYPE, CompilationMode.DBG, false); } @Test @@ -1169,9 +1174,14 @@ public void testClangCoptsForDebugModeWithoutGlibOrHardcoding() throws Exception .containsNoneOf("-D_GLIBCXX_DEBUG", "-DDEBUG=1"); } + @Test + public void testCompilationActionsForOptimizedLegacyFlags() throws Exception { + checkClangCoptsForCompilationMode(RULE_TYPE, CompilationMode.OPT, true); + } + @Test public void testCompilationActionsForOptimized() throws Exception { - checkClangCoptsForCompilationMode(RULE_TYPE, CompilationMode.OPT); + checkClangCoptsForCompilationMode(RULE_TYPE, CompilationMode.OPT, false); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java index ba4a073075a574..ce874922ff0c19 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java @@ -117,14 +117,12 @@ private static String compilationModeFlag(CompilationMode mode) { throw new AssertionError(); } - protected static ImmutableList compilationModeCopts(CompilationMode mode) { + protected static ImmutableList legacyCompilationModeCopts(CompilationMode mode) { switch (mode) { case DBG: return ImmutableList.copyOf(ObjcConfiguration.DBG_COPTS); case OPT: return ObjcConfiguration.OPT_COPTS; - case FASTBUILD: - return FASTBUILD_COPTS; } throw new AssertionError(); } @@ -890,13 +888,18 @@ protected List rootedIncludePaths(String... unrootedPaths) { return rootedPaths.build(); } - protected void checkClangCoptsForCompilationMode(RuleType ruleType, CompilationMode mode) + protected void checkClangCoptsForCompilationMode(RuleType ruleType, CompilationMode mode, boolean includeLegacyFlags) throws Exception { ImmutableList.Builder allExpectedCoptsBuilder = ImmutableList.builder() - .addAll(CompilationSupport.DEFAULT_COMPILER_FLAGS) - .addAll(compilationModeCopts(mode)); + .addAll(CompilationSupport.DEFAULT_COMPILER_FLAGS); + + if (includeLegacyFlags) { + allExpectedCoptsBuilder.addAll(legacyCompilationModeCopts(mode)); + } + useConfiguration( + "--incompatible_avoid_hardcoded_objc_compilation_flags=" + !includeLegacyFlags, "--platforms=" + MockObjcSupport.IOS_X86_64, "--apple_platform_type=ios", "--compilation_mode=" + compilationModeFlag(mode)); @@ -913,8 +916,7 @@ protected void checkClangCoptsForCompilationMode(RuleType ruleType, CompilationM protected void checkClangCoptsForDebugModeWithoutGlib(RuleType ruleType) throws Exception { ImmutableList.Builder allExpectedCoptsBuilder = ImmutableList.builder() - .addAll(CompilationSupport.DEFAULT_COMPILER_FLAGS) - .addAll(ObjcConfiguration.DBG_COPTS); + .addAll(CompilationSupport.DEFAULT_COMPILER_FLAGS); useConfiguration( "--platforms=" + MockObjcSupport.IOS_X86_64, diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java index 05307c0a4b8849..d02d09b2697cb2 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcStarlarkTest.java @@ -832,6 +832,7 @@ def swift_binary_impl(ctx): """); useConfiguration( + "--incompatible_avoid_hardcoded_objc_compilation_flags=false", "--compilation_mode=opt", "--ios_simulator_device='iPhone 6'", "--ios_simulator_version=8.4",