Title: [290199] trunk/Tools
Revision
290199
Author
ddkil...@apple.com
Date
2022-02-18 23:19:34 -0800 (Fri, 18 Feb 2022)

Log Message

[Tools] Sanitizer builds should obey `set-webkit-configuration --force-optimization-level`
<https://webkit.org/b/236859>
<rdar://problem/89161649>

Reviewed by Brent Fulgham.

* Scripts/webkitdirs.pm:
(XcodeOptions):
- Pass WK_FORCE_OPTIMIZATION_LEVEL instead of
  GCC_OPTIMIZATION_LEVEL if sanitizers are enabled so the
  optimization level can be overridden in sanitizer.xcconfig.

* sanitizer/asan.xcconfig:
(WK_NOT_): Remove.
(WK_NOT_YES): Remove.
- Move variables to sanitizer.xcconfig.

* sanitizer/sanitizer.xcconfig:
(WK_EMPTY_): Add.
(WK_NOT_): Add.
(WK_NOT_YES): Add.
- Add utility variables originally from SDKVariant.xcconfig.
(WK_OVERRIDE_OPTIMIZATION_LEVEL): Add.
- Set to YES/NO depending on whether WK_FORCE_OPTIMIZATION_LEVEL
  is set.
(GCC_OPTIMIZATION_LEVEL):
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_YES): Add.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO): Add.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Debug): Rename from GCC_OPTIMIZATION_LEVEL_Debug.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Production): Rename from GCC_OPTIMIZATION_LEVEL_Production.
(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Release): Rename from GCC_OPTIMIZATION_LEVEL_Release.
- Make use of WK_OVERRIDE_OPTIMIZATION_LEVEL and
  WK_FORCE_OPTIMIZATION_LEVEL to allow overriding the default
  optimization level for sanitizer builds.

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (290198 => 290199)


--- trunk/Tools/ChangeLog	2022-02-19 05:26:41 UTC (rev 290198)
+++ trunk/Tools/ChangeLog	2022-02-19 07:19:34 UTC (rev 290199)
@@ -1,3 +1,40 @@
+2022-02-18  David Kilzer  <ddkil...@apple.com>
+
+        [Tools] Sanitizer builds should obey `set-webkit-configuration --force-optimization-level`
+        <https://webkit.org/b/236859>
+        <rdar://problem/89161649>
+
+        Reviewed by Brent Fulgham.
+
+        * Scripts/webkitdirs.pm:
+        (XcodeOptions):
+        - Pass WK_FORCE_OPTIMIZATION_LEVEL instead of
+          GCC_OPTIMIZATION_LEVEL if sanitizers are enabled so the
+          optimization level can be overridden in sanitizer.xcconfig.
+
+        * sanitizer/asan.xcconfig:
+        (WK_NOT_): Remove.
+        (WK_NOT_YES): Remove.
+        - Move variables to sanitizer.xcconfig.
+
+        * sanitizer/sanitizer.xcconfig:
+        (WK_EMPTY_): Add.
+        (WK_NOT_): Add.
+        (WK_NOT_YES): Add.
+        - Add utility variables originally from SDKVariant.xcconfig.
+        (WK_OVERRIDE_OPTIMIZATION_LEVEL): Add.
+        - Set to YES/NO depending on whether WK_FORCE_OPTIMIZATION_LEVEL
+          is set.
+        (GCC_OPTIMIZATION_LEVEL):
+        (GCC_OPTIMIZATION_LEVEL_OVERRIDE_YES): Add.
+        (GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO): Add.
+        (GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Debug): Rename from GCC_OPTIMIZATION_LEVEL_Debug.
+        (GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Production): Rename from GCC_OPTIMIZATION_LEVEL_Production.
+        (GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Release): Rename from GCC_OPTIMIZATION_LEVEL_Release.
+        - Make use of WK_OVERRIDE_OPTIMIZATION_LEVEL and
+          WK_FORCE_OPTIMIZATION_LEVEL to allow overriding the default
+          optimization level for sanitizer builds.
+
 2022-02-18  Ben Nham  <n...@apple.com>
 
         Hook up PushManager to permission state

Modified: trunk/Tools/Scripts/webkitdirs.pm (290198 => 290199)


--- trunk/Tools/Scripts/webkitdirs.pm	2022-02-19 05:26:41 UTC (rev 290198)
+++ trunk/Tools/Scripts/webkitdirs.pm	2022-02-19 07:19:34 UTC (rev 290199)
@@ -1032,7 +1032,14 @@
         push @options, ("-xcconfig", File::Spec->catfile(sourceDir(), "Tools", "sanitizer", "ubsan.xcconfig"));
     }
     push @options, XcodeCoverageSupportOptions() if $coverageIsEnabled;
-    push @options, ("GCC_OPTIMIZATION_LEVEL=$forceOptimizationLevel") if $forceOptimizationLevel;
+    if ($forceOptimizationLevel) {
+        if ($asanIsEnabled || $tsanIsEnabled || $ubsanIsEnabled) {
+            # Command-line Xcode variable won't override that same varible set in a command-line xcconfig file.
+            push @options, "WK_FORCE_OPTIMIZATION_LEVEL=$forceOptimizationLevel";
+        } else {
+            push @options, "GCC_OPTIMIZATION_LEVEL=$forceOptimizationLevel";
+        }
+    }
     push @options, "WK_LTO_MODE=$ltoMode" if $ltoMode;
     push @options, @baseProductDirOption;
     push @options, "ARCHS=$architecture" if $architecture;

Modified: trunk/Tools/sanitizer/asan.xcconfig (290198 => 290199)


--- trunk/Tools/sanitizer/asan.xcconfig	2022-02-19 05:26:41 UTC (rev 290198)
+++ trunk/Tools/sanitizer/asan.xcconfig	2022-02-19 07:19:34 UTC (rev 290199)
@@ -13,9 +13,6 @@
 // Update after <rdar://87613908> is fixed.
 WK_NEEDS_ASAN_USE_AFTER_SCOPE_WORKAROUND_FOR_bmalloc_YES = -DWK_WORKAROUND_RDAR_87613908_ASAN_STACK_USE_AFTER_SCOPE;
 
-WK_NOT_ = YES;
-WK_NOT_YES = NO;
-
 WK_NEEDS_ASAN_USE_AFTER_SCOPE_WORKAROUND = $(WK_NOT_$(WK_XCODE_VERSION_BEFORE_13_3_$(XCODE_VERSION_MAJOR)));
 
 WK_XCODE_VERSION_BEFORE_13_3_0800 = YES;

Modified: trunk/Tools/sanitizer/sanitizer.xcconfig (290198 => 290199)


--- trunk/Tools/sanitizer/sanitizer.xcconfig	2022-02-19 05:26:41 UTC (rev 290198)
+++ trunk/Tools/sanitizer/sanitizer.xcconfig	2022-02-19 07:19:34 UTC (rev 290199)
@@ -1,8 +1,16 @@
-GCC_OPTIMIZATION_LEVEL = $(GCC_OPTIMIZATION_LEVEL_$(CONFIGURATION));
-GCC_OPTIMIZATION_LEVEL_Debug = 0;
-GCC_OPTIMIZATION_LEVEL_Production = 1;
-GCC_OPTIMIZATION_LEVEL_Release = 1;
+WK_EMPTY_ = YES;
+WK_NOT_ = YES;
+WK_NOT_YES = NO;
 
+WK_OVERRIDE_OPTIMIZATION_LEVEL = $(WK_NOT_$(WK_EMPTY_$(WK_FORCE_OPTIMIZATION_LEVEL)));
+
+GCC_OPTIMIZATION_LEVEL = $(GCC_OPTIMIZATION_LEVEL_OVERRIDE_$(WK_OVERRIDE_OPTIMIZATION_LEVEL));
+GCC_OPTIMIZATION_LEVEL_OVERRIDE_YES = $(WK_FORCE_OPTIMIZATION_LEVEL);
+GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO = $(GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_$(CONFIGURATION));
+GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Debug = 0;
+GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Production = 1;
+GCC_OPTIMIZATION_LEVEL_OVERRIDE_NO_Release = 1;
+
 OTHER_CFLAGS = $(inherited) -fno-omit-frame-pointer -g $(WK_ADDRESS_SANITIZER_OTHER_CFLAGS_$(WK_ENABLE_ADDRESS_SANITIZER)) $(WK_UNDEFINED_BEHAVIOR_SANITIZER_OTHER_CFLAGS_$(WK_ENABLE_UNDEFINED_BEHAVIOR_SANITIZER));
 OTHER_CPLUSPLUSFLAGS = $(inherited) $(WK_ADDRESS_SANITIZER_OTHER_CPLUSPLUSFLAGS_$(WK_ENABLE_ADDRESS_SANITIZER));
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to