summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorJoerg Bornemann <joerg.bornemann@qt.io>2021-02-25 15:46:32 +0100
committerQt CI Bot <qt_ci_bot@qt-project.org>2021-03-04 11:26:42 +0000
commit94d5c1bfe080380341fa6f7fe90c055225dfbd92 (patch)
treeec0b29f77dd908b701658d2b2825dd9a8217533f /cmake
parent52f99ff3d202705beb0abb5251e3a4999f020545 (diff)
parent00b75e86f3db6eb25798a3edc45b4fb597b9ff74 (diff)
Merge "Remove win32_system_libs feature from src/corelib/configure.json"
Diffstat (limited to 'cmake')
-rw-r--r--cmake/QtAutoDetect.cmake37
-rw-r--r--cmake/QtLoadFilePrintVars.cmake15
-rw-r--r--cmake/QtSyncQtHelpers.cmake6
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"