diff options
Diffstat (limited to 'cmake/QtAutoDetect.cmake')
-rw-r--r-- | cmake/QtAutoDetect.cmake | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/cmake/QtAutoDetect.cmake b/cmake/QtAutoDetect.cmake new file mode 100644 index 0000000000..a1e66ffcbe --- /dev/null +++ b/cmake/QtAutoDetect.cmake @@ -0,0 +1,57 @@ +# +# Collection of auto dection routines to improve the user eperience when +# building Qt from source. +# + +function(qt_auto_detect_android) + 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) + set(android_detected TRUE) + else() + set(android_detected FALSE) + endif() + + if(android_detected) + message(STATUS "Android toolchain file detected, checking configuration defaults...") + if(NOT DEFINED ANDROID_NATIVE_API_LEVEL) + message(STATUS "ANDROID_NATIVE_API_LEVEL was not specified, using API level 21 as default") + set(ANDROID_NATIVE_API_LEVEL 21 CACHE STRING "") + endif() + if(NOT DEFINED ANDROID_STL) + set(ANDROID_STL "c++_shared" CACHE STRING "") + endif() + endif() + set(QT_AUTODETECT_ANDROID ${android_detected} CACHE STRING "") + elseif (QT_AUTODETECT_ANDROID) + message(STATUS "Android toolchain file detected") + endif() +endfunction() + +function(qt_auto_detect_vpckg) + if(DEFINED ENV{VCPKG_ROOT}) + set(vcpkg_toolchain_file "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake") + get_filename_component(vcpkg_toolchain_file "${vcpkg_toolchain_file}" ABSOLUTE) + + if(DEFINED CMAKE_TOOLCHAIN_FILE) + get_filename_component(supplied_toolchain_file "${CMAKE_TOOLCHAIN_FILE}" ABSOLUTE) + if(NOT supplied_toolchain_file STREQUAL vcpkg_toolchain_file) + set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${CMAKE_TOOLCHAIN_FILE}" CACHE STRING "") + endif() + unset(supplied_toolchain_file) + endif() + set(CMAKE_TOOLCHAIN_FILE "${vcpkg_toolchain_file}" CACHE STRING "" FORCE) + message(STATUS "Using vcpkg from $ENV{VCPKG_ROOT}") + if(DEFINED ENV{VCPKG_DEFAULT_TRIPLET} AND NOT DEFINED VCPKG_TARGET_TRIPLET) + set(VCPKG_TARGET_TRIPLET "$ENV{VCPKG_DEFAULT_TRIPLET}" CACHE STRING "") + message(STATUS "Using vcpkg triplet ${VCPKG_TARGET_TRIPLET}") + endif() + unset(vcpkg_toolchain_file) + endif() +endfunction() + + +qt_auto_detect_android() +qt_auto_detect_vpckg() |