summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-07-02 08:58:55 +0200
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2021-07-02 13:21:59 +0000
commitba96d6b834588c0dd7fe3aeceed47e006f971405 (patch)
treedfa0a938f0dbf75924fa077fc0290df53ca3cbe4 /cmake
parent3266fe7d93f77c125c5d7e3d4b18f8b0c45fa1cd (diff)
Revert "Make toolchain inspection more robust"
This reverts commit 7c62caa3555d247be569102d8f01b3e7ae362b8a. Certain toolchain files cannot be read in CMake script mode with CMake versions >= 3.20. For example, the vcpkg toolchain file overrides add_executable, and that fails with CMake 3.20: CMake Error at D:/dev_tools/vcpkg/scripts/buildsystems/vcpkg.cmake:662 (function): Built-in flow control command "add_executable" cannot be overridden. Fixes: QTBUG-93627 Change-Id: Ib6e6352dff50b9684dcf81401d138e27e16292c3 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> (cherry picked from commit c72b7b8e5e530fbd03b704380940f5fa86e5341d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtAutoDetect.cmake37
-rw-r--r--cmake/QtLoadFilePrintVars.cmake15
2 files changed, 4 insertions, 48 deletions
diff --git a/cmake/QtAutoDetect.cmake b/cmake/QtAutoDetect.cmake
index 6a94515e60..8c5cca0ecf 100644
--- a/cmake/QtAutoDetect.cmake
+++ b/cmake/QtAutoDetect.cmake
@@ -72,37 +72,6 @@ function(qt_auto_detect_cmake_generator)
endif()
endfunction()
-# Peek into CMAKE_TOOLCHAIN_FILE before it is actually loaded.
-#
-# Usage:
-# qt_autodetect_read_toolchain_file(tcf VARIABLES CMAKE_SYSTEM_NAME)
-# if(tcf_CMAKE_SYSTEM_NAME STREQUAL "Android")
-# ...we have detected Android
-# endif()
-#
-function(qt_auto_detect_read_toolchain_file prefix)
- cmake_parse_arguments(arg "" "" "VARIABLES" ${ARGN})
- set(script_path "${CMAKE_CURRENT_LIST_DIR}/QtLoadFilePrintVars.cmake")
- execute_process(
- COMMAND "${CMAKE_COMMAND}" "-DIN_FILE=${CMAKE_TOOLCHAIN_FILE}"
- "-DVARIABLES=${arg_VARIABLES}" -P "${script_path}"
- RESULT_VARIABLE exit_code
- OUTPUT_VARIABLE output
- ERROR_VARIABLE ignore)
- if(NOT exit_code EQUAL 0)
- message(FATAL_ERROR "Executing CMake script ${script_path} failed with code ${exit_code}.")
- endif()
- string(REGEX REPLACE "^.*---QtLoadFilePrintVars---\n" "" output "${output}")
- string(REPLACE ";" "\;" output "${output}")
- string(REPLACE "\n" ";" output "${output}")
- foreach(line IN LISTS output)
- string(REGEX MATCH "-- ([^ ]+) (.*)" m "${line}")
- if(CMAKE_MATCH_1 IN_LIST arg_VARIABLES)
- set(${prefix}_${CMAKE_MATCH_1} "${CMAKE_MATCH_2}" PARENT_SCOPE)
- endif()
- endforeach()
-endfunction()
-
function(qt_auto_detect_android)
# Auto-detect NDK root
if(NOT DEFINED ANDROID_NDK_ROOT AND DEFINED ANDROID_SDK_ROOT)
@@ -151,8 +120,10 @@ function(qt_auto_detect_android)
endif()
if(DEFINED CMAKE_TOOLCHAIN_FILE AND NOT DEFINED QT_AUTODETECT_ANDROID)
- qt_auto_detect_read_toolchain_file(tcf VARIABLES CMAKE_SYSTEM_NAME)
- if(tcf_CMAKE_SYSTEM_NAME STREQUAL "Android")
+
+ file(READ ${CMAKE_TOOLCHAIN_FILE} toolchain_file_content OFFSET 0 LIMIT 80)
+ string(FIND "${toolchain_file_content}" "The Android Open Source Project" find_result REVERSE)
+ if (NOT ${find_result} EQUAL -1)
set(android_detected TRUE)
else()
set(android_detected FALSE)
diff --git a/cmake/QtLoadFilePrintVars.cmake b/cmake/QtLoadFilePrintVars.cmake
deleted file mode 100644
index fe0f3ee8d2..0000000000
--- a/cmake/QtLoadFilePrintVars.cmake
+++ /dev/null
@@ -1,15 +0,0 @@
-# Load a file and print variables and their values
-#
-# IN_FILE: path to a file to be included
-# VARIABLES: list of variables to be printed
-
-cmake_minimum_required(VERSION 3.16)
-include("${IN_FILE}")
-
-# Print a magic comment that the caller must look for
-message(STATUS "---QtLoadFilePrintVars---")
-
-# Print the variables
-foreach(v IN LISTS VARIABLES)
- message(STATUS "${v} ${${v}}")
-endforeach()