summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/qt-cmake.in3
-rw-r--r--cmake/QtBaseGlobalTargets.cmake28
-rw-r--r--cmake/qt.toolchain.cmake.in18
3 files changed, 49 insertions, 0 deletions
diff --git a/bin/qt-cmake.in b/bin/qt-cmake.in
new file mode 100755
index 0000000000..efc8a850be
--- /dev/null
+++ b/bin/qt-cmake.in
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+exec @CMAKE_COMMAND@ -DCMAKE_TOOLCHAIN_FILE=@CMAKE_INSTALL_PREFIX@/@__GlobalConfig_install_dir@/qt.toolchain.cmake $*
diff --git a/cmake/QtBaseGlobalTargets.cmake b/cmake/QtBaseGlobalTargets.cmake
index 5bb0925f5b..34f2cfe635 100644
--- a/cmake/QtBaseGlobalTargets.cmake
+++ b/cmake/QtBaseGlobalTargets.cmake
@@ -60,6 +60,34 @@ qt_install(FILES
COMPONENT Devel
)
+# Generate toolchain file for convenience
+if(QT_HOST_PATH)
+ get_filename_component(init_qt_host_path "${QT_HOST_PATH}" ABSOLUTE)
+ set(init_qt_host_path "set(QT_HOST_PATH \"${init_qt_host_path}\" CACHE PATH \"\" FORCE)")
+endif()
+
+if(CMAKE_TOOLCHAIN_FILE)
+ set(init_original_toolchain_file "set(qt_chainload_toolchain_file \"${CMAKE_TOOLCHAIN_FILE}\")")
+endif()
+
+if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
+ list(APPEND init_vcpkg "set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE \"${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}\")")
+endif()
+
+if(VCPKG_TARGET_TRIPLET)
+ list(APPEND init_vcpkg "set(VCPKG_TARGET_TRIPLET \"${VCPKG_TARGET_TRIPLET}\")")
+endif()
+
+string(REPLACE ";" "\n" init_vcpkg "${init_vcpkg}")
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake/qt.toolchain.cmake.in" "${__GlobalConfig_build_dir}/qt.toolchain.cmake" @ONLY)
+qt_install(FILES "${__GlobalConfig_build_dir}/qt.toolchain.cmake" DESTINATION "${__GlobalConfig_install_dir}" COMPONENT Devel)
+
+# Also provide a convenience cmake wrapper
+if(UNIX)
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/bin/qt-cmake.in" "${QT_BUILD_DIR}/${INSTALL_BINDIR}/qt-cmake" @ONLY)
+ qt_install(PROGRAMS "${QT_BUILD_DIR}/bin/qt-cmake" DESTINATION "${INSTALL_BINDIR}")
+endif()
+
## Library to hold global features:
## These features are stored and accessed via Qt::GlobalConfig, but the
## files always lived in Qt::Core, so we keep it that way
diff --git a/cmake/qt.toolchain.cmake.in b/cmake/qt.toolchain.cmake.in
new file mode 100644
index 0000000000..d816e1dcc9
--- /dev/null
+++ b/cmake/qt.toolchain.cmake.in
@@ -0,0 +1,18 @@
+list(APPEND CMAKE_PREFIX_PATH "@CMAKE_INSTALL_PREFIX@")
+list(APPEND CMAKE_FIND_ROOT_PATH "@CMAKE_INSTALL_PREFIX@")
+
+@init_qt_host_path@
+
+@init_original_toolchain_file@
+
+@init_vcpkg@
+
+if(qt_chainload_toolchain_file)
+ include("${qt_chainload_toolchain_file}")
+ unset(qt_chainload_toolchain_file)
+endif()
+
+if(QT_HOST_PATH)
+ list(APPEND CMAKE_PREFIX_PATH "${QT_HOST_PATH}")
+ list(APPEND CMAKE_FIND_ROOT_PATH "${QT_HOST_PATH}")
+endif()