diff options
Diffstat (limited to 'vcpkg/ports/qtbase/cmake')
| -rw-r--r-- | vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake | 27 | ||||
| -rw-r--r-- | vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake | 384 | ||||
| -rw-r--r-- | vcpkg/ports/qtbase/cmake/qt_port_data.cmake | 50 | ||||
| -rw-r--r-- | vcpkg/ports/qtbase/cmake/qt_port_details.cmake | 183 |
4 files changed, 644 insertions, 0 deletions
diff --git a/vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake b/vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake new file mode 100644 index 0000000..8ec395f --- /dev/null +++ b/vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake @@ -0,0 +1,27 @@ +include_guard(GLOBAL)
+
+#Could probably be the beginning of a vcpkg_install_copyright?
+function(qt_install_copyright SOURCE_PATH)
+ #Find the relevant license file and install it
+ if(EXISTS "${SOURCE_PATH}/LICENSE.LGPLv3")
+ set(LICENSE_PATH "${SOURCE_PATH}/LICENSE.LGPLv3")
+ elseif(EXISTS "${SOURCE_PATH}/LICENSE.LGPL3")
+ set(LICENSE_PATH "${SOURCE_PATH}/LICENSE.LGPL3")
+ elseif(EXISTS "${SOURCE_PATH}/LICENSE.GPLv3")
+ set(LICENSE_PATH "${SOURCE_PATH}/LICENSE.GPLv3")
+ elseif(EXISTS "${SOURCE_PATH}/LICENSE.GPL3")
+ set(LICENSE_PATH "${SOURCE_PATH}/LICENSE.GPL3")
+ elseif(EXISTS "${SOURCE_PATH}/LICENSE.GPL3-EXCEPT")
+ set(LICENSE_PATH "${SOURCE_PATH}/LICENSE.GPL3-EXCEPT")
+ elseif(EXISTS "${SOURCE_PATH}/LICENSE.FDL")
+ set(LICENSE_PATH "${SOURCE_PATH}/LICENSE.FDL")
+ endif()
+ if(LICENSE_PATH)
+ file(INSTALL "${LICENSE_PATH}" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
+ elseif(EXISTS "${SOURCE_PATH}/LICENSES")
+ file(GLOB LICENSES "${SOURCE_PATH}/LICENSES/*")
+ vcpkg_install_copyright(FILE_LIST ${LICENSES})
+ else()
+ message(WARNING "No license/copyright file found!")
+ endif()
+endfunction()
diff --git a/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake b/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake new file mode 100644 index 0000000..0456a96 --- /dev/null +++ b/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake @@ -0,0 +1,384 @@ +include_guard(GLOBAL)
+
+include("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-cmake/vcpkg-port-config.cmake")
+include("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-cmake-config/vcpkg-port-config.cmake")
+include("${CMAKE_CURRENT_LIST_DIR}/qt_install_copyright.cmake")
+
+if(NOT DEFINED QT6_DIRECTORY_PREFIX)
+ set(QT6_DIRECTORY_PREFIX "Qt6/")
+endif()
+
+if(VCPKG_TARGET_IS_ANDROID)
+ # ANDROID_HOME: canonical SDK environment variable
+ # ANDROID_SDK_ROOT: legacy qtbase triplet variable
+ if(NOT ANDROID_SDK_ROOT)
+ if("$ENV{ANDROID_HOME}" STREQUAL "")
+ message(FATAL_ERROR "${PORT} requires environment variable ANDROID_HOME to be set.")
+ endif()
+ set(ANDROID_SDK_ROOT "$ENV{ANDROID_HOME}")
+ endif()
+endif()
+
+function(qt_download_submodule_impl)
+ cmake_parse_arguments(PARSE_ARGV 0 "_qarg" "" "SUBMODULE" "PATCHES")
+
+ if("${_qarg_SUBMODULE}" IN_LIST QT_FROM_QT_GIT)
+ # qtinterfaceframework is not available in the release, so we fall back to a `git clone`.
+ vcpkg_from_git(
+ OUT_SOURCE_PATH SOURCE_PATH
+ URL "https://code.qt.io/qt/${_qarg_SUBMODULE}.git"
+ REF "${${_qarg_SUBMODULE}_REF}"
+ PATCHES ${_qarg_PATCHES}
+ )
+ if(PORT STREQUAL "qttools") # Keep this for beta & rc's
+ vcpkg_from_git(
+ OUT_SOURCE_PATH SOURCE_PATH_QLITEHTML
+ URL https://code.qt.io/playground/qlitehtml.git
+ REF "${${PORT}_qlitehtml_REF}"
+ FETCH_REF master
+ HEAD_REF master
+ )
+ # port 'litehtml' is not in vcpkg!
+ vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH_LITEHTML
+ REPO litehtml/litehtml
+ REF "${${PORT}_litehtml_REF}"
+ SHA512 "${${PORT}_litehtml_HASH}"
+ HEAD_REF master
+ )
+ file(COPY "${SOURCE_PATH_QLITEHTML}/" DESTINATION "${SOURCE_PATH}/src/assistant/qlitehtml")
+ file(COPY "${SOURCE_PATH_LITEHTML}/" DESTINATION "${SOURCE_PATH}/src/assistant/qlitehtml/src/3rdparty/litehtml")
+ elseif(PORT STREQUAL "qtwebengine")
+ vcpkg_from_git(
+ OUT_SOURCE_PATH SOURCE_PATH_WEBENGINE
+ URL https://code.qt.io/qt/qtwebengine-chromium.git
+ REF "${${PORT}_chromium_REF}"
+ )
+ if(NOT EXISTS "${SOURCE_PATH}/src/3rdparty/chromium")
+ file(RENAME "${SOURCE_PATH_WEBENGINE}/chromium" "${SOURCE_PATH}/src/3rdparty/chromium")
+ endif()
+ if(NOT EXISTS "${SOURCE_PATH}/src/3rdparty/gn")
+ file(RENAME "${SOURCE_PATH_WEBENGINE}/gn" "${SOURCE_PATH}/src/3rdparty/gn")
+ endif()
+ endif()
+ else()
+ if(VCPKG_USE_HEAD_VERSION)
+ set(sha512 SKIP_SHA512)
+ elseif(NOT DEFINED "${_qarg_SUBMODULE}_HASH")
+ message(FATAL_ERROR "No information for ${_qarg_SUBMODULE} -- add it to QT_PORTS and run qtbase in QT_UPDATE_VERSION mode first")
+ else()
+ set(sha512 SHA512 "${${_qarg_SUBMODULE}_HASH}")
+ endif()
+
+ qt_get_url_filename("${_qarg_SUBMODULE}" urls filename)
+ vcpkg_download_distfile(archive
+ URLS ${urls}
+ FILENAME "${filename}"
+ ${sha512}
+ )
+ vcpkg_extract_source_archive(
+ SOURCE_PATH
+ ARCHIVE "${archive}"
+ PATCHES ${_qarg_PATCHES}
+ )
+ endif()
+ set(SOURCE_PATH "${SOURCE_PATH}" PARENT_SCOPE)
+endfunction()
+
+function(qt_download_submodule)
+ cmake_parse_arguments(PARSE_ARGV 0 "_qarg" "" "" "PATCHES")
+
+ qt_download_submodule_impl(SUBMODULE "${PORT}" PATCHES ${_qarg_PATCHES})
+
+ set(SOURCE_PATH "${SOURCE_PATH}" PARENT_SCOPE)
+endfunction()
+
+
+function(qt_cmake_configure)
+ cmake_parse_arguments(PARSE_ARGV 0 "_qarg" "DISABLE_NINJA;DISABLE_PARALLEL_CONFIGURE"
+ ""
+ "TOOL_NAMES;OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE;OPTIONS_MAYBE_UNUSED")
+
+ vcpkg_find_acquire_program(PERL) # Perl is probably required by all qt ports for syncqt
+ get_filename_component(PERL_PATH ${PERL} DIRECTORY)
+ vcpkg_add_to_path(${PERL_PATH})
+ if(NOT PORT STREQUAL "qtwebengine" OR QT_IS_LATEST) # qtwebengine requires python2; since 6.3 python3
+ vcpkg_find_acquire_program(PYTHON3) # Python is required by some qt ports
+ get_filename_component(PYTHON3_PATH ${PYTHON3} DIRECTORY)
+ vcpkg_add_to_path(${PYTHON3_PATH})
+ endif()
+
+ if(NOT PORT MATCHES "^qtbase")
+ list(APPEND _qarg_OPTIONS "-DQT_SYNCQT:PATH=${CURRENT_HOST_INSTALLED_DIR}/tools/Qt6/bin/syncqt.pl")
+ endif()
+ set(PERL_OPTION "-DHOST_PERL:PATH=${PERL}")
+
+ set(ninja_option "")
+ if(_qarg_DISABLE_NINJA)
+ set(ninja_option WINDOWS_USE_MSBUILD)
+ endif()
+
+ set(disable_parallel "")
+ if(_qarg_DISABLE_PARALLEL_CONFIGURE)
+ set(disable_parallel DISABLE_PARALLEL_CONFIGURE)
+ endif()
+
+ if(VCPKG_CROSSCOMPILING)
+ list(APPEND _qarg_OPTIONS "-DQT_HOST_PATH=${CURRENT_HOST_INSTALLED_DIR}")
+ list(APPEND _qarg_OPTIONS "-DQT_HOST_PATH_CMAKE_DIR:PATH=${CURRENT_HOST_INSTALLED_DIR}/share")
+ endif()
+
+ # Disable warning for CMAKE_(REQUIRE|DISABLE)_FIND_PACKAGE_<packagename>
+ string(REGEX MATCHALL "CMAKE_DISABLE_FIND_PACKAGE_[^:=]+" disabled_find_package "${_qarg_OPTIONS}")
+ list(APPEND _qarg_OPTIONS_MAYBE_UNUSED ${disabled_find_package})
+
+ string(REGEX MATCHALL "CMAKE_REQUIRE_FIND_PACKAGE_[^:=]+(:BOOL)?=OFF" require_find_package "${_qarg_OPTIONS}")
+ list(TRANSFORM require_find_package REPLACE "(:BOOL)?=OFF" "")
+ list(APPEND _qarg_OPTIONS_MAYBE_UNUSED ${require_find_package})
+
+ # Disable unused warnings for disabled features. Qt might decide to not emit the feature variables if other features are deactivated.
+ string(REGEX MATCHALL "(QT_)?FEATURE_[^:=]+(:BOOL)?=OFF" disabled_features "${_qarg_OPTIONS}")
+ list(TRANSFORM disabled_features REPLACE "(:BOOL)?=OFF" "")
+ list(APPEND _qarg_OPTIONS_MAYBE_UNUSED ${disabled_features})
+
+ list(APPEND _qarg_OPTIONS "-DQT_NO_FORCE_SET_CMAKE_BUILD_TYPE:BOOL=ON")
+
+ if(VCPKG_TARGET_IS_ANDROID)
+ list(APPEND _qarg_OPTIONS "-DANDROID_SDK_ROOT=${ANDROID_SDK_ROOT}")
+ endif()
+
+ if(NOT PORT MATCHES "qtbase")
+ list(APPEND _qarg_OPTIONS "-DQT_MKSPECS_DIR:PATH=${CURRENT_HOST_INSTALLED_DIR}/share/Qt6/mkspecs")
+ endif()
+
+ if(NOT DEFINED VCPKG_OSX_DEPLOYMENT_TARGET)
+ list(APPEND _qarg_OPTIONS "-DCMAKE_OSX_DEPLOYMENT_TARGET=14")
+ endif()
+
+ vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ ${ninja_option}
+ ${disable_parallel}
+ OPTIONS
+ -DQT_FORCE_WARN_APPLE_SDK_AND_XCODE_CHECK=ON
+ -DQT_NO_FORCE_SET_CMAKE_BUILD_TYPE:BOOL=ON
+ -DQT_USE_DEFAULT_CMAKE_OPTIMIZATION_FLAGS:BOOL=ON # We don't want Qt to mess with users toolchain settings.
+ -DCMAKE_FIND_PACKAGE_TARGETS_GLOBAL=ON # Because Qt doesn't correctly scope find_package calls.
+ #-DQT_HOST_PATH=<somepath> # For crosscompiling
+ #-DQT_PLATFORM_DEFINITION_DIR=mkspecs/win32-msvc
+ #-DQT_QMAKE_TARGET_MKSPEC=win32-msvc
+ #-DQT_USE_CCACHE
+ -DQT_BUILD_EXAMPLES:BOOL=OFF
+ -DQT_BUILD_TESTS:BOOL=OFF
+ -DQT_BUILD_BENCHMARKS:BOOL=OFF
+ ${PERL_OPTION}
+ -DINSTALL_BINDIR:STRING=bin
+ -DINSTALL_LIBEXECDIR:STRING=bin
+ -DINSTALL_PLUGINSDIR:STRING=${qt_plugindir}
+ -DINSTALL_QMLDIR:STRING=${qt_qmldir}
+ ${_qarg_OPTIONS}
+ OPTIONS_RELEASE
+ ${_qarg_OPTIONS_RELEASE}
+ -DINSTALL_DOCDIR:STRING=doc/${QT6_DIRECTORY_PREFIX}
+ -DINSTALL_INCLUDEDIR:STRING=include/${QT6_DIRECTORY_PREFIX}
+ -DINSTALL_DESCRIPTIONSDIR:STRING=share/Qt6/modules
+ -DINSTALL_MKSPECSDIR:STRING=share/Qt6/mkspecs
+ -DINSTALL_TRANSLATIONSDIR:STRING=translations/${QT6_DIRECTORY_PREFIX}
+ OPTIONS_DEBUG
+ # -DFEATURE_debug:BOOL=ON only needed by qtbase and auto detected?
+ -DINSTALL_DOCDIR:STRING=../doc/${QT6_DIRECTORY_PREFIX}
+ -DINSTALL_INCLUDEDIR:STRING=../include/${QT6_DIRECTORY_PREFIX}
+ -DINSTALL_TRANSLATIONSDIR:STRING=../translations/${QT6_DIRECTORY_PREFIX}
+ -DINSTALL_DESCRIPTIONSDIR:STRING=../share/Qt6/modules
+ -DINSTALL_MKSPECSDIR:STRING=../share/Qt6/mkspecs
+ ${_qarg_OPTIONS_DEBUG}
+ MAYBE_UNUSED_VARIABLES
+ INSTALL_BINDIR
+ INSTALL_DOCDIR
+ INSTALL_LIBEXECDIR
+ INSTALL_QMLDIR # No qml files
+ INSTALL_TRANSLATIONSDIR # No translations
+ INSTALL_PLUGINSDIR # No plugins
+ INSTALL_DESCRIPTIONSDIR
+ INSTALL_INCLUDEDIR
+ HOST_PERL
+ QT_SYNCQT
+ QT_NO_FORCE_SET_CMAKE_BUILD_TYPE
+ QT_FORCE_WARN_APPLE_SDK_AND_XCODE_CHECK
+ ${_qarg_OPTIONS_MAYBE_UNUSED}
+ INPUT_bundled_xcb_xinput
+ INPUT_freetype
+ INPUT_harfbuzz
+ INPUT_libjpeg
+ INPUT_libmd4c
+ INPUT_libpng
+ INPUT_opengl
+ INPUT_openssl
+ INPUT_xcb
+ INPUT_xkbcommon
+ )
+ foreach(suffix IN ITEMS dbg rel)
+ if(EXISTS "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${suffix}/config.summary")
+ file(COPY_FILE
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${suffix}/config.summary"
+ "${CURRENT_BUILDTREES_DIR}/config.summary-${TARGET_TRIPLET}-${suffix}.log"
+ )
+ endif()
+ endforeach()
+endfunction()
+
+function(qt_fix_prl_files)
+ file(TO_CMAKE_PATH "${CURRENT_PACKAGES_DIR}/lib" package_dir)
+ file(TO_CMAKE_PATH "${package_dir}/lib" lib_path)
+ file(TO_CMAKE_PATH "${package_dir}/include/Qt6" include_path)
+ file(TO_CMAKE_PATH "${CURRENT_INSTALLED_DIR}" install_prefix)
+ file(GLOB_RECURSE prl_files "${CURRENT_PACKAGES_DIR}/*.prl" "${CURRENT_PACKAGES_DIR}/*.pri")
+ foreach(prl_file IN LISTS prl_files)
+ file(READ "${prl_file}" _contents)
+ string(REPLACE "${lib_path}" "\$\$[QT_INSTALL_LIBS]" _contents "${_contents}")
+ string(REPLACE "${include_path}" "\$\$[QT_INSTALL_HEADERS]" _contents "${_contents}")
+ string(REPLACE "${install_prefix}" "\$\$[QT_INSTALL_PREFIX]" _contents "${_contents}")
+ string(REPLACE "[QT_INSTALL_PREFIX]/lib/objects-Debug" "[QT_INSTALL_LIBS]/objects-Debug" _contents "${_contents}")
+ string(REPLACE "[QT_INSTALL_PREFIX]/Qt6/qml" "[QT_INSTALL_QML]" _contents "${_contents}")
+ #Note: This only works without an extra if case since QT_INSTALL_PREFIX is the same for debug and release
+ file(WRITE "${prl_file}" "${_contents}")
+ endforeach()
+endfunction()
+
+function(qt_fixup_and_cleanup)
+ cmake_parse_arguments(PARSE_ARGV 0 "_qarg" ""
+ ""
+ "TOOL_NAMES")
+ vcpkg_copy_pdbs()
+
+ ## Handle PRL files
+ qt_fix_prl_files()
+
+ ## Handle CMake files.
+ set(COMPONENTS)
+ file(GLOB COMPONENTS_OR_FILES LIST_DIRECTORIES true "${CURRENT_PACKAGES_DIR}/share/Qt6*")
+ list(REMOVE_ITEM COMPONENTS_OR_FILES "${CURRENT_PACKAGES_DIR}/share/Qt6")
+ foreach(_glob IN LISTS COMPONENTS_OR_FILES)
+ if(IS_DIRECTORY "${_glob}")
+ string(REPLACE "${CURRENT_PACKAGES_DIR}/share/Qt6" "" _component "${_glob}")
+ debug_message("Adding cmake component: '${_component}'")
+ list(APPEND COMPONENTS ${_component})
+ endif()
+ endforeach()
+
+ foreach(_comp IN LISTS COMPONENTS)
+ if(EXISTS "${CURRENT_PACKAGES_DIR}/share/Qt6${_comp}")
+ vcpkg_cmake_config_fixup(PACKAGE_NAME "Qt6${_comp}" CONFIG_PATH "share/Qt6${_comp}" TOOLS_PATH "tools/Qt6/bin")
+ # Would rather put it into share/cmake as before but the import_prefix correction in vcpkg_cmake_config_fixup is working against that.
+ else()
+ message(STATUS "WARNING: Qt component ${_comp} not found/built!")
+ endif()
+ endforeach()
+ #fix debug plugin paths (should probably be fixed in vcpkg_cmake_config_fixup)
+ file(GLOB_RECURSE DEBUG_CMAKE_TARGETS "${CURRENT_PACKAGES_DIR}/share/**/*Targets-debug.cmake")
+ debug_message("DEBUG_CMAKE_TARGETS:${DEBUG_CMAKE_TARGETS}")
+ foreach(_debug_target IN LISTS DEBUG_CMAKE_TARGETS)
+ vcpkg_replace_string("${_debug_target}" "{_IMPORT_PREFIX}/${qt_plugindir}" "{_IMPORT_PREFIX}/debug/${qt_plugindir}" IGNORE_UNCHANGED)
+ vcpkg_replace_string("${_debug_target}" "{_IMPORT_PREFIX}/${qt_qmldir}" "{_IMPORT_PREFIX}/debug/${qt_qmldir}" IGNORE_UNCHANGED)
+ endforeach()
+
+ file(GLOB_RECURSE STATIC_CMAKE_TARGETS "${CURRENT_PACKAGES_DIR}/share/Qt6Qml/QmlPlugins/*.cmake")
+ foreach(_plugin_target IN LISTS STATIC_CMAKE_TARGETS)
+ # restore a single get_filename_component which was remove by vcpkg_cmake_config_fixup
+ vcpkg_replace_string("${_plugin_target}"
+ [[get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)]]
+ "get_filename_component(_IMPORT_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)\nget_filename_component(_IMPORT_PREFIX \"\${_IMPORT_PREFIX}\" PATH)"
+ IGNORE_UNCHANGED)
+ endforeach()
+
+ set(qt_tooldest "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin")
+ set(qt_searchdir "${CURRENT_PACKAGES_DIR}/bin")
+ ## Handle Tools
+ foreach(_tool IN LISTS _qarg_TOOL_NAMES)
+ if(NOT EXISTS "${CURRENT_PACKAGES_DIR}/bin/${_tool}${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+ debug_message("Removed '${_tool}' from copy tools list since it was not found!")
+ list(REMOVE_ITEM _qarg_TOOL_NAMES ${_tool})
+ endif()
+ endforeach()
+ if(_qarg_TOOL_NAMES)
+ set(tool_names ${_qarg_TOOL_NAMES})
+ vcpkg_copy_tools(TOOL_NAMES ${tool_names} SEARCH_DIR "${qt_searchdir}" DESTINATION "${qt_tooldest}" AUTO_CLEAN)
+ endif()
+
+ if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ if(EXISTS "${CURRENT_PACKAGES_DIR}/bin/")
+ file(COPY "${CURRENT_PACKAGES_DIR}/bin/" DESTINATION "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin")
+ endif()
+ file(GLOB_RECURSE _installed_dll_files RELATIVE "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/*.dll")
+ foreach(_dll_to_remove IN LISTS _installed_dll_files)
+ file(GLOB_RECURSE _packaged_dll_file "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/${_dll_to_remove}")
+ if(EXISTS "${_packaged_dll_file}")
+ file(REMOVE "${_packaged_dll_file}")
+ endif()
+ endforeach()
+ file(GLOB_RECURSE _folders LIST_DIRECTORIES true "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/**/")
+ file(GLOB_RECURSE _files "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/**/")
+ if(_files)
+ list(REMOVE_ITEM _folders ${_files})
+ endif()
+ foreach(_dir IN LISTS _folders)
+ if(NOT "${_remaining_dll_files}" MATCHES "${_dir}")
+ file(REMOVE_RECURSE "${_dir}")
+ endif()
+ endforeach()
+ endif()
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/cmake/"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/lib/cmake/"
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ )
+
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ file(GLOB_RECURSE _bin_files "${CURRENT_PACKAGES_DIR}/bin/*")
+ if(NOT _bin_files STREQUAL "")
+ message(STATUS "Remaining files in bin: '${_bin_files}'")
+ else() # Only clean if empty otherwise let vcpkg throw and error.
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin/" "${CURRENT_PACKAGES_DIR}/debug/bin/")
+ endif()
+ endif()
+
+ vcpkg_fixup_pkgconfig()
+endfunction()
+
+function(qt_install_submodule)
+ cmake_parse_arguments(PARSE_ARGV 0 "_qis" "DISABLE_NINJA"
+ ""
+ "PATCHES;TOOL_NAMES;CONFIGURE_OPTIONS;CONFIGURE_OPTIONS_DEBUG;CONFIGURE_OPTIONS_RELEASE;CONFIGURE_OPTIONS_MAYBE_UNUSED")
+
+ set(qt_plugindir ${QT6_DIRECTORY_PREFIX}plugins)
+ set(qt_qmldir ${QT6_DIRECTORY_PREFIX}qml)
+
+ qt_download_submodule(PATCHES ${_qis_PATCHES})
+
+ if(VCPKG_TARGET_IS_ANDROID)
+ # Qt only supports dynamic linkage on Android,
+ # https://bugreports.qt.io/browse/QTBUG-32618.
+ # It requires libc++_shared, cf. <qtbase>/cmake/QtPlatformAndroid.cmake
+ # and https://developer.android.com/ndk/guides/cpp-support#sr
+ vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+ endif()
+
+ if(_qis_DISABLE_NINJA)
+ set(_opt DISABLE_NINJA)
+ endif()
+ qt_cmake_configure(${_opt}
+ OPTIONS ${_qis_CONFIGURE_OPTIONS}
+ OPTIONS_DEBUG ${_qis_CONFIGURE_OPTIONS_DEBUG}
+ OPTIONS_RELEASE ${_qis_CONFIGURE_OPTIONS_RELEASE}
+ OPTIONS_MAYBE_UNUSED ${_qis_CONFIGURE_OPTIONS_MAYBE_UNUSED}
+ )
+
+ vcpkg_cmake_install(ADD_BIN_TO_PATH)
+
+ qt_fixup_and_cleanup(TOOL_NAMES ${_qis_TOOL_NAMES})
+
+ qt_install_copyright("${SOURCE_PATH}")
+ set(SOURCE_PATH "${SOURCE_PATH}" PARENT_SCOPE)
+endfunction()
+
+include("${CMAKE_CURRENT_LIST_DIR}/qt_port_details.cmake")
diff --git a/vcpkg/ports/qtbase/cmake/qt_port_data.cmake b/vcpkg/ports/qtbase/cmake/qt_port_data.cmake new file mode 100644 index 0000000..3b682e8 --- /dev/null +++ b/vcpkg/ports/qtbase/cmake/qt_port_data.cmake @@ -0,0 +1,50 @@ +set(qtbase_HASH "f0fdf4e2c10db73d8036e4b1324f04f48eced78feeed450b0ffa1fac5574daa4173996a4d25da761f5eeaa6037eab02418a88a59fd760d96a08d813c9b8136ed")
+set(qttools_HASH "84891798a1227d6ec5d353fe510e02cea1f26d1639cfc87e95eefe63ca9522f36b252666b9954ec0a3a83b2561f53538d9aad51fdc02149a56f1177466be6c22")
+set(qtdeclarative_HASH "665acf561f74373f5d220c7c7b8b32ded627d9d17bf709ad30b155863086c20c59f02032fbb8a8046bc6041576ff52ff67621a1b57e19657ad537e20aee024c4")
+set(qtsvg_HASH "d36fe4921fb9d7968378e0e1f7131574642baba7eec9a492283c039fec64e307f0a4148bd7fed83ce7b3d92a1af3d9cb31917ced0f15a186262de8bb7fdc615e")
+set(qt5compat_HASH "3350a9734e923401a43990dffcdd3f4d6bdfe4a3ff01c6f75e2f0be1410f8794242e2fc712b8dc112102f8cd0d7859e7e010935c42cebe85912fb99300440153")
+set(qtshadertools_HASH "f914e27032422af02ebfe16bb4d84ea2bab01b8b6c49e728d4da8f95c36c41849429b7c37c6b677b74b36ccc9341608c85bccf7836f5abbdb5bec520e740d2e6")
+set(qtquicktimeline_HASH "23974c45f6a415fae9310a2eec01b87de289ec76846d24d49f7752b029da53d62b68006a5199347d0e6457b0ca4043b75c247475c0f2d10ea882b3a6911a818a")
+set(qtquick3d_HASH "ed300ec9eaab59cdd6b15217c0f6b39f2f4678c6757e76ed5ad76654cf542f09abc9af959a2f525abdc8ee43855a3fd4a4f0b6d84cdd3221065cd2e4ae95e517")
+set(qttranslations_HASH "eeb48eeaef01f7d8460cf0198e09e8ebd72ef9f023d6c595f4a2c3510d9f6caf8fce17a7af06256940de993bfc29faef44d53a45f03e2b8b31e39746a52b7052")
+set(qtwayland_HASH "1647087d695dccbc2b0edd07dc6ea36c22317394ec3b87993938124057d0cf2bbc84eee560ea59e7b2bffeaf8be79d56458f5ba309e36c5ebcf0c738f317b7b7")
+set(qtdoc_HASH "f94ae097e873d1316d024804789a6dc210506d40d0d45977e52876a6ce0d43800e10dbb8fcf4b92d5246c5994cca67db219c63dcbb11f050c0fc1ee6a5d571a9")
+set(qtcoap_HASH "344b3f7928789561dc2a0d24c706258d29c11a83d8aa187916cd03ef18306a04f100396e460f41ab80331ded4252c24223e4daf433497862c1192f41ace05fc6")
+set(qtopcua_HASH "a7a7088a1df60092efcce2dab7d615685a3b86d9a04150935c34dcb8ea41d1f3ce369500616f1e4d34a3f624c28eb5bcfffc4446f90418356f15321e44af23fd")
+set(qtimageformats_HASH "6b16801dba5fd8f9431fa96588e030b76865a0d975ad74af0e343ffb05f96a0cf14a5c1a00554238ef087562ea875efaef642ed8b9d2a0352cc3d2aa018f9719")
+set(qtmqtt_HASH "f9c4ebc4b2d9e9b674fabe82ae0a21c3451c970a962885d81eda3818752566d3b73b8f0e6d03acb9f65451f5bc7efd7ab7eb1034f43c944ba5c51b6bdea4f136")
+set(qtnetworkauth_HASH "455e835b8ab3ab22421966220902d45c6aed6a1f1517da15ada3af2670324f9b6e0f8ee20a70b24c45dd0d1894a0a1e00c6e7d03630de94705da2c9379af3627")
+set(qt3d_HASH "585f11ec520a338ecedf7d446af696f1851e45f5758364c91f40d6d254eb120d74da54405496be6fe4bd58ab87d4aeb8f5793e5ffe78ba12b685346c8770d404")
+set(qtactiveqt_HASH "cec2c909716cd3513ea7f415675519fe92e126a69b050657dd2fce91013eaa84b6389fc4c6ae94177952be6582da58ccbb4a1fd529e19aa0285b034963f31a8c")
+set(qtdatavis3d_HASH "ef18735c4b3b272e518af0b4e3cb4761bbe2e3764f501884eb2568da20e19bf56ad992f61178ed5b198c0c87939fc8e30924b64091c60ba2c482234815bfc28e")
+set(qtdeviceutilities_HASH "7bab1d72f0b817915e8fdca670e7eea3dd9977d807049b3d3e0109a8f5cde6fb1e156dc209feff2cf96e9c65be3638e454c6607f4cef005c660a1156ddc497a0")
+set(qtlottie_HASH "3a179aed1367eb70d03e5c12762186590ee21174277c742ee22b38bd84c575fcfb6cba60556fa974a3a938849fc4c707b09c9334ef7a2528640b74a136320c56")
+set(qtscxml_HASH "f32fc3322eabec7135dc0820f8e39d24b84e8e14e9a9021d1c15021355c5a491bb8c4bbf0d25a2e4e44d8df0d9c7f270a0191f34fffad56f92e2ab0c742691b4")
+set(qtvirtualkeyboard_HASH "97814ec5a5ae35bb2adb41c78fd82f23f2e683b02508cfcc34e8f3808f843b0e3aee4d37440158c588ae038d1427b4864062eed18bfb520a3099da36b1b51025")
+set(qtcharts_HASH "3171d8a2f9423cd71ee0331d222143b36e72e154214984c1315e0e689387d478eeea097f4189535b5697ba978aec3e7f45ed9decacada56f47cef5fcfd6baa3b")
+set(qtconnectivity_HASH "5591a7b4140e9580186b20bf8b3c75f07f8d22f48910ca017f8ab7609a4438297bdb0e9f04cc31ebc238bfd58d85b6e980938e2014b4106f48034fda6294df96")
+set(qtpositioning_HASH "8deff5eb12ccd5bd0187788834a18c0f41338abcca2f0e918645f25524a3364510fecade316a4d36a735aa0e205e62f754810e38f91abf47f929981d3805024f")
+set(qtlocation_HASH "25b1154608bad6e41556b64d098653157a1b4cd8ee2443af284d93bff4828bb4e5af737933b26d03c05e420837e884555e7676d91ffcf47269b01dc1e744ba49")
+set(qtmultimedia_HASH "8b246af98d643699017713614e441068e5adea8b825be2776934716875b04a4fdb5ff48984ad9b63cc10c78d57dc653b00d9648c00236f4755840da911d5845e")
+set(qtremoteobjects_HASH "252497afb67941ad16cac84af4e302ce859ab7f28550ee0991a3ddcfe3e9731468b33f4f64ffc61b7aa24f9980bdb8ea8c788c6523bdc6d03c6c37a0dd8362ab")
+set(qtsensors_HASH "04e960ca2b129886aab3e32b782f6f512cc79df58bf7fd127839760f628ae8301d7aa3ab60b99e35cba06cbbf3c650e2315633c602de9c80c5f4ff4c5afa477e")
+set(qtserialbus_HASH "b99c2c64285c7f5f3bb7dc2128a2bac2dd3a8c50b32574377865fe8ddf0e91bf4dbbae813c1414a6bf0db57d01dd6ccc8f064bc896e382137de1821e31f1cfa4")
+set(qtserialport_HASH "ad6ff79082566303b8e08590e7cc7d23efae6945d37b445d04f16b9002828cf9981b7abf2c28a806a68a8ee56580e4dc761852a06b2235174e1c28b6f4afc695")
+set(qtwebchannel_HASH "acc7b1394c35c604ac0921e2276fab465e27723f71b39bb4125e74142da656cfcce31e0ac1f867ed756214d2b38c72739fbb5e7a5043811a4e03e5b912e8f099")
+set(qtwebengine_HASH "fa1c5219973570ef1644d9bd5b12728056983b15002d08acfc9d76465b9055c3ac01be1f6a4ce4112b896988a4714000cf5353804cdf1af2b803bca962416ca5")
+set(qtwebsockets_HASH "ddad63a748d35749b46aa87f918667c4eda4323981c36f9ba2b150df9f9cbfd22ce85f93a03e89979c35e3ee27b6585ef4ac75b2ee1b1ab8dfe786d9c1d26152")
+set(qtwebview_HASH "b7ee827d21af10831ba08b41051d2cd525bc80ad887a935a2a1fc339d52dacc96721607a864fdb5e3784dacbf9c8305acda6c60e1b1fa2ec4565c883b0b29f1b")
+set(qtinterfaceframework_REF "6aa51ce241c202f30a5850ae989e6cea33a82aba")
+set(qtapplicationmanager_HASH "b7bb6b0c19a2b2f6f817a01e6fac690b52156cf30ac47bcd685de5018f4b8b21e9b664b03f28f38b064c97b05c2e0df75390ba9e55eab80a5668b0fa13d43923")
+set(qtlanguageserver_HASH "32213a518e4f16ce048d1e67d17d0617bb2eaa4f92432bf9b49ff6f818dbd14ef6137be7dc186ab1721cf18db21fa1da0a5e93c2e5907ec172780e7cd92296a3")
+set(qthttpserver_HASH "2171bf20a2bd72c0b1404f2f34a4f027e25c8daf4c9a1f1d5ecefa41d128de029bbbbf8a74474605bd23c03b79fd78d810c68ce82ffffb849f952f41a4aa1b88")
+set(qtquick3dphysics_HASH "33dd887d2511ec30e0db650c1dcf9ca9b35dcd82aa16c34f0c7324bcae9ee2da93d17541316da0ec2c1d13cbfe9e175592508b39538c9d7c3b30846b66afd7d3")
+set(qtspeech_HASH "6384208edb5e1350ff8119a8c4e79101a41c605b8c77220db04a683602a996c582516b2cd31d36c72821b5628e4255fe88c80c5976979d49d73461a4b1fcecd4")
+set(qtgrpc_HASH "a84d0cc125e6e57e2675388bf5c7c7efa15d15560db815dc92fe3253b896ecc1a5a7b5340dee135779387d445839da6a1409fa4d0e60a93ef8472fd5882b9e81")
+set(qtquickeffectmaker_HASH "13c723cb577e6c343251b0f0c2e143feb1bf0286dbb938c6fd07b9f0806348af2a2563d27dbf703e00b92bb4095a6987a565b307925483ca9d6d1f8e7966bcc7")
+set(qtgraphs_HASH "7a2ca552a296ac700cf92a03cb3e1edda678882147b64e858409aa5bbe440b6d7e969c7c68b7364dfa824f167492446c6933dc818decf16692d41359e2782641")
+
+
+# Keep for beta/rc
+#set(qttools_qlitehtml_REF bd70f93ce41443a6a90a269531393f575685283e)
+#set(qtwebengine_chromium_REF 0b138dc30d0aec7930c76a2595065629948ad9f7)
diff --git a/vcpkg/ports/qtbase/cmake/qt_port_details.cmake b/vcpkg/ports/qtbase/cmake/qt_port_details.cmake new file mode 100644 index 0000000..5e1bfc7 --- /dev/null +++ b/vcpkg/ports/qtbase/cmake/qt_port_details.cmake @@ -0,0 +1,183 @@ +### Steps to update the qt6 ports +## 1. Change QT_VERSION below to the new version +## 2. Set QT_UPDATE_VERSION to 1 +## 3. Add any new Qt modules to QT_PORTS +## 4. Run a build of `qtbase` +## 5. Fix any intermediate failures by adding the module into QT_FROM_GITHUB, QT_FROM_GITHUB_BRANCH, or QT_FROM_QT_GIT as appropriate +## 6. The build should fail with "Done downloading version and emitting hashes." This will have changed out the vcpkg.json versions of the qt ports and rewritten qt_port_data.cmake +## 7. Set QT_UPDATE_VERSION back to 0 + +set(QT_VERSION 6.9.1) +set(QT_DEV_BRANCH 0) + +set(QT_UPDATE_VERSION 0) + +if(PORT MATCHES "(qtquickcontrols2)") + set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + return() +endif() + +### Setting up the git tag. + +set(QT_PORTS qt + qtbase + qttools + qtdeclarative + qtsvg + qt5compat + qtshadertools + qtquicktimeline + qtquick3d + qttranslations + qtwayland + qtdoc + qtcoap + qtopcua + qtimageformats + qtmqtt + qtnetworkauth + qt3d) + # qtquickcontrols2 -> moved into qtdeclarative +if(QT_VERSION VERSION_GREATER_EQUAL 6.1) + list(APPEND QT_PORTS + ## New in 6.1 + qtactiveqt + qtdatavis3d + qtdeviceutilities + qtlottie + qtscxml + qtvirtualkeyboard + qtcharts) +endif() +if(QT_VERSION VERSION_GREATER_EQUAL 6.2) + list(APPEND QT_PORTS + ## New in 6.2 + qtconnectivity + qtpositioning + qtlocation # back in 6.5 as tech preview + qtmultimedia + qtremoteobjects + qtsensors + qtserialbus + qtserialport + qtwebchannel + qtwebengine + qtwebsockets + qtwebview) +endif() +if(QT_VERSION VERSION_GREATER_EQUAL 6.2.2) + list(APPEND QT_PORTS + ## New in 6.2.2 + qtinterfaceframework + qtapplicationmanager) +endif() +if(QT_VERSION VERSION_GREATER_EQUAL 6.3.0) + list(APPEND QT_PORTS + ## New in 6.3.0 + qtlanguageserver) +endif() +if(QT_VERSION VERSION_GREATER_EQUAL 6.4.0) + list(APPEND QT_PORTS + ## New in 6.4.0 + qthttpserver + qtquick3dphysics + qtspeech) +endif() +if(QT_VERSION VERSION_GREATER_EQUAL 6.5.0) + list(APPEND QT_PORTS + ## New in 6.5.0 + qtgrpc + qtquickeffectmaker + ) +endif() +if(QT_VERSION VERSION_GREATER_EQUAL 6.6.0) + list(APPEND QT_PORTS + ## New in 6.6.0 + qtgraphs + #qtvncserver # only commercial + #qtinsighttracker + ) +endif() +#qtinsighttracker +#qtvncserver +#qtgraphs + +# 1. By default, modules come from the official release +# 2. These modules are mirrored to github and have tags matching the release +set(QT_FROM_GITHUB qtcoap qtopcua qtmqtt qtapplicationmanager) +# 3. These modules are mirrored to github and have branches matching the release +set(QT_FROM_GITHUB_BRANCH qtdeviceutilities) +# 4. These modules are not mirrored to github and not part of the release +set(QT_FROM_QT_GIT qtinterfaceframework) +# For beta releases uncomment the next two lines and comment the lines with QT_FROM_GITHUB, QT_FROM_GITHUB_BRANCH, QT_FROM_QT_GIT +#set(QT_FROM_QT_GIT ${QT_PORTS}) +#list(POP_FRONT QT_FROM_QT_GIT) + +function(qt_get_url_filename qt_port out_urls out_filename) + if("${qt_port}" IN_LIST QT_FROM_GITHUB) + set(urls "https://github.com/qt/${qt_port}/archive/v${QT_VERSION}.tar.gz") + set(filename "qt-${qt_port}-v${QT_VERSION}.tar.gz") + elseif("${qt_port}" IN_LIST QT_FROM_GITHUB_BRANCH) + set(urls "https://github.com/qt/${qt_port}/archive/${QT_VERSION}.tar.gz") + set(filename "qt-${qt_port}-${QT_VERSION}.tar.gz") + else() + string(SUBSTRING "${QT_VERSION}" 0 3 qt_major_minor) + + if(NOT QT_DEV_BRANCH) + set(branch_subpath "archive") + else() + set(branch_subpath "development_releases") + endif() + + set(filename "${qt_port}-everywhere-src-${QT_VERSION}.tar.xz") + set(mirrors + "https://download.qt.io/" + "https://mirrors.ocf.berkeley.edu/qt/" + ) + set(url_subpath "${branch_subpath}/qt/${qt_major_minor}/${QT_VERSION}/submodules/${filename}") + list(TRANSFORM mirrors APPEND "${url_subpath}" OUTPUT_VARIABLE urls) + endif() + set(${out_urls} ${urls} PARENT_SCOPE) + set(${out_filename} "${filename}" PARENT_SCOPE) +endfunction() + +if(QT_UPDATE_VERSION) + if(NOT PORT STREQUAL "qtbase") + message(FATAL_ERROR "QT_UPDATE_VERSION must be used from the root 'qtbase' package") + endif() + set(VCPKG_USE_HEAD_VERSION 1) + set(msg "" CACHE INTERNAL "") + foreach(qt_port IN LISTS QT_PORTS) + set(port_json "${CMAKE_CURRENT_LIST_DIR}/../../${qt_port}/vcpkg.json") + file(READ "${port_json}" _control_contents) + string(REGEX REPLACE "\"version(-(string|semver))?\": [^\n]+\n" "\"version\": \"${QT_VERSION}\",\n" _control_contents "${_control_contents}") + string(REGEX REPLACE "\"port-version\": [^\n]+\n" "" _control_contents "${_control_contents}") + file(WRITE "${port_json}" "${_control_contents}") + if(qt_port STREQUAL "qt") + continue() + endif() + if("${qt_port}" IN_LIST QT_FROM_QT_GIT) + vcpkg_find_acquire_program(GIT) + execute_process( + COMMAND "${GIT}" ls-remote -t "https://code.qt.io/cgit/qt/${qt_port}.git" "v${QT_VERSION}" + OUTPUT_VARIABLE out + ) + string(SUBSTRING "${out}" 0 40 tag_sha) + string(APPEND msg "set(${qt_port}_REF ${tag_sha})\n") + else() + qt_get_url_filename("${qt_port}" urls filename) + vcpkg_download_distfile(archive + URLS ${urls} + FILENAME "${filename}" + SKIP_SHA512 + ) + file(SHA512 "${archive}" hash) + string(APPEND msg "set(${qt_port}_HASH \"${hash}\")\n") + endif() + endforeach() + message("${msg}") + file(WRITE "${CMAKE_CURRENT_LIST_DIR}/qt_port_data_new.cmake" "${msg}") + message(FATAL_ERROR "Done downloading version and emitting hashes.") +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/qt_port_data.cmake") |