[webkit-changes] [WebKit/WebKit] 5ee7a2: [Xcode] Simplify sanitizer builds

EWS noreply at github.com
Tue Feb 21 21:30:41 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 5ee7a204c4e90b89cb781ade596d36a816043c29
      https://github.com/WebKit/WebKit/commit/5ee7a204c4e90b89cb781ade596d36a816043c29
  Author: David Kilzer <ddkilzer at apple.com>
  Date:   2023-02-21 (Tue, 21 Feb 2023)

  Changed paths:
    M Configurations/CommonBase.xcconfig
    M Configurations/SDKVariant.xcconfig
    A Configurations/Sanitizers.xcconfig
    M Source/JavaScriptCore/Configurations/Base.xcconfig
    M Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig
    M Source/ThirdParty/ANGLE/Configurations/Base.xcconfig
    M Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig
    M Source/ThirdParty/libwebrtc/Configurations/yasm.xcconfig
    M Source/WTF/Configurations/Base.xcconfig
    M Source/WebCore/Configurations/Base.xcconfig
    M Source/WebCore/Configurations/WebCore.xcconfig
    M Source/WebCore/Configurations/WebCoreTestSupport.xcconfig
    M Source/WebCore/PAL/Configurations/Base.xcconfig
    M Source/WebCore/PAL/Configurations/PAL.xcconfig
    M Source/WebCore/PAL/ThirdParty/libavif/Configurations/Base.xcconfig
    M Source/WebCore/PAL/ThirdParty/libavif/Configurations/libavif.xcconfig
    M Source/WebCore/PAL/ThirdParty/libavif/ThirdParty/dav1d/Configurations/Base.xcconfig
    M Source/WebCore/PAL/ThirdParty/libavif/ThirdParty/dav1d/Configurations/dav1d.xcconfig
    M Source/WebGPU/Configurations/Base.xcconfig
    M Source/WebGPU/Configurations/WebGPU.xcconfig
    M Source/WebInspectorUI/Configurations/Base.xcconfig
    M Source/WebKit/Configurations/Base.xcconfig
    M Source/WebKit/Configurations/BaseTarget.xcconfig
    M Source/WebKit/Configurations/BaseXPCService.xcconfig
    M Source/WebKit/Configurations/WebKit.xcconfig
    M Source/WebKit/Configurations/adattributiond.xcconfig
    M Source/WebKit/Configurations/webpushd.xcconfig
    M Source/WebKit/Configurations/webpushtool.xcconfig
    M Source/WebKitLegacy/mac/Configurations/Base.xcconfig
    M Source/WebKitLegacy/mac/Configurations/WebKitLegacy.xcconfig
    M Source/bmalloc/Configurations/Base.xcconfig
    M Tools/DumpRenderTree/mac/Configurations/Base.xcconfig
    M Tools/DumpRenderTree/mac/Configurations/BaseTarget.xcconfig
    M Tools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig
    M Tools/DumpRenderTree/mac/Configurations/DumpRenderTreeApp.xcconfig
    M Tools/DumpRenderTree/mac/Configurations/DumpRenderTreeLibrary.xcconfig
    M Tools/ImageDiff/cg/Configurations/ImageDiff.xcconfig
    M Tools/Scripts/webkitdirs.pm
    M Tools/Scripts/webkitpy/style/checker.py
    M Tools/Scripts/webkitpy/style/checker_unittest.py
    A Tools/Scripts/webkitpy/style/checkers/basexcconfig.py
    A Tools/Scripts/webkitpy/style/checkers/basexcconfig_unittest.py
    M Tools/TestWebKitAPI/Configurations/Base.xcconfig
    M Tools/WebGPUPlayground/Configurations/Base.xcconfig
    M Tools/WebKitTestRunner/Configurations/Base.xcconfig
    M Tools/lldb/lldbWebKitTester/Configurations/Base.xcconfig
    R Tools/sanitizer/asan+ubsan.xcconfig
    R Tools/sanitizer/asan.xcconfig
    R Tools/sanitizer/sanitizer.xcconfig
    R Tools/sanitizer/tsan.xcconfig
    R Tools/sanitizer/ubsan.xcconfig

  Log Message:
  -----------
  [Xcode] Simplify sanitizer builds
https://bugs.webkit.org/show_bug.cgi?id=244540
<rdar://98015260>

Reviewed by Elliott Williams.

This change simplifies sanitizer builds of WebKit using Xcode.
Instead of specifying `-xcconfig path/to/*san.xcconfig` on the
command-line, the ENABLE_*_SANITIZER=YES Xcode variables now
activate WebKit-specific settings.

All sanitizer settings are now in a single file named
Configurations/Sanitizers.xcconfig, which is included in every
project via Configurations/CommonBase.xcconfig.

Changes to Base.xcconfig files:
- Rename GCC_OPTIMIZATION_LEVEL variables to add WK_DEFAULT_
  prefix to support overriding in CommonBase.xcconfig.
- OTHER_CFLAGS, OTHER_CPLUSPLUS_FLAGS and OTHER_LDFAGS variables
  are defined in CommonBase.xcconfig, and per-project
  Base.xccconfig files now pick up those values through use of
  $(inherited).  When $(inherited) is not used, the
  corresponding WK_COMMON_ variable is used to include these
  values in various targets.

Other changes too numerous to list individually below:
- Rename all sanitizer variables to add WK_ prefixes.
- Rename ENABLE_ANY_SANITIZER to WK_ANY_SANITIZER_ENABLED in
  WK_NO_STATIC_INITIALIZERS variables.
- Rename WK_ASAN_DISALLOWED to WK_SANITIZER_DISALLOWED in
  yasm.xcconfig and ImageDiff.xcconfig since it disables all
  sanitizers.
- Remove ASAN_OTHER_LDFLAGS variable when the value of
  WK_SANITIZER_OTHER_LDFLAGS is inherited.
- Replace ASAN_OTHER_LDFLAGS with WK_COMMON_OTHER_LDFAGS when
  OTHER_LDFLAGS does not use $(inherited).
- Move WK_LIBCPP_ASSERTIONS_CFLAGS to be added to
  OTHER_CPLUSPLUSFLAGS in CommonBase.xcconfig.  This enables the
  macro in more projects, and removes it from OTHER_CFLAGS in
  some projects (since it only affects C++ code).

* Configurations/CommonBase.xcconfig:
- Include Sanitizers.xcconfig.
- GCC_OPTIMIZATION_LEVEL is now set (or overridden) here instead
  of in each project's Base.xcconfig.
- Initial values of OTHER_CFLAGS, OTHER_CPLUSPLUS_FLAGS and
  OTHER_LDFAGS variables are now set here.
- Move WK_COMMON_WARNING_CFLAGS and add FIXME comment.
* Configurations/SDKVariant.xcconfig:
- Add WK_ADD_ macros used by Sanitizers.xcconfig.
* Configurations/Sanitizers.xcconfig: Add.
- Combines all of the Tools/sanitizer xcconfig files into one.
- Add -fsanitize=enum,return for UBSan since some versions of
  Xcode disable these checks by default.
- Add a FIXME for disabling sanitizers on host-side tools.

* Source/JavaScriptCore/Configurations/Base.xcconfig:
* Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Source/ThirdParty/ANGLE/Configurations/Base.xcconfig:
- Switch OTHER_LDFLAGS to use $(inherited).
* Source/ThirdParty/libwebrtc/Configurations/Base.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Source/ThirdParty/libwebrtc/Configurations/yasm.xcconfig:
* Source/WTF/Configurations/Base.xcconfig:
* Source/WebCore/Configurations/Base.xcconfig:
* Source/WebCore/Configurations/WebCore.xcconfig:
* Source/WebCore/Configurations/WebCoreTestSupport.xcconfig:
* Source/WebCore/PAL/Configurations/Base.xcconfig:
* Source/WebCore/PAL/Configurations/PAL.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Source/WebCore/PAL/ThirdParty/libavif/Configurations/Base.xcconfig:
* Source/WebCore/PAL/ThirdParty/libavif/Configurations/libavif.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Source/WebCore/PAL/ThirdParty/libavif/ThirdParty/dav1d/Configurations/Base.xcconfig:
* Source/WebCore/PAL/ThirdParty/libavif/ThirdParty/dav1d/Configurations/dav1d.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Source/WebGPU/Configurations/Base.xcconfig:
* Source/WebGPU/Configurations/WebGPU.xcconfig:
* Source/WebInspectorUI/Configurations/Base.xcconfig:
* Source/WebKit/Configurations/Base.xcconfig:
* Source/WebKit/Configurations/BaseTarget.xcconfig:
* Source/WebKit/Configurations/BaseXPCService.xcconfig:
* Source/WebKit/Configurations/WebKit.xcconfig:
* Source/WebKit/Configurations/adattributiond.xcconfig:
* Source/WebKit/Configurations/webpushd.xcconfig:
* Source/WebKit/Configurations/webpushtool.xcconfig:
* Source/WebKitLegacy/mac/Configurations/Base.xcconfig:
* Source/WebKitLegacy/mac/Configurations/WebKitLegacy.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Source/bmalloc/Configurations/Base.xcconfig:
* Tools/DumpRenderTree/mac/Configurations/Base.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Tools/DumpRenderTree/mac/Configurations/BaseTarget.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Tools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
* Tools/DumpRenderTree/mac/Configurations/DumpRenderTreeApp.xcconfig:
* Tools/DumpRenderTree/mac/Configurations/DumpRenderTreeLibrary.xcconfig:
- Delete OTHER_LDFLAGS since it was not overriding anything from
  its Base.xcconfig.
* Tools/ImageDiff/cg/Configurations/ImageDiff.xcconfig:
- Remove redundant OTHER_CPLUSPLUSFLAGS variable.
* Tools/TestWebKitAPI/Configurations/Base.xcconfig:
* Tools/WebGPUPlayground/Configurations/Base.xcconfig:
* Tools/WebKitTestRunner/Configurations/Base.xcconfig:
* Tools/lldb/lldbWebKitTester/Configurations/Base.xcconfig:

* Tools/Scripts/webkitdirs.pm:
(XcodeOptions):
- Simplify options for enabling sanitizers or overriding the
  compiler optimization level.
* Tools/Scripts/webkitpy/style/checker.py:
(_all_categories):
- Add BaseXcconfigChecker categories.
(FileType):
- Replace unused SDKVARIANT with BASE_XCCONFIG.
(CheckerDispatcher._file_type):
- Return FileType for Base.xcconfig files.
(CheckerDispatcher._create_checker):
- Set checker for Base.xcconfig files.
* Tools/Scripts/webkitpy/style/checker_unittest.py:
(CheckerDispatcherDispatchTest.assert_checker_basexcconfig):
(CheckerDispatcherDispatchTest.test_basexcconfig_paths):
- Add test for BaseXcconfigChecker.
* Tools/Scripts/webkitpy/style/checkers/basexcconfig.py: Add.
(BaseXcconfigChecker):
(BaseXcconfigChecker.__init__):
(BaseXcconfigChecker.read_common_base_xcconfig_variables):
(BaseXcconfigChecker.check):
- Implement BaseXcconfigChecker.
- The checker is dynamic in that it reads CommonBase.xcconfig to
  determine which variables require checking in Base.xcconfig
  project files.
* Tools/Scripts/webkitpy/style/checkers/basexcconfig_unittest.py: Add.
(BaseXcconfigCheckerTest):
(BaseXcconfigCheckerTest.assert_no_error):
(BaseXcconfigCheckerTest.assert_no_error.handle_style_error):
(BaseXcconfigCheckerTest.assert_error):
(BaseXcconfigCheckerTest.assert_error.handle_style_error):
(BaseXcconfigCheckerTest.mock_handle_style_error):
(BaseXcconfigCheckerTest.test_init):
(BaseXcconfigCheckerTest.test_gcc_optimization_level):
(BaseXcconfigCheckerTest.test_wk_default_gcc_optimization_level):
(BaseXcconfigCheckerTest.test_other_cflags):
(BaseXcconfigCheckerTest.test_other_cplusplusflags):
(BaseXcconfigCheckerTest.test_other_ldflags):
- Add unit tests for BaseXcconfigChecker.

* Tools/sanitizer/asan+ubsan.xcconfig: Remove.
* Tools/sanitizer/asan.xcconfig: Remove.
* Tools/sanitizer/sanitizer.xcconfig: Remove.
* Tools/sanitizer/tsan.xcconfig: Remove.
* Tools/sanitizer/ubsan.xcconfig: Remove.

Canonical link: https://commits.webkit.org/260654@main




More information about the webkit-changes mailing list