Commit 0f6efa31 authored by Benoît Thébaudeau's avatar Benoît Thébaudeau Committed by Thomas Petazzoni
Browse files

package/qt5/qt5base: fix build with ccache



Building with ccache failed with:

    Running configuration tests...
    Failed to process makespec for platform 'devices/linux-buildroot-g++'
    Project ERROR: Compiler <path_to_output_dir>/host/usr/bin/ccache <path_to_output_dir>/host/usr/bin/<cross_compile>-g++ not found. Check the value of CROSS_COMPILE -device-option
    Could not read qmake configuration file <path_to_output_dir>/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: default avatarBenoît Thébaudeau <benoit@wsystem.com>
Signed-off-by: default avatarThomas Petazzoni <thomas.petazzoni@free-electrons.com>
parent 4c19d83e
Loading
Loading
Loading
Loading
+49 −0
Original line number Diff line number Diff line
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 <benoit@wsystem.com>
---
 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 <path_to_compiler>
+    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()
     }