f8a83fc5c0
Allow CMake for Android to use ANDROID_NDK_ROOT to deduce the path for QT_CHAINLOAD_TOOLCHAIN_FILE instead of the user providing it manually. Change-Id: Ida728011d5ca8d5a723d341ea77b173e8f105f8c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
67 lines
3.2 KiB
CMake
67 lines
3.2 KiB
CMake
@init_qt_host_path@
|
|
@init_qt_host_path_cmake_dir@
|
|
@init_original_toolchain_file@
|
|
@init_vcpkg@
|
|
|
|
@init_platform@
|
|
|
|
if(NOT "${QT_CHAINLOAD_TOOLCHAIN_FILE}" STREQUAL "")
|
|
set(__qt_chainload_toolchain_file "${QT_CHAINLOAD_TOOLCHAIN_FILE}")
|
|
endif()
|
|
if(__qt_chainload_toolchain_file)
|
|
get_filename_component(__qt_chainload_toolchain_file_real_path
|
|
"${__qt_chainload_toolchain_file}" REALPATH)
|
|
if(__qt_chainload_toolchain_file_real_path STREQUAL CMAKE_CURRENT_LIST_FILE)
|
|
message(FATAL_ERROR
|
|
"Woah, the Qt toolchain file tried to include itself recusively! '${__qt_chainload_toolchain_file}' "
|
|
"Make sure to remove qtbase/CMakeCache.txt and reconfigure qtbase with 'cmake' "
|
|
"rather than 'qt-cmake', and then you can reconfigure your own project."
|
|
)
|
|
elseif(NOT EXISTS "${__qt_chainload_toolchain_file_real_path}")
|
|
message(WARNING "The toolchain file to be chainloaded "
|
|
"'${__qt_chainload_toolchain_file}' does not exist.")
|
|
else()
|
|
include("${__qt_chainload_toolchain_file}")
|
|
endif()
|
|
unset(__qt_chainload_toolchain_file)
|
|
endif()
|
|
|
|
# Compute dynamically the Qt installation prefix from the location of this file. This allows
|
|
# the usage of the toolchain file when the Qt installation is relocated.
|
|
get_filename_component(QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX
|
|
${CMAKE_CURRENT_LIST_DIR}/../@qt_path_from_cmake_config_dir_to_prefix@
|
|
ABSOLUTE)
|
|
|
|
# Compute the path to the installed Qt lib/cmake folder.
|
|
# We assume that the Qt toolchain location is inside the CMake Qt6 package, and thus the directory
|
|
# one level higher is what we're looking for.
|
|
get_filename_component(QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
|
|
|
|
# There's a subdirectory check in cmake's cmFindCommon::RerootPaths() function, that doesn't handle
|
|
# the case of CMAKE_PREFIX_PATH == CMAKE_FIND_ROOT_PATH for a particular pair of entries.
|
|
# Instead of collapsing the search prefix (which is the case when one is a subdir of the other),
|
|
# it concatenates them creating an invalid path. Workaround it by setting the root path to the
|
|
# Qt install prefix, and the prefix path to the lib/cmake subdir.
|
|
list(PREPEND CMAKE_PREFIX_PATH "${QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR}")
|
|
list(PREPEND CMAKE_FIND_ROOT_PATH "${QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX}")
|
|
@init_qt_host_path_checks@
|
|
|
|
# Allow customization of the toolchain file by placing an additional file next to it.
|
|
set(__qt_toolchain_extra_file "${CMAKE_CURRENT_LIST_DIR}/qt.toolchain.extra.cmake")
|
|
if(EXISTS "${__qt_toolchain_extra_file}")
|
|
include("${__qt_toolchain_extra_file}")
|
|
endif()
|
|
|
|
# Allow customization of the toolchain file by passing a path to an additional CMake file to be
|
|
# included.
|
|
if(QT_TOOLCHAIN_INCLUDE_FILE)
|
|
get_filename_component(__qt_toolchain_include_file_real_path
|
|
"${QT_TOOLCHAIN_INCLUDE_FILE}" REALPATH)
|
|
if(EXISTS "${__qt_toolchain_include_file_real_path}")
|
|
include("${__qt_toolchain_include_file_real_path}")
|
|
else()
|
|
message(WARNING "The passed extra toolchain file to be included does not exist: "
|
|
"${__qt_toolchain_include_file_real_path}")
|
|
endif()
|
|
endif()
|