Removed folder 'Testing' - not needed yet
This commit is contained in:
266
.qtcreator/cmake-helper/maintenance_tool_provider.cmake
Normal file
266
.qtcreator/cmake-helper/maintenance_tool_provider.cmake
Normal file
@@ -0,0 +1,266 @@
|
||||
function(qt_maintenance_tool_get_component_platform platform_dir component_platform)
|
||||
# Mapping between platform file directory and component platform
|
||||
set(map_llvm-mingw_64 win64_llvm_mingw)
|
||||
set(map_mingw_64 win64_mingw)
|
||||
set(map_msvc2019_64 win64_msvc2019_64)
|
||||
set(map_msvc2022_64 win64_msvc2022_64)
|
||||
set(map_msvc2022_arm64 win64_msvc2022_arm64)
|
||||
set(map_gcc_64 linux_gcc_64)
|
||||
set(map_gcc_arm64 linux_gcc_arm64)
|
||||
set(map_ios ios)
|
||||
set(map_macos clang_64)
|
||||
set(map_android_arm64_v8a android)
|
||||
set(map_android_armv7 android)
|
||||
set(map_android_x86 android)
|
||||
set(map_android_x86_64 android)
|
||||
set(map_wasm_multithread wasm_multithread)
|
||||
set(map_wasm_singlethread wasm_singlethread)
|
||||
|
||||
if (platform_dir STREQUAL "msvc2022_arm64" AND QT_HOST_PATH)
|
||||
set(${component_platform} "win64_msvc2022_arm64_cross_compiled" PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(${component_platform} ${map_${platform_dir}} PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
function(qt_maintenance_tool_get_addons addon_list)
|
||||
set(${addon_list}
|
||||
qt3d
|
||||
qt5compat
|
||||
qtcanvaspainter
|
||||
qtcharts
|
||||
qtconnectivity
|
||||
qtcoap
|
||||
qtdatavis3d
|
||||
qtgraphs
|
||||
qtgrpc
|
||||
qthttpserver
|
||||
qtimageformats
|
||||
qtlocation
|
||||
qtlottie
|
||||
qtmultimedia
|
||||
qtnetworkauth
|
||||
qtpositioning
|
||||
qtquick3d
|
||||
qtquick3dphysics
|
||||
qtquickeffectmaker
|
||||
qtquicktimeline
|
||||
qtopenapi
|
||||
qtremoteobjects
|
||||
qtscxml
|
||||
qtsensors
|
||||
qtserialbus
|
||||
qtserialport
|
||||
qtshadertools
|
||||
qtspeech
|
||||
qttasktree
|
||||
qtvirtualkeyboard
|
||||
qtwebchannel
|
||||
qtwebsockets
|
||||
qtwebview
|
||||
|
||||
# found in commercial version
|
||||
qtapplicationmanager
|
||||
qtinterfraceframework
|
||||
qtlanguageserver
|
||||
qtmqtt
|
||||
qtstatemachine
|
||||
qtopcua
|
||||
tqtc-qtvncserver
|
||||
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(qt_maintenance_tool_get_extensions extensions)
|
||||
set(${extensions}
|
||||
qtinsighttracker
|
||||
qtpdf
|
||||
qtwebengine
|
||||
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(qt_maintenance_tool_get_standalone_addons standalone_addons_list)
|
||||
set(${standalone_addons_list}
|
||||
qtquick3d
|
||||
qt5compat
|
||||
qtshadertools
|
||||
qtquicktimeline
|
||||
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endfunction()
|
||||
|
||||
function(qt_maintenance_tool_install qt_major_version qt_package_list)
|
||||
if (QT_QMAKE_EXECUTABLE MATCHES ".*/(.*)/(.*)/bin/qmake")
|
||||
set(qt_version_number ${CMAKE_MATCH_1})
|
||||
string(REPLACE "." "" qt_version_number_dotless ${qt_version_number})
|
||||
set(qt_build_flavor ${CMAKE_MATCH_2})
|
||||
|
||||
set(additional_addons "")
|
||||
qt_maintenance_tool_get_extensions(__qt_extensions)
|
||||
if (qt_version_number VERSION_LESS 6.8.0)
|
||||
set(additional_addons ${__qt_extensions})
|
||||
endif()
|
||||
if (WIN32)
|
||||
list(APPEND additional_addons qtactiveqt)
|
||||
endif()
|
||||
if (UNIX AND NOT APPLE)
|
||||
list(APPEND additional_addons qtwaylandcompositor)
|
||||
endif()
|
||||
|
||||
qt_maintenance_tool_get_component_platform(${qt_build_flavor} component_platform)
|
||||
if (NOT component_platform)
|
||||
message(STATUS
|
||||
"Qt Creator: Could not find the component platform for '${qt_build_flavor}' "
|
||||
"required by the MaintenanceTool. This can happen with a non Qt SDK installation "
|
||||
"(e.g. system Linux or macOS homebrew).")
|
||||
return()
|
||||
endif()
|
||||
|
||||
set(installer_component_list "")
|
||||
foreach (qt_package_name IN LISTS qt_package_list)
|
||||
string(TOLOWER "${qt_package_name}" qt_package_name_lowercase)
|
||||
|
||||
qt_maintenance_tool_get_addons(__qt_addons)
|
||||
if (qt_version_number VERSION_LESS 6.8.0)
|
||||
qt_maintenance_tool_get_standalone_addons(__standalone_addons)
|
||||
foreach(standalone_addon IN LISTS __standalone_addons)
|
||||
list(REMOVE_ITEM __qt_addons ${standalone_addon})
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
# Is the package an addon?
|
||||
set(install_addon FALSE)
|
||||
foreach(addon IN LISTS __qt_addons additional_addons)
|
||||
string(REGEX MATCH "^${addon}$" is_addon "qt${qt_package_name_lowercase}")
|
||||
if (is_addon)
|
||||
list(
|
||||
APPEND installer_component_list
|
||||
"qt.qt${qt_major_version}.${qt_version_number_dotless}.addons.${addon}"
|
||||
)
|
||||
set(install_addon TRUE)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT install_addon)
|
||||
set(install_extension FALSE)
|
||||
foreach(extension IN LISTS __qt_extensions)
|
||||
string(REGEX MATCH "^${extension}$" is_extension "qt${qt_package_name_lowercase}")
|
||||
if (is_extension)
|
||||
list(
|
||||
APPEND installer_component_list
|
||||
"extensions.${extension}.${qt_version_number_dotless}.${component_platform}"
|
||||
)
|
||||
set(install_extension TRUE)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if (NOT install_extension)
|
||||
set(install_standalone_addon FALSE)
|
||||
foreach(standalone_addon IN LISTS __standalone_addons)
|
||||
string(REGEX MATCH "^${standalone_addon}$" is_standalone_addon "qt${qt_package_name_lowercase}")
|
||||
if (is_standalone_addon)
|
||||
list(
|
||||
APPEND installer_component_list
|
||||
"qt.qt${qt_major_version}.${qt_version_number_dotless}.${standalone_addon}"
|
||||
)
|
||||
set(install_standalone_addon TRUE)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
if(NOT install_standalone_addon)
|
||||
# Install the Desktop package
|
||||
list(
|
||||
APPEND installer_component_list
|
||||
"qt.qt${qt_major_version}.${qt_version_number_dotless}.${component_platform}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
# THIS MESSAGE IS PARSED IN THE CMakeOutputParser
|
||||
message(WARNING "Qt packages are missing: ${qt_version_number}, ${qt_build_flavor}, ${installer_component_list}\n"
|
||||
"If you are using the Qt Online Installer, check the Issues view in Qt Creator "
|
||||
"for a link that installs the missing component.")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
macro(qt_maintenance_tool_dependency method package_name)
|
||||
# Work around upstream cmake issue: https://gitlab.kitware.com/cmake/cmake/-/issues/27169
|
||||
if(ANDROID
|
||||
AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.29
|
||||
AND NOT ANDROID_USE_LEGACY_TOOLCHAIN_FILE
|
||||
AND NOT CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS
|
||||
AND NOT QT_NO_SET_MAINTENANCE_TOOL_PROVIDER_POLICY_CMP0155
|
||||
)
|
||||
message(DEBUG
|
||||
"Setting policy CMP0155 to OLD inside qt_maintenance_tool_dependency to avoid "
|
||||
"issues with not being able to find the Threads package when targeting Android with "
|
||||
"cmake_minimum_required(3.29) and CMAKE_CXX_STANDARD >= 20."
|
||||
)
|
||||
# We don't create an explicit policy stack entry before changing the policy, because setting
|
||||
# the policy value bubbles it up to the parent find_package() scope, which is fine, that's
|
||||
# exactly the scope we want to modify.
|
||||
cmake_policy(SET CMP0155 OLD)
|
||||
endif()
|
||||
|
||||
if (${package_name} MATCHES "^Qt([5-9])(.*)$")
|
||||
set(__qt_dependency_qt_major_version ${CMAKE_MATCH_1})
|
||||
set(__qt_dependency_qt_package_name ${CMAKE_MATCH_2})
|
||||
|
||||
# https://cmake.org/cmake/help/latest/command/find_package.html
|
||||
set(__qt_dependency_options
|
||||
CONFIG NO_MODULE MODULE REQUIRED EXACT QUIET GLOBAL NO_POLICY_SCOPE NO_DEFAULT_PATH NO_PACKAGE_ROOT_PATH
|
||||
NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_PACKAGE_REGISTRY
|
||||
NO_CMAKE_SYSTEM_PATH NO_CMAKE_INSTALL_PREFIX NO_CMAKE_SYSTEM_PACKAGE_REGISTRY CMAKE_FIND_ROOT_PATH_BOTH
|
||||
ONLY_CMAKE_FIND_ROOT_PATH NO_CMAKE_FIND_ROOT_PATH
|
||||
)
|
||||
set(__qt_dependency_oneValueArgs REGISTRY_VIEW)
|
||||
set(__qt_dependency_multiValueArgs COMPONENTS OPTIONAL_COMPONENTS NAMES CONFIGS HINTS PATHS PATH_SUFFIXES)
|
||||
cmake_parse_arguments(__qt_dependency_arg "${__qt_dependency_options}" "${__qt_dependency_oneValueArgs}" "${__qt_dependency_multiValueArgs}" ${ARGN})
|
||||
|
||||
if (__qt_dependency_arg_REQUIRED AND __qt_dependency_arg_COMPONENTS)
|
||||
# Install missing COMPONENTS.
|
||||
set(__qt_dependency_pkgs_to_install "")
|
||||
foreach(pkg IN LISTS __qt_dependency_arg_COMPONENTS)
|
||||
find_package(Qt${__qt_dependency_qt_major_version}${pkg}
|
||||
PATHS ${CMAKE_PREFIX_PATH} ${CMAKE_MODULE_PATH} NO_DEFAULT_PATH BYPASS_PROVIDER QUIET)
|
||||
if (NOT Qt${__qt_dependency_qt_major_version}${pkg}_FOUND)
|
||||
list(APPEND __qt_dependency_pkgs_to_install ${pkg})
|
||||
endif()
|
||||
endforeach()
|
||||
if (__qt_dependency_pkgs_to_install)
|
||||
qt_maintenance_tool_install("${__qt_dependency_qt_major_version}" "${__qt_dependency_pkgs_to_install}")
|
||||
endif()
|
||||
elseif(__qt_dependency_arg_REQUIRED AND NOT __qt_dependency_qt_package_name)
|
||||
# Install the Desktop package if Qt::Core is missing
|
||||
find_package(Qt${__qt_dependency_qt_major_version}Core
|
||||
PATHS ${CMAKE_PREFIX_PATH} ${CMAKE_MODULE_PATH} NO_DEFAULT_PATH BYPASS_PROVIDER QUIET)
|
||||
if (NOT Qt${__qt_dependency_qt_major_version}$Core_FOUND)
|
||||
qt_maintenance_tool_install("${__qt_dependency_qt_major_version}" Core)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_package(${package_name} ${ARGN}
|
||||
PATHS ${CMAKE_PREFIX_PATH} ${CMAKE_MODULE_PATH} NO_DEFAULT_PATH BYPASS_PROVIDER QUIET)
|
||||
if (NOT ${package_name}_FOUND AND __qt_dependency_arg_REQUIRED)
|
||||
qt_maintenance_tool_install("${__qt_dependency_qt_major_version}" "${__qt_dependency_qt_package_name}")
|
||||
find_package(${package_name} ${ARGN} BYPASS_PROVIDER)
|
||||
endif()
|
||||
else()
|
||||
find_package(${package_name} ${ARGN} BYPASS_PROVIDER)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
cmake_language(
|
||||
SET_DEPENDENCY_PROVIDER qt_maintenance_tool_dependency
|
||||
SUPPORTED_METHODS FIND_PACKAGE
|
||||
)
|
||||
Reference in New Issue
Block a user