From d64940891dffcb951f4b76426490cbc94fb4aba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 2 Jun 2017 14:08:32 +0200 Subject: Add qmake feature and configure option to use ccache Enabled via configure --ccache, or CONFIG += ccache in 3rd party projects. Ensures that we use the right sloppiness and other ccache options during compilation. Task-number: QTBUG-31034 Change-Id: I696b3d3f0398873a29b93d1bc2b4d4e06ef23dc9 Reviewed-by: Oswald Buddenhagen --- config_help.txt | 1 + configure.json | 17 +++++++++++++++++ mkspecs/features/unix/ccache.prf | 19 +++++++++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 mkspecs/features/unix/ccache.prf diff --git a/config_help.txt b/config_help.txt index d1b0ac56b0..f06584a480 100644 --- a/config_help.txt +++ b/config_help.txt @@ -144,6 +144,7 @@ Build options: -ltcg ................ Use Link Time Code Generation [no] -use-gold-linker ..... Use the GNU gold linker [auto] -incredibuild-xge .... Use the IncrediBuild XGE [no] (Windows only) + -ccache .............. Use the ccache compiler cache [no] (Unix only) -make-tool .... Use to build qmake [nmake] (Windows only) -mp .................. Use multiple processors for compilation (MSVC only) diff --git a/configure.json b/configure.json index 6221c9803a..a91456aaf3 100644 --- a/configure.json +++ b/configure.json @@ -61,6 +61,7 @@ "avx2": "boolean", "avx512": { "type": "boolean", "name": "avx512f" }, "c++std": "cxxstd", + "ccache": { "type": "boolean", "name": "ccache" }, "commercial": "void", "compile-examples": { "type": "boolean", "name": "compile_examples" }, "confirm-license": "void", @@ -620,6 +621,11 @@ "label": "IncrediBuild", "type": "files", "files": [ "BuildConsole.exe", "xgConsole.exe" ] + }, + "ccache": { + "label": "ccache", + "type": "files", + "files": [ "ccache" ] } }, @@ -1206,6 +1212,12 @@ "condition": "tests.incredibuild_xge", "output": [ "publicConfig" ] }, + "ccache": { + "label": "Using ccache", + "autoDetect": false, + "condition": "config.unix && tests.ccache", + "output": [ "privateConfig" ] + }, "msvc_mp": { "label": "Use multiple processors when compiling with MSVC", "emitIf": "config.msvc", @@ -1313,6 +1325,11 @@ Configure with '-qreal float' to create a build that is binary-compatible with 5 "type": "firstAvailableFeature", "args": "c++1z c++14 c++11" }, + { + "type": "feature", + "args": "ccache", + "condition": "config.unix" + }, "use_gold_linker", { "type": "feature", diff --git a/mkspecs/features/unix/ccache.prf b/mkspecs/features/unix/ccache.prf new file mode 100644 index 0000000000..d5739d3eab --- /dev/null +++ b/mkspecs/features/unix/ccache.prf @@ -0,0 +1,19 @@ +macx-xcode: return() + +darwin: load(sdk) + +ccache_prefix = ccache + +precompile_header { + CCACHE_SLOPPINESS += pch_defines time_macros + + ccache_prefix = \ + CCACHE_SLOPPINESS=\"$$join(CCACHE_SLOPPINESS, ',')\$${CCACHE_SLOPPINESS+,\$$CCACHE_SLOPPINESS}\" \ + # Make sure we build sources directly, not from their preprocessed version, + # otherwise precompiled headers will not be used during cache misses. + CCACHE_CPP2=true \ + $$ccache_prefix +} + +for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_LINK QMAKE_LINK_SHLIB QMAKE_LINK_C)): \ + $$tool = $$ccache_prefix $$eval($$tool) -- cgit v1.2.3