Enable the use of XCBuild by default in Apple builds
authorkrollin@apple.com <krollin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 May 2020 16:17:44 +0000 (16:17 +0000)
committerkrollin@apple.com <krollin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 May 2020 16:17:44 +0000 (16:17 +0000)
https://bugs.webkit.org/show_bug.cgi?id=209890
<rdar://problem/44182078>

Reviewed by Darin Adler.

Switch from the "legacy" Xcode build system to the "new" build system
(also known as "XCBuild"). Switching to the new system speeds up
builds by a small percentage, better validates projects for
build-related issues (such as dependency cycles), lets WebKit benefit
from future improvements in XCBuild such as those coming from the
underlying llbuild open source project, and prepares us for any other
tools built for this new ecosystem.

Specific changes:

- Remove Xcode project and workspace settings that selected the Build
  system, allowing the default to take hold (which is currently the
  New build system).
- Updated webkitdirs.pm with a terser check for Xcode version.
- Update build-webkit and Makefile.shared to be explicit when using
  the old build system (no longer treat it as a default or fall-back
  configuration).
- Update various xcconfig files similarly to treat the default as
  using the new build system.
- Update various post-processing build steps to check for Xcode 11.4
  and to no longer treat the default as using the old build system.

.:

* Makefile.shared:
* WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:

Source/JavaScriptCore:

* Configurations/JavaScriptCore.xcconfig:
* JavaScriptCore.xcodeproj/project.pbxproj:

Source/ThirdParty/ANGLE:

* ANGLE.xcodeproj/project.pbxproj:
* Configurations/ANGLE.xcconfig:

Source/ThirdParty/libwebrtc:

* libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

No new tests -- no changed functionality.

* WebCore.xcodeproj/project.pbxproj:

Source/WebKit:

* Configurations/WebKit.xcconfig:
* WebKit.xcodeproj/project.pbxproj:

Source/WebKitLegacy:

* WebKitLegacy.xcodeproj/project.pbxproj:

Source/WebKitLegacy/mac:

* Configurations/WebKitLegacy.xcconfig:

Tools:

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* Scripts/build-webkit:
* Scripts/webkitdirs.pm:
(canUseXCBuild):
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@262147 268f45cc-cd09-0410-ab3c-d52691b4dbfc

25 files changed:
ChangeLog
Makefile.shared
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/Configurations/JavaScriptCore.xcconfig
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
Source/ThirdParty/ANGLE/ANGLE.xcodeproj/project.pbxproj
Source/ThirdParty/ANGLE/ChangeLog
Source/ThirdParty/ANGLE/Configurations/ANGLE.xcconfig
Source/ThirdParty/libwebrtc/ChangeLog
Source/ThirdParty/libwebrtc/libwebrtc.xcodeproj/project.pbxproj
Source/WebCore/ChangeLog
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebKit/ChangeLog
Source/WebKit/Configurations/WebKit.xcconfig
Source/WebKit/WebKit.xcodeproj/project.pbxproj
Source/WebKitLegacy/ChangeLog
Source/WebKitLegacy/WebKitLegacy.xcodeproj/project.pbxproj
Source/WebKitLegacy/mac/ChangeLog
Source/WebKitLegacy/mac/Configurations/WebKitLegacy.xcconfig
Tools/ChangeLog
Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
Tools/Scripts/build-webkit
Tools/Scripts/webkitdirs.pm
Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

index 6e96aeb..e7e8589 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,36 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * Makefile.shared:
+        * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
+
 2020-05-22  Yoshiaki JITSUKAWA  <yoshiaki.jitsukawa@sony.com>
 
         [PlayStation] Enable JSC shell to run
index 8b13073..53e1a65 100644 (file)
@@ -51,6 +51,7 @@ ifeq ($(findstring UseNewBuildSystem,$(ARGS)),)
                XCODE_OPTIONS += USE_NEW_BUILD_SYSTEM=YES
        else
                XCODE_OPTIONS += -UseNewBuildSystem=NO
+               XCODE_OPTIONS += USE_NEW_BUILD_SYSTEM=NO
        endif
 endif
 
index ba66a39..ad29518 100644 (file)
@@ -1,3 +1,36 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * Configurations/JavaScriptCore.xcconfig:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+
 2020-05-23  Paulo Matos  <pmatos@igalia.com>
 
         Fix non-unified builds for x86_64
index 5a9a0b4..d9c65f9 100644 (file)
@@ -52,6 +52,9 @@ PRODUCT_NAME = JavaScriptCore;
 PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(PRODUCT_NAME:rfc1034identifier);
 
 INSTALLHDRS_SCRIPT_PHASE = YES;
-APPLY_RULES_IN_COPY_HEADERS = $(USE_NEW_BUILD_SYSTEM);
+APPLY_RULES_IN_COPY_HEADERS = $(WK_APPLY_RULES_IN_COPY_HEADERS_$(USE_NEW_BUILD_SYSTEM));
+WK_APPLY_RULES_IN_COPY_HEADERS_ = YES;
+WK_APPLY_RULES_IN_COPY_HEADERS_NO = NO;
+WK_APPLY_RULES_IN_COPY_HEADERS_YES = YES;
 
 EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*] = framework.sb;
index 31be7d1..e9844dd 100644 (file)
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               DefaultBuildSystemTypeForWorkspace = Original;
                                LastSwiftUpdateCheck = 0700;
                                LastUpgradeCheck = 1140;
                                TargetAttributes = {
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1100\" -a \"${USE_NEW_BUILD_SYSTEM}\" = \"YES\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nexec ${SRCROOT}/postprocess-headers.sh\n";
+                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1140\" -a \"${USE_NEW_BUILD_SYSTEM}\" != \"NO\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nexec ${SRCROOT}/postprocess-headers.sh\n";
                };
                374F95C9205F9975002BF68F /* Make libWTF.a Symbolic Link */ = {
                        isa = PBXShellScriptBuildPhase;
index 0f32f4b..2527865 100644 (file)
                                FB39D0CF1200F0E300088E69 /* Frameworks */,
                                312BDB0B15FECAB00097EBC7 /* CopyFiles */,
                                312BDB0D15FECACE0097EBC7 /* CopyFiles */,
-                               6E28B8742294DD8000717E69 /* ShellScript */,
+                               6E28B8742294DD8000717E69 /* Adjust ANGLE Paths */,
                        );
                        buildRules = (
                                53E934DB230609D800DE060C /* PBXBuildRule */,
 /* End PBXProject section */
 
 /* Begin PBXShellScriptBuildPhase section */
-               6E28B8742294DD8000717E69 /* ShellScript */ = {
+               6E28B8742294DD8000717E69 /* Adjust ANGLE Paths */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
                        );
                        inputPaths = (
                        );
+                       name = "Adjust ANGLE Paths";
                        outputFileListPaths = (
                        );
                        outputPaths = (
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1100\" -a \"${USE_NEW_BUILD_SYSTEM}\" = \"YES\" ]; then\n    exit 0\nfi\n\nexec \"$SRCROOT/adjust-angle-include-paths.sh\"\n";
+                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1140\" -a \"${USE_NEW_BUILD_SYSTEM}\" != \"NO\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nexec \"$SRCROOT/adjust-angle-include-paths.sh\"\n";
                };
 /* End PBXShellScriptBuildPhase section */
 
index bc8b798..21f5d14 100644 (file)
@@ -1,3 +1,36 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * ANGLE.xcodeproj/project.pbxproj:
+        * Configurations/ANGLE.xcconfig:
+
 2020-05-22  Kenneth Russell  <kbr@chromium.org>
 
         [ANGLE - iOS] webgl/1.0.3/conformance/extensions/ext-sRGB.html is failing
index 7cc1951..91bc6ef 100644 (file)
@@ -4,7 +4,10 @@
 PRODUCT_NAME = ANGLE;
 
 INSTALLHDRS_SCRIPT_PHASE = YES;
-APPLY_RULES_IN_COPY_HEADERS = $(USE_NEW_BUILD_SYSTEM);
+APPLY_RULES_IN_COPY_HEADERS = $(WK_APPLY_RULES_IN_COPY_HEADERS_$(USE_NEW_BUILD_SYSTEM));
+WK_APPLY_RULES_IN_COPY_HEADERS_ = YES;
+WK_APPLY_RULES_IN_COPY_HEADERS_NO = NO;
+WK_APPLY_RULES_IN_COPY_HEADERS_YES = YES;
 CLANG_WARN_BOOL_CONVERSION = YES;
 CLANG_WARN_ENUM_CONVERSION = YES;
 CLANG_WARN_INT_CONVERSION = YES;
index 6a8fd2b..6dfe900 100644 (file)
@@ -1,3 +1,35 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * libwebrtc.xcodeproj/project.pbxproj:
+
 2020-05-13  Jer Noble  <jer.noble@apple.com>
 
         Replace isNullFunctionPointer with real weak-linking support
index 19aaeeb..e837ad8 100644 (file)
                FB39D0701200ED9200088E69 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               DefaultBuildSystemTypeForWorkspace = Original;
                                LastSwiftUpdateCheck = 0700;
                                LastUpgradeCheck = 1000;
                                TargetAttributes = {
index c02605a..81a7af0 100644 (file)
@@ -1,3 +1,37 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        No new tests -- no changed functionality.
+
+        * WebCore.xcodeproj/project.pbxproj:
+
 2020-05-26  Zalan Bujtas  <zalan@apple.com>
 
         [LFC][TFC] Add support for multiple sections
index d86d2ad..d190342 100644 (file)
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               DefaultBuildSystemTypeForWorkspace = Original;
                                LastSwiftUpdateCheck = 0700;
                                LastUpgradeCheck = 1140;
                                TargetAttributes = {
index 5071889..a1378f3 100644 (file)
@@ -1,3 +1,36 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * Configurations/WebKit.xcconfig:
+        * WebKit.xcodeproj/project.pbxproj:
+
 2020-05-26  Carlos Garcia Campos  <cgarcia@igalia.com>
 
         [GTK4] Fix context menu
index f14e8e6..d4dab37 100644 (file)
@@ -160,7 +160,10 @@ EXCLUDED_SOURCE_FILE_NAMES = Resources/ios/*;
 EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*] = PluginProcessShim.dylib SecItemShim.dylib WebProcessShim.dylib *.pdf Resources/mac/* com.apple.WebKit.NetworkProcess.sb com.apple.WebKit.GPUProcess.sb com.apple.WebProcess.sb com.apple.WebKit.plugin-common.sb PlugInSandboxProfiles/*.sb;
 
 INSTALLHDRS_SCRIPT_PHASE = YES;
-APPLY_RULES_IN_COPY_HEADERS = $(USE_NEW_BUILD_SYSTEM);
+APPLY_RULES_IN_COPY_HEADERS = $(WK_APPLY_RULES_IN_COPY_HEADERS_$(USE_NEW_BUILD_SYSTEM));
+WK_APPLY_RULES_IN_COPY_HEADERS_ = YES;
+WK_APPLY_RULES_IN_COPY_HEADERS_NO = NO;
+WK_APPLY_RULES_IN_COPY_HEADERS_YES = YES;
 
 WK_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED[sdk=macosx*] = $(WK_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED$(WK_MACOS_1016));
 WK_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED_MACOS_BEFORE_1016 = YES;
index d353ec2..562a337 100644 (file)
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               DefaultBuildSystemTypeForWorkspace = Original;
                                LastSwiftUpdateCheck = 0700;
                                LastUpgradeCheck = 1140;
                                TargetAttributes = {
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1100\" -a \"${USE_NEW_BUILD_SYSTEM}\" = \"YES\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nif [ \"${ACTION}\" = \"build\" -o \"${ACTION}\" = \"install\" -o \"${ACTION}\" = \"installhdrs\" -o \"${ACTION}\" = \"installapi\" ]; then\n    exec ${SRCROOT}/mac/postprocess-framework-headers.sh\nfi\n";
+                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1140\" -a \"${USE_NEW_BUILD_SYSTEM}\" != \"NO\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nif [ \"${ACTION}\" = \"build\" -o \"${ACTION}\" = \"install\" -o \"${ACTION}\" = \"installhdrs\" -o \"${ACTION}\" = \"installapi\" ]; then\n    exec ${SRCROOT}/mac/postprocess-framework-headers.sh\nfi\n";
                };
                1A2180161B5454620046AEC4 /* Add Symlink in /System/Library/PrivateFrameworks */ = {
                        isa = PBXShellScriptBuildPhase;
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1100\" -a \"${USE_NEW_BUILD_SYSTEM}\" = \"YES\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nWKFOUNDATION_H=${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/WKFoundation.h\n\nif [[ \"${WK_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED}\" == \"YES\" ]]; then\n    UNIFDEF_OPTIONS=\"-UWK_FRAMEWORK_HEADER_POSTPROCESSING_ENABLED\";\nelse\n    UNIFDEF_OPTIONS=\"-DWK_FRAMEWORK_HEADER_POSTPROCESSING_ENABLED\";\nfi\n\nunifdef -B ${UNIFDEF_OPTIONS} -o \"${WKFOUNDATION_H}\".unifdef \"${WKFOUNDATION_H}\"\n\ncase $? in\n0)\n    rm \"${WKFOUNDATION_H}\".unifdef\n    ;;\n1)\n    mv \"${WKFOUNDATION_H}\"{.unifdef,}\n    ;;\n*)\n    exit 1\nesac\n";
+                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1140\" -a \"${USE_NEW_BUILD_SYSTEM}\" != \"NO\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nWKFOUNDATION_H=${TARGET_BUILD_DIR}/${PUBLIC_HEADERS_FOLDER_PATH}/WKFoundation.h\n\nif [[ \"${WK_FRAMEWORK_HEADER_POSTPROCESSING_DISABLED}\" == \"YES\" ]]; then\n    UNIFDEF_OPTIONS=\"-UWK_FRAMEWORK_HEADER_POSTPROCESSING_ENABLED\";\nelse\n    UNIFDEF_OPTIONS=\"-DWK_FRAMEWORK_HEADER_POSTPROCESSING_ENABLED\";\nfi\n\nunifdef -B ${UNIFDEF_OPTIONS} -o \"${WKFOUNDATION_H}\".unifdef \"${WKFOUNDATION_H}\"\n\ncase $? in\n0)\n    rm \"${WKFOUNDATION_H}\".unifdef\n    ;;\n1)\n    mv \"${WKFOUNDATION_H}\"{.unifdef,}\n    ;;\n*)\n    exit 1\nesac\n";
                };
                1ADAE12F1919A90C00F48E21 /* Update Info.plist with version information */ = {
                        isa = PBXShellScriptBuildPhase;
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1100\" -a \"${USE_NEW_BUILD_SYSTEM}\" = \"YES\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nWKBASE_H=${TARGET_BUILD_DIR}/${PRIVATE_HEADERS_FOLDER_PATH}/WKBase.h\n\nunifdef -B -D__APPLE__ -UBUILDING_GTK__ -UBUILDING_WPE__ -UUSE_SOUP -o \"${WKBASE_H}\".unifdef \"${WKBASE_H}\"\n\ncase $? in\n0)\n    rm \"${WKBASE_H}\".unifdef\n    ;;\n1)\n    mv \"${WKBASE_H}\"{.unifdef,}\n    ;;\n*)\n    exit 1\nesac\n";
+                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1140\" -a \"${USE_NEW_BUILD_SYSTEM}\" != \"NO\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nWKBASE_H=${TARGET_BUILD_DIR}/${PRIVATE_HEADERS_FOLDER_PATH}/WKBase.h\n\nunifdef -B -D__APPLE__ -UBUILDING_GTK__ -UBUILDING_WPE__ -UUSE_SOUP -o \"${WKBASE_H}\".unifdef \"${WKBASE_H}\"\n\ncase $? in\n0)\n    rm \"${WKBASE_H}\".unifdef\n    ;;\n1)\n    mv \"${WKBASE_H}\"{.unifdef,}\n    ;;\n*)\n    exit 1\nesac\n";
                };
                37E531011B2391090074F0DF /* Copy iOS Sandbox Profiles for Manual Sandboxing */ = {
                        isa = PBXShellScriptBuildPhase;
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1100\" -a \"${USE_NEW_BUILD_SYSTEM}\" = \"YES\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nif [ \"${ACTION}\" = \"build\" -o \"${ACTION}\" = \"install\" -o \"${ACTION}\" = \"installhdrs\" -o \"${ACTION}\" = \"installapi\" ]; then\n    for HEADERS_DIRECTORY in \"${PUBLIC_HEADERS_FOLDER_PATH}\" \"${PRIVATE_HEADERS_FOLDER_PATH}\"; do\n        for HEADER_PATH in \"${TARGET_BUILD_DIR}/${HEADERS_DIRECTORY}/\"*.*; do\n            if [[ ! -z `grep '#import <WebKitAdditions/.*>' \"${HEADER_PATH}\"` ]]; then\n                python \"${SRCROOT}/mac/replace-webkit-additions-includes.py\" \"${HEADER_PATH}\" \"${BUILT_PRODUCTS_DIR}\" \"${SDKROOT}\" || exit $?\n            fi\n        done\n    done\nfi\n\n\n";
+                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1140\" -a \"${USE_NEW_BUILD_SYSTEM}\" != \"NO\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nif [ \"${ACTION}\" = \"build\" -o \"${ACTION}\" = \"install\" -o \"${ACTION}\" = \"installhdrs\" -o \"${ACTION}\" = \"installapi\" ]; then\n    for HEADERS_DIRECTORY in \"${PUBLIC_HEADERS_FOLDER_PATH}\" \"${PRIVATE_HEADERS_FOLDER_PATH}\"; do\n        for HEADER_PATH in \"${TARGET_BUILD_DIR}/${HEADERS_DIRECTORY}/\"*.*; do\n            if [[ ! -z `grep '#import <WebKitAdditions/.*>' \"${HEADER_PATH}\"` ]]; then\n                python \"${SRCROOT}/mac/replace-webkit-additions-includes.py\" \"${HEADER_PATH}\" \"${BUILT_PRODUCTS_DIR}\" \"${SDKROOT}\" || exit $?\n            fi\n        done\n    done\nfi\n\n\n";
                };
 /* End PBXShellScriptBuildPhase section */
 
index 3db6b52..40c062b 100644 (file)
@@ -1,3 +1,35 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * WebKitLegacy.xcodeproj/project.pbxproj:
+
 2020-05-13  Per Arne Vollan  <pvollan@apple.com>
 
         [Win] Fix AppleWin link error
index 0ff6253..4dfe522 100644 (file)
                0867D690FE84028FC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               DefaultBuildSystemTypeForWorkspace = Original;
                                LastSwiftUpdateCheck = 0700;
                                LastUpgradeCheck = 1140;
                                TargetAttributes = {
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                        shellPath = /bin/sh;
-                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1100\" -a \"${USE_NEW_BUILD_SYSTEM}\" = \"YES\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nexec \"${SRCROOT}/mac/postprocess-headers.sh\"\n";
+                       shellScript = "if [ \"${XCODE_VERSION_MAJOR}\" -ge \"1140\" -a \"${USE_NEW_BUILD_SYSTEM}\" != \"NO\" ]; then\n    # In this configuration, post-processing is performed at the same time as copying in the postprocess-header-rule script, so there's no need for this separate step.\n    exit 0\nfi\n\nexec \"${SRCROOT}/mac/postprocess-headers.sh\"\n";
                };
 /* End PBXShellScriptBuildPhase section */
 
index bdea90d..170f488 100644 (file)
@@ -1,3 +1,35 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * Configurations/WebKitLegacy.xcconfig:
+
 2020-05-21  Pinki Gyanchandani  <pgyanchandani@apple.com>
 
         Null Ptr Deref @ WebCore::ResourceResponse::platformLazyInit
index 8a49162..a246a5f 100644 (file)
@@ -67,7 +67,10 @@ DYLIB_INSTALL_NAME_BASE[sdk=iphone*] = $(SYSTEM_LIBRARY_DIR)/PrivateFrameworks;
 
 INSTALLHDRS_COPY_PHASE = YES;
 INSTALLHDRS_SCRIPT_PHASE = YES;
-APPLY_RULES_IN_COPY_HEADERS = $(USE_NEW_BUILD_SYSTEM);
+APPLY_RULES_IN_COPY_HEADERS = $(WK_APPLY_RULES_IN_COPY_HEADERS_$(USE_NEW_BUILD_SYSTEM));
+WK_APPLY_RULES_IN_COPY_HEADERS_ = YES;
+WK_APPLY_RULES_IN_COPY_HEADERS_NO = NO;
+WK_APPLY_RULES_IN_COPY_HEADERS_YES = YES;
 PRODUCT_NAME = WebKitLegacy;
 PRODUCT_BUNDLE_IDENTIFIER = com.apple.$(PRODUCT_NAME:rfc1034identifier);
 UMBRELLA_FRAMEWORKS_DIR = $(PRODUCTION_FRAMEWORKS_DIR)/WebKit.framework/Versions/A/Frameworks;
index e7dd9d7..9b18c8f 100644 (file)
@@ -1,3 +1,39 @@
+2020-05-26  Keith Rollin  <krollin@apple.com>
+
+        Enable the use of XCBuild by default in Apple builds
+        https://bugs.webkit.org/show_bug.cgi?id=209890
+        <rdar://problem/44182078>
+
+        Reviewed by Darin Adler.
+
+        Switch from the "legacy" Xcode build system to the "new" build system
+        (also known as "XCBuild"). Switching to the new system speeds up
+        builds by a small percentage, better validates projects for
+        build-related issues (such as dependency cycles), lets WebKit benefit
+        from future improvements in XCBuild such as those coming from the
+        underlying llbuild open source project, and prepares us for any other
+        tools built for this new ecosystem.
+
+        Specific changes:
+
+        - Remove Xcode project and workspace settings that selected the Build
+          system, allowing the default to take hold (which is currently the
+          New build system).
+        - Updated webkitdirs.pm with a terser check for Xcode version.
+        - Update build-webkit and Makefile.shared to be explicit when using
+          the old build system (no longer treat it as a default or fall-back
+          configuration).
+        - Update various xcconfig files similarly to treat the default as
+          using the new build system.
+        - Update various post-processing build steps to check for Xcode 11.4
+          and to no longer treat the default as using the old build system.
+
+        * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
+        * Scripts/build-webkit:
+        * Scripts/webkitdirs.pm:
+        (canUseXCBuild):
+        * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
+
 2020-05-26  Jonathan Bedard  <jbedard@apple.com>
 
         webkitpy: simctl list may have stderr logging
index 451209d..631c5b3 100644 (file)
                08FB7793FE84155DC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               DefaultBuildSystemTypeForWorkspace = Original;
                                LastSwiftUpdateCheck = 0700;
                                LastUpgradeCheck = 1140;
                                TargetAttributes = {
index 099d33a..8909b3c 100755 (executable)
@@ -213,15 +213,12 @@ my @options = ();
 if (isAppleCocoaWebKit()) {
     push @options, XcodeOptions();
 
-    if (not defined $xcbuild) {
-        $xcbuild = canUseXCBuild();
-    }
-
-    if ($xcbuild) {
+    if ((not defined $xcbuild or $xcbuild) and canUseXCBuild()) {
         push @options, "-UseNewBuildSystem=YES";
         push @options, "USE_NEW_BUILD_SYSTEM=YES";
     } else {
         push @options, "-UseNewBuildSystem=NO";
+        push @options, "USE_NEW_BUILD_SYSTEM=NO";
     }
 
     sub option($$)
index 0ba2c9d..f0b5e1d 100755 (executable)
@@ -957,11 +957,8 @@ sub XcodeStaticAnalyzerOption()
 
 sub canUseXCBuild()
 {
-    # if (`xcodebuild -version | grep "Build version"` =~ /Build version (\d+)([a-zA-Z])(\d+)([a-zA-Z]?)/) {
-    #     return $1 >= 11;
-    # }
-
-    return 0;
+    determineXcodeVersion();
+    return (eval "v$xcodeVersion" ge v11.4)
 }
 
 my $passedConfiguration;
index 020d6ee..e36e13e 100644 (file)
                08FB7793FE84155DC02AAC07 /* Project object */ = {
                        isa = PBXProject;
                        attributes = {
-                               DefaultBuildSystemTypeForWorkspace = Original;
                                LastSwiftUpdateCheck = 0700;
                                LastUpgradeCheck = 1140;
                                TargetAttributes = {
index a3f43a8..08de0be 100644 (file)
@@ -2,8 +2,6 @@
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <dict>
-       <key>BuildSystemType</key>
-       <string>Original</string>
        <key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
        <false/>
 </dict>