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. Pick-to: 6.2 Fixes: QTBUG-93627 Change-Id: Ib6e6352dff50b9684dcf81401d138e27e16292c3 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
87201ff712
commit
c72b7b8e5e
@ -72,37 +72,6 @@ function(qt_auto_detect_cmake_generator)
|
|||||||
endif()
|
endif()
|
||||||
endfunction()
|
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)
|
function(qt_auto_detect_android)
|
||||||
# Auto-detect NDK root
|
# Auto-detect NDK root
|
||||||
if(NOT DEFINED ANDROID_NDK_ROOT AND DEFINED ANDROID_SDK_ROOT)
|
if(NOT DEFINED ANDROID_NDK_ROOT AND DEFINED ANDROID_SDK_ROOT)
|
||||||
@ -151,8 +120,10 @@ function(qt_auto_detect_android)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(DEFINED CMAKE_TOOLCHAIN_FILE AND NOT DEFINED QT_AUTODETECT_ANDROID)
|
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)
|
set(android_detected TRUE)
|
||||||
else()
|
else()
|
||||||
set(android_detected FALSE)
|
set(android_detected FALSE)
|
||||||
|
@ -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()
|
|
Loading…
x
Reference in New Issue
Block a user