[Xcode] Add an experimental setting to build with ccache
authoraestes@apple.com <aestes@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Jul 2017 18:36:06 +0000 (18:36 +0000)
committeraestes@apple.com <aestes@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Jul 2017 18:36:06 +0000 (18:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=173875

Reviewed by Tim Horton.

Source/bmalloc:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/JavaScriptCore:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/ThirdParty/ANGLE:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/ThirdParty/libwebrtc:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/WebCore:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/WebCore/PAL:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/WebKit/mac:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/WebKit2:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Source/WTF:

* Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.

Tools:

On systems that already have ccache(1) installed, this patch adds experimental support for
it to Xcode builds. It can be enabled with the WK_USE_CCACHE build setting.

When ccache is enabled, CC is overridden to invoke Tools/ccache/ccache-clang. This script
finds the "-isysroot" argument to determine the active SDK, uses xcrun(1) and the SDK to
find the toolchain from which to run clang, and then invokes ccache with the required
arguments.

ccache is invoked with CCACHE_SLOPPINESS="pch_defines,time_macros", which is required for
precompiled headers to work properly [1].

LDPLUSPLUS is overridden to invoke Tools/ccache/ccache-clang++. It behaves the same as
ccache-clang, except it tells ccache to execute clang++ instead of clang. This is important
during linking.

[1] https://ccache.samba.org/manual.html#_precompiled_headers

* DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
* MiniBrowser/Configurations/DebugRelease.xcconfig: Ditto.
* MobileMiniBrowser/Configurations/DebugRelease.xcconfig: Ditto.
* TestWebKitAPI/Configurations/DebugRelease.xcconfig: Ditto.
* WebKitTestRunner/Configurations/DebugRelease.xcconfig: Ditto.
* ccache/README.md: Added.
* ccache/ccache-clang: Added.
* ccache/ccache-clang++: Added.
* ccache/ccache.xcconfig: Added. Overrides CC and LDPLUSPLUS when WK_USE_CACHE=YES.

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

28 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/Configurations/DebugRelease.xcconfig
Source/ThirdParty/ANGLE/ChangeLog
Source/ThirdParty/ANGLE/Configurations/DebugRelease.xcconfig
Source/ThirdParty/libwebrtc/ChangeLog
Source/ThirdParty/libwebrtc/Configurations/DebugRelease.xcconfig
Source/WTF/ChangeLog
Source/WTF/Configurations/DebugRelease.xcconfig
Source/WebCore/ChangeLog
Source/WebCore/Configurations/DebugRelease.xcconfig
Source/WebCore/PAL/ChangeLog
Source/WebCore/PAL/Configurations/DebugRelease.xcconfig
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/Configurations/DebugRelease.xcconfig
Source/WebKit2/ChangeLog
Source/WebKit2/Configurations/DebugRelease.xcconfig
Source/bmalloc/ChangeLog
Source/bmalloc/Configurations/DebugRelease.xcconfig
Tools/ChangeLog
Tools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig
Tools/MiniBrowser/Configurations/DebugRelease.xcconfig
Tools/MobileMiniBrowser/Configurations/DebugRelease.xcconfig
Tools/TestWebKitAPI/Configurations/DebugRelease.xcconfig
Tools/WebKitTestRunner/Configurations/DebugRelease.xcconfig
Tools/ccache/README.md [new file with mode: 0644]
Tools/ccache/ccache-clang [new file with mode: 0755]
Tools/ccache/ccache-clang++ [new file with mode: 0755]
Tools/ccache/ccache.xcconfig [new file with mode: 0644]

index 3782a9ef374c6a027ccab5a27da59c65239f3d86..01db0ceb5eeb5f244c883fd79592e3689ceaf2bc 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-03  Devin Rousso  <drousso@apple.com>
 
         Web Inspector: Support listing WebGL2 and WebGPU contexts
index 28eb0612b073cf9996009e4a22872da236f588b6..a55172172dd2604981319365e148ec274b1e70ff 100644 (file)
@@ -41,3 +41,6 @@ DEBUG_INFORMATION_FORMAT = dwarf;
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../Tools/ccache;
+#include "../../../Tools/ccache/ccache.xcconfig"
index 8e9e8ae62ce5031d71fd2d65c45bd5d092738eb7..3158289758bfd2552147cb54a46c46c9f1b39e4a 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-01  Dan Bernstein  <mitz@apple.com>
 
         [macOS] Remove code only needed when building for OS X Yosemite
index 6c015c9f7cb13e72c27cb0a407a6ea91f1701baf..be378e85f49e9c99151cafd3f01cdada6d4eb89c 100644 (file)
@@ -18,3 +18,6 @@ DEBUG_INFORMATION_FORMAT = dwarf;
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../../Tools/ccache;
+#include "../../../../Tools/ccache/ccache.xcconfig"
index b9d7b6cccc2c8acdec989b4f407793f906379347..5ef6d3d9dc242a4bc528746c62f9ab16e39b8f80 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-01  Dan Bernstein  <mitz@apple.com>
 
         [macOS] Remove code only needed when building for OS X Yosemite
index 114b6f69bde6b037f44089b47c94b84f71aaf8d0..1b13075ab273c0a6d835b785b3675529df230b21 100644 (file)
@@ -20,3 +20,6 @@ SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
 
 WK_RELOCATABLE_FRAMEWORKS = YES;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../../Tools/ccache;
+#include "../../../../Tools/ccache/ccache.xcconfig"
index 6e13ffceade6ccd67e8c62847b7892db1fc4e870..1ced3e2ac87d88ab892bd3ca208aaa1e535aba6d 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-03  Daewoong Jang  <daewoong.jang@navercorp.com>
 
         Remove an unused function export
index 58192a0bc975461a9f63b36d4154968fef1f4a41..05bd9e16a89025c7a0de19d762ba5cd0ebf4acdd 100644 (file)
@@ -40,3 +40,6 @@ DEBUG_INFORMATION_FORMAT = dwarf;
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../Tools/ccache;
+#include "../../../Tools/ccache/ccache.xcconfig"
index a1c5ef7d5e83cb66c2aa9538812781b8149c2e0a..80ef4080478f352370c994c447d4014c428a3c44 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-02  Ryosuke Niwa  <rniwa@webkit.org>
 
         REGRESSION(r218910): Crash inside textMarkerDataForFirstPositionInTextControl
index a0df8b83adf8d1e10fc1b5b36e035715e4013535..da33286ee447ffee878c14057b6adc582e6a1f88 100644 (file)
@@ -43,3 +43,6 @@ SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
 
 WK_RELOCATABLE_FRAMEWORKS = YES;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../Tools/ccache;
+#include "../../../Tools/ccache/ccache.xcconfig"
index c27a84daa2d515867ca07e13c125c57c0c564c1c..4346c1ab666ce8c82642a348159c9a727094ac83 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-03  Zan Dobersek  <zdobersek@igalia.com>
 
         [GCrypt] Implement CryptoKeyEC SPKI exports
index b054b7dfd9028aab0b42338edff9911a42ea0742..dff3f3767e311741ff7a4615a19e654843d7fc4c 100644 (file)
@@ -41,3 +41,6 @@ DEBUG_INFORMATION_FORMAT = dwarf;
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../../Tools/ccache;
+#include "../../../../Tools/ccache/ccache.xcconfig"
index a54c66be415031333dc946a028b66a4c5ba867ac..9a6e8260fe77ae0f052944195373d5d702ff3be1 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-03  Tim Horton  <timothy_horton@apple.com>
 
         Expose WebPreferences for viewport-fit and constant() properties
index 7c9d55988c56d25f1ede4ea57c9a78bc5b35d3ad..f9aeb3d7f4bd180fcd5df9fc09843a88339178c1 100644 (file)
@@ -49,3 +49,6 @@ WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_101400 = $(WEBKIT_SYSTEM_INTERFACE_LIBRAR
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../Tools/ccache;
+#include "../../../../Tools/ccache/ccache.xcconfig"
index 421e0f1b8d6dd8d15721a2bf552b9329c0aebb09..138702141303305d5dfbe850c874df103f89d70c 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-03  Chris Dumez  <cdumez@apple.com>
 
         Drop ResourceLoadStatisticsStore's statisticsLock
index b150ffce060cadf72fcd38101deaac5c8b1eba40..3d73bd2e4549ddf36a324c4b2fce13607c8ef95c 100644 (file)
@@ -56,3 +56,6 @@ WK_XPC_SERVICE_SUFFIX[sdk=*simulator*] = .Development;
 
 WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT = NO;
 WK_WEBCONTENT_SERVICE_NEEDS_VERSIONED_FRAMEWORK_PATH_LDFLAG[sdk=macosx*] = YES;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../Tools/ccache;
+#include "../../../Tools/ccache/ccache.xcconfig"
index 6541d344b6e6652fe7926b0ea16057297a068136..caa19ed2901af34a176cb23115545216434f44ce 100644 (file)
@@ -1,3 +1,12 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        * Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+
 2017-07-01  Dan Bernstein  <mitz@apple.com>
 
         [iOS] Remove code only needed when building for iOS 9.x
index 58192a0bc975461a9f63b36d4154968fef1f4a41..05bd9e16a89025c7a0de19d762ba5cd0ebf4acdd 100644 (file)
@@ -40,3 +40,6 @@ DEBUG_INFORMATION_FORMAT = dwarf;
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../../Tools/ccache;
+#include "../../../Tools/ccache/ccache.xcconfig"
index 9ccc3db6b3a75e69ecbce32dba7015a1397e3106..a9dec8fd05639b3bc664fef973388e13c210e796 100644 (file)
@@ -1,3 +1,37 @@
+2017-07-03  Andy Estes  <aestes@apple.com>
+
+        [Xcode] Add an experimental setting to build with ccache
+        https://bugs.webkit.org/show_bug.cgi?id=173875
+
+        Reviewed by Tim Horton.
+
+        On systems that already have ccache(1) installed, this patch adds experimental support for
+        it to Xcode builds. It can be enabled with the WK_USE_CCACHE build setting.
+
+        When ccache is enabled, CC is overridden to invoke Tools/ccache/ccache-clang. This script
+        finds the "-isysroot" argument to determine the active SDK, uses xcrun(1) and the SDK to
+        find the toolchain from which to run clang, and then invokes ccache with the required
+        arguments.
+
+        ccache is invoked with CCACHE_SLOPPINESS="pch_defines,time_macros", which is required for
+        precompiled headers to work properly [1].
+
+        LDPLUSPLUS is overridden to invoke Tools/ccache/ccache-clang++. It behaves the same as
+        ccache-clang, except it tells ccache to execute clang++ instead of clang. This is important
+        during linking.
+        
+        [1] https://ccache.samba.org/manual.html#_precompiled_headers
+
+        * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: Included ccache.xcconfig.
+        * MiniBrowser/Configurations/DebugRelease.xcconfig: Ditto.
+        * MobileMiniBrowser/Configurations/DebugRelease.xcconfig: Ditto.
+        * TestWebKitAPI/Configurations/DebugRelease.xcconfig: Ditto.
+        * WebKitTestRunner/Configurations/DebugRelease.xcconfig: Ditto.
+        * ccache/README.md: Added.
+        * ccache/ccache-clang: Added.
+        * ccache/ccache-clang++: Added.
+        * ccache/ccache.xcconfig: Added. Overrides CC and LDPLUSPLUS when WK_USE_CACHE=YES.
+
 2017-07-03  Alex Christensen  <achristensen@webkit.org>
 
         REGRESSION(r215096) Queries of URLs with non-special schemes should not percent-encode single quotes
index ae2d8effb9295cd8593cbb104f38c2ba946c0877..a36ef3c1df95eb908b76cbeafb87a8d2d7839d2f 100644 (file)
@@ -46,3 +46,6 @@ WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_101400 = $(WEBKIT_SYSTEM_INTERFACE_LIBRAR
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../ccache;
+#include "../../../ccache/ccache.xcconfig"
index 3a87df06fe9c82d098de6292e730f577e5855bcf..3644abd45994875a25d8f18633b02e03439221f7 100644 (file)
@@ -40,3 +40,6 @@ GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../ccache;
+#include "../../ccache/ccache.xcconfig"
index 8e441de392673384f0d4d2da357d4557016a5d0c..2837c86459960d48f8674af98e56165236ac2647 100644 (file)
@@ -28,3 +28,6 @@ ARCHS = $(ARCHS_STANDARD_32_64_BIT);
 ONLY_ACTIVE_ARCH = YES;
 
 GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES;
+
+WK_CCACHE_DIR = $(SRCROOT)/../ccache;
+#include "../../ccache/ccache.xcconfig"
index 8e3c7c60b678a72f1017343a2636227b274aee72..4bdb61774527dfed1b1f158b6df58dcaf27bc373 100644 (file)
@@ -42,3 +42,6 @@ SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
 
 OTHER_CPLUSPLUSFLAGS = $(inherited) -ftemplate-depth=256;
+
+WK_CCACHE_DIR = $(SRCROOT)/../ccache;
+#include "../../ccache/ccache.xcconfig"
index 088670ad1f778e76a19d30ec079dc79aa23539b5..88f161ddf8d36a73510e8a144fc358dd0ebe3f87 100644 (file)
@@ -46,3 +46,6 @@ WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_101400 = $(WEBKIT_SYSTEM_INTERFACE_LIBRAR
 SDKROOT = $(SDKROOT_$(USE_INTERNAL_SDK));
 SDKROOT_ = macosx;
 SDKROOT_YES = macosx.internal;
+
+WK_CCACHE_DIR = $(SRCROOT)/../ccache;
+#include "../../ccache/ccache.xcconfig"
diff --git a/Tools/ccache/README.md b/Tools/ccache/README.md
new file mode 100644 (file)
index 0000000..6a2e832
--- /dev/null
@@ -0,0 +1,20 @@
+# Prerequisites
+
+- Xcode
+- ```ccache(1)``` installed in /usr/local/bin
+
+# Configuring ccache
+
+The maximum cache size is 5GB by default, but a WebKit Debug build can require 20GB or more:
+
+- ```ccache --max-size=20G```
+
+# Building with ccache
+
+- ```make ARGS="WK_USE_CCACHE=YES"```
+- ```build-webkit WK_USE_CCACHE=YES```
+- Build in the Xcode UI by adding ```WK_USE_CCACHE = YES;``` to Tools/ccache/ccache.xcconfig (FIXME: this dirties the working directory).
+
+# Viewing cache statistics
+
+- ```ccache -s```
diff --git a/Tools/ccache/ccache-clang b/Tools/ccache/ccache-clang
new file mode 100755 (executable)
index 0000000..d046b72
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+# Copyright (C) 2017 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+position=1
+while [[ $position -le $# ]]; do
+    case "${!position}" in
+    -isysroot)
+        position=$(($position + 1))
+        sdk="${!position}"
+        break
+        ;;
+    esac
+    position=$(($position + 1))
+done
+CCACHE_SLOPPINESS="pch_defines,time_macros" ccache $(xcrun -f -sdk "$sdk" "${_XCRUN_TOOL:-clang}") "$@"
diff --git a/Tools/ccache/ccache-clang++ b/Tools/ccache/ccache-clang++
new file mode 100755 (executable)
index 0000000..e315185
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# Copyright (C) 2017 Apple Inc. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+_XCRUN_TOOL="clang++" $(dirname "$0")/ccache-clang "$@"
diff --git a/Tools/ccache/ccache.xcconfig b/Tools/ccache/ccache.xcconfig
new file mode 100644 (file)
index 0000000..40c4bf9
--- /dev/null
@@ -0,0 +1,32 @@
+// Copyright (C) 2017 Apple Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+// 1. Redistributions of source code must retain the above copyright
+//    notice, this list of conditions and the following disclaimer.
+// 2. Redistributions in binary form must reproduce the above copyright
+//    notice, this list of conditions and the following disclaimer in the
+//    documentation and/or other materials provided with the distribution.
+//
+// THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+// BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+// THE POSSIBILITY OF SUCH DAMAGE.
+
+CC = $(CC_$(WK_USE_CCACHE));
+CC_YES = $(WK_CCACHE_DIR)/ccache-clang;
+CC_NO = $(CC);
+CC_ = $(CC_NO);
+
+LDPLUSPLUS = $(LDPLUSPLUS_$(WK_USE_CCACHE));
+LDPLUSPLUS_YES = $(WK_CCACHE_DIR)/ccache-clang++;
+LDPLUSPLUS_NO = $(LDPLUSPLUS);
+LDPLUSPLUS_ = $(LDPLUSPLUS_NO);