| |
|
| | set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR}) |
| |
|
| | |
| | function(determine_qt_parameters target host_out type_out arch_out arch_path_out host_type_out host_arch_out host_arch_path_out) |
| | if (target MATCHES "tools_.*") |
| | set(tool ON) |
| | else() |
| | set(tool OFF) |
| | endif() |
| |
|
| | |
| | if (WIN32) |
| | set(host "windows") |
| | set(type "desktop") |
| |
|
| | if (NOT tool) |
| | if (MINGW) |
| | set(arch "win64_mingw") |
| | set(arch_path "mingw_64") |
| | elseif (MSVC) |
| | if ("arm64" IN_LIST ARCHITECTURE) |
| | set(arch_path "msvc2019_arm64") |
| | elseif ("x86_64" IN_LIST ARCHITECTURE) |
| | set(arch_path "msvc2019_64") |
| | else() |
| | message(FATAL_ERROR "Unsupported bundled Qt architecture. Enable USE_SYSTEM_QT and provide your own.") |
| | endif() |
| | set(arch "win64_${arch_path}") |
| |
|
| | |
| | if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64") |
| | set(host_arch_path "msvc2019_64") |
| | elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") |
| | |
| | |
| | |
| | set(host_arch_path "msvc2019_64") |
| | endif() |
| | set(host_arch "win64_${host_arch_path}") |
| | else() |
| | message(FATAL_ERROR "Unsupported bundled Qt toolchain. Enable USE_SYSTEM_QT and provide your own.") |
| | endif() |
| | endif() |
| | elseif (APPLE) |
| | set(host "mac") |
| | set(type "desktop") |
| | set(arch "clang_64") |
| | set(arch_path "macos") |
| |
|
| | if (IOS AND NOT tool) |
| | set(host_type "${type}") |
| | set(host_arch "${arch}") |
| | set(host_arch_path "${arch_path}") |
| |
|
| | set(type "ios") |
| | set(arch "ios") |
| | set(arch_path "ios") |
| | endif() |
| | else() |
| | set(host "linux") |
| | set(type "desktop") |
| | set(arch "gcc_64") |
| | set(arch_path "linux") |
| | endif() |
| |
|
| | set(${host_out} "${host}" PARENT_SCOPE) |
| | set(${type_out} "${type}" PARENT_SCOPE) |
| | set(${arch_out} "${arch}" PARENT_SCOPE) |
| | set(${arch_path_out} "${arch_path}" PARENT_SCOPE) |
| | if (DEFINED host_type) |
| | set(${host_type_out} "${host_type}" PARENT_SCOPE) |
| | else() |
| | set(${host_type_out} "${type}" PARENT_SCOPE) |
| | endif() |
| | if (DEFINED host_arch) |
| | set(${host_arch_out} "${host_arch}" PARENT_SCOPE) |
| | else() |
| | set(${host_arch_out} "${arch}" PARENT_SCOPE) |
| | endif() |
| | if (DEFINED host_arch_path) |
| | set(${host_arch_path_out} "${host_arch_path}" PARENT_SCOPE) |
| | else() |
| | set(${host_arch_path_out} "${arch_path}" PARENT_SCOPE) |
| | endif() |
| | endfunction() |
| |
|
| | |
| | function(download_qt_configuration prefix_out target host type arch arch_path base_path) |
| | if (target MATCHES "tools_.*") |
| | set(tool ON) |
| | else() |
| | set(tool OFF) |
| | endif() |
| |
|
| | set(install_args -c "${CURRENT_MODULE_DIR}/aqt_config.ini") |
| | if (tool) |
| | set(prefix "${base_path}/Tools") |
| | set(install_args ${install_args} install-tool --outputdir ${base_path} ${host} desktop ${target}) |
| | else() |
| | set(prefix "${base_path}/${target}/${arch_path}") |
| | set(install_args ${install_args} install-qt --outputdir ${base_path} ${host} ${type} ${target} ${arch} |
| | -m qtmultimedia --archives qttranslations qttools qtsvg qtbase) |
| | endif() |
| |
|
| | if (NOT EXISTS "${prefix}") |
| | message(STATUS "Downloading Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path}") |
| | set(AQT_PREBUILD_BASE_URL "https://github.com/miurahr/aqtinstall/releases/download/v3.1.9") |
| | if (WIN32) |
| | set(aqt_path "${base_path}/aqt.exe") |
| | if (NOT EXISTS "${aqt_path}") |
| | file(DOWNLOAD |
| | ${AQT_PREBUILD_BASE_URL}/aqt.exe |
| | ${aqt_path} SHOW_PROGRESS) |
| | endif() |
| | execute_process(COMMAND ${aqt_path} ${install_args} |
| | WORKING_DIRECTORY ${base_path}) |
| | elseif (APPLE) |
| | set(aqt_path "${base_path}/aqt-macos") |
| | if (NOT EXISTS "${aqt_path}") |
| | file(DOWNLOAD |
| | ${AQT_PREBUILD_BASE_URL}/aqt-macos |
| | ${aqt_path} SHOW_PROGRESS) |
| | endif() |
| | execute_process(COMMAND chmod +x ${aqt_path}) |
| | execute_process(COMMAND ${aqt_path} ${install_args} |
| | WORKING_DIRECTORY ${base_path}) |
| | else() |
| | |
| | set(aqt_install_path "${base_path}/aqt") |
| | file(MAKE_DIRECTORY "${aqt_install_path}") |
| |
|
| | execute_process(COMMAND python3 -m pip install --target=${aqt_install_path} aqtinstall |
| | WORKING_DIRECTORY ${base_path}) |
| | execute_process(COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${aqt_install_path} python3 -m aqt ${install_args} |
| | WORKING_DIRECTORY ${base_path}) |
| | endif() |
| |
|
| | message(STATUS "Downloaded Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path} to ${prefix}") |
| | endif() |
| |
|
| | set(${prefix_out} "${prefix}" PARENT_SCOPE) |
| | endfunction() |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | function(download_qt target) |
| | determine_qt_parameters("${target}" host type arch arch_path host_type host_arch host_arch_path) |
| |
|
| | get_external_prefix(qt base_path) |
| | file(MAKE_DIRECTORY "${base_path}") |
| |
|
| | download_qt_configuration(prefix "${target}" "${host}" "${type}" "${arch}" "${arch_path}" "${base_path}") |
| | if (DEFINED host_arch_path AND NOT "${host_arch_path}" STREQUAL "${arch_path}") |
| | download_qt_configuration(host_prefix "${target}" "${host}" "${host_type}" "${host_arch}" "${host_arch_path}" "${base_path}") |
| | else() |
| | set(host_prefix "${prefix}") |
| | endif() |
| |
|
| | set(QT_TARGET_PATH "${prefix}" CACHE STRING "") |
| | set(QT_HOST_PATH "${host_prefix}" CACHE STRING "") |
| |
|
| | |
| | list(APPEND CMAKE_PREFIX_PATH "${prefix}") |
| | set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) |
| | endfunction() |
| |
|
| | function(download_moltenvk) |
| | if (IOS) |
| | set(MOLTENVK_PLATFORM "iOS") |
| | else() |
| | set(MOLTENVK_PLATFORM "macOS") |
| | endif() |
| |
|
| | set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK") |
| | set(MOLTENVK_TAR "${CMAKE_BINARY_DIR}/externals/MoltenVK.tar") |
| | if (NOT EXISTS ${MOLTENVK_DIR}) |
| | if (NOT EXISTS ${MOLTENVK_TAR}) |
| | file(DOWNLOAD https://github.com/KhronosGroup/MoltenVK/releases/download/v1.2.7-rc2/MoltenVK-all.tar |
| | ${MOLTENVK_TAR} SHOW_PROGRESS) |
| | endif() |
| |
|
| | execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}" |
| | WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") |
| | endif() |
| |
|
| | |
| | list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${MOLTENVK_PLATFORM}") |
| | set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) |
| | endfunction() |
| |
|
| | function(get_external_prefix lib_name prefix_var) |
| | set(${prefix_var} "${CMAKE_BINARY_DIR}/externals/${lib_name}" PARENT_SCOPE) |
| | endfunction() |
| |
|