diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2021-02-25 15:46:32 +0100 |
---|---|---|
committer | Qt CI Bot <qt_ci_bot@qt-project.org> | 2021-03-04 11:26:42 +0000 |
commit | 94d5c1bfe080380341fa6f7fe90c055225dfbd92 (patch) | |
tree | ec0b29f77dd908b701658d2b2825dd9a8217533f /cmake | |
parent | 52f99ff3d202705beb0abb5251e3a4999f020545 (diff) | |
parent | 00b75e86f3db6eb25798a3edc45b4fb597b9ff74 (diff) |
Merge "Remove win32_system_libs feature from src/corelib/configure.json"
Diffstat (limited to 'cmake')
-rw-r--r-- | cmake/QtAutoDetect.cmake | 37 | ||||
-rw-r--r-- | cmake/QtLoadFilePrintVars.cmake | 15 | ||||
-rw-r--r-- | cmake/QtSyncQtHelpers.cmake | 6 |
3 files changed, 49 insertions, 9 deletions
diff --git a/cmake/QtAutoDetect.cmake b/cmake/QtAutoDetect.cmake index 36761dba35..85b1abac02 100644 --- a/cmake/QtAutoDetect.cmake +++ b/cmake/QtAutoDetect.cmake @@ -14,6 +14,37 @@ 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 CMAKE_ANDROID_NDK_ROOT AND DEFINED ANDROID_SDK_ROOT) @@ -37,10 +68,8 @@ function(qt_auto_detect_android) endif() if(DEFINED CMAKE_TOOLCHAIN_FILE AND NOT DEFINED QT_AUTODETECT_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) + qt_auto_detect_read_toolchain_file(tcf VARIABLES CMAKE_SYSTEM_NAME) + if(tcf_CMAKE_SYSTEM_NAME STREQUAL "Android") set(android_detected TRUE) else() set(android_detected FALSE) diff --git a/cmake/QtLoadFilePrintVars.cmake b/cmake/QtLoadFilePrintVars.cmake new file mode 100644 index 0000000000..fe0f3ee8d2 --- /dev/null +++ b/cmake/QtLoadFilePrintVars.cmake @@ -0,0 +1,15 @@ +# 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() diff --git a/cmake/QtSyncQtHelpers.cmake b/cmake/QtSyncQtHelpers.cmake index 91ed7f2832..2014405017 100644 --- a/cmake/QtSyncQtHelpers.cmake +++ b/cmake/QtSyncQtHelpers.cmake @@ -15,7 +15,7 @@ function(qt_ensure_sync_qt) endif() # When building qtbase, use the source syncqt, otherwise use the installed one. - set(SYNCQT_FROM_SOURCE "${QtBase_SOURCE_DIR}/bin/syncqt.pl") + set(SYNCQT_FROM_SOURCE "${QtBase_SOURCE_DIR}/libexec/syncqt.pl") if(NOT ("${QtBase_SOURCE_DIR}" STREQUAL "") AND EXISTS "${SYNCQT_FROM_SOURCE}") set(QT_SYNCQT "${SYNCQT_FROM_SOURCE}" CACHE FILEPATH "syncqt script") message(STATUS "Using source syncqt found at: ${QT_SYNCQT}") @@ -23,10 +23,6 @@ function(qt_ensure_sync_qt) qt_path_join(syncqt_install_dir ${QT_INSTALL_DIR} ${INSTALL_LIBEXECDIR}) qt_copy_or_install(PROGRAMS "${SYNCQT_FROM_SOURCE}" DESTINATION "${syncqt_install_dir}") - - qt_path_join(syncqt_install_dir ${QT_INSTALL_DIR} ${INSTALL_BINDIR}) - qt_copy_or_install(PROGRAMS "${SYNCQT_FROM_SOURCE}" - DESTINATION "${syncqt_install_dir}") elseif(NOT "${QT_HOST_PATH}" STREQUAL "") get_filename_component(syncqt_absolute_path "${QT_HOST_PATH}/${QT${PROJECT_VERSION_MAJOR}_HOST_INFO_LIBEXECDIR}/syncqt.pl" |