58 lines
2.3 KiB
CMake
58 lines
2.3 KiB
CMake
|
#
|
||
|
# 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()
|