From 39e937a538325c4fc40a790496f2a39d28f8eba4 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 2 Aug 2019 09:24:37 +0200 Subject: Fix host architecture detection for canadian cross builds If the host architecture is different from -platform (canadian cross build with -external-hostbindir) then we cannot use QMAKE_HOST.os to deduce the executable extension for that platform, because this value comes from the qmake binary that was pointed to by -external-hostbindir. Move the target name deduction mechanism to the actual configure test .pro files to make sure the right scopes are available, and write the deduced target name to a text file. That text file is read by qtConfTest_architecture to get the right binary to analyze. Fixes: QTBUG-77286 Change-Id: I68b844dd51dbfda6432a4b0dca6331899c82255f Reviewed-by: Kai Koehne --- config.tests/arch/arch.pro | 1 + config.tests/arch/arch_host.pro | 1 + config.tests/arch/write_info.pri | 14 ++++++++++++++ configure.pri | 20 +------------------- 4 files changed, 17 insertions(+), 19 deletions(-) create mode 100644 config.tests/arch/write_info.pri diff --git a/config.tests/arch/arch.pro b/config.tests/arch/arch.pro index 45a7eb33af..c607898b71 100644 --- a/config.tests/arch/arch.pro +++ b/config.tests/arch/arch.pro @@ -1 +1,2 @@ SOURCES = arch.cpp +include(write_info.pri) diff --git a/config.tests/arch/arch_host.pro b/config.tests/arch/arch_host.pro index cefdbc77ef..ea0d1fa572 100644 --- a/config.tests/arch/arch_host.pro +++ b/config.tests/arch/arch_host.pro @@ -1,2 +1,3 @@ option(host_build) SOURCES = arch.cpp +include(write_info.pri) diff --git a/config.tests/arch/write_info.pri b/config.tests/arch/write_info.pri new file mode 100644 index 0000000000..3b55a63f49 --- /dev/null +++ b/config.tests/arch/write_info.pri @@ -0,0 +1,14 @@ +targetinfofile = $$basename(_PRO_FILE_) +targetinfofile ~= s/pro$/target.txt/ + +win32 { + ext = .exe +} else:android { + file_prefix = lib + ext = .so +} else:wasm { + ext = .wasm +} + +content = $${file_prefix}$${TARGET}$${ext} +write_file($$OUT_PWD/$$targetinfofile, content) diff --git a/configure.pri b/configure.pri index e9fd055854..09c34af4ee 100644 --- a/configure.pri +++ b/configure.pri @@ -266,28 +266,10 @@ defineTest(qtConfTest_architecture) { !qtConfTest_compile($${1}): \ error("Could not determine $$eval($${1}.label). See config.log for details.") - host = $$eval($${1}.host) - isEmpty(host): host = false - file_prefix = - ext = - $$host { - equals(QMAKE_HOST.os, Windows): \ - ext = .exe - } else { - win32 { - ext = .exe - } else:android { - file_prefix = lib - ext = .so - } else:wasm { - ext = .wasm - } - } - test = $$eval($${1}.test) output = $$eval($${1}.output) test_out_dir = $$OUT_PWD/$$basename(QMAKE_CONFIG_TESTS_DIR)/$$test - test_out_file = $$test_out_dir/$$file_prefix$$output$$ext + test_out_file = $$test_out_dir/$$cat($$test_out_dir/$${output}.target.txt) exists($$test_out_file): \ content = $$cat($$test_out_file, blob) else: \ -- cgit v1.2.3