From 0f6efa31c13959f332fd5ee1dd31a1c6f6623c1a Mon Sep 17 00:00:00 2001 From: =?utf8?q?Beno=C3=AEt=20Th=C3=A9baudeau?= Date: Fri, 28 Aug 2015 11:46:51 +0200 Subject: [PATCH] package/qt5/qt5base: fix build with ccache MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Building with ccache failed with: Running configuration tests... Failed to process makespec for platform 'devices/linux-buildroot-g++' Project ERROR: Compiler /host/usr/bin/ccache /host/usr/bin/-g++ not found. Check the value of CROSS_COMPILE -device-option Could not read qmake configuration file /build/qt5base-5.5.0/mkspecs/devices/linux-buildroot-g++/qmake.conf. Error processing project file: /dev/null This was caused by Buildroot setting this in qt5base-5.5.0/mkspecs/devices/linux-buildroot-g++/qmake.conf: QMAKE_CXX = $${BR_CCACHE} $${CROSS_COMPILE}g++ But qt5base-5.5.0/mkspecs/features/device_config.prf expects QMAKE_CXX to be a single valid (absolute or QMAKE_PATH_ENV-relative) path to an existing file, which is not possible if using ccache as above. Add a patch fixing this by testing only the first value in QMAKE_CXX. Signed-off-by: Benoît Thébaudeau Signed-off-by: Thomas Petazzoni --- .../qt5base/0009-fix-build-with-ccache.patch | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 package/qt5/qt5base/0009-fix-build-with-ccache.patch diff --git a/package/qt5/qt5base/0009-fix-build-with-ccache.patch b/package/qt5/qt5base/0009-fix-build-with-ccache.patch new file mode 100644 index 0000000000..896c0efb06 --- /dev/null +++ b/package/qt5/qt5base/0009-fix-build-with-ccache.patch @@ -0,0 +1,49 @@ +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() + } + -- 2.30.2