[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