# # 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()