0f6efa31c1
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: Benoît Thébaudeau <benoit@wsystem.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
50 lines
1.8 KiB
Diff
50 lines
1.8 KiB
Diff
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()
|
|
}
|
|
|