Fix QMAKE_CXX/CROSS_COMPILE verification with ccache The use of ccache leads to QMAKE_CXX definitions of the form: QMAKE_CXX = $${CCACHE} $${CROSS_COMPILE}g++ The previous test required QMAKE_CXX to be a single valid (absolute or QMAKE_PATH_ENV-relative) path to an existing file, which was not compatible with definitions of QMAKE_CXX like the one above. Fix this by using only the first value in QMAKE_CXX, which usually points to the compiler executable, or to the ccache executable in the above case. Signed-off-by: Benoît Thébaudeau --- mkspecs/features/device_config.prf | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/mkspecs/features/device_config.prf b/mkspecs/features/device_config.prf index cd3a0cf..eee4ac6 100644 --- a/mkspecs/features/device_config.prf +++ b/mkspecs/features/device_config.prf @@ -19,10 +19,15 @@ defineTest(deviceSanityCheckCompiler) { else: \ sfx = + # Build the compiler filename using the first value in QMAKE_CXX in order to + # support tools like ccache, which give QMAKE_CXX values of the form: + # ccache + compiler = $$first(QMAKE_CXX)$$sfx + # Check if the binary exists with an absolute path. Do this check # before the CROSS_COMPILE empty check below to allow the mkspec # to derive the compiler path from other device options. - exists($$QMAKE_CXX$$sfx):return() + exists($$compiler):return() # Check for possible reasons of failure # check if CROSS_COMPILE device-option is set @@ -31,7 +36,7 @@ defineTest(deviceSanityCheckCompiler) { # Check if QMAKE_CXX points to an executable. ensurePathEnv() for (dir, QMAKE_PATH_ENV) { - exists($$dir/$${QMAKE_CXX}$$sfx): \ + exists($$dir/$${compiler}): \ return() }