From 4bf59f349f43bf3ad48958d185c6fe0959ad771b Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Wed, 22 Apr 2026 17:01:14 +0200 Subject: [PATCH 01/61] Initial build for macos and ios --- VCPKG_BASELINE | 2 +- vcpkg.json | 2 +- vcpkg/ports/geodiff/portfile.cmake | 1 + vcpkg/ports/geodiff/vcpkg.json | 2 +- .../ports/libiconv/0002-Config-for-MSVC.patch | 14 + vcpkg/ports/libiconv/0003-Add-export.patch | 12 + .../ports/libiconv/0004-ModuleFileName.patch | 13 + .../libiconv/0005-ios-cross-compile.patch | 13 + vcpkg/ports/libiconv/portfile.cmake | 74 ++ vcpkg/ports/libiconv/usage | 4 + .../ports/libiconv/vcpkg-cmake-wrapper.cmake | 21 + vcpkg/ports/libiconv/vcpkg.json | 18 + vcpkg/ports/libspatialindex/portfile.cmake | 26 + vcpkg/ports/libspatialindex/vcpkg.json | 18 + vcpkg/ports/qgis/fix-ogr-typedef.patch | 13 + vcpkg/ports/qgis/fix-qt-6-10.patch | 12 + vcpkg/ports/qgis/portfile.cmake | 4 + .../qgis/protobuf-qbytearray-ambiguity.patch | 19 + vcpkg/ports/qgis/snapping-casting.patch | 13 + .../qtbase/cmake/qt_install_submodule.cmake | 967 +++++++----------- vcpkg/ports/qtbase/cmake/qt_port_data.cmake | 136 --- .../ports/qtbase/cmake/qt_port_details.cmake | 404 ++++---- vcpkg/ports/qtbase/fix_deploy_windows.patch | 39 +- vcpkg/ports/qtbase/fix_find_framework.patch | 15 + vcpkg/ports/qtbase/fix_yield_arm_acle.patch | 15 + vcpkg/ports/qtbase/port.data.cmake | 3 + vcpkg/ports/qtbase/portfile.cmake | 3 + vcpkg/ports/qtbase/qtpaths.debug.bat | 2 +- vcpkg/ports/qtbase/vcpkg.json | 2 +- vcpkg/ports/qtdeclarative/port.data.cmake | 3 + vcpkg/ports/qtdeclarative/vcpkg.json | 2 +- .../qtmultimedia/ffmpeg-compile-def.patch | 13 - vcpkg/ports/qtmultimedia/ffmpeg.patch | 33 + .../fix_avfoundation_target.patch | 12 - vcpkg/ports/qtmultimedia/port.data.cmake | 3 + vcpkg/ports/qtmultimedia/portfile.cmake | 4 +- vcpkg/ports/qtmultimedia/private_libs.patch | 19 - .../qtmultimedia/static_find_modules.patch | 63 +- vcpkg/ports/qtmultimedia/vcpkg.json | 2 +- .../qtpositioning/devendor-poly2tri.patch | 22 +- .../qtpositioning/foregroundservice.patch | 6 +- .../ios_orthometric_altitude.patch | 7 +- vcpkg/ports/qtpositioning/port.data.cmake | 3 + vcpkg/ports/qtpositioning/portfile.cmake | 4 - vcpkg/ports/qtpositioning/vcpkg.json | 2 +- 45 files changed, 955 insertions(+), 1110 deletions(-) create mode 100644 vcpkg/ports/libiconv/0002-Config-for-MSVC.patch create mode 100644 vcpkg/ports/libiconv/0003-Add-export.patch create mode 100644 vcpkg/ports/libiconv/0004-ModuleFileName.patch create mode 100644 vcpkg/ports/libiconv/0005-ios-cross-compile.patch create mode 100644 vcpkg/ports/libiconv/portfile.cmake create mode 100644 vcpkg/ports/libiconv/usage create mode 100644 vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake create mode 100644 vcpkg/ports/libiconv/vcpkg.json create mode 100644 vcpkg/ports/libspatialindex/portfile.cmake create mode 100644 vcpkg/ports/libspatialindex/vcpkg.json create mode 100644 vcpkg/ports/qgis/fix-ogr-typedef.patch create mode 100644 vcpkg/ports/qgis/fix-qt-6-10.patch create mode 100644 vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch create mode 100644 vcpkg/ports/qgis/snapping-casting.patch delete mode 100644 vcpkg/ports/qtbase/cmake/qt_port_data.cmake create mode 100644 vcpkg/ports/qtbase/fix_find_framework.patch create mode 100644 vcpkg/ports/qtbase/fix_yield_arm_acle.patch create mode 100644 vcpkg/ports/qtbase/port.data.cmake create mode 100644 vcpkg/ports/qtdeclarative/port.data.cmake delete mode 100644 vcpkg/ports/qtmultimedia/ffmpeg-compile-def.patch create mode 100644 vcpkg/ports/qtmultimedia/ffmpeg.patch delete mode 100644 vcpkg/ports/qtmultimedia/fix_avfoundation_target.patch create mode 100644 vcpkg/ports/qtmultimedia/port.data.cmake delete mode 100644 vcpkg/ports/qtmultimedia/private_libs.patch create mode 100644 vcpkg/ports/qtpositioning/port.data.cmake diff --git a/VCPKG_BASELINE b/VCPKG_BASELINE index 6e42e8238..465cc50b3 100644 --- a/VCPKG_BASELINE +++ b/VCPKG_BASELINE @@ -1 +1 @@ -d6995a0cf3cafda5e9e52749fad075dd62bfd90c \ No newline at end of file +13bf92b7216b42ffc7d8cf55b6181e486039accd \ No newline at end of file diff --git a/vcpkg.json b/vcpkg.json index ba8124308..fc0ebae1f 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -114,7 +114,7 @@ "default-features": false } ], - "builtin-baseline": "d6995a0cf3cafda5e9e52749fad075dd62bfd90c", + "builtin-baseline": "13bf92b7216b42ffc7d8cf55b6181e486039accd", "overrides": [ { "name": "openssl", diff --git a/vcpkg/ports/geodiff/portfile.cmake b/vcpkg/ports/geodiff/portfile.cmake index e3ca1ab10..9d9b89602 100644 --- a/vcpkg/ports/geodiff/portfile.cmake +++ b/vcpkg/ports/geodiff/portfile.cmake @@ -32,6 +32,7 @@ vcpkg_configure_cmake( -DENABLE_TESTS=OFF -DBUILD_TOOLS=OFF -DWITH_POSTGRESQL=OFF + -DCMAKE_CXX_FLAGS=-Wno-error=deprecated-literal-operator ${GEODIFF_LINK_OPTIONS} ) diff --git a/vcpkg/ports/geodiff/vcpkg.json b/vcpkg/ports/geodiff/vcpkg.json index 7381d738c..12fd4ec85 100644 --- a/vcpkg/ports/geodiff/vcpkg.json +++ b/vcpkg/ports/geodiff/vcpkg.json @@ -1,6 +1,6 @@ { "name": "geodiff", - "version": "2.0.2", + "version": "2.2.0", "port-version": 2, "description": "Library for handling diffs for geospatial data", "homepage": "https://github.com/MerginMaps/geodiff", diff --git a/vcpkg/ports/libiconv/0002-Config-for-MSVC.patch b/vcpkg/ports/libiconv/0002-Config-for-MSVC.patch new file mode 100644 index 000000000..0b40e366b --- /dev/null +++ b/vcpkg/ports/libiconv/0002-Config-for-MSVC.patch @@ -0,0 +1,14 @@ +diff --git a/srclib/fcntl.c b/srclib/fcntl.c +index f9753c4..02fc8be 100644 +--- a/srclib/fcntl.c ++++ b/srclib/fcntl.c +@@ -37,6 +37,9 @@ + /* Get declarations of the native Windows API functions. */ + # define WIN32_LEAN_AND_MEAN + # include ++#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) ++#define HANDLE_FLAG_INHERIT 0 ++#endif + + /* Get _get_osfhandle. */ + # if GNULIB_MSVC_NOTHROW diff --git a/vcpkg/ports/libiconv/0003-Add-export.patch b/vcpkg/ports/libiconv/0003-Add-export.patch new file mode 100644 index 000000000..c8d131d2e --- /dev/null +++ b/vcpkg/ports/libiconv/0003-Add-export.patch @@ -0,0 +1,12 @@ +diff -uNr libiconv-1.16/libcharset/include/libcharset.h.in libiconv-1.16-work/libcharset/include/libcharset.h.in +--- libiconv-1.16/libcharset/include/libcharset.h.in 2018-09-17 19:07:42.000000000 +0300 ++++ libiconv-1.16-work/libcharset/include/libcharset.h.in 2019-12-04 17:15:50.000000000 +0300 +@@ -33,7 +33,7 @@ + by the corresponding pathname with the current prefix instead. Both + prefixes should be directory names without trailing slash (i.e. use "" + instead of "/"). */ +-extern void libcharset_set_relocation_prefix (const char *orig_prefix, ++extern void LIBCHARSET_DLL_EXPORTED libcharset_set_relocation_prefix (const char *orig_prefix, + const char *curr_prefix); + + diff --git a/vcpkg/ports/libiconv/0004-ModuleFileName.patch b/vcpkg/ports/libiconv/0004-ModuleFileName.patch new file mode 100644 index 000000000..7079406be --- /dev/null +++ b/vcpkg/ports/libiconv/0004-ModuleFileName.patch @@ -0,0 +1,13 @@ +diff --git a/srclib/relocatable.c b/srclib/relocatable.c +index 365c085..4e08fdc 100644 +--- a/srclib/relocatable.c ++++ b/srclib/relocatable.c +@@ -338,7 +338,7 @@ DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) + /* The DLL is being loaded into an application's address range. */ + static char location[MAX_PATH]; + +- if (!GetModuleFileName (module_handle, location, sizeof (location))) ++ if (!GetModuleFileNameA (module_handle, location, sizeof (location))) + /* Shouldn't happen. */ + return FALSE; + diff --git a/vcpkg/ports/libiconv/0005-ios-cross-compile.patch b/vcpkg/ports/libiconv/0005-ios-cross-compile.patch new file mode 100644 index 000000000..73dadc4a8 --- /dev/null +++ b/vcpkg/ports/libiconv/0005-ios-cross-compile.patch @@ -0,0 +1,13 @@ +--- a/configure ++++ b/configure +@@ -5506,5 +5506,10 @@ ac_clean_files="$ac_clean_files conftest.out" + # Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 + printf %s "checking whether we are cross compiling... " >&6; } ++# On Apple Silicon, arm64-ios binaries are executable on the host macOS, causing ++# this detection to hang. Force cross_compiling=yes for iOS targets. ++case "$host" in ++ *-*-ios*) cross_compiling=yes ;; ++esac + if test "$cross_compiling" != yes; then diff --git a/vcpkg/ports/libiconv/portfile.cmake b/vcpkg/ports/libiconv/portfile.cmake new file mode 100644 index 000000000..2ca99cff2 --- /dev/null +++ b/vcpkg/ports/libiconv/portfile.cmake @@ -0,0 +1,74 @@ +if(NOT DEFINED X_VCPKG_BUILD_GNU_LIBICONV) + set(X_VCPKG_BUILD_GNU_LIBICONV 0) + if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_BSD) + set(X_VCPKG_BUILD_GNU_LIBICONV 1) + elseif(VCPKG_TARGET_IS_ANDROID) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + if(VCPKG_DETECTED_CMAKE_SYSTEM_VERSION VERSION_LESS "28") + set(X_VCPKG_BUILD_GNU_LIBICONV 1) + endif() + endif() +endif() + +if(NOT X_VCPKG_BUILD_GNU_LIBICONV) + message(STATUS "Not building GNU libiconv.") + set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/iconv") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv") + return() +endif() + +vcpkg_download_distfile(ARCHIVE + URLS "https://ftpmirror.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" + "https://ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" + "https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" + FILENAME "libiconv-${VERSION}.tar.gz" + SHA512 a55eb3b7b785a78ab8918db8af541c9e11deb5ff4f89d54483287711ed797d87848ce0eafffa7ce26d9a7adb4b5a9891cb484f94bd4f51d3ce97a6a47b4c719a +) +vcpkg_extract_source_archive(SOURCE_PATH + ARCHIVE "${ARCHIVE}" + SOURCE_BASE "v${VERSION}" + PATCHES + 0002-Config-for-MSVC.patch + 0003-Add-export.patch + 0004-ModuleFileName.patch + 0005-ios-cross-compile.patch +) + +vcpkg_list(SET OPTIONS) +if (NOT VCPKG_TARGET_IS_ANDROID) + vcpkg_list(APPEND OPTIONS --enable-relocatable) +endif() + +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + DETERMINE_BUILD_TRIPLET + USE_WRAPPERS + OPTIONS + --enable-extra-encodings + --without-libiconv-prefix + --without-libintl-prefix + ${OPTIONS} +) +vcpkg_install_make() + +vcpkg_copy_pdbs() +vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") +vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin") + +file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv") + +set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}") # share contains unneeded doc files + +# Please keep, the default usage is broken +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + +# Handle copyright +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING.LIB" "${SOURCE_PATH}/COPYING" COMMENT " +The libiconv and libcharset libraries and their header files are under LGPL, +see COPYING.LIB below. + +The iconv program and the documentation are under GPL, see COPYING below.") diff --git a/vcpkg/ports/libiconv/usage b/vcpkg/ports/libiconv/usage new file mode 100644 index 000000000..778f34516 --- /dev/null +++ b/vcpkg/ports/libiconv/usage @@ -0,0 +1,4 @@ +libiconv provides CMake targets: + + find_package(Iconv REQUIRED) + target_link_libraries(main PRIVATE Iconv::Iconv) diff --git a/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..8e25449ae --- /dev/null +++ b/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,21 @@ +include(SelectLibraryConfigurations) + +_find_package(${ARGS}) +if(Iconv_FOUND AND NOT Iconv_IS_BUILT_IN) + find_path(CHARSET_INCLUDE_DIR NAMES "libcharset.h" HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include") + find_library(CHARSET_LIBRARY_DEBUG NAMES charsetd libcharsetd charset libcharset NAMES_PER_DIR PATH_SUFFIXES lib HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug") + find_library(CHARSET_LIBRARY_RELEASE NAMES charset libcharset NAMES_PER_DIR PATH_SUFFIXES lib HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}") + select_library_configurations(CHARSET) + if(NOT TARGET Iconv::Charset) + add_library(Iconv::Charset INTERFACE IMPORTED) + set_target_properties(Iconv::Charset PROPERTIES + INTERFACE_LINK_LIBRARIES "\$<\$>:${CHARSET_LIBRARY_RELEASE}>;\$<\$:${CHARSET_LIBRARY_DEBUG}>" + INTERFACE_INCLUDE_DIRECTORIES "${CHARSET_INCLUDE_DIRS}") + endif() + if(CHARSET_LIBRARIES) + list(APPEND Iconv_LIBRARIES ${CHARSET_LIBRARIES}) + if(TARGET Iconv::Iconv) + set_property(TARGET Iconv::Iconv APPEND PROPERTY INTERFACE_LINK_LIBRARIES Iconv::Charset) + endif() + endif() +endif() diff --git a/vcpkg/ports/libiconv/vcpkg.json b/vcpkg/ports/libiconv/vcpkg.json new file mode 100644 index 000000000..f53286be0 --- /dev/null +++ b/vcpkg/ports/libiconv/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "libiconv", + "version": "1.18", + "port-version": 3, + "description": [ + "iconv() text conversion.", + "This port installs GNU libiconv if the system C runtime doesn't provide a suitable iconv() implementation." + ], + "homepage": "https://www.gnu.org/software/libiconv/", + "license": null, + "dependencies": [ + { + "name": "vcpkg-cmake-get-vars", + "host": true, + "platform": "android" + } + ] +} diff --git a/vcpkg/ports/libspatialindex/portfile.cmake b/vcpkg/ports/libspatialindex/portfile.cmake new file mode 100644 index 000000000..cef6ecf05 --- /dev/null +++ b/vcpkg/ports/libspatialindex/portfile.cmake @@ -0,0 +1,26 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO libspatialindex/libspatialindex + REF "${VERSION}" + SHA512 a508a9ed4019641bdaaa53533505531f3db440b046a9c7d9f78ed480293200c51796c2d826a6bb9b4f9543d60bb0fef9e4c885ec3f09326cfa4d2fb81c1593aa + HEAD_REF master +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + WINDOWS_USE_MSBUILD + OPTIONS + -DCMAKE_DEBUG_POSTFIX=d + -DSIDX_BUILD_TESTS:BOOL=OFF +) + +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) +vcpkg_fixup_pkgconfig() +vcpkg_copy_pdbs() + +#Debug +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +# Handle copyright +file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/vcpkg/ports/libspatialindex/vcpkg.json b/vcpkg/ports/libspatialindex/vcpkg.json new file mode 100644 index 000000000..d8235a2c0 --- /dev/null +++ b/vcpkg/ports/libspatialindex/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "libspatialindex", + "version": "2.0.0", + "description": "C++ implementation of R*-tree, an MVR-tree and a TPR-tree with C API.", + "homepage": "http://libspatialindex.github.com", + "license": "MIT", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "zlib" + ] +} diff --git a/vcpkg/ports/qgis/fix-ogr-typedef.patch b/vcpkg/ports/qgis/fix-ogr-typedef.patch new file mode 100644 index 000000000..46bbca437 --- /dev/null +++ b/vcpkg/ports/qgis/fix-ogr-typedef.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/proj/qgscoordinatereferencesystem.h b/src/core/proj/qgscoordinatereferencesystem.h +index 1234567..abcdefg 100644 +--- a/src/core/proj/qgscoordinatereferencesystem.h ++++ b/src/core/proj/qgscoordinatereferencesystem.h +@@ -60,7 +60,7 @@ + // forward declaration for sqlite3 + typedef struct sqlite3 sqlite3 SIP_SKIP; + +-#ifdef DEBUG ++#if defined(DEBUG) || defined(GDAL_DEBUG) + typedef struct OGRSpatialReferenceHS *OGRSpatialReferenceH SIP_SKIP; + #else + typedef void *OGRSpatialReferenceH SIP_SKIP; diff --git a/vcpkg/ports/qgis/fix-qt-6-10.patch b/vcpkg/ports/qgis/fix-qt-6-10.patch new file mode 100644 index 000000000..16073d531 --- /dev/null +++ b/vcpkg/ports/qgis/fix-qt-6-10.patch @@ -0,0 +1,12 @@ +diff --git a/src/core/tiledscene/qgsgltfutils.cpp b/src/core/tiledscene/qgsgltfutils.cpp +index 2e2197a427f..618d89c22ae 100644 +--- a/src/core/tiledscene/qgsgltfutils.cpp ++++ b/src/core/tiledscene/qgsgltfutils.cpp +@@ -23,6 +23,7 @@ + + #include + #include ++#include + #include + + #define TINYGLTF_IMPLEMENTATION // should be defined just in one CPP file diff --git a/vcpkg/ports/qgis/portfile.cmake b/vcpkg/ports/qgis/portfile.cmake index b335a3e56..de41a8d1e 100644 --- a/vcpkg/ports/qgis/portfile.cmake +++ b/vcpkg/ports/qgis/portfile.cmake @@ -18,6 +18,10 @@ vcpkg_from_github( libxml2.patch qgis4-project-properties.patch qgis4_url_encoding.patch + fix-qt-6-10.patch + snapping-casting.patch + protobuf-qbytearray-ambiguity.patch + fix-ogr-typedef.patch ) file(REMOVE ${SOURCE_PATH}/cmake/FindQtKeychain.cmake) diff --git a/vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch b/vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch new file mode 100644 index 000000000..e0ab0300b --- /dev/null +++ b/vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch @@ -0,0 +1,19 @@ +diff --git a/src/core/vectortile/qgsvectortilemvtencoder.cpp b/src/core/vectortile/qgsvectortilemvtencoder.cpp +index 1234567..abcdefg 100644 +--- a/src/core/vectortile/qgsvectortilemvtencoder.cpp ++++ b/src/core/vectortile/qgsvectortilemvtencoder.cpp +@@ -203,12 +203,12 @@ void QgsVectorTileMVTEncoder::addLayer( QgsVectorLayer *layer, QgsFeedback *feed + + vector_tile::Tile_Layer *tileLayer = tile.add_layers(); +- tileLayer->set_name( layerName.toUtf8() ); ++ tileLayer->set_name( layerName.toUtf8().toStdString() ); + tileLayer->set_version( 2 ); // 2 means MVT spec version 2.1 + tileLayer->set_extent( static_cast<::google::protobuf::uint32>( mResolution ) ); + + const QgsFields fields = layer->fields(); + for ( int i = 0; i < fields.count(); ++i ) + { +- tileLayer->add_keys( fields[i].name().toUtf8() ); ++ tileLayer->add_keys( fields[i].name().toUtf8().toStdString() ); + } + diff --git a/vcpkg/ports/qgis/snapping-casting.patch b/vcpkg/ports/qgis/snapping-casting.patch new file mode 100644 index 000000000..13aa48cfd --- /dev/null +++ b/vcpkg/ports/qgis/snapping-casting.patch @@ -0,0 +1,13 @@ +diff --git a/src/core/qgssnappingutils.cpp b/src/core/qgssnappingutils.cpp +index 8f2f33a05dd..5530773eac3 100644 +--- a/src/core/qgssnappingutils.cpp ++++ b/src/core/qgssnappingutils.cpp +@@ -646,7 +646,7 @@ QString QgsSnappingUtils::dump() + msg += QString( "layer : %1\n" + "config: %2 tolerance %3 %4\n" ) + .arg( layer.layer->name() ) +- .arg( layer.type ).arg( layer.tolerance ).arg( static_cast( layer.unit ) ); ++ .arg( static_cast( layer.type ) ).arg( layer.tolerance ).arg( static_cast( layer.unit ) ); + + if ( mStrategy == IndexAlwaysFull || mStrategy == IndexHybrid || mStrategy == IndexExtent ) + { diff --git a/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake b/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake index 586a71bc6..c7c7cf2a3 100644 --- a/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake +++ b/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake @@ -1,582 +1,385 @@ -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 AND NOT ANDROID_SDK_ROOT) - message( - FATAL_ERROR - "${PORT} requires ANDROID_SDK_ROOT to be set. Consider adding it to the triplet." - ) -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_ - 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= # 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 - ) - set(Z_VCPKG_CMAKE_GENERATOR - "${Z_VCPKG_CMAKE_GENERATOR}" - PARENT_SCOPE - ) -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 (_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") +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 "${${_qarg_SUBMODULE}_URL}" + 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() + + vcpkg_download_distfile(archive + URLS ${${_qarg_SUBMODULE}_URL} + FILENAME ${${_qarg_SUBMODULE}_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_ + 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= # 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} + "-DQT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX:STRING=${CURRENT_INSTALLED_DIR}" + 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 + QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX + ${_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. /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 deleted file mode 100644 index 5e49d55b6..000000000 --- a/vcpkg/ports/qtbase/cmake/qt_port_data.cmake +++ /dev/null @@ -1,136 +0,0 @@ -set(qtbase_HASH - "ef364f939f23b622f67d21833c2dbf1fb74531d9a1e25b6d2e94ea5d747a40f20c6c3a24abef1e9710287366b7cb54dd090350d315601317779235c20743cc81" -) -set(qttools_HASH - "77141b310f63932678f28682c490ccc75776493994d96582d546545c17937605efac312c008c75fda991b78c369320d0a2c4b543b568a459cc90051d1ed2b9da" -) -set(qtdeclarative_HASH - "75c9fdc8ba26ef95ae8ff0c82b18589b74d7ff3065e86e5bd8427bc36336e569eaa22fa07863f99d0592eec0c1a69c3409c7b3941eae14361ff523c058e56084" -) -set(qtsvg_HASH - "213af7fdf92fb64c9b824dbe044f51d89e661ccc02c17cf109e65b962a7b1de84c71e1b1b58d6cad0cc9fccee80b97efe9ebcab3491b478fb9b64bcfd33986a4" -) -set(qt5compat_HASH - "e049508efda201e5d12a2dc0e023fc096611b18810f695be213a26bfbf8cdda1ae04c353c2a8b9be0c30b014e3d4f9280921acd1e8ec3834cd309143de82f570" -) -set(qtshadertools_HASH - "5f326bb097e09f9f9259b550ccf5fb05634d748eebf8b8c416225e3cd328c2b532c764a41b98a4d47633be446edaeaa3d4e5da1f4951b31e3da6ddc4392a47fc" -) -set(qtquicktimeline_HASH - "3f9aef0eb8b495cda9bcab22e7f544e9dd1894e556e162654c87903406cd3c73820f54a543bc3861d49c7863d2fc8d92f79bb8e90cdcc23a99cf64bbeb816885" -) -set(qtquick3d_HASH - "5a5c04dfd1581905fb0b40cb35ef9e7370ffaf451287d84a9d444c0871f495ecfe59c8ab15cacc8e7314af45c16598fad5e63cd9466384c5ba245ad0c28315f2" -) -set(qttranslations_HASH - "d5df6136d3f66c93c0dd6d98c7a467c8b939d7bf5c90b5acff69262163c1e7cccc0c4f2f83b5ef06179601578b4a109f2f0c76c3897a31d3fb2567995fc55328" -) -set(qtwayland_HASH - "2edb6d3e85c06bcf689c3acfcc38b6ff0505569dfeec8bfb5a434fad563087ff917875ea56e639405af3cca8adc98206ab9f68dfaf8e2449300d010ffbb16699" -) -set(qtdoc_HASH - "839fbff235f67ade032f25120fbd7f394d272bf752dfe982c202cb8b6cf411a1bc949f5035b2c1062468e40632b2061ac611c771d35567dd5970b013ff2090f8" -) -set(qtcoap_HASH - "ce51ea39b7946b85cacddd3ebfe3a92615f31b032a779b799113c1e97aecdd3906e4fdc066296b0c0a369f4a023df4c951cc18dd47d2713e173118f2bd055cff" -) -set(qtopcua_HASH - "ac11aab0f9333a4b666c9c523f5d74140bd52e236ed14cfce3dbfc030516b1cc654761048a7fd9e4238a9f1e0e47a72c6f2f8e98173f27042c6cdbb348c8d6d9" -) -set(qtimageformats_HASH - "174bddd49dac507b7a2c9f1e1f7b384bff9ac515891ee49fd72acfa944b503cf5bd26acf388203e7d14b1f147b07ccbc2da992f71d51b7a18151245efc53a3a2" -) -set(qtmqtt_HASH - "1934405a8e6b7188ce710e89eaf7ae00f1e1516b803b773ec95b962368a8da3967bac29dfe2a4377a76d0f8b9bf47599f566d7130eff311f38af2041d0c40a88" -) -set(qtnetworkauth_HASH - "8f9f25883534af6ce7029a6c96501de3e944c8c6c3021f185c3a932653b4e4c40b3a0f8bc210d3ee175b690721a99b3d42de2f6fa9d1dbd1b730abf22fc48455" -) -set(qt3d_HASH - "8316fbe5a39bc5113da4759e195a55c57d8340021a39576939c0a4a604f47b4edb3c0206f914d4a3177ff09471d1f3475ffc4c2fa935ed8d98a166e310bc78b4" -) -set(qtactiveqt_HASH - "d49c16f4e055bcf389c719ae0e33a6ae0ef54f2433211f14864774c3694f82361783d18db6996b6f5abd52f5ac7f791b0eab015c946ceaa3ddfb9ef6abf64f19" -) -set(qtdatavis3d_HASH - "a5d0cf5c223a5baa69dc7fc59b131eb3b971dc3701d20e81bf7e86ccb6e8f4d20a82079e514d1269091fa014896167d52912e3940210fd546a8a55439c75509a" -) -set(qtdeviceutilities_HASH - "b32222c52169832a30a1d6bf0b19e5adc15bc9b1c7c12e4613ea73eba73b00528969f8a87830d0a9bf61663547ff263e2e0d6e5f4bc37b8624c3f96d9cbc51b6" -) -set(qtlottie_HASH - "c663b830210359bd738a3ab2ae84d956646c249e199acac194c1ec725b3eb1acb2392eef0a9b252e8ece0adad104932d4f7207903e49ec041287618d3a6f9894" -) -set(qtscxml_HASH - "c0138fc338b2d12fb4bcbba2c852b44e4257c56850f22af46d452871fb9bd9465bd824d86cd7e7772ef62b8ed48515790b496e1e873aa335deae8e25789cb4d0" -) -set(qtvirtualkeyboard_HASH - "a128c8210eec799d81c76b20e32e3c09ccb345d822b5c59b1fbf0960a1e2bec50c43140d86aaae9419a1fc514fc3e14bd283f612bf9133676db1a21e7217f528" -) -set(qtcharts_HASH - "84b372c8b52aea580b2b9727775753345affa80b73e0be843e65f7331bb809187d7183d93fdaf543197860210bc4e006f3a707663a160cf8ae05b37871abac7e" -) -set(qtconnectivity_HASH - "5508f3fc57679a4f986f430dcd19c5da15af663a677d27c9cc6aba81629f4a6e1954be31c5d2a44ba22366d7731ff105d2eaa3a0565b3b02baea0f498c547733" -) -set(qtpositioning_HASH - "8899b4bf8096211fca37f7a7855ae2c6f79d770602105d76a98b580ad8e2f2f55096095bd7f935f6f9ac36e23135e7594cf3c2e5b760c979560a108d43d57784" -) -set(qtlocation_HASH - "c7cbd76b6b8b7d09387c7da0e6630959ae66f0c8af2cd26b255e86ec36c6efeec59e4af7b34faa05f2fa035d4dd075d13a8dd0bccaefac48d391b4fa786769c0" -) -set(qtmultimedia_HASH - "2f001888b44274583dcd5bc6f467cf18efbb1a711f29d6baf354071199772ee49d835922f2fa0e9770898d42decddf04b379d8f05d1dfd923c5f9d58e3c7fcd8" -) -set(qtremoteobjects_HASH - "5845afc5ea4894fa788ce07a89348bd5027c0cceca65dce99a6bf437b396c71f25e8e7374401c8d10fd88be2303766c6df29b62e826f4d5ba38971a042dd7b06" -) -set(qtsensors_HASH - "88e9277aefdc609bda881cb836dfdc04d29a32a4e09998d67e2ebe7ec6f94aff508fb39c2b624f00bcc85ddccd61bb5ed3ffcc953dd28d00ef559d50e6104ae4" -) -set(qtserialbus_HASH - "b0ce725382c15048913204e6173dd899af6f8233ff3a098f497dea6a3d9d2cd436ad7944165398fba59f92098f7e38e7c3c5efa47a7ffeec2bf3a464ae9d4539" -) -set(qtserialport_HASH - "343537aedd9c84dd5d6889d45babff181d7ef05927fd9cfdbb9389066f8860e2522bc059ca2c5c9af4c88bca255e0fc40b5eea84b93c970123a94afc803a638d" -) -set(qtwebchannel_HASH - "156d3d1f7e1a0b0df8c103db010cd8e40717e6fcf27dd20c27ca22900ae377a8da8bc86a9ec1d65765defb68032469415c345a571e9a3dcbc3919603972d01d6" -) -set(qtwebengine_HASH - "01e8988c76ff40ca5e38f76e90791d7ef708c29f2e9f8e83ca8604b6335fbecdee71473678a63633ec1edec85088256b20e56a618ca95748ccbe1e7b9673c298" -) -set(qtwebsockets_HASH - "7453c6657e9885393d57df3ebaf9d3ad12237b5fb848ac3547cc6c6ed607562d58564667a7fd10133d4cdb94151aa5c21660e33c7f48f01a4061001a47f85b60" -) -set(qtwebview_HASH - "af16c85d76e55e3c39c747995b3c46354efe5f5a3e111df36f9b169ab8fe3ac878cfe223ee47aef9aa8bc302c7383fc9b1f9682c63034e42def3714b28a0aabf" -) -set(qtinterfaceframework_REF "373322fc654e875cb56828de554dfdda96e9fb4e") -set(qtapplicationmanager_HASH - "7d404ac3f98d29004009d87996779a0c5c86b976e864257cd3a9018d84db8bc07bcedc74f0b15443f90b487d2229fdb7b80d1ae082b0fc8dea30f682b58cea1a" -) -set(qtlanguageserver_HASH - "8b55a3558de28d6c2c61bf52e8f10d1a67cc6890fdd3846db99f6c766fd22fef1793687b88b146f5a64971d60eef4357409b893c91310d1b9abec883ab35c2bc" -) -set(qthttpserver_HASH - "4e99164e285ed4e8ae64a4af2c717fc22a7b5934ac5a78fe3adbb04e29109d1294e9917aa089b9cb9e5492bdf7fad4888c837374c2fef691ea7294bccbe7b01a" -) -set(qtquick3dphysics_HASH - "e8948f84e337bc4c496ba67f047c809ece8d74a3d2af388227c902b765a1d2969f86be2ebaaa89f271c4b73d2cf5151a4c488ff7dc4f4a965d5f6a4de052784a" -) -set(qtspeech_HASH - "6434ccf743604bf4ac4bc31b26c7dbc7f765ec95174f0d9047bec822292f85e6b21ace825b52ce60bd388d9c333d427b206209f78c612782701567bb7d271e6d" -) -set(qtgrpc_HASH - "488c7e6a20cd9c267b44923c317e545e71543f68153228a4fee1fa9c0a2f6d3e212db9482962999bb80e87313a1a851b787759852089f17dca8add7040627c55" -) -set(qtquickeffectmaker_HASH - "cdcee80a0bf7347ef9b63acc277ce6ef134128ba56f247008803d9444a9e0713e23205ed0f9ecf2b7752d82183acb471a2589c8b0ec914259a22395f94755bfa" -) -set(qtgraphs_HASH - "c1803e68e065fc4ed7de68e65f5dc86a0b926768779c0de57a7f4af46506f019c27d47095f87eb1516011868262d6654817c478e130739477658a3dbcef2fb35" -) - -# 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 index e6d330979..33b189b9d 100644 --- a/vcpkg/ports/qtbase/cmake/qt_port_details.cmake +++ b/vcpkg/ports/qtbase/cmake/qt_port_details.cmake @@ -1,245 +1,191 @@ -# 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 +### 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.8.3) +set(QT_VERSION 6.10.2) set(QT_DEV_BRANCH 0) set(QT_UPDATE_VERSION 0) -if (PORT MATCHES "(qtquickcontrols2)") - set(VCPKG_POLICY_EMPTY_PACKAGE enabled) - return() -endif () +if(PORT MATCHES "(qtquickcontrols2)") + set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + return() +endif() -# Setting up the git tag. +### 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 +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 -) -# 1. These modules are mirrored to github and have branches matching the release +set(QT_FROM_GITHUB qtcoap qtopcua qtmqtt qtapplicationmanager qtinterfaceframework) +# 3. These modules are mirrored to github and have branches matching the release set(QT_FROM_GITHUB_BRANCH qtdeviceutilities) -# 1. 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) +# 4. These modules are not mirrored to github and not part of the release +set(QT_FROM_QT_GIT "") +# 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 - ) +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 4 qt_major_minor) - if (NOT QT_DEV_BRANCH) - set(branch_subpath "archive") - else () - set(branch_subpath "development_releases") - endif () + 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 () + 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 () +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}") + + set(port_data "") + 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") + string(APPEND port_data "set(${qt_port}_REF ${tag_sha})\n") + string(APPEND port_data "set(${qt_port}_URL \"https://code.qt.io/cgit/qt/${qt_port}.git\")\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") + string(APPEND port_data "set(${qt_port}_HASH \"${hash}\")\n") + string(APPEND port_data "set(${qt_port}_URL \"${urls}\")\n") + string(APPEND port_data "set(${qt_port}_FILENAME \"${filename}\")\n") + endif() + file(WRITE "${CMAKE_CURRENT_LIST_DIR}/../../${qt_port}/port.data.cmake" "${port_data}") + 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") +include("${CURRENT_PORT_DIR}/port.data.cmake") diff --git a/vcpkg/ports/qtbase/fix_deploy_windows.patch b/vcpkg/ports/qtbase/fix_deploy_windows.patch index 2d2f46ff0..c89506950 100644 --- a/vcpkg/ports/qtbase/fix_deploy_windows.patch +++ b/vcpkg/ports/qtbase/fix_deploy_windows.patch @@ -1,26 +1,13 @@ -diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake -index 8a0d07feac..0e6a720c20 100644 ---- a/src/corelib/Qt6CoreMacros.cmake -+++ b/src/corelib/Qt6CoreMacros.cmake -@@ -2977,17 +2977,19 @@ function(_qt_internal_setup_deploy_support) - if(CMAKE_HOST_WIN32) -+ if(CMAKE_CROSSCOMPILING AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug") -- if(CMAKE_CROSSCOMPILING) - set(qt_paths_ext ".bat") -+ elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") -+ set(qt_paths_ext ".debug.bat") - else() - set(qt_paths_ext ".exe") - endif() - else() - set(qt_paths_ext "") - endif() - - - - set(target_qtpaths_path "") -- set(qtpaths_prefix "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_BINS}") -+ set(qtpaths_prefix "${QT6_INSTALL_PREFIX}/tools/Qt6/bin") - get_property(qt_major_version TARGET "${target}" PROPERTY INTERFACE_QT_MAJOR_VERSION) - if(qt_major_version) - set(target_qtpaths_with_major_version_path +diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake +index bfac685..f40138e 100644 +--- a/src/corelib/Qt6CoreMacros.cmake ++++ b/src/corelib/Qt6CoreMacros.cmake +@@ -3243,7 +3243,7 @@ function(_qt_internal_setup_deploy_support) + endif() + endforeach() + +- set(qtpaths_prefix "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_BINS}") ++ set(qtpaths_prefix "${QT6_INSTALL_PREFIX}/tools/Qt6/bin") + + set(candidate_paths "") + foreach(qtpaths_name_candidate IN LISTS qtpaths_name_candidates) diff --git a/vcpkg/ports/qtbase/fix_find_framework.patch b/vcpkg/ports/qtbase/fix_find_framework.patch new file mode 100644 index 000000000..6bbe9fff7 --- /dev/null +++ b/vcpkg/ports/qtbase/fix_find_framework.patch @@ -0,0 +1,15 @@ +diff --git a/cmake/QtFrameworkHelpers.cmake b/cmake/QtFrameworkHelpers.cmake +index b48e39c..c14e220 100644 +--- a/cmake/QtFrameworkHelpers.cmake ++++ b/cmake/QtFrameworkHelpers.cmake +@@ -54,7 +54,10 @@ function(qt_internal_find_apple_system_framework out_var framework_name) + # We might revisit this later. + set(cache_var_name "${out_var}Internal") + ++ set(_qt_save_cmake_find_framework ${CMAKE_FIND_FRAMEWORK}) ++ set(CMAKE_FIND_FRAMEWORK FIRST) + find_library(${cache_var_name} "${framework_name}") ++ set(CMAKE_FIND_FRAMEWORK ${_qt_save_cmake_find_framework}) + + if(${cache_var_name} AND ${cache_var_name} MATCHES ".framework$") + set(${out_var} "-framework ${framework_name}" PARENT_SCOPE) diff --git a/vcpkg/ports/qtbase/fix_yield_arm_acle.patch b/vcpkg/ports/qtbase/fix_yield_arm_acle.patch new file mode 100644 index 000000000..604800d6b --- /dev/null +++ b/vcpkg/ports/qtbase/fix_yield_arm_acle.patch @@ -0,0 +1,15 @@ +diff --git a/src/corelib/thread/qyieldcpu.h b/src/corelib/thread/qyieldcpu.h +index 6615648..56f3728 100644 +--- a/src/corelib/thread/qyieldcpu.h ++++ b/src/corelib/thread/qyieldcpu.h +@@ -10,6 +10,10 @@ + #include + #include + ++#if defined(Q_PROCESSOR_ARM) && defined(Q_CC_GNU) && !defined(Q_CC_MSVC_ONLY) ++# include ++#endif ++ + #ifdef Q_CC_MSVC_ONLY + // MSVC defines _YIELD_PROCESSOR() in , but as that is a private + // header, we include the public ones diff --git a/vcpkg/ports/qtbase/port.data.cmake b/vcpkg/ports/qtbase/port.data.cmake new file mode 100644 index 000000000..2535720a0 --- /dev/null +++ b/vcpkg/ports/qtbase/port.data.cmake @@ -0,0 +1,3 @@ +set(qtbase_HASH "69e7317aa3114d8ca14e0067a001e42f0d2b9208070bdd1a2391cc1b1ccbb7fc3f90c8adcb0742d3c0b4ec7b3a6b770dbb411265458330d05d45f306cfae95c2") +set(qtbase_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz") +set(qtbase_FILENAME "qtbase-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtbase/portfile.cmake b/vcpkg/ports/qtbase/portfile.cmake index 2f1fca59e..bdc8ae708 100644 --- a/vcpkg/ports/qtbase/portfile.cmake +++ b/vcpkg/ports/qtbase/portfile.cmake @@ -24,6 +24,8 @@ set(${PORT}_PATCHES fix_deploy_windows.patch fix-link-lib-discovery.patch macdeployqt-symlinks.patch + fix_find_framework.patch + fix_yield_arm_acle.patch ) if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) @@ -449,6 +451,7 @@ qt_install_submodule( -DINPUT_bundled_xcb_xinput:STRING=no -DFEATURE_force_debug_info:BOOL=ON -DFEATURE_relocatable:BOOL=ON + -DQT_AVOID_CMAKE_ARCHIVING_API=ON CONFIGURE_OPTIONS_RELEASE CONFIGURE_OPTIONS_DEBUG -DFEATURE_debug:BOOL=ON diff --git a/vcpkg/ports/qtbase/qtpaths.debug.bat b/vcpkg/ports/qtbase/qtpaths.debug.bat index 4fef8e754..ab3bbc907 100644 --- a/vcpkg/ports/qtbase/qtpaths.debug.bat +++ b/vcpkg/ports/qtbase/qtpaths.debug.bat @@ -1,2 +1,2 @@ @echo off -"%0\..\qtpaths.exe" --qtconf "%0\..\qt.debug.conf" %* +"%~dp0qtpaths.exe" --qtconf "%~dp0qt.debug.conf" %* diff --git a/vcpkg/ports/qtbase/vcpkg.json b/vcpkg/ports/qtbase/vcpkg.json index 2cbacaba3..8de5c559d 100644 --- a/vcpkg/ports/qtbase/vcpkg.json +++ b/vcpkg/ports/qtbase/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qtbase", - "version": "6.8.3", + "version": "6.10.2", "port-version": 1, "description": "Qt Base (Core, Gui, Widgets, Network, ...)", "homepage": "https://www.qt.io/", diff --git a/vcpkg/ports/qtdeclarative/port.data.cmake b/vcpkg/ports/qtdeclarative/port.data.cmake new file mode 100644 index 000000000..9a0325df7 --- /dev/null +++ b/vcpkg/ports/qtdeclarative/port.data.cmake @@ -0,0 +1,3 @@ +set(qtdeclarative_HASH "93b76ea0c9a804042335e6c476fc1b9a987ea29b3c5c18fbda2266cba14c7c9c7f0c91ac5de23eeb06748dfa3009d91ea72e7b7df7c0940273cdcf3ca7638d98") +set(qtdeclarative_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz") +set(qtdeclarative_FILENAME "qtdeclarative-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtdeclarative/vcpkg.json b/vcpkg/ports/qtdeclarative/vcpkg.json index fe1561e83..9471525d8 100644 --- a/vcpkg/ports/qtdeclarative/vcpkg.json +++ b/vcpkg/ports/qtdeclarative/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qtdeclarative", - "version": "6.8.3", + "version": "6.10.2", "description": "Qt Declarative (Quick 2)", "homepage": "https://www.qt.io/", "license": null, diff --git a/vcpkg/ports/qtmultimedia/ffmpeg-compile-def.patch b/vcpkg/ports/qtmultimedia/ffmpeg-compile-def.patch deleted file mode 100644 index 95e531510..000000000 --- a/vcpkg/ports/qtmultimedia/ffmpeg-compile-def.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/plugins/multimedia/ffmpeg/CMakeLists.txt b/src/plugins/multimedia/ffmpeg/CMakeLists.txt -index 77c459a..af5229e 100644 ---- a/src/plugins/multimedia/ffmpeg/CMakeLists.txt -+++ b/src/plugins/multimedia/ffmpeg/CMakeLists.txt -@@ -273,7 +273,7 @@ if(BUILD_SHARED_LIBS) - else() - foreach(ffmpeg_lib IN LISTS ffmpeg_libs) - qt_internal_add_target_include_dirs(FFmpegMediaPluginImplPrivate ${ffmpeg_lib}) -- target_include_directories(FFmpegMediaPluginImplPrivate PUBLIC -+ target_compile_definitions(FFmpegMediaPluginImplPrivate PUBLIC - "$") - endforeach() - endif() diff --git a/vcpkg/ports/qtmultimedia/ffmpeg.patch b/vcpkg/ports/qtmultimedia/ffmpeg.patch new file mode 100644 index 000000000..e2727de20 --- /dev/null +++ b/vcpkg/ports/qtmultimedia/ffmpeg.patch @@ -0,0 +1,33 @@ +diff --git a/cmake/FindFFmpeg.cmake b/cmake/FindFFmpeg.cmake +index decac97dc..672991080 100644 +--- a/cmake/FindFFmpeg.cmake ++++ b/cmake/FindFFmpeg.cmake +@@ -282,10 +282,10 @@ function(__ffmpeg_internal_set_dependencies _component) + set(suffix_lib "\\.lib($| )") + set(framework_regex "-framework [A-Za-z0-9_]*") + +- string(REGEX REPLACE ".*Libs:([^\n\r]+).*" "\\1" out "${pcfile}") +- string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_dependency ${out}) +- string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_dependency_lib ${out}) +- string(REGEX MATCHALL "${framework_regex}" framework_dependencies ${out}) ++ string(REGEX MATCH "Libs:([^\n\r]+)" match "${pcfile}") ++ set(out "${CMAKE_MATCH_1}") ++ string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_dependency "${out}") ++ string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_dependency_lib "${out}") + + foreach(dependency IN LISTS libs_dependency) + string(REGEX REPLACE ${prefix_l} "" dependency ${dependency}) +@@ -298,9 +298,10 @@ function(__ffmpeg_internal_set_dependencies _component) + endforeach() + + # we don't link private dependencies, but just populate the FFMPEG_STUBS +- string(REGEX REPLACE ".*Libs.private:([^\n\r]+).*" "\\1" out "${pcfile}") +- string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_private_dependency ${out}) +- string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_private_dependency_lib ${out}) ++ string(REGEX MATCH "Libs.private:([^\n\r]+)" match "${pcfile}") ++ set(out "${CMAKE_MATCH_1}") ++ string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_private_dependency "${out}") ++ string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_private_dependency_lib "${out}") + + foreach(dependency IN LISTS libs_private_dependency) + string(REGEX REPLACE ${prefix_l} "" dependency ${dependency}) diff --git a/vcpkg/ports/qtmultimedia/fix_avfoundation_target.patch b/vcpkg/ports/qtmultimedia/fix_avfoundation_target.patch deleted file mode 100644 index 943bc4798..000000000 --- a/vcpkg/ports/qtmultimedia/fix_avfoundation_target.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/plugins/multimedia/darwin/CMakeLists.txt b/src/plugins/multimedia/darwin/CMakeLists.txt -index a1a0cb1..242ceac 100644 ---- a/src/plugins/multimedia/darwin/CMakeLists.txt -+++ b/src/plugins/multimedia/darwin/CMakeLists.txt -@@ -34,6 +34,6 @@ qt_internal_add_plugin(QDarwinMediaPlugin - ${FWMetal} - ${FWQuartzCore} -- AVFoundation::AVFoundation -+ ${FWAVFoundation} - ) - - qt_internal_extend_target(QDarwinMediaPlugin CONDITION NOT TVOS diff --git a/vcpkg/ports/qtmultimedia/port.data.cmake b/vcpkg/ports/qtmultimedia/port.data.cmake new file mode 100644 index 000000000..bcb1bd61d --- /dev/null +++ b/vcpkg/ports/qtmultimedia/port.data.cmake @@ -0,0 +1,3 @@ +set(qtmultimedia_HASH "3946953ad1690972f690c30b6c8be7070f1e95241e4ac5d29db86c18eed3eeab7bca281235c7797bb029af3e33ba077976e06454ba942d170de57a90c80a1207") +set(qtmultimedia_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz") +set(qtmultimedia_FILENAME "qtmultimedia-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtmultimedia/portfile.cmake b/vcpkg/ports/qtmultimedia/portfile.cmake index 7c86ac46e..84b0b8920 100644 --- a/vcpkg/ports/qtmultimedia/portfile.cmake +++ b/vcpkg/ports/qtmultimedia/portfile.cmake @@ -3,10 +3,8 @@ include("${SCRIPT_PATH}/qt_install_submodule.cmake") set(${PORT}_PATCHES static_find_modules.patch - fix_avfoundation_target.patch remove-static-ssl-stub.patch - private_libs.patch - ffmpeg-compile-def.patch + ffmpeg.patch ) vcpkg_check_features( diff --git a/vcpkg/ports/qtmultimedia/private_libs.patch b/vcpkg/ports/qtmultimedia/private_libs.patch deleted file mode 100644 index 3ffc253f4..000000000 --- a/vcpkg/ports/qtmultimedia/private_libs.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/cmake/FindFFmpeg.cmake b/cmake/FindFFmpeg.cmake -index 6316dde..54f807b 100644 ---- a/cmake/FindFFmpeg.cmake -+++ b/cmake/FindFFmpeg.cmake -@@ -264,9 +264,11 @@ function(__ffmpeg_internal_set_dependencies _component) - string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_dependency ${out}) - string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_dependency_lib ${out}) - -- string(REGEX REPLACE ".*Libs.private:([^\n\r]+).*" "\\1" out "${pcfile}") -- string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_private_dependency ${out}) -- string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_private_dependency_lib ${out}) -+ if(out MATCHES "Libs.private:") -+ string(REGEX REPLACE ".*Libs.private:([^\n\r]+).*" "\\1" out "${pcfile}") -+ string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_private_dependency ${out}) -+ string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_private_dependency_lib ${out}) -+ endif() - - list(APPEND deps_no_suffix ${libs_dependency} ${libs_private_dependency}) - foreach(dependency ${deps_no_suffix}) diff --git a/vcpkg/ports/qtmultimedia/static_find_modules.patch b/vcpkg/ports/qtmultimedia/static_find_modules.patch index 1fc348de6..d68a60d30 100644 --- a/vcpkg/ports/qtmultimedia/static_find_modules.patch +++ b/vcpkg/ports/qtmultimedia/static_find_modules.patch @@ -1,62 +1,3 @@ -diff --git a/cmake/FindFFmpeg.cmake b/cmake/FindFFmpeg.cmake -index 47d8769..46a5c9b 100644 ---- a/cmake/FindFFmpeg.cmake -+++ b/cmake/FindFFmpeg.cmake -@@ -215,7 +215,7 @@ foreach (_component ${FFmpeg_FIND_COMPONENTS}) - find_component(${_component} "lib${library}" ${library} "lib${library}/${library}.h") - - if (${_component}_FOUND) -- list(APPEND FFMPEG_LIBRARIES ${${_component}_LIBRARY_NAME}) -+ list(APPEND FFMPEG_LIBRARIES ${${_component}_LIBRARY}) - list(APPEND FFMPEG_DEFINITIONS ${${_component}_DEFINITIONS}) - list(APPEND FFMPEG_INCLUDE_DIRS ${${_component}_INCLUDE_DIR}) - list(APPEND FFMPEG_LIBRARY_DIRS ${${_component}_LIBRARY_DIR}) -@@ -306,18 +306,19 @@ endfunction() - string(TOLOWER ${_component} _lowerComponent) - if (NOT TARGET FFmpeg::${_lowerComponent}) -- add_library(FFmpeg::${_lowerComponent} INTERFACE IMPORTED) -+ add_library(FFmpeg::${_lowerComponent} UNKNOWN IMPORTED) - set_target_properties(FFmpeg::${_lowerComponent} PROPERTIES - INTERFACE_COMPILE_OPTIONS "${${_component}_DEFINITIONS}" - INTERFACE_INCLUDE_DIRECTORIES ${${_component}_INCLUDE_DIR} -- INTERFACE_LINK_LIBRARIES "${${_component}_LIBRARY_NAME}" -- INTERFACE_LINK_DIRECTORIES "${${_component}_LIBRARY_DIR}" -+ IMPORTED_LOCATION "${${_component}_LIBRARY}" - ) - - __ffmpeg_internal_set_dependencies(${_component}) -- target_link_libraries(FFmpeg::${_lowerComponent} INTERFACE "${${_component}_LIBRARY_NAME}") -+ if(WIN32 AND _lowerComponent STREQUAL "avutil") -+ target_link_libraries(FFmpeg::${_lowerComponent} INTERFACE "Bcrypt.lib") -+ endif() - if (UNIX AND NOT APPLE) - target_link_options(FFmpeg::${_lowerComponent} INTERFACE "-Wl,--exclude-libs=lib${_lowerComponent}") - endif () - endif() - endif() - endforeach () -@@ -361,14 +364,18 @@ if (shared_libs_desired AND NOT FFMPEG_SHARED_COMPONENTS) - endif() - - if (NOT TARGET FFmpeg::FFmpeg) -- add_library(FFmpeg INTERFACE) -+ add_library(FFmpeg INTERFACE IMPORTED) - set_target_properties(FFmpeg PROPERTIES - INTERFACE_COMPILE_OPTIONS "${FFMPEG_DEFINITIONS}" - INTERFACE_INCLUDE_DIRECTORIES "${FFMPEG_INCLUDE_DIRS}" -- INTERFACE_LINK_LIBRARIES "${FFMPEG_LIBRARIES}" - INTERFACE_LINK_DIRECTORIES "${FFMPEG_LIBRARY_DIRS}" - ) -+ target_link_libraries(FFmpeg INTERFACE ${FFMPEG_LIBRARIES}) -- add_library(FFmpeg::FFmpeg ALIAS FFmpeg) -+ if(WIN32) -+ target_link_libraries(FFmpeg INTERFACE "Bcrypt.lib") -+ endif() -+ add_library(FFmpeg::FFmpeg INTERFACE IMPORTED) -+ target_link_libraries(FFmpeg::FFmpeg INTERFACE FFmpeg) - endif() - - # Compile the list of required vars diff --git a/cmake/FindGObject.cmake b/cmake/FindGObject.cmake index 19a8a67..09e95d1 100644 --- a/cmake/FindGObject.cmake @@ -64,13 +5,13 @@ index 19a8a67..09e95d1 100644 @@ -13,8 +13,8 @@ # ``GObject::GObject`` # The gobject-2.0 library - + -include(CMakeFindDependencyMacro) -find_dependency(GLIB2) +find_package(GLIB2) +find_package(libffi) qt_internal_disable_find_package_global_promotion(GLIB2::GLIB2) - + if(NOT TARGET GObject::GObject) @@ -40,6 +40,7 @@ if(NOT TARGET GObject::GObject) target_link_libraries(GObject::GObject INTERFACE diff --git a/vcpkg/ports/qtmultimedia/vcpkg.json b/vcpkg/ports/qtmultimedia/vcpkg.json index 63349c87a..1120cba5d 100644 --- a/vcpkg/ports/qtmultimedia/vcpkg.json +++ b/vcpkg/ports/qtmultimedia/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qtmultimedia", - "version": "6.8.3", + "version": "6.10.2", "description": "Qt Multimedia is an add-on module that provides a rich set of QML types and C++ classes to handle multimedia content.", "homepage": "https://www.qt.io/", "license": null, diff --git a/vcpkg/ports/qtpositioning/devendor-poly2tri.patch b/vcpkg/ports/qtpositioning/devendor-poly2tri.patch index 85e18ca98..1dd6ed4fd 100644 --- a/vcpkg/ports/qtpositioning/devendor-poly2tri.patch +++ b/vcpkg/ports/qtpositioning/devendor-poly2tri.patch @@ -1,15 +1,16 @@ -diff --color -Naur a/src/3rdparty/clip2tri/CMakeLists.txt b/src/3rdparty/clip2tri/CMakeLists.txt ---- a/src/3rdparty/clip2tri/CMakeLists.txt 2023-05-13 16:59:42.377052155 +0200 -+++ b/src/3rdparty/clip2tri/CMakeLists.txt 2023-05-13 23:05:44.950379088 +0200 +diff --git a/src/3rdparty/clip2tri/CMakeLists.txt b/src/3rdparty/clip2tri/CMakeLists.txt +index 9b5a56b..343314e 100644 +--- a/src/3rdparty/clip2tri/CMakeLists.txt ++++ b/src/3rdparty/clip2tri/CMakeLists.txt @@ -4,6 +4,7 @@ ## Bundled_Clip2Tri Generic Library: ##################################################################### - + +find_package(poly2tri) qt_internal_add_3rdparty_library(Bundled_Clip2Tri QMAKE_LIB_NAME _clip2tri STATIC -@@ -13,11 +14,12 @@ +@@ -13,11 +14,12 @@ qt_internal_add_3rdparty_library(Bundled_Clip2Tri clip2tri.cpp clip2tri.h INCLUDE_DIRECTORIES ../clipper @@ -23,13 +24,14 @@ diff --color -Naur a/src/3rdparty/clip2tri/CMakeLists.txt b/src/3rdparty/clip2tr +set_target_properties(poly2tri::poly2tri PROPERTIES INTERFACE_QT_PACKAGE_NAME poly2tri) qt_disable_warnings(Bundled_Clip2Tri) qt_set_symbol_visibility_hidden(Bundled_Clip2Tri) - -diff --color -Naur a/src/CMakeLists.txt b/src/CMakeLists.txt ---- a/src/CMakeLists.txt 2023-05-13 16:59:42.379052157 +0200 -+++ b/src/CMakeLists.txt 2023-05-13 17:00:19.256085781 +0200 + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 980c492..b1c48f2 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt @@ -2,7 +2,6 @@ # SPDX-License-Identifier: BSD-3-Clause - + # special case begin -add_subdirectory(3rdparty/poly2tri) add_subdirectory(3rdparty/clipper) diff --git a/vcpkg/ports/qtpositioning/foregroundservice.patch b/vcpkg/ports/qtpositioning/foregroundservice.patch index 640f85297..f0b24fcd4 100644 --- a/vcpkg/ports/qtpositioning/foregroundservice.patch +++ b/vcpkg/ports/qtpositioning/foregroundservice.patch @@ -1,11 +1,11 @@ diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp -index 2b2919f..bc42c2e 100644 +index 0abc2ca..9d160a9 100644 --- a/src/plugins/position/android/src/jnipositioning.cpp +++ b/src/plugins/position/android/src/jnipositioning.cpp -@@ -589,10 +589,6 @@ namespace AndroidPositioning { +@@ -592,10 +592,6 @@ namespace AndroidPositioning { { QLocationPermission permission; - + - // The needed permission depends on whether we run as a service or as an activity - if (!QNativeInterface::QAndroidApplication::isActivityContext()) - permission.setAvailability(QLocationPermission::Always); // background location diff --git a/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch b/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch index 9421028fe..d567740ae 100644 --- a/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch +++ b/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch @@ -1,12 +1,11 @@ diff --git a/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm b/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm -index 95d51a86..bdb8641b 100644 +index 95d51a8..656a5d2 100644 --- a/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm +++ b/src/plugins/position/corelocation/qgeopositioninfosource_cl.mm -@@ -47,12 +47,31 @@ - NSTimeInterval locationTimeStamp = [newLocation.timestamp timeIntervalSince1970]; +@@ -48,11 +48,31 @@ const QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(qRound64(locationTimeStamp * 1000), QTimeZone::UTC); -- + + // The ellipsoidalAltitude property can be populated depending on the manufacturer, we either use this and apply + // transformation with our geoid model or just propagate the geoid elevation from the mocked location + double availableAltitude; diff --git a/vcpkg/ports/qtpositioning/port.data.cmake b/vcpkg/ports/qtpositioning/port.data.cmake new file mode 100644 index 000000000..1292b58b8 --- /dev/null +++ b/vcpkg/ports/qtpositioning/port.data.cmake @@ -0,0 +1,3 @@ +set(qtpositioning_HASH "51cfcf50989508da13e2bb96293b866c72d4d26e2b702fae41fd5201738af8b96e17393fdec2668f3f217ef83257f2fbce0d33f53cea81ef980601c74991229e") +set(qtpositioning_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz") +set(qtpositioning_FILENAME "qtpositioning-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtpositioning/portfile.cmake b/vcpkg/ports/qtpositioning/portfile.cmake index fb5cd2827..c757d57fa 100644 --- a/vcpkg/ports/qtpositioning/portfile.cmake +++ b/vcpkg/ports/qtpositioning/portfile.cmake @@ -4,10 +4,6 @@ include("${SCRIPT_PATH}/qt_install_submodule.cmake") set(${PORT}_PATCHES devendor-poly2tri.patch foregroundservice.patch - ios_orthometric_altitude.patch - # TODO: The android patch should be removed after migration to Qt 6.9+ as it is a - # backport of their bugfix - android15_altitude_fix.patch ) vcpkg_check_features( diff --git a/vcpkg/ports/qtpositioning/vcpkg.json b/vcpkg/ports/qtpositioning/vcpkg.json index 6634396a5..59d430bf0 100644 --- a/vcpkg/ports/qtpositioning/vcpkg.json +++ b/vcpkg/ports/qtpositioning/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qtpositioning", - "version": "6.8.3", + "version": "6.10.2", "description": "The Qt Positioning API provides positioning information via QML and C++ interfaces.", "homepage": "https://www.qt.io/", "license": null, From c21c5120b61755756f8343d1f53e89f7e386f347 Mon Sep 17 00:00:00 2001 From: Tomas Mizera Date: Thu, 23 Apr 2026 08:50:58 +0200 Subject: [PATCH 02/61] Fix Bluetooth model syntax --- app/bluetoothdiscoverymodel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/bluetoothdiscoverymodel.cpp b/app/bluetoothdiscoverymodel.cpp index 4f692a26e..b97a9e4a0 100644 --- a/app/bluetoothdiscoverymodel.cpp +++ b/app/bluetoothdiscoverymodel.cpp @@ -108,7 +108,7 @@ void BluetoothDiscoveryModel::setDiscovering( bool discovering ) if ( discovering ) { mDiscoveryAgent->start(); - CoreUtils::log( QStringLiteral( "Bluetooth discovery" ), QStringLiteral( "Started discovering devices, method %1" ).arg( mDiscoveryAgent->supportedDiscoveryMethods() ) ); + CoreUtils::log( QStringLiteral( "Bluetooth discovery" ), QStringLiteral( "Started discovering devices, method %1" ).arg( static_cast( mDiscoveryAgent->supportedDiscoveryMethods() ) ) ); } else { From 66dc38c504786898943c68bf70165dcec33540c8 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 5 May 2026 16:18:01 +0200 Subject: [PATCH 03/61] Update QGIS to 3.44.10 --- app/guidelinecontroller.cpp | 6 +- app/maptools/recordingmaptool.cpp | 4 +- .../tracking/positiontrackingmanager.cpp | 4 +- app/projectwizard.cpp | 2 +- app/test/testmaptools.cpp | 10 +- vcpkg/ports/qgis/cmakelists.patch | 28 +-- vcpkg/ports/qgis/fix-ogr-typedef.patch | 13 -- vcpkg/ports/qgis/fix-qt-6-10.patch | 12 -- vcpkg/ports/qgis/point-cloud-guard.patch | 198 ++++++++++++++++++ vcpkg/ports/qgis/portfile.cmake | 43 ++-- .../qgis/protobuf-qbytearray-ambiguity.patch | 19 -- vcpkg/ports/qgis/qflags-qstring-arg.patch | 61 ++++++ vcpkg/ports/qgis/qgis4_url_encoding.patch | 70 +++---- vcpkg/ports/qgis/vcpkg.json | 2 +- 14 files changed, 337 insertions(+), 135 deletions(-) delete mode 100644 vcpkg/ports/qgis/fix-ogr-typedef.patch delete mode 100644 vcpkg/ports/qgis/fix-qt-6-10.patch create mode 100644 vcpkg/ports/qgis/point-cloud-guard.patch delete mode 100644 vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch create mode 100644 vcpkg/ports/qgis/qflags-qstring-arg.patch diff --git a/app/guidelinecontroller.cpp b/app/guidelinecontroller.cpp index e683f752a..ce9151ebe 100644 --- a/app/guidelinecontroller.cpp +++ b/app/guidelinecontroller.cpp @@ -128,16 +128,16 @@ void GuidelineController::buildGuideline() { // we are adding new point to the end/beginning QgsGeometry guideline; - QgsLineString *line; + const QgsLineString *line; if ( mRealGeometry.isMultipart() ) { - QgsMultiLineString *multiLine = qgsgeometry_cast( mRealGeometry.constGet() ); + const QgsMultiLineString *multiLine = qgsgeometry_cast( mRealGeometry.constGet() ); line = multiLine->lineStringN( mActivePart ); } else { - line = qgsgeometry_cast( mRealGeometry.constGet() ); + line = qgsgeometry_cast( mRealGeometry.constGet() ); } if ( !line ) diff --git a/app/maptools/recordingmaptool.cpp b/app/maptools/recordingmaptool.cpp index d4e98e9bb..289d755ef 100644 --- a/app/maptools/recordingmaptool.cpp +++ b/app/maptools/recordingmaptool.cpp @@ -137,12 +137,12 @@ void RecordingMapTool::addPoint( const QgsPoint &point ) if ( mActiveRing == 0 ) { - r = qgsgeometry_cast( poly->exteriorRing() ); + r = qgsgeometry_cast( poly->exteriorRing()->clone() ); } else { // interior rings starts indexing from 0 - r = qgsgeometry_cast( poly->interiorRing( mActiveRing - 1 ) ); + r = qgsgeometry_cast( poly->interiorRing( mActiveRing - 1 )->clone() ); } if ( !r ) diff --git a/app/position/tracking/positiontrackingmanager.cpp b/app/position/tracking/positiontrackingmanager.cpp index 39d47104f..131e5baf2 100644 --- a/app/position/tracking/positiontrackingmanager.cpp +++ b/app/position/tracking/positiontrackingmanager.cpp @@ -48,8 +48,8 @@ void PositionTrackingManager::addPoint( const QgsPoint &position ) void PositionTrackingManager::addPoints( const QList &positions ) { // get points from the previous geometry - QgsLineString *oldLine = nullptr; - oldLine = qgsgeometry_cast( mTrackedGeometry.constGet() ); + const QgsLineString *oldLine = nullptr; + oldLine = qgsgeometry_cast( mTrackedGeometry.constGet() ); if ( !oldLine ) { diff --git a/app/projectwizard.cpp b/app/projectwizard.cpp index 41310a972..6bf680a5e 100644 --- a/app/projectwizard.cpp +++ b/app/projectwizard.cpp @@ -146,7 +146,7 @@ QgsVectorLayer *ProjectWizard::createTrackingLayer( const QString &trackingGpkgP symbolProps["line_width_unit"] = "MM"; symbolProps["line_color"] = QgsSymbolLayerUtils::encodeColor( QColor( "#FFA500" ) ); - layer->setRenderer( new QgsSingleSymbolRenderer( QgsLineSymbol::createSimple( symbolProps ) ) ); + layer->setRenderer( new QgsSingleSymbolRenderer( QgsLineSymbol::createSimple( symbolProps ).release() ) ); layer->setReadOnly( false ); layer->setFlags( QgsMapLayer::Identifiable | QgsMapLayer::Searchable | QgsMapLayer::Removable ); diff --git a/app/test/testmaptools.cpp b/app/test/testmaptools.cpp index d714938a4..0afccd79f 100644 --- a/app/test/testmaptools.cpp +++ b/app/test/testmaptools.cpp @@ -2267,9 +2267,9 @@ void TestMapTools::testVerticesStructure() // We want to test case when last part is a line, not polygon. // As QGIS automatically close unclosed rings we need to alter geometry // manually and remove one point from the exterior ring of the part 3. - QgsMultiPolygon *multiPolygon = qgsgeometry_cast( multipolygonringsdataGEO.constGet() ); - QgsPolygon *poly = multiPolygon->polygonN( 2 ); - QgsLineString *ring = qgsgeometry_cast( poly->exteriorRing() ); + const QgsMultiPolygon *multiPolygon = qgsgeometry_cast( multipolygonringsdataGEO.constGet() ); + const QgsPolygon *poly = multiPolygon->polygonN( 2 ); + QgsLineString *ring = qgsgeometry_cast( poly->exteriorRing()->clone() ); QgsPointSequence points; ring->points( points ); points.removeLast(); @@ -2409,9 +2409,9 @@ void TestMapTools::testVerticesStructure() QgsGeometry multipolygoninvaliddataGEO = QgsGeometry::fromMultiPolygonXY( multipolygoninvaliddata ); // We want to test case when 2nd part is a line, not polygon. // As QGIS automatically close unclosed rings we need to alter geometry - multiPolygon = qgsgeometry_cast( multipolygoninvaliddataGEO.constGet() ); + multiPolygon = qgsgeometry_cast( multipolygoninvaliddataGEO.constGet() ); poly = multiPolygon->polygonN( 1 ); - ring = qgsgeometry_cast( poly->exteriorRing() ); + ring = qgsgeometry_cast( poly->exteriorRing()->clone() ); ring->points( points ); points.removeLast(); ring->setPoints( points ); diff --git a/vcpkg/ports/qgis/cmakelists.patch b/vcpkg/ports/qgis/cmakelists.patch index d2b22c7d2..25dd70301 100644 --- a/vcpkg/ports/qgis/cmakelists.patch +++ b/vcpkg/ports/qgis/cmakelists.patch @@ -1,39 +1,41 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 8dedb77f592..9f7ebbde85d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -387,6 +387,7 @@ if(WITH_CORE) +@@ -449,6 +449,7 @@ if(WITH_CORE) message(STATUS "Found Geos: ${GEOS_VERSION} ${GEOS_DIR}") find_package(GDAL REQUIRED) message(STATUS "Found GDAL: ${GDAL_VERSION} ${GDAL_DIR}") + set(GDAL_LIBRARY ${GDAL_LIBRARIES}) find_package(EXPAT REQUIRED) - find_package(Spatialindex REQUIRED) - find_package(LibZip REQUIRED) -@@ -409,7 +410,8 @@ if(WITH_CORE) + set (WITH_INTERNAL_SPATIALINDEX FALSE CACHE BOOL "Determines whether spatialindex should be built from internal copy") + IF(WITH_INTERNAL_SPATIALINDEX) +@@ -480,7 +481,8 @@ if(WITH_CORE) find_package(ZLIB REQUIRED) # for decompression of vector tiles in MBTiles file message(STATUS "Found zlib: ${ZLIB_LIBRARIES}") - + - find_package(EXIV2 REQUIRED) + find_package(exiv2 REQUIRED) + set(EXIV2_LIBRARY exiv2lib) - + # optional if (WITH_POSTGRESQL) -@@ -604,6 +606,10 @@ if(WITH_CORE) +@@ -675,6 +677,10 @@ if(WITH_CORE) else() find_package(Qt5Keychain CONFIG REQUIRED) endif() + set(QTKEYCHAIN_INCLUDE_DIR ${QTKEYCHAIN_INCLUDE_DIRS}/qt6keychain) + set(QTKEYCHAIN_LIBRARY ${QTKEYCHAIN_LIBRARIES}) -+ set(QTKEYCHAIN_FOUND ${Qt6Keychain_FOUND}) -+ ++ set(QTKEYCHAIN_FOUND ${Qt6Keychain_FOUND}) ++ # Master password hash and authentication encryption find_package(QCA REQUIRED) # Check for runtime dependency of qca-ossl plugin -@@ -818,6 +824,7 @@ endif() - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") +@@ -886,6 +892,7 @@ if(MSVC) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:8388608") # disable macros that offend std::numeric_limits::min()/max() add_definitions(-DNOMINMAX) + add_definitions(/bigobj) endif() - - # Prevent build when Qt api deprecated before this Qt version is used: + + if(BUILD_WITH_QT6) diff --git a/vcpkg/ports/qgis/fix-ogr-typedef.patch b/vcpkg/ports/qgis/fix-ogr-typedef.patch deleted file mode 100644 index 46bbca437..000000000 --- a/vcpkg/ports/qgis/fix-ogr-typedef.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/core/proj/qgscoordinatereferencesystem.h b/src/core/proj/qgscoordinatereferencesystem.h -index 1234567..abcdefg 100644 ---- a/src/core/proj/qgscoordinatereferencesystem.h -+++ b/src/core/proj/qgscoordinatereferencesystem.h -@@ -60,7 +60,7 @@ - // forward declaration for sqlite3 - typedef struct sqlite3 sqlite3 SIP_SKIP; - --#ifdef DEBUG -+#if defined(DEBUG) || defined(GDAL_DEBUG) - typedef struct OGRSpatialReferenceHS *OGRSpatialReferenceH SIP_SKIP; - #else - typedef void *OGRSpatialReferenceH SIP_SKIP; diff --git a/vcpkg/ports/qgis/fix-qt-6-10.patch b/vcpkg/ports/qgis/fix-qt-6-10.patch deleted file mode 100644 index 16073d531..000000000 --- a/vcpkg/ports/qgis/fix-qt-6-10.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/src/core/tiledscene/qgsgltfutils.cpp b/src/core/tiledscene/qgsgltfutils.cpp -index 2e2197a427f..618d89c22ae 100644 ---- a/src/core/tiledscene/qgsgltfutils.cpp -+++ b/src/core/tiledscene/qgsgltfutils.cpp -@@ -23,6 +23,7 @@ - - #include - #include -+#include - #include - - #define TINYGLTF_IMPLEMENTATION // should be defined just in one CPP file diff --git a/vcpkg/ports/qgis/point-cloud-guard.patch b/vcpkg/ports/qgis/point-cloud-guard.patch new file mode 100644 index 000000000..2f4e37980 --- /dev/null +++ b/vcpkg/ports/qgis/point-cloud-guard.patch @@ -0,0 +1,198 @@ +diff --git a/src/core/pointcloud/qgspointcloudeditingindex.cpp b/src/core/pointcloud/qgspointcloudeditingindex.cpp +index 40aecdc9a1f..76280678ba0 100644 +--- a/src/core/pointcloud/qgspointcloudeditingindex.cpp ++++ b/src/core/pointcloud/qgspointcloudeditingindex.cpp +@@ -118,8 +118,11 @@ std::unique_ptr< QgsPointCloudBlock > QgsPointCloudEditingIndex::nodeData( const + QgsCopcPointCloudIndex *copcIndex = static_cast( mIndex.get() ); + + int pointCount = copcIndex->mHierarchy.value( n ); +- ++#if WITH_EPT || WITH_COPC + return QgsLazDecoder::decompressCopc( rawBlockData, *copcIndex->mLazInfo.get(), pointCount, requestAttributes, filterExpression, filterRect ); ++#else ++ return {}; ++#endif + } + else + { +@@ -172,6 +175,7 @@ bool QgsPointCloudEditingIndex::commitChanges( QString *errorMessage ) + QFileInfo fileInfo( mUri ); + const QString outputFilename = fileInfo.dir().filePath( fileInfo.baseName() + QStringLiteral( "-update.copc.laz" ) ); + ++#if WITH_EPT || WITH_COPC + if ( !QgsCopcUpdate::writeUpdatedFile( mUri, outputFilename, updatedChunks, errorMessage ) ) + { + return false; +@@ -180,6 +184,7 @@ bool QgsPointCloudEditingIndex::commitChanges( QString *errorMessage ) + // reset the underlying index - we will reload it at the end + QgsCopcPointCloudIndex *copcIndex = static_cast( mIndex.get() ); + copcIndex->reset(); ++#endif + + const QString originalFilename = fileInfo.dir().filePath( fileInfo.baseName() + QStringLiteral( "-original.copc.laz" ) ); + if ( !QFile::rename( mUri, originalFilename ) ) +@@ -209,8 +214,10 @@ bool QgsPointCloudEditingIndex::commitChanges( QString *errorMessage ) + + mEditedNodeData.clear(); + ++#if WITH_EPT || WITH_COPC + // now let's reload + copcIndex->load( mUri ); ++#endif + + return true; + } +diff --git a/src/core/pointcloud/qgspointcloudlayer.cpp b/src/core/pointcloud/qgspointcloudlayer.cpp +index d7147110757..9c58ccf9f20 100644 +--- a/src/core/pointcloud/qgspointcloudlayer.cpp ++++ b/src/core/pointcloud/qgspointcloudlayer.cpp +@@ -45,7 +45,9 @@ + #include "qgsthreadingutils.h" + #include "qgspointcloudlayerprofilegenerator.h" + #include "qgspointcloudlayerundocommand.h" ++#if WITH_EPT || WITH_COPC + #include "qgsvirtualpointcloudprovider.h" ++#endif + + + #include +@@ -960,6 +962,7 @@ void QgsPointCloudLayer::loadIndexesForRenderContext( QgsRenderContext &renderer + } + + const QVector subIndex = mDataProvider->subIndexes(); ++#if WITH_EPT || WITH_COPC + if ( const QgsVirtualPointCloudProvider *vpcProvider = dynamic_cast( mDataProvider.get() ) ) + { + for ( int i = 0; i < subIndex.size(); ++i ) +@@ -976,6 +979,7 @@ void QgsPointCloudLayer::loadIndexesForRenderContext( QgsRenderContext &renderer + } + } + } ++#endif + } + } + +diff --git a/src/core/pointcloud/qgspointcloudlayereditutils.cpp b/src/core/pointcloud/qgspointcloudlayereditutils.cpp +index 94704bb5351..f29b9dedace 100644 +--- a/src/core/pointcloud/qgspointcloudlayereditutils.cpp ++++ b/src/core/pointcloud/qgspointcloudlayereditutils.cpp +@@ -19,9 +19,10 @@ + #include "qgscopcpointcloudindex.h" + #include + ++#if WITH_EPT || WITH_COPC + #include + #include +- ++#endif + + static void updatePoint( char *pointBuffer, int pointFormat, const QString &attributeName, double newValue ) + { +@@ -141,6 +142,7 @@ QByteArray QgsPointCloudLayerEditUtils::updateChunkValues( QgsCopcPointCloudInde + pointCount = copcIndex->mHierarchy[n]; + } + ++#if WITH_EPT || WITH_COPC + lazperf::header14 header = copcIndex->mLazInfo->header(); + + lazperf::reader::chunk_decompressor decompressor( header.pointFormat(), header.ebCount(), chunkData.constData() ); +@@ -169,6 +171,9 @@ QByteArray QgsPointCloudLayerEditUtils::updateChunkValues( QgsCopcPointCloudInde + + std::vector data = compressor.done(); + return QByteArray( ( const char * ) data.data(), ( int ) data.size() ); // QByteArray makes a deep copy ++#else ++ return {}; ++#endif + } + + bool QgsPointCloudLayerEditUtils::isAttributeValueValid( const QgsPointCloudAttribute &attribute, double value ) +diff --git a/src/core/pointcloud/qgspointcloudlayerelevationproperties.cpp b/src/core/pointcloud/qgspointcloudlayerelevationproperties.cpp +index de43f05bebd..64580b10524 100644 +--- a/src/core/pointcloud/qgspointcloudlayerelevationproperties.cpp ++++ b/src/core/pointcloud/qgspointcloudlayerelevationproperties.cpp +@@ -21,7 +21,9 @@ + #include "qgsapplication.h" + #include "qgscolorschemeregistry.h" + #include "qgscolorutils.h" ++#if WITH_EPT || WITH_COPC + #include "qgsvirtualpointcloudprovider.h" ++#endif + + QgsPointCloudLayerElevationProperties::QgsPointCloudLayerElevationProperties( QObject *parent ) + : QgsMapLayerElevationProperties( parent ) +@@ -138,6 +140,7 @@ QgsDoubleRange QgsPointCloudLayerElevationProperties::calculateZRange( QgsMapLay + zMax = stats.maximum( QStringLiteral( "Z" ) ); + } + // try to fetch the elevation properties from virtual point cloud metadata ++#if WITH_EPT || WITH_COPC + else if ( QgsVirtualPointCloudProvider *virtualProvider = dynamic_cast< QgsVirtualPointCloudProvider * >( pcLayer->dataProvider() ) ) + { + for ( QgsPointCloudSubIndex subIndex : virtualProvider->subIndexes() ) +@@ -148,6 +151,7 @@ QgsDoubleRange QgsPointCloudLayerElevationProperties::calculateZRange( QgsMapLay + zMax = std::isnan( zMax ) ? newRange.upper() : std::max( zMax, newRange.upper() ); + } + } ++#endif + + if ( !std::isnan( zMin ) && !std::isnan( zMax ) ) + { +diff --git a/src/core/pointcloud/qgspointcloudlayerrenderer.cpp b/src/core/pointcloud/qgspointcloudlayerrenderer.cpp +index ac38367f6de..f0426ce9bc8 100644 +--- a/src/core/pointcloud/qgspointcloudlayerrenderer.cpp ++++ b/src/core/pointcloud/qgspointcloudlayerrenderer.cpp +@@ -36,7 +36,9 @@ + #include "qgspointcloudrequest.h" + #include "qgsrendercontext.h" + #include "qgsruntimeprofiler.h" ++#if WITH_EPT || WITH_COPC + #include "qgsvirtualpointcloudprovider.h" ++#endif + + #include + +@@ -77,6 +79,7 @@ QgsPointCloudLayerRenderer::QgsPointCloudLayerRenderer( QgsPointCloudLayer *laye + mZScale = elevationProps->zScale(); + } + ++ #if WITH_EPT || WITH_COPC + if ( const QgsVirtualPointCloudProvider *vpcProvider = dynamic_cast( layer->dataProvider() ) ) + { + mIsVpc = true; +@@ -84,6 +87,7 @@ QgsPointCloudLayerRenderer::QgsPointCloudLayerRenderer( QgsPointCloudLayer *laye + mAverageSubIndexHeight = vpcProvider->averageSubIndexHeight(); + mOverviewIndex = vpcProvider->overview(); + } ++ #endif + + mCloudExtent = layer->dataProvider()->polygonBounds(); + +diff --git a/src/core/pointcloud/qgspointcloudlayerundocommand.cpp b/src/core/pointcloud/qgspointcloudlayerundocommand.cpp +index 816ebb4564b..b5652c751ea 100644 +--- a/src/core/pointcloud/qgspointcloudlayerundocommand.cpp ++++ b/src/core/pointcloud/qgspointcloudlayerundocommand.cpp +@@ -100,6 +100,7 @@ void QgsPointCloudLayerUndoCommandChangeAttribute::redo() + + void QgsPointCloudLayerUndoCommandChangeAttribute::undoRedoPrivate( bool isUndo ) + { ++#if WITH_EPT || WITH_COPC + QgsEventTracing::ScopedEvent _trace( QStringLiteral( "PointCloud" ), QStringLiteral( "QgsPointCloudLayerUndoCommand::undoRedoPrivate" ) ); + QgsPointCloudEditingIndex *editIndex = dynamic_cast( mLayer->index().get() ); + QgsCopcPointCloudIndex *copcIndex = dynamic_cast( editIndex->backingIndex().get() ); +@@ -141,4 +142,5 @@ void QgsPointCloudLayerUndoCommandChangeAttribute::undoRedoPrivate( bool isUndo + { + emit mLayer->chunkAttributeValuesChanged( it.key() ); + } ++#endif + } +diff --git a/src/core/pointcloud/qgspointcloudrenderer.cpp b/src/core/pointcloud/qgspointcloudrenderer.cpp +index c27e90b0a77..0db83906c63 100644 +--- a/src/core/pointcloud/qgspointcloudrenderer.cpp ++++ b/src/core/pointcloud/qgspointcloudrenderer.cpp +@@ -25,7 +25,6 @@ + #include "qgslogger.h" + #include "qgscircle.h" + #include "qgsunittypes.h" +-#include "qgsvirtualpointcloudprovider.h" + + #include + #include diff --git a/vcpkg/ports/qgis/portfile.cmake b/vcpkg/ports/qgis/portfile.cmake index de41a8d1e..d98e62100 100644 --- a/vcpkg/ports/qgis/portfile.cmake +++ b/vcpkg/ports/qgis/portfile.cmake @@ -1,6 +1,6 @@ -set(QGIS_REF 55d788f1f80183bd52fd8045c1fbed5e6260f194) # final-3_40_4 +set(QGIS_REF 565fe70bd9e0b3f95e89bffbfbed33a97b71edce) # final-3_44_10 set(QGIS_SHA512 - 6eb3e2259fda72f7e2e8203d951b891963d52d47128793af02dfa989a467ba5524ab7a1019b4cf4acfd9e70c21635bd7b8577dc452d5cf7b98fcf7ce03d97b9f + 3bc4908c04a54be29829f052d09e4b16ca31d469f205ab96514b57024ebdce69bdb669438fd141bb1112b03e6f70291ae253635e282df0434560f2217e5008c6 ) vcpkg_from_github( @@ -18,10 +18,9 @@ vcpkg_from_github( libxml2.patch qgis4-project-properties.patch qgis4_url_encoding.patch - fix-qt-6-10.patch snapping-casting.patch - protobuf-qbytearray-ambiguity.patch - fix-ogr-typedef.patch + qflags-qstring-arg.patch + point-cloud-guard.patch ) file(REMOVE ${SOURCE_PATH}/cmake/FindQtKeychain.cmake) @@ -40,39 +39,27 @@ vcpkg_add_to_path(${PYTHON3_PATH}/Scripts) set(PYTHON_EXECUTABLE ${PYTHON3}) list(APPEND QGIS_OPTIONS -DFORCE_STATIC_LIBS:BOOL=ON) -list(APPEND QGIS_OPTIONS -DWITH_SPATIALITE:BOOL=ON) list(APPEND QGIS_OPTIONS -DBUILD_WITH_QT6:BOOL=ON) list(APPEND QGIS_OPTIONS -DENABLE_TESTS:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_QTWEBKIT:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_GRASS7:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_QSPATIALITE:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DWITH_GRASS8:BOOL=OFF) list(APPEND QGIS_OPTIONS -DUSE_OPENCL:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_BINDINGS:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_GUI:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_DESKTOP:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_CUSTOM_WIDGETS:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_SERVER_PLUGINS:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_SERVER:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_QGIS_PROCESS:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_PDAL:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_EPT:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_3D:BOOL=OFF) list(APPEND QGIS_OPTIONS -DWITH_DRACO:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_COPC=OFF) -list(APPEND QGIS_OPTIONS -DWITH_ANALYSIS=OFF) -list(APPEND QGIS_OPTIONS -DWITH_GRASS=OFF) -list(APPEND QGIS_OPTIONS -DWITH_GEOREFERENCER:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DWITH_QTMOBILITY:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DENABLE_TESTS=OFF) -list(APPEND QGIS_OPTIONS -DWITH_QWTPOLAR=OFF) -list(APPEND QGIS_OPTIONS -DWITH_GUI=OFF) -list(APPEND QGIS_OPTIONS -DWITH_APIDOC=OFF) -list(APPEND QGIS_OPTIONS -DWITH_ASTYLE=OFF) -list(APPEND QGIS_OPTIONS -DWITH_QT5SERIALPORT=OFF) -list(APPEND QGIS_OPTIONS -DWITH_QUICK:BOOL=OFF) -list(APPEND QGIS_OPTIONS -DQGIS_MACAPP_FRAMEWORK=FALSE) -list(APPEND QGIS_OPTIONS -DWITH_QTSERIALPORT=FALSE) +list(APPEND QGIS_OPTIONS -DWITH_COPC:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DWITH_PDAL:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DWITH_EPT:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DWITH_ANALYSIS:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DWITH_GUI:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DQGIS_MACAPP_FRAMEWORK:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DWITH_QTSERIALPORT:BOOL=OFF) +list(APPEND QGIS_OPTIONS -DWITH_INTERNAL_POLY2TRI:BOOL=OFF) # Configure debug and release library paths macro ( @@ -226,8 +213,6 @@ if (VCPKG_TARGET_IS_WINDOWS) ) endif () -list(APPEND QGIS_OPTIONS "-DWITH_INTERNAL_POLY2TRI:BOOL=OFF") - if (VCPKG_CROSSCOMPILING) list(APPEND QGIS_OPTIONS -DQT_HOST_PATH=${CURRENT_HOST_INSTALLED_DIR}) list(APPEND QGIS_OPTIONS @@ -411,7 +396,7 @@ if (QGIS_CMAKE_PATH_DEBUG) endif () file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) -file(REMOVE_RECURSE # Added for debug porpose +file(REMOVE_RECURSE # Added for debug purpose ${CURRENT_PACKAGES_DIR}/debug/share ) diff --git a/vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch b/vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch deleted file mode 100644 index e0ab0300b..000000000 --- a/vcpkg/ports/qgis/protobuf-qbytearray-ambiguity.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/src/core/vectortile/qgsvectortilemvtencoder.cpp b/src/core/vectortile/qgsvectortilemvtencoder.cpp -index 1234567..abcdefg 100644 ---- a/src/core/vectortile/qgsvectortilemvtencoder.cpp -+++ b/src/core/vectortile/qgsvectortilemvtencoder.cpp -@@ -203,12 +203,12 @@ void QgsVectorTileMVTEncoder::addLayer( QgsVectorLayer *layer, QgsFeedback *feed - - vector_tile::Tile_Layer *tileLayer = tile.add_layers(); -- tileLayer->set_name( layerName.toUtf8() ); -+ tileLayer->set_name( layerName.toUtf8().toStdString() ); - tileLayer->set_version( 2 ); // 2 means MVT spec version 2.1 - tileLayer->set_extent( static_cast<::google::protobuf::uint32>( mResolution ) ); - - const QgsFields fields = layer->fields(); - for ( int i = 0; i < fields.count(); ++i ) - { -- tileLayer->add_keys( fields[i].name().toUtf8() ); -+ tileLayer->add_keys( fields[i].name().toUtf8().toStdString() ); - } - diff --git a/vcpkg/ports/qgis/qflags-qstring-arg.patch b/vcpkg/ports/qgis/qflags-qstring-arg.patch new file mode 100644 index 000000000..253eb5e24 --- /dev/null +++ b/vcpkg/ports/qgis/qflags-qstring-arg.patch @@ -0,0 +1,61 @@ +diff --git a/src/core/providers/gdal/qgsgdalprovider.cpp b/src/core/providers/gdal/qgsgdalprovider.cpp +index 9078011d516..fb5f4bdd5ff 100644 +--- a/src/core/providers/gdal/qgsgdalprovider.cpp ++++ b/src/core/providers/gdal/qgsgdalprovider.cpp +@@ -3166,7 +3166,7 @@ QgsRasterBandStats QgsGdalProvider::bandStatistics( int bandNo, Qgis::RasterBand + | Qgis::RasterBandStatistic::Range | Qgis::RasterBandStatistic::Mean + | Qgis::RasterBandStatistic::StdDev; + +- QgsDebugMsgLevel( QStringLiteral( "theStats = %1 supportedStats = %2" ).arg( stats, 0, 2 ).arg( supportedStats, 0, 2 ), 2 ); ++ QgsDebugMsgLevel( QStringLiteral( "theStats = %1 supportedStats = %2" ).arg( static_cast( stats ), 0, 2 ).arg( static_cast( supportedStats ), 0, 2 ), 2 ); + + if ( myRasterBandStats.extent != extent() || + ( stats & ( ~supportedStats ) ) ) +diff --git a/src/core/raster/qgsrasterinterface.cpp b/src/core/raster/qgsrasterinterface.cpp +index bbd88574da0..942ea6c444e 100644 +--- a/src/core/raster/qgsrasterinterface.cpp ++++ b/src/core/raster/qgsrasterinterface.cpp +@@ -101,7 +101,7 @@ bool QgsRasterInterface::hasStatistics( int bandNo, + const QgsRectangle &extent, + int sampleSize ) + { +- QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( stats ).arg( sampleSize ), 4 ); ++ QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( static_cast( stats ) ).arg( sampleSize ), 4 ); + if ( mStatistics.isEmpty() ) return false; + + QgsRasterBandStats myRasterBandStats; +@@ -124,7 +124,7 @@ QgsRasterBandStats QgsRasterInterface::bandStatistics( int bandNo, + const QgsRectangle &extent, + int sampleSize, QgsRasterBlockFeedback *feedback ) + { +- QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( stats ).arg( sampleSize ), 4 ); ++ QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( static_cast( stats ) ).arg( sampleSize ), 4 ); + + // TODO: null values set on raster layer!!! + +diff --git a/src/providers/wms/qgswmsprovider.cpp b/src/providers/wms/qgswmsprovider.cpp +index 4e7ba49ba19..7b5d7b1f327 100644 +--- a/src/providers/wms/qgswmsprovider.cpp ++++ b/src/providers/wms/qgswmsprovider.cpp +@@ -2351,7 +2351,7 @@ Qgis::RasterInterfaceCapabilities QgsWmsProvider::capabilities() const + capability |= Qgis::RasterInterfaceCapability::Prefetch; + } + +- QgsDebugMsgLevel( QStringLiteral( "capability = %1" ).arg( capability ), 2 ); ++ QgsDebugMsgLevel( QStringLiteral( "capability = %1" ).arg( static_cast( capability ) ), 2 ); + return capability; + } + +diff --git a/tests/bench/main.cpp b/tests/bench/main.cpp +index 3c085cbefd6..2f329d60984 100644 +--- a/tests/bench/main.cpp ++++ b/tests/bench/main.cpp +@@ -503,7 +503,7 @@ int main( int argc, char *argv[] ) + return 1; + } + } +- QgsDebugMsgLevel( QStringLiteral( "hints: %1" ).arg( hints ), 1 ); ++ QgsDebugMsgLevel( QStringLiteral( "hints: %1" ).arg( static_cast( hints ) ), 1 ); + qbench->setRenderHints( hints ); + } + diff --git a/vcpkg/ports/qgis/qgis4_url_encoding.patch b/vcpkg/ports/qgis/qgis4_url_encoding.patch index 6d1854015..40534a0b8 100644 --- a/vcpkg/ports/qgis/qgis4_url_encoding.patch +++ b/vcpkg/ports/qgis/qgis4_url_encoding.patch @@ -423,12 +423,12 @@ index e539eb0be69..d73454fa428 100644 diff --git a/tests/src/core/testqgsvectortilelayer.cpp b/tests/src/core/testqgsvectortilelayer.cpp -index 4a5f82f0b0d..99c0b503c30 100644 +index abbca2a1aed..450cc5c2eb0 100644 --- a/tests/src/core/testqgsvectortilelayer.cpp +++ b/tests/src/core/testqgsvectortilelayer.cpp -@@ -256,11 +256,12 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() +@@ -260,11 +260,12 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() QCOMPARE( vectorTileMetadata->validLayerTypesForUri( QStringLiteral( "type=mbtiles&url=%1/vector_tile/mbtiles_vt.mbtiles" ).arg( TEST_DATA_DIR ) ), { Qgis::LayerType::VectorTile } ); - + // query sublayers + QString localMbtilesPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/vector_tile/mbtiles_vt.mbtiles" ) ) ); QList sublayers = vectorTileMetadata->querySublayers( QStringLiteral( "%1/vector_tile/mbtiles_vt.mbtiles" ).arg( TEST_DATA_DIR ) ); @@ -440,7 +440,7 @@ index 4a5f82f0b0d..99c0b503c30 100644 QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( !sublayers.at( 0 ).skippedContainerScan() ); QVERIFY( !QgsProviderUtils::sublayerDetailsAreIncomplete( sublayers ) ); -@@ -269,7 +270,7 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() +@@ -273,7 +274,7 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() QCOMPARE( sublayers.size(), 1 ); QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "mbtilesvectortiles" ) ); QCOMPARE( sublayers.at( 0 ).name(), QStringLiteral( "mbtiles_vt" ) ); @@ -448,8 +448,8 @@ index 4a5f82f0b0d..99c0b503c30 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=mbtiles&url=%1" ).arg( localMbtilesPath ) ); QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( !sublayers.at( 0 ).skippedContainerScan() ); - -@@ -278,7 +279,7 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() + +@@ -282,7 +283,7 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() QCOMPARE( sublayers.size(), 1 ); QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "mbtilesvectortiles" ) ); QCOMPARE( sublayers.at( 0 ).name(), QStringLiteral( "mbtiles_vt" ) ); @@ -458,7 +458,7 @@ index 4a5f82f0b0d..99c0b503c30 100644 QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( sublayers.at( 0 ).skippedContainerScan() ); QVERIFY( QgsProviderUtils::sublayerDetailsAreIncomplete( sublayers ) ); -@@ -287,17 +288,19 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() +@@ -291,17 +292,19 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() QCOMPARE( sublayers.size(), 1 ); QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "mbtilesvectortiles" ) ); QCOMPARE( sublayers.at( 0 ).name(), QStringLiteral( "mbtiles_vt" ) ); @@ -466,7 +466,7 @@ index 4a5f82f0b0d..99c0b503c30 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=mbtiles&url=%1" ).arg( localMbtilesPath ) ); QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( sublayers.at( 0 ).skippedContainerScan() ); - + // fast scan mode means that any mbtile file will be reported, including those with only raster tiles // (we are skipping a potentially expensive db open and format check) + QString localIsleOfManPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/isle_of_man.mbtiles" ) ) ); @@ -479,48 +479,48 @@ index 4a5f82f0b0d..99c0b503c30 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=mbtiles&url=%1" ).arg( localIsleOfManPath ) ); QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( sublayers.at( 0 ).skippedContainerScan() ); - -@@ -328,8 +331,9 @@ void TestQgsVectorTileLayer::test_relativePathsMbTiles() + +@@ -332,8 +335,9 @@ void TestQgsVectorTileLayer::test_relativePathsMbTiles() QgsReadWriteContext contextRel; contextRel.setPathResolver( QgsPathResolver( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/project.qgs" ) ) ); const QgsReadWriteContext contextAbs; + QString localMbtilesPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/vector_tile/mbtiles_vt.mbtiles" ) ) ); - + - const QString srcMbtiles = QStringLiteral( "type=mbtiles&url=%1/vector_tile/mbtiles_vt.mbtiles" ).arg( TEST_DATA_DIR ); + const QString srcMbtiles = QStringLiteral( "type=mbtiles&url=%1" ).arg( localMbtilesPath ); - - std::unique_ptr layer = std::make_unique( srcMbtiles ); + + auto layer = std::make_unique( srcMbtiles ); QVERIFY( layer->isValid() ); -@@ -337,7 +341,7 @@ void TestQgsVectorTileLayer::test_relativePathsMbTiles() - +@@ -341,7 +345,7 @@ void TestQgsVectorTileLayer::test_relativePathsMbTiles() + // encode source: converting absolute paths to relative const QString srcMbtilesRel = layer->encodedSource( srcMbtiles, contextRel ); - QCOMPARE( srcMbtilesRel, QStringLiteral( "type=mbtiles&url=./vector_tile/mbtiles_vt.mbtiles" ) ); + QCOMPARE( srcMbtilesRel, QStringLiteral( "type=mbtiles&url=.%2Fvector_tile%2Fmbtiles_vt.mbtiles" ) ); - + // encode source: keeping absolute paths QCOMPARE( layer->encodedSource( srcMbtiles, contextAbs ), srcMbtiles ); -@@ -377,15 +381,15 @@ void TestQgsVectorTileLayer::test_relativePathsXyz() +@@ -392,15 +396,15 @@ void TestQgsVectorTileLayer::test_relativePathsXyz() contextRel.setPathResolver( QgsPathResolver( "/home/qgis/project.qgs" ) ); const QgsReadWriteContext contextAbs; - + - const QString srcXyzLocal = "type=xyz&url=file:///home/qgis/%7Bz%7D/%7Bx%7D/%7By%7D.pbf"; - const QString srcXyzRemote = "type=xyz&url=http://www.example.com/%7Bz%7D/%7Bx%7D/%7By%7D.pbf"; + const QString srcXyzLocal = "type=xyz&url=file%3A%2F%2F%2Fhome%2Fqgis%2F%7Bz%7D%2F%7Bx%7D%2F%7By%7D.pbf"; + const QString srcXyzRemote = "type=xyz&url=http%3A%2F%2Fwww.example.com%2F%7Bz%7D%2F%7Bx%7D%2F%7By%7D.pbf"; - - std::unique_ptr layer = std::make_unique( srcXyzLocal ); + + auto layer = std::make_unique( srcXyzLocal ); QCOMPARE( layer->providerType(), QStringLiteral( "xyzvectortiles" ) ); - + // encode source: converting absolute paths to relative const QString srcXyzLocalRel = layer->encodedSource( srcXyzLocal, contextRel ); - QCOMPARE( srcXyzLocalRel, QStringLiteral( "type=xyz&url=file:./%7Bz%7D/%7Bx%7D/%7By%7D.pbf" ) ); + QCOMPARE( srcXyzLocalRel, QStringLiteral( "type=xyz&url=file%3A.%2F%7Bz%7D%2F%7Bx%7D%2F%7By%7D.pbf" ) ); QCOMPARE( layer->encodedSource( srcXyzRemote, contextRel ), srcXyzRemote ); - + // encode source: keeping absolute paths -@@ -421,7 +425,8 @@ void TestQgsVectorTileLayer::test_absoluteRelativeUriXyz() - +@@ -436,7 +440,8 @@ void TestQgsVectorTileLayer::test_absoluteRelativeUriXyz() + QString absoluteUri = dsAbs.encodedUri(); QString relativeUri = dsRel.encodedUri(); - QCOMPARE( vectorTileMetadata->absoluteToRelativeUri( absoluteUri, context ), relativeUri ); @@ -528,10 +528,10 @@ index 4a5f82f0b0d..99c0b503c30 100644 + QCOMPARE( absToRelUri, relativeUri ); QCOMPARE( vectorTileMetadata->relativeToAbsoluteUri( relativeUri, context ), absoluteUri ); } - -@@ -443,23 +448,23 @@ void TestQgsVectorTileLayer::testVtpkProviderMetadata() + +@@ -458,23 +463,23 @@ void TestQgsVectorTileLayer::testVtpkProviderMetadata() QVERIFY( vectorTileMetadata->querySublayers( QStringLiteral( "type=vtpk&url=%1/points.shp" ).arg( TEST_DATA_DIR ) ).isEmpty() ); - + // vtpk uris - QCOMPARE( vectorTileMetadata->priorityForUri( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/testvtpk.vtpk" ) ), 100 ); - QCOMPARE( vectorTileMetadata->validLayerTypesForUri( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/testvtpk.vtpk" ) ), { Qgis::LayerType::VectorTile } ); @@ -567,27 +567,27 @@ index 4a5f82f0b0d..99c0b503c30 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=vtpk&url=%1" ).arg( localVtpkPath ) ); + QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); + } - + // test that vtpk provider is the preferred provider for vtpk files QList candidates = QgsProviderRegistry::instance()->preferredProvidersForUri( QStringLiteral( "type=vtpk&url=%1/testvtpk.vtpk" ).arg( TEST_DATA_DIR ) ); -@@ -485,7 +490,9 @@ void TestQgsVectorTileLayer::test_relativePathsVtpk() +@@ -500,7 +505,9 @@ void TestQgsVectorTileLayer::test_relativePathsVtpk() contextRel.setPathResolver( QgsPathResolver( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/project.qgs" ) ) ); const QgsReadWriteContext contextAbs; - + - const QString srcVtpk = QStringLiteral( "type=vtpk&url=%1/testvtpk.vtpk" ).arg( TEST_DATA_DIR ); + QString localVtpkPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/testvtpk.vtpk" ) ) ); + + const QString srcVtpk = QStringLiteral( "type=vtpk&url=%1" ).arg( localVtpkPath ); - - std::unique_ptr layer = std::make_unique( srcVtpk ); + + auto layer = std::make_unique( srcVtpk ); QVERIFY( layer->isValid() ); -@@ -493,7 +500,7 @@ void TestQgsVectorTileLayer::test_relativePathsVtpk() - +@@ -508,7 +515,7 @@ void TestQgsVectorTileLayer::test_relativePathsVtpk() + // encode source: converting absolute paths to relative const QString srcVtpkRel = layer->encodedSource( srcVtpk, contextRel ); - QCOMPARE( srcVtpkRel, QStringLiteral( "type=vtpk&url=./testvtpk.vtpk" ) ); + QCOMPARE( srcVtpkRel, QStringLiteral( "type=vtpk&url=.%2Ftestvtpk.vtpk" ) ); - + // encode source: keeping absolute paths QCOMPARE( layer->encodedSource( srcVtpk, contextAbs ), srcVtpk ); diff --git a/tests/src/providers/testqgswmsprovider.cpp b/tests/src/providers/testqgswmsprovider.cpp diff --git a/vcpkg/ports/qgis/vcpkg.json b/vcpkg/ports/qgis/vcpkg.json index 0e065be7f..b1b482933 100644 --- a/vcpkg/ports/qgis/vcpkg.json +++ b/vcpkg/ports/qgis/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qgis", - "version": "3.40.4", + "version": "3.44.10", "port-version": 0, "homepage": "https://qgis.org", "description": "QGIS is a free, open source, cross platform (lin/win/mac) geographical information system (GIS)", From f17dd9458a9b60d881903851989a4b5f0942400c Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 5 May 2026 16:19:07 +0200 Subject: [PATCH 04/61] Format cmake files --- vcpkg/ports/libiconv/portfile.cmake | 120 ++- .../ports/libiconv/vcpkg-cmake-wrapper.cmake | 68 +- vcpkg/ports/libspatialindex/portfile.cmake | 36 +- .../qtbase/cmake/qt_install_submodule.cmake | 984 +++++++++++------- .../ports/qtbase/cmake/qt_port_details.cmake | 411 +++++--- vcpkg/ports/qtbase/port.data.cmake | 10 +- vcpkg/ports/qtdeclarative/port.data.cmake | 10 +- vcpkg/ports/qtmultimedia/port.data.cmake | 10 +- vcpkg/ports/qtmultimedia/portfile.cmake | 6 +- vcpkg/ports/qtpositioning/port.data.cmake | 10 +- vcpkg/ports/qtpositioning/portfile.cmake | 5 +- 11 files changed, 1010 insertions(+), 660 deletions(-) diff --git a/vcpkg/ports/libiconv/portfile.cmake b/vcpkg/ports/libiconv/portfile.cmake index 2ca99cff2..56ffff8bb 100644 --- a/vcpkg/ports/libiconv/portfile.cmake +++ b/vcpkg/ports/libiconv/portfile.cmake @@ -1,55 +1,68 @@ -if(NOT DEFINED X_VCPKG_BUILD_GNU_LIBICONV) - set(X_VCPKG_BUILD_GNU_LIBICONV 0) - if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_BSD) - set(X_VCPKG_BUILD_GNU_LIBICONV 1) - elseif(VCPKG_TARGET_IS_ANDROID) - vcpkg_cmake_get_vars(cmake_vars_file) - include("${cmake_vars_file}") - if(VCPKG_DETECTED_CMAKE_SYSTEM_VERSION VERSION_LESS "28") - set(X_VCPKG_BUILD_GNU_LIBICONV 1) - endif() - endif() -endif() +if (NOT DEFINED X_VCPKG_BUILD_GNU_LIBICONV) + set(X_VCPKG_BUILD_GNU_LIBICONV 0) + if (VCPKG_TARGET_IS_WINDOWS + OR VCPKG_TARGET_IS_IOS + OR VCPKG_TARGET_IS_BSD + ) + set(X_VCPKG_BUILD_GNU_LIBICONV 1) + elseif (VCPKG_TARGET_IS_ANDROID) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + if (VCPKG_DETECTED_CMAKE_SYSTEM_VERSION VERSION_LESS "28") + set(X_VCPKG_BUILD_GNU_LIBICONV 1) + endif () + endif () +endif () -if(NOT X_VCPKG_BUILD_GNU_LIBICONV) - message(STATUS "Not building GNU libiconv.") - set(VCPKG_POLICY_EMPTY_PACKAGE enabled) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/iconv") - file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv") - return() -endif() +if (NOT X_VCPKG_BUILD_GNU_LIBICONV) + message(STATUS "Not building GNU libiconv.") + set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/iconv") + file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv" + ) + return() +endif () -vcpkg_download_distfile(ARCHIVE - URLS "https://ftpmirror.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" - "https://ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" - "https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" - FILENAME "libiconv-${VERSION}.tar.gz" - SHA512 a55eb3b7b785a78ab8918db8af541c9e11deb5ff4f89d54483287711ed797d87848ce0eafffa7ce26d9a7adb4b5a9891cb484f94bd4f51d3ce97a6a47b4c719a +vcpkg_download_distfile( + ARCHIVE + URLS + "https://ftpmirror.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" + "https://ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" + "https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" + FILENAME + "libiconv-${VERSION}.tar.gz" + SHA512 + a55eb3b7b785a78ab8918db8af541c9e11deb5ff4f89d54483287711ed797d87848ce0eafffa7ce26d9a7adb4b5a9891cb484f94bd4f51d3ce97a6a47b4c719a ) -vcpkg_extract_source_archive(SOURCE_PATH - ARCHIVE "${ARCHIVE}" - SOURCE_BASE "v${VERSION}" - PATCHES - 0002-Config-for-MSVC.patch - 0003-Add-export.patch - 0004-ModuleFileName.patch - 0005-ios-cross-compile.patch +vcpkg_extract_source_archive( + SOURCE_PATH + ARCHIVE + "${ARCHIVE}" + SOURCE_BASE + "v${VERSION}" + PATCHES + 0002-Config-for-MSVC.patch + 0003-Add-export.patch + 0004-ModuleFileName.patch + 0005-ios-cross-compile.patch ) vcpkg_list(SET OPTIONS) if (NOT VCPKG_TARGET_IS_ANDROID) - vcpkg_list(APPEND OPTIONS --enable-relocatable) -endif() + vcpkg_list(APPEND OPTIONS --enable-relocatable) +endif () vcpkg_configure_make( - SOURCE_PATH "${SOURCE_PATH}" - DETERMINE_BUILD_TRIPLET - USE_WRAPPERS - OPTIONS - --enable-extra-encodings - --without-libiconv-prefix - --without-libintl-prefix - ${OPTIONS} + SOURCE_PATH + "${SOURCE_PATH}" + DETERMINE_BUILD_TRIPLET + USE_WRAPPERS + OPTIONS + --enable-extra-encodings + --without-libiconv-prefix + --without-libintl-prefix + ${OPTIONS} ) vcpkg_install_make() @@ -57,18 +70,29 @@ vcpkg_copy_pdbs() vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin") -file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv" +) set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}") # share contains unneeded doc files +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}") # share contains unneeded doc + # files # Please keep, the default usage is broken -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" +) # Handle copyright -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING.LIB" "${SOURCE_PATH}/COPYING" COMMENT " +vcpkg_install_copyright( + FILE_LIST + "${SOURCE_PATH}/COPYING.LIB" + "${SOURCE_PATH}/COPYING" + COMMENT + " The libiconv and libcharset libraries and their header files are under LGPL, see COPYING.LIB below. -The iconv program and the documentation are under GPL, see COPYING below.") +The iconv program and the documentation are under GPL, see COPYING below." +) diff --git a/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake index 8e25449ae..926737e78 100644 --- a/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake +++ b/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake @@ -1,21 +1,47 @@ -include(SelectLibraryConfigurations) - -_find_package(${ARGS}) -if(Iconv_FOUND AND NOT Iconv_IS_BUILT_IN) - find_path(CHARSET_INCLUDE_DIR NAMES "libcharset.h" HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include") - find_library(CHARSET_LIBRARY_DEBUG NAMES charsetd libcharsetd charset libcharset NAMES_PER_DIR PATH_SUFFIXES lib HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug") - find_library(CHARSET_LIBRARY_RELEASE NAMES charset libcharset NAMES_PER_DIR PATH_SUFFIXES lib HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}") - select_library_configurations(CHARSET) - if(NOT TARGET Iconv::Charset) - add_library(Iconv::Charset INTERFACE IMPORTED) - set_target_properties(Iconv::Charset PROPERTIES - INTERFACE_LINK_LIBRARIES "\$<\$>:${CHARSET_LIBRARY_RELEASE}>;\$<\$:${CHARSET_LIBRARY_DEBUG}>" - INTERFACE_INCLUDE_DIRECTORIES "${CHARSET_INCLUDE_DIRS}") - endif() - if(CHARSET_LIBRARIES) - list(APPEND Iconv_LIBRARIES ${CHARSET_LIBRARIES}) - if(TARGET Iconv::Iconv) - set_property(TARGET Iconv::Iconv APPEND PROPERTY INTERFACE_LINK_LIBRARIES Iconv::Charset) - endif() - endif() -endif() +include(SelectLibraryConfigurations) + +_find_package(${ARGS}) +if (Iconv_FOUND AND NOT Iconv_IS_BUILT_IN) + find_path( + CHARSET_INCLUDE_DIR + NAMES "libcharset.h" + HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include" + ) + find_library( + CHARSET_LIBRARY_DEBUG + NAMES charsetd + libcharsetd + charset + libcharset + NAMES_PER_DIR + PATH_SUFFIXES lib + HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug" + ) + find_library( + CHARSET_LIBRARY_RELEASE + NAMES charset libcharset NAMES_PER_DIR + PATH_SUFFIXES lib + HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" + ) + select_library_configurations(CHARSET) + if (NOT TARGET Iconv::Charset) + add_library(Iconv::Charset INTERFACE IMPORTED) + set_target_properties( + Iconv::Charset + PROPERTIES + INTERFACE_LINK_LIBRARIES + "\$<\$>:${CHARSET_LIBRARY_RELEASE}>;\$<\$:${CHARSET_LIBRARY_DEBUG}>" + INTERFACE_INCLUDE_DIRECTORIES "${CHARSET_INCLUDE_DIRS}" + ) + endif () + if (CHARSET_LIBRARIES) + list(APPEND Iconv_LIBRARIES ${CHARSET_LIBRARIES}) + if (TARGET Iconv::Iconv) + set_property( + TARGET Iconv::Iconv + APPEND + PROPERTY INTERFACE_LINK_LIBRARIES Iconv::Charset + ) + endif () + endif () +endif () diff --git a/vcpkg/ports/libspatialindex/portfile.cmake b/vcpkg/ports/libspatialindex/portfile.cmake index cef6ecf05..17530c769 100644 --- a/vcpkg/ports/libspatialindex/portfile.cmake +++ b/vcpkg/ports/libspatialindex/portfile.cmake @@ -1,26 +1,36 @@ vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO libspatialindex/libspatialindex - REF "${VERSION}" - SHA512 a508a9ed4019641bdaaa53533505531f3db440b046a9c7d9f78ed480293200c51796c2d826a6bb9b4f9543d60bb0fef9e4c885ec3f09326cfa4d2fb81c1593aa - HEAD_REF master + OUT_SOURCE_PATH + SOURCE_PATH + REPO + libspatialindex/libspatialindex + REF + "${VERSION}" + SHA512 + a508a9ed4019641bdaaa53533505531f3db440b046a9c7d9f78ed480293200c51796c2d826a6bb9b4f9543d60bb0fef9e4c885ec3f09326cfa4d2fb81c1593aa + HEAD_REF + master ) vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - WINDOWS_USE_MSBUILD - OPTIONS - -DCMAKE_DEBUG_POSTFIX=d - -DSIDX_BUILD_TESTS:BOOL=OFF + SOURCE_PATH + "${SOURCE_PATH}" + WINDOWS_USE_MSBUILD + OPTIONS + -DCMAKE_DEBUG_POSTFIX=d + -DSIDX_BUILD_TESTS:BOOL=OFF ) vcpkg_cmake_install() -vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) vcpkg_fixup_pkgconfig() vcpkg_copy_pdbs() -#Debug +# Debug file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") # Handle copyright -file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +file( + INSTALL "${SOURCE_PATH}/COPYING" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" + RENAME copyright +) diff --git a/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake b/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake index c7c7cf2a3..aef225e36 100644 --- a/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake +++ b/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake @@ -1,385 +1,599 @@ -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 "${${_qarg_SUBMODULE}_URL}" - 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() - - vcpkg_download_distfile(archive - URLS ${${_qarg_SUBMODULE}_URL} - FILENAME ${${_qarg_SUBMODULE}_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_ - 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= # 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} - "-DQT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX:STRING=${CURRENT_INSTALLED_DIR}" - 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 - QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX - ${_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. /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") +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 + "${${_qarg_SUBMODULE}_URL}" + 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 () + + vcpkg_download_distfile( + archive + URLS + ${${_qarg_SUBMODULE}_URL} + FILENAME + ${${_qarg_SUBMODULE}_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_ + 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= # 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} + "-DQT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX:STRING=${CURRENT_INSTALLED_DIR}" + 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 + QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX + ${_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. + # /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_details.cmake b/vcpkg/ports/qtbase/cmake/qt_port_details.cmake index 33b189b9d..8bcdb9f32 100644 --- a/vcpkg/ports/qtbase/cmake/qt_port_details.cmake +++ b/vcpkg/ports/qtbase/cmake/qt_port_details.cmake @@ -1,191 +1,258 @@ -### 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 +# 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.10.2) set(QT_DEV_BRANCH 0) set(QT_UPDATE_VERSION 0) -if(PORT MATCHES "(qtquickcontrols2)") - set(VCPKG_POLICY_EMPTY_PACKAGE enabled) - return() -endif() +if (PORT MATCHES "(qtquickcontrols2)") + set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + return() +endif () -### Setting up the git tag. +# 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 +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 qtinterfaceframework) -# 3. These modules are mirrored to github and have branches matching the release +set(QT_FROM_GITHUB + qtcoap + qtopcua + qtmqtt + qtapplicationmanager + qtinterfaceframework +) +# 1. 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 +# 1. These modules are not mirrored to github and not part of the release set(QT_FROM_QT_GIT "") -# 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) +# 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 4 qt_major_minor) +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 + 4 + qt_major_minor + ) - if(NOT QT_DEV_BRANCH) - set(branch_subpath "archive") - else() - set(branch_subpath "development_releases") - endif() + 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() + 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}") - - set(port_data "") - 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") - string(APPEND port_data "set(${qt_port}_REF ${tag_sha})\n") - string(APPEND port_data "set(${qt_port}_URL \"https://code.qt.io/cgit/qt/${qt_port}.git\")\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") - string(APPEND port_data "set(${qt_port}_HASH \"${hash}\")\n") - string(APPEND port_data "set(${qt_port}_URL \"${urls}\")\n") - string(APPEND port_data "set(${qt_port}_FILENAME \"${filename}\")\n") - endif() - file(WRITE "${CMAKE_CURRENT_LIST_DIR}/../../${qt_port}/port.data.cmake" "${port_data}") - 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() +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}") + + set(port_data "") + 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") + string(APPEND port_data "set(${qt_port}_REF ${tag_sha})\n") + string(APPEND port_data + "set(${qt_port}_URL \"https://code.qt.io/cgit/qt/${qt_port}.git\")\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") + string(APPEND port_data "set(${qt_port}_HASH \"${hash}\")\n") + string(APPEND port_data "set(${qt_port}_URL \"${urls}\")\n") + string(APPEND port_data "set(${qt_port}_FILENAME \"${filename}\")\n") + endif () + file(WRITE "${CMAKE_CURRENT_LIST_DIR}/../../${qt_port}/port.data.cmake" + "${port_data}" + ) + 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("${CURRENT_PORT_DIR}/port.data.cmake") diff --git a/vcpkg/ports/qtbase/port.data.cmake b/vcpkg/ports/qtbase/port.data.cmake index 2535720a0..ca9d0bab9 100644 --- a/vcpkg/ports/qtbase/port.data.cmake +++ b/vcpkg/ports/qtbase/port.data.cmake @@ -1,3 +1,7 @@ -set(qtbase_HASH "69e7317aa3114d8ca14e0067a001e42f0d2b9208070bdd1a2391cc1b1ccbb7fc3f90c8adcb0742d3c0b4ec7b3a6b770dbb411265458330d05d45f306cfae95c2") -set(qtbase_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz") -set(qtbase_FILENAME "qtbase-everywhere-src-6.10.2.tar.xz") +set(qtbase_HASH + "69e7317aa3114d8ca14e0067a001e42f0d2b9208070bdd1a2391cc1b1ccbb7fc3f90c8adcb0742d3c0b4ec7b3a6b770dbb411265458330d05d45f306cfae95c2" +) +set(qtbase_URL + "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz" +) +set(qtbase_FILENAME "qtbase-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtdeclarative/port.data.cmake b/vcpkg/ports/qtdeclarative/port.data.cmake index 9a0325df7..c40986015 100644 --- a/vcpkg/ports/qtdeclarative/port.data.cmake +++ b/vcpkg/ports/qtdeclarative/port.data.cmake @@ -1,3 +1,7 @@ -set(qtdeclarative_HASH "93b76ea0c9a804042335e6c476fc1b9a987ea29b3c5c18fbda2266cba14c7c9c7f0c91ac5de23eeb06748dfa3009d91ea72e7b7df7c0940273cdcf3ca7638d98") -set(qtdeclarative_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz") -set(qtdeclarative_FILENAME "qtdeclarative-everywhere-src-6.10.2.tar.xz") +set(qtdeclarative_HASH + "93b76ea0c9a804042335e6c476fc1b9a987ea29b3c5c18fbda2266cba14c7c9c7f0c91ac5de23eeb06748dfa3009d91ea72e7b7df7c0940273cdcf3ca7638d98" +) +set(qtdeclarative_URL + "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz" +) +set(qtdeclarative_FILENAME "qtdeclarative-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtmultimedia/port.data.cmake b/vcpkg/ports/qtmultimedia/port.data.cmake index bcb1bd61d..df3297d96 100644 --- a/vcpkg/ports/qtmultimedia/port.data.cmake +++ b/vcpkg/ports/qtmultimedia/port.data.cmake @@ -1,3 +1,7 @@ -set(qtmultimedia_HASH "3946953ad1690972f690c30b6c8be7070f1e95241e4ac5d29db86c18eed3eeab7bca281235c7797bb029af3e33ba077976e06454ba942d170de57a90c80a1207") -set(qtmultimedia_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz") -set(qtmultimedia_FILENAME "qtmultimedia-everywhere-src-6.10.2.tar.xz") +set(qtmultimedia_HASH + "3946953ad1690972f690c30b6c8be7070f1e95241e4ac5d29db86c18eed3eeab7bca281235c7797bb029af3e33ba077976e06454ba942d170de57a90c80a1207" +) +set(qtmultimedia_URL + "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz" +) +set(qtmultimedia_FILENAME "qtmultimedia-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtmultimedia/portfile.cmake b/vcpkg/ports/qtmultimedia/portfile.cmake index 84b0b8920..44824c3e1 100644 --- a/vcpkg/ports/qtmultimedia/portfile.cmake +++ b/vcpkg/ports/qtmultimedia/portfile.cmake @@ -1,11 +1,7 @@ set(SCRIPT_PATH "${CURRENT_INSTALLED_DIR}/share/qtbase") include("${SCRIPT_PATH}/qt_install_submodule.cmake") -set(${PORT}_PATCHES - static_find_modules.patch - remove-static-ssl-stub.patch - ffmpeg.patch -) +set(${PORT}_PATCHES static_find_modules.patch remove-static-ssl-stub.patch ffmpeg.patch) vcpkg_check_features( OUT_FEATURE_OPTIONS diff --git a/vcpkg/ports/qtpositioning/port.data.cmake b/vcpkg/ports/qtpositioning/port.data.cmake index 1292b58b8..bb612be03 100644 --- a/vcpkg/ports/qtpositioning/port.data.cmake +++ b/vcpkg/ports/qtpositioning/port.data.cmake @@ -1,3 +1,7 @@ -set(qtpositioning_HASH "51cfcf50989508da13e2bb96293b866c72d4d26e2b702fae41fd5201738af8b96e17393fdec2668f3f217ef83257f2fbce0d33f53cea81ef980601c74991229e") -set(qtpositioning_URL "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz") -set(qtpositioning_FILENAME "qtpositioning-everywhere-src-6.10.2.tar.xz") +set(qtpositioning_HASH + "51cfcf50989508da13e2bb96293b866c72d4d26e2b702fae41fd5201738af8b96e17393fdec2668f3f217ef83257f2fbce0d33f53cea81ef980601c74991229e" +) +set(qtpositioning_URL + "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz" +) +set(qtpositioning_FILENAME "qtpositioning-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtpositioning/portfile.cmake b/vcpkg/ports/qtpositioning/portfile.cmake index c757d57fa..9e0875910 100644 --- a/vcpkg/ports/qtpositioning/portfile.cmake +++ b/vcpkg/ports/qtpositioning/portfile.cmake @@ -1,10 +1,7 @@ set(SCRIPT_PATH "${CURRENT_INSTALLED_DIR}/share/qtbase") include("${SCRIPT_PATH}/qt_install_submodule.cmake") -set(${PORT}_PATCHES - devendor-poly2tri.patch - foregroundservice.patch -) +set(${PORT}_PATCHES devendor-poly2tri.patch foregroundservice.patch) vcpkg_check_features( OUT_FEATURE_OPTIONS From 3f34c4da7edfa64514db80d1d7fec2b2f9c06e63 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 5 May 2026 18:07:06 +0200 Subject: [PATCH 05/61] Fix failing Linux build --- .github/workflows/linux.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 659870eda..56d601ef6 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -20,7 +20,7 @@ on: - published env: - CMAKE_VERSION: '3.31.6' + CMAKE_VERSION: '3.31.11' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: "${{ github.workspace }}/vcpkg" TRIPLET: x64-linux @@ -95,7 +95,7 @@ jobs: - name: Setup NuGet Credentials shell: bash run: | - mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \ + mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | head -n 1` \ sources add \ -source "https://nuget.pkg.github.com/merginmaps/index.json" \ -storepasswordincleartext \ @@ -103,7 +103,7 @@ jobs: -username "mergin-maps-bot" \ -password "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}" - mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | tail -n 1` \ + mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | head -n 1` \ setapikey "${{ secrets.MERGIN_MAPS_BOT_GITHUB_TOKEN }}" \ -source "https://nuget.pkg.github.com/merginmaps/index.json" From 8ce1b4da213187c6d779f34ac4e4c066c7636861 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 09:12:09 +0200 Subject: [PATCH 06/61] Add log to Linux CI --- .github/workflows/linux.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 56d601ef6..034f4ae1f 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -92,6 +92,10 @@ jobs: chmod +x ./bootstrap-vcpkg.sh ./bootstrap-vcpkg.sh + - name: Print vcpkg fetch nuget output + shell: bash + run: ${{ env.VCPKG_ROOT }}/vcpkg fetch nuget + - name: Setup NuGet Credentials shell: bash run: | From 4dcf10b3f2aeb0ce73bd42e83ab2f4999848aa40 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 09:19:38 +0200 Subject: [PATCH 07/61] Install mono on linux CI --- .github/workflows/linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 034f4ae1f..c1b85a2b5 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -50,7 +50,7 @@ jobs: gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa libegl1-mesa-dev \ libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \ autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2 \ - bison flex lcov nasm libxrandr-dev xvfb + bison flex lcov nasm libxrandr-dev xvfb mono-complete # Required to run unit tests on linux echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV From 1d840aecbc50a8c117f44e09842dbe3b1997a6fc Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 09:27:43 +0200 Subject: [PATCH 08/61] Remove mono from deleted packages --- .github/workflows/linux.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index c1b85a2b5..6abb8c01a 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -41,6 +41,8 @@ jobs: - name: Free Disk Space uses: jlumbroso/free-disk-space@main + with: + large-packages: false - name: Install Build Dependencies run: | @@ -50,7 +52,7 @@ jobs: gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa libegl1-mesa-dev \ libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \ autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2 \ - bison flex lcov nasm libxrandr-dev xvfb mono-complete + bison flex lcov nasm libxrandr-dev xvfb # Required to run unit tests on linux echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV From ec847f5b33a0774b0a07a2cecfa1b48285301dc2 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 09:39:42 +0200 Subject: [PATCH 09/61] Remove debug output from Linux CI --- .github/workflows/linux.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 6abb8c01a..3966facb6 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -94,10 +94,6 @@ jobs: chmod +x ./bootstrap-vcpkg.sh ./bootstrap-vcpkg.sh - - name: Print vcpkg fetch nuget output - shell: bash - run: ${{ env.VCPKG_ROOT }}/vcpkg fetch nuget - - name: Setup NuGet Credentials shell: bash run: | From d8b6c0faf74b16820c7c805481cb7d9ef19408ce Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 10:59:01 +0200 Subject: [PATCH 10/61] Update Geodiff to 2.2.0 --- vcpkg/ports/geodiff/portfile.cmake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/vcpkg/ports/geodiff/portfile.cmake b/vcpkg/ports/geodiff/portfile.cmake index 9d9b89602..58b8d99d0 100644 --- a/vcpkg/ports/geodiff/portfile.cmake +++ b/vcpkg/ports/geodiff/portfile.cmake @@ -1,7 +1,7 @@ # Be sure to update both of these versions together. -set(GEODIFF_VERSION 2.0.2) +set(GEODIFF_VERSION 2.2.0) set(GEODIFF_HASH - 290f10ec1a0d419d13996e915d02b7d226f23359c2745a72a1a286d439bed3afdf536d5bb8771c3d4fb3df2d56ac5c0d4c7f178ee31493f4bf02d597c8b9a878 + b6ddd579dc446e6c22b520f4f94c49dbef42bba9deca55848acbd2b4993ae1236304cd1f07f4f7de91267901495bfb60d76668e8152625125778697cb57faabf ) vcpkg_from_github( @@ -32,7 +32,6 @@ vcpkg_configure_cmake( -DENABLE_TESTS=OFF -DBUILD_TOOLS=OFF -DWITH_POSTGRESQL=OFF - -DCMAKE_CXX_FLAGS=-Wno-error=deprecated-literal-operator ${GEODIFF_LINK_OPTIONS} ) From e559e45981b6e6b101b6d4d38c0a36be604347e0 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 11:09:12 +0200 Subject: [PATCH 11/61] Fix nuget for Linux CI again --- .github/workflows/linux.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 3966facb6..8d0cf5f38 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -97,6 +97,8 @@ jobs: - name: Setup NuGet Credentials shell: bash run: | + ${{ env.VCPKG_ROOT }}/vcpkg fetch nuget + mono `${{ env.VCPKG_ROOT }}/vcpkg fetch nuget | head -n 1` \ sources add \ -source "https://nuget.pkg.github.com/merginmaps/index.json" \ From 12a29414c800ce75befefbf2b10739b6f7176136 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 11:34:56 +0200 Subject: [PATCH 12/61] Reintroduce Geodiff warning flag --- vcpkg/ports/geodiff/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/vcpkg/ports/geodiff/portfile.cmake b/vcpkg/ports/geodiff/portfile.cmake index 58b8d99d0..d78e7ac1b 100644 --- a/vcpkg/ports/geodiff/portfile.cmake +++ b/vcpkg/ports/geodiff/portfile.cmake @@ -32,6 +32,7 @@ vcpkg_configure_cmake( -DENABLE_TESTS=OFF -DBUILD_TOOLS=OFF -DWITH_POSTGRESQL=OFF + -DCMAKE_CXX_FLAGS=-Wno-error=deprecated-literal-operator ${GEODIFF_LINK_OPTIONS} ) From 75e6bce7255b219b0567a8bc87672416a336e07c Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 11:37:33 +0200 Subject: [PATCH 13/61] Update runner versions and cmake minor version --- .github/workflows/android.yml | 4 ++-- .github/workflows/gallery.yml | 2 +- .github/workflows/ios.yml | 4 ++-- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 4 ++-- .github/workflows/win.yml | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index c1976fe7e..8db4c956b 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -35,7 +35,7 @@ jobs: ANDROID_ABI: 'arm64-v8a' BUILD_OFFSET: 50 - runs-on: macos-15 + runs-on: macos-26 env: NDK_VERSION: 'r27' # '27.2.12479018' NDK_VERSION_FULL: r27c @@ -44,7 +44,7 @@ jobs: ANDROIDAPI: 24 VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' SDK_BUILD_TOOLS: 34.0.0 - CMAKE_VERSION: '3.31.6' + CMAKE_VERSION: '3.31.11' QT_ANDROID_KEYSTORE_ALIAS: input QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }} QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }} diff --git a/.github/workflows/gallery.yml b/.github/workflows/gallery.yml index ac4791d60..6f2c5efa0 100644 --- a/.github/workflows/gallery.yml +++ b/.github/workflows/gallery.yml @@ -20,7 +20,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-15, windows-2022] + os: [ubuntu-latest, macos-26, windows-latest] runs-on: ${{ matrix.os }} env: QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 9f47cf57c..3e4283e6b 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -20,7 +20,7 @@ on: - published env: - CMAKE_VERSION: '3.31.6' + CMAKE_VERSION: '3.31.11' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' XC_VERSION: ${{ '16.4' }} @@ -36,7 +36,7 @@ concurrency: jobs: ios_build: if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate ')) - runs-on: macos-15 + runs-on: macos-26 steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 8d0cf5f38..e24c2ff9c 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -32,7 +32,7 @@ concurrency: jobs: linux_build: if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate ')) - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index b0c1fb8b8..7da6afd9c 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -19,7 +19,7 @@ on: - published env: - CMAKE_VERSION: '3.31.6' + CMAKE_VERSION: '3.31.11' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' XC_VERSION: ${{ '16.4' }} @@ -33,7 +33,7 @@ concurrency: jobs: macos_build: if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate ')) - runs-on: macos-15 + runs-on: macos-26 steps: - name: Checkout uses: actions/checkout@v6 diff --git a/.github/workflows/win.yml b/.github/workflows/win.yml index 09b3ea203..9f5b5374e 100644 --- a/.github/workflows/win.yml +++ b/.github/workflows/win.yml @@ -25,13 +25,13 @@ concurrency: jobs: win64_build: if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate ')) - runs-on: windows-2022 + runs-on: windows-2025 env: VS_VERSION: "2022" # we can't reference other variables within, so make sure the year in path is same as VS_VERSION VCINSTALLDIR: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/" - CMAKE_VERSION: '3.31.6' + CMAKE_VERSION: '3.31.11' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' TRIPLET: x64-windows CMAKE_GENERATOR: "Visual Studio 17 2022" # see https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md From 4b20cb7458c427cbdf687e53502b5afe6a276e99 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 12:02:34 +0200 Subject: [PATCH 14/61] Update xCode version to 26.4.1 --- .github/workflows/gallery.yml | 2 +- .github/workflows/ios.yml | 4 ++-- .github/workflows/macos.yml | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/gallery.yml b/.github/workflows/gallery.yml index 6f2c5efa0..64d21e149 100644 --- a/.github/workflows/gallery.yml +++ b/.github/workflows/gallery.yml @@ -26,7 +26,7 @@ jobs: QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change GITHUB_TOKEN: ${{ secrets.INPUTAPP_BOT_GITHUB_TOKEN }} CACHE_VERSION: 1 - XC_VERSION: ${{ '16.2' }} # macos-only + XC_VERSION: ${{ '26.4.1' }} # macos-only VS_VERSION: "2022" # win-only QT_ARCH: "win64_msvc2022_64" # win-only diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 3e4283e6b..e44480cea 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -23,7 +23,7 @@ env: CMAKE_VERSION: '3.31.11' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' - XC_VERSION: ${{ '16.4' }} + XC_VERSION: ${{ '26.4.1' }} DEPLOYMENT_TARGET: '14.0' TRIPLET: arm64-ios IOS_PROVISIONING_PROFILE_UUID: 59aaa8d7-516a-4592-8c58-d7d1c1f81610 @@ -57,7 +57,7 @@ jobs: cmakeVersion: ${{ env.CMAKE_VERSION }} - name: Setup XCode - uses: maxim-lobanov/setup-xcode@v1.6.0 + uses: maxim-lobanov/setup-xcode@v1.7.0 with: xcode-version: ${{ env.XC_VERSION }} diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 7da6afd9c..7bd8020ae 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -22,7 +22,7 @@ env: CMAKE_VERSION: '3.31.11' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' - XC_VERSION: ${{ '16.4' }} + XC_VERSION: ${{ '26.4.1' }} DEPLOYMENT_TARGET: '11.0' TRIPLET: arm64-osx @@ -54,7 +54,7 @@ jobs: cmakeVersion: ${{ env.CMAKE_VERSION }} - name: Setup XCode - uses: maxim-lobanov/setup-xcode@v1.6.0 + uses: maxim-lobanov/setup-xcode@v1.7.0 with: xcode-version: ${{ env.XC_VERSION }} From bbc183755e244da3566a55b0692fc4deb2881ad6 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 12:05:04 +0200 Subject: [PATCH 15/61] Remove deployment target for apple builds --- .github/workflows/ios.yml | 2 -- .github/workflows/macos.yml | 1 - 2 files changed, 3 deletions(-) diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index e44480cea..2c3a70532 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -24,7 +24,6 @@ env: VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' XC_VERSION: ${{ '26.4.1' }} - DEPLOYMENT_TARGET: '14.0' TRIPLET: arm64-ios IOS_PROVISIONING_PROFILE_UUID: 59aaa8d7-516a-4592-8c58-d7d1c1f81610 KEYCHAIN: ${{ 'inputapp.keychain' }} @@ -163,7 +162,6 @@ jobs: -D CMAKE_CXX_VISIBILITY_PRESET=hidden \ -D CMAKE_SYSTEM_NAME=iOS \ -D CMAKE_SYSTEM_PROCESSOR=aarch64 \ - -D CMAKE_OSX_DEPLOYMENT_TARGET=${{ env.DEPLOYMENT_TARGET }} \ -DIOS=TRUE \ -DUSE_MM_SERVER_API_KEY=TRUE \ -DUSE_KEYCHAIN=No \ diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 7bd8020ae..2ccf11225 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -23,7 +23,6 @@ env: VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' XC_VERSION: ${{ '26.4.1' }} - DEPLOYMENT_TARGET: '11.0' TRIPLET: arm64-osx concurrency: From 163a6be79180f58a871a62bd5262cc8fb47c9398 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 12:33:20 +0200 Subject: [PATCH 16/61] Fix dep install on Linux CI --- .github/workflows/linux.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index e24c2ff9c..3b4021eb4 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -49,10 +49,10 @@ jobs: sudo apt-get update -y sudo apt-get install -y \ - gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa libegl1-mesa-dev \ + gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa-dev \ libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \ - autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2 \ - bison flex lcov nasm libxrandr-dev xvfb + autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2t64 \ + lcov nasm libxrandr-dev # Required to run unit tests on linux echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV From 6b46aa3fc3048f9b2e751f75857fb9f6f532055b Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 12:48:41 +0200 Subject: [PATCH 17/61] Update or remove manual versions of Qt in CI --- .github/workflows/code_style.yml | 4 ---- .github/workflows/gallery.yml | 2 +- .github/workflows/i18n.yml | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/code_style.yml b/.github/workflows/code_style.yml index a03edd9d1..355591cc2 100644 --- a/.github/workflows/code_style.yml +++ b/.github/workflows/code_style.yml @@ -17,10 +17,6 @@ on: types: - published -env: - QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change - CACHE_VERSION: 0 - jobs: code_style_cpp: name: C++ code convention check diff --git a/.github/workflows/gallery.yml b/.github/workflows/gallery.yml index 64d21e149..5d8f6d5ca 100644 --- a/.github/workflows/gallery.yml +++ b/.github/workflows/gallery.yml @@ -23,7 +23,7 @@ jobs: os: [ubuntu-latest, macos-26, windows-latest] runs-on: ${{ matrix.os }} env: - QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change + QT_VERSION: '6.10.3' GITHUB_TOKEN: ${{ secrets.INPUTAPP_BOT_GITHUB_TOKEN }} CACHE_VERSION: 1 XC_VERSION: ${{ '26.4.1' }} # macos-only diff --git a/.github/workflows/i18n.yml b/.github/workflows/i18n.yml index acc317d50..7f196134f 100644 --- a/.github/workflows/i18n.yml +++ b/.github/workflows/i18n.yml @@ -11,7 +11,7 @@ jobs: if: ( github.repository == 'MerginMaps/mobile' ) && (!contains(github.event.head_commit.message, 'Translate ')) runs-on: ubuntu-latest env: - QT_VERSION: '6.8.3' # use scripts/update_qt_version.bash to change + QT_VERSION: '6.10.3' steps: - uses: actions/checkout@v6 From e569978006c971abd69ac0ee3eebec5be6469ceb Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 12:52:50 +0200 Subject: [PATCH 18/61] Remove unused env var in Gallery CI --- .github/workflows/gallery.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/gallery.yml b/.github/workflows/gallery.yml index 5d8f6d5ca..7b8804c3f 100644 --- a/.github/workflows/gallery.yml +++ b/.github/workflows/gallery.yml @@ -28,7 +28,6 @@ jobs: CACHE_VERSION: 1 XC_VERSION: ${{ '26.4.1' }} # macos-only VS_VERSION: "2022" # win-only - QT_ARCH: "win64_msvc2022_64" # win-only steps: - uses: actions/checkout@v6 From bd3480889cdfeed02ade9aa0037afb0ca15b4902 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 12:56:07 +0200 Subject: [PATCH 19/61] Fix missing mono package on newer Ubuntu --- .github/workflows/linux.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 3b4021eb4..f704ba853 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -41,8 +41,6 @@ jobs: - name: Free Disk Space uses: jlumbroso/free-disk-space@main - with: - large-packages: false - name: Install Build Dependencies run: | @@ -52,7 +50,7 @@ jobs: gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa-dev \ libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \ autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2t64 \ - lcov nasm libxrandr-dev + lcov nasm libxrandr-dev mono-complete # Required to run unit tests on linux echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV From 9be20a0286f523af68000e0e12cfd123e9eb9183 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 13:01:35 +0200 Subject: [PATCH 20/61] Return xvfb package on Linux CI --- .github/workflows/linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index f704ba853..aafa8f912 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -50,7 +50,7 @@ jobs: gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa-dev \ libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \ autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2t64 \ - lcov nasm libxrandr-dev mono-complete + lcov nasm libxrandr-dev mono-complete xvfb # Required to run unit tests on linux echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV From 911601140b186ca0a21e07ce0a9f8f0f9dbee209 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 13:53:57 +0200 Subject: [PATCH 21/61] Wrap geodiff compilation flag to apple only --- vcpkg/ports/geodiff/portfile.cmake | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/vcpkg/ports/geodiff/portfile.cmake b/vcpkg/ports/geodiff/portfile.cmake index d78e7ac1b..7a1734df3 100644 --- a/vcpkg/ports/geodiff/portfile.cmake +++ b/vcpkg/ports/geodiff/portfile.cmake @@ -25,17 +25,22 @@ else () list(APPEND GEODIFF_LINK_OPTIONS -DBUILD_SHARED=ON) endif () -vcpkg_configure_cmake( - SOURCE_PATH - ${SOURCE_PATH}/geodiff - OPTIONS +set(GEODIFF_OPTIONS -DENABLE_TESTS=OFF -DBUILD_TOOLS=OFF -DWITH_POSTGRESQL=OFF - -DCMAKE_CXX_FLAGS=-Wno-error=deprecated-literal-operator ${GEODIFF_LINK_OPTIONS} ) +if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) + list(APPEND GEODIFF_OPTIONS "-DCMAKE_CXX_FLAGS=-Wno-error=deprecated-literal-operator") +endif() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH}/geodiff + OPTIONS ${GEODIFF_OPTIONS} +) + vcpkg_install_cmake() file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") From 3073b687157a6572dbb486a463cc7f866ff1a476 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 15:39:21 +0200 Subject: [PATCH 22/61] Add package for libxcrypt --- .github/workflows/linux.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index aafa8f912..589ebd038 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -50,7 +50,7 @@ jobs: gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa-dev \ libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \ autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2t64 \ - lcov nasm libxrandr-dev mono-complete xvfb + lcov nasm libxrandr-dev mono-complete xvfb libltdl-dev # Required to run unit tests on linux echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV From c96bcadab62d4098913b790a95d859f6240b24c4 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 17:50:17 +0200 Subject: [PATCH 23/61] Update signing certs for iOS --- .../secrets/ios/Certificates_ios_dist.p12.gpg | Bin 3356 -> 3365 bytes ...ultingLtdInputAppStore.mobileprovision.gpg | Bin 7913 -> 7886 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/secrets/ios/Certificates_ios_dist.p12.gpg b/.github/secrets/ios/Certificates_ios_dist.p12.gpg index 724e59163fe33dc39fce2bbf24ba50f504e10424..35d7fe59c76fd506e06be6c2e54a1cc84a858b4b 100644 GIT binary patch literal 3365 zcmV+=4chXI4Fm}T2*$?cu-GTp)BMuv0T%CVbFYjmb1VQnDH90zz9K_(*izjGRkRbDb&!1S+2~+P93ILHEo&Eeq4IuWS-kiMN`tPZsitqOFVt7GfiZIR5vw|W17ed#X}Ti3%33tN zHpz5_mAxcBo`pVlwG>58A<@Q5V_xCO5)SnfBSCghG40-Ot_m|c@p^0UcgriGuCL{3 z0F7n6Dc%{Gm6_7g2v31LOFlEd-qvJfEvt9)nnbAL0LEOEv&G6S9D%b)q`;JRW|Ai zhnP3G%WU||5ojmmEa&&}63)mw0^OOXNXIT=NZ4ocve_J|$kt8DtCEIkRJM8ciD#Y^ zn5&?5ry?Vo)z%(`#y%rd2t8O4gskT#ND{Gg5yY!*WQ4mZYI0zsP zB?{nfaZ+Bd4i3;d?*j=f4WIG1CsDBW>SPR_N`$Nkc$=vB&XUFFK>nAdL6D2JN;9#i zQd})8YcaNrtC%j^HDmrUW~Ur9`E;Lj{UO1{XOcb#22Ta3<=!hC7sPXMktGzp(Iq`hW<<#iO+{mTr6;LOcc>i!usQO zo`zE`4B3ka*pKNtS}LJminXTBaSZFBL1|$ue-riXOTS}D#+KcGQHmF8=Db@U943)L zSgmL|Vs=Gz?`Hm-!|O&3Xw$%4!h+FVbCH4M4R9b!S$Zr=eL4*Lp4Bi(rWA3t433Ff z+U(`4=|TD|W?oO1P<_qYkz5#wPAr_ebNU=8RsBiR1%5&pcO4Fj@r4>=-)(-cb#vAF z&n#B(t2@XO#EUZ4z*_m4bU8#CjBtR2%LA_QCp>e!%IQDjg^9l>jKwU&g9!4u7la@U z`45|eK}dds|8LrPtXrm?z(i5!E!`wiu#dzGl;t1k4+;Q;&Q#8v^Q;Yc-vrCNY9hU$ z^tHDM2*PwS&}y@j1v4ZKC5cg*X-6NeL_Nw95(on^7g><{1sKY|Qz(=RM)KoAOAmIC zLOoi_+&v1Id=x>yX5Ytijsbb3hI@R1-LMBxD$9?zR#2ib$6>J*NnI`2%Gtlnl?+rr zB1Yis-2fSJ>V$UWJFzmNPb9>hrr@nLp4I5AP!kr&>GbZluR5W%2N;3TUII?50>}9h zFN?Bgvf9?wxDXcrRM}{aL+`Y8?D-0?#b1KZO`0huvMT53^U41{fppO-50Oiza{koX7J} zGq{T&2aa~Pg+WqoJ7>Fyv?cvv2C1)nf`!~daZirk-6J-g?qo}0VN}7xo4DOqO&HCp zZgBL6CcTH1m(b2eyd$U;25tUT9=|5wE@5n_OCYB(^Fg+ z3!@0*99lqxi4aRazPYfXYc&)qk&>#BIP-6)+A0c8z#)@O)aVL=2CEX(%bL46ZHI

*%8kvt zd|TLOua&9>J77(%mA*o;pq&ldmB3P^46|rMgO9g85$aWOU+OJX0FHrNsOm0EE@3lm zaDO*26k8Z*a`q0>9^PAD&PIAp?8YuP#)a+$o`gP%=K1ZO!bOKWGnSGn1@*V2l0@Xl zEh+wf=HR*?PgV0(iZTa~o)X3EmVlA8h%e4x+E{jEs^TZHbSgAe;h_M7o8*b@9d+J= z5NUBIlHdkR!A;ZJBY0tXGvDC`mr-tyqHAVU`PD4v3|9fZ)4ain^9cNpAiqb6=;g4Dd7sT@4Ez{{O_Lk z_4_vCPmy^)sVFu88uEc)X5OiXnBMG*!G%8g9LFaz5jn~<9UwCm6^x`PseTS=L0-V$ zr@R`k;aNx!s)CbewHst*G>D|X18HKu2rjlg(zYrqksW^{ye@iY2M|vX?&<`IcRQL= zPL}(~3)k(E97K_kW)xSy|3832KoC`hH+5;GOjCaEHTM!c;ZErqW)V5F9a+-{m3#{m z7}k62(w`?Bm=r*o50@xx?BIRD*jpcla)r8ppoToZo7}K$iB|5|=-c^rvVE|`Yct0R zPtF`Z-U~Rs8g&>|)&txPT9N~O;uY&9G{sQ1LmOsU?SS%p6S^TrVJeI^!|YBJ33IEu zHLa2u-j(*?we;^qDY*^!Ud>pB%+Nh=aRcPTFWCue2siR@BDA(-bN{pg@m4cG=#Hgs zp0KJpMob(Z1X;ItZ<3Brp-@vZWoci~paf%RMVe;-lQMR*Je3aa_HOB52XJ{Tv@x#` zv$F8G7!Eat(pJ$7LG~S~TfdOvmlgoUllI_Oy1mY;PSh*R0~n5Dm!XY$u9s~P$YQA{ z9I`a)YQ9DhvEHY7`w%1>s|b=|H0EsMr&m1mvd@bRvUVPqpuKSZkcuBwNoh2jJZAda zkq}4U{Wum^f|EYvl?Q7i${5&Ki`x^(QY+*ZG@W#fPTSYj zH{EY<8iszJ@kLqS5lu_4v@=L?aQYWNhAn~Y8k$t(3bjL9TU80zw>s_6ALV4d1bbTj z>@S`8N}AQG0YSkK;Cn|Zq_?~!Da6GggzYkM7ff9*IXMs^ED zFmBp3I3sadt65>@>~RZoa0=>se19xT1>(MXC>+|T|rJ!=;eTJPHZ_#)fp&?5xbA)td8QS@nEl zPZ^IA=`e+srwX*44Xsp1f-+t~@8g}~6oB_`R%?*Wl_mIAGlSxW;=_lw3}Q zlrYxNcXY?7cAD?WtbsK-D)i@9&eE4sgTrALMIqQEw&wRb`H297hP!Suc&vGLB%PlHFMfOCB`q4j~Xexxg&Sz--0%&4t!L)mTv#oAD)~=*|M-E$g zzM1J-S`q8HuS+l|WlMp29qd>V6p`tM*a+(g%;LaMQs=LX<%*3OG2C%1cwFF^p9Z&| z`fw5|SB!H99*;UE)4a7)LHJgg$3Q^lm}F#p63=}n720arN2Onhbz=*s3)U%E09hCM zt@FN^Jo2SEE?$*OmP0+wm2>zQHB1$Kw5g27Q%yv?#LTrI&*$Fy)sGgB#i&VStw2a- zPXHi=kW;p1kLsL=gnAuy*m%xNrYsfEE!G(b6jc0dpb|%hS$;%gaJtBhT~iT3aoTbs zc_Ym?c#EcE;}hfan!BNhC;Ln>DfsgsifCn}QM-PRzxZ`M%miVotMzvU*~8^r1V13P vDn3OKu=c-mMyG%(r&~h(1#QN2lDnec#@Ydlk178D%-*{aVqt#P*=5*+-;r`G literal 3356 zcmV+%4de2R4Fm}T2n*4Y`<#>ifBw?y0c{cNgNuFaE4AG6PrHZnRLZ(jXMQA|1^jri zRLi#8?P~G!75M=3X_026W~vqTa5{RuiE zRmV*^=Uuv8cE0=lCo-%s=1Y?NOoy!@RG>}iLHm&Ztl+SoX(C%}pMAAcT}7)Y8}Ndh zzExB&Q@?tAWQYL|&9emIY`rHcOm@EaEEvIonBo0+BqF3@XG{0voJugDt)uoo z=nCuk%&*v1YNa<$LMLOm`^?Uax~(>lMr2Q0hhVnz{>`yCtmzcgR4K&! z=e(XN8w}xUBdt#J)}@rSBFYU)t;hO(10dBM!kIX3M3Vhnx~}iI_2q;sOk6X=*mb2~ zO9W6F|FbYm8WRrQc2}`){JOxjL`FSG3!>vh>F6t$sd>Gr%Nu=D3>_hoKJfO+7?#RS zhZ8Mc=+g+LrjN|ognBlkHU35I$bej`Ag&Cfn2GSfT-*s1it@&mzhlO>9(L_(l<{Cp zT?0#?`nO04j86{^LmtNn&y}BBXImz9caVHGEr}W!Qw#Y%2)f@!6}0`uNVu4hmlNK9 z1=FRNmq*jYZP@{6_J_+So3v^r!yX=-g=x||bq*RQ&DQRFf$d1uTolWZ&-SJK#dWv7 zilP)}7%I+r`NbOb6|QcusukAXTz^F zAwsx?P{bk#{yg<=Q*#y%+}5mR3DTU6!Ew1F_S-UC3b&J4iE-`eMx2*FmSEcV<=PBC zIgC>xAJ0`MW6?QNJiLhzD-158I)_TzpNP!8GGN=xl<%CBp79!~TL^OxYu=h$=d#4M zG_$Xl=+%DK%W$7Mcyl%q7G9!MD}IOA|DfV`q-N$qKQe6=;bff|b-&y@cGuk>q!g6O z#2;fw29vjda}|MM)-vLq&gv??$L!Y+liq9NJ1m;=cQ0WU1FfRhkV7&Vz3sB;5~^?u zE6swOoYo-n)4}&ctPe{uJf{q>khq5SZ+OJDNf1I*%r-TQkrpzDevg){cV>5+Ctn_ z3Nb%_9rw3p_O29ormjlQVbMQdu9WPtTzkXPefCV^99%o6)2=6!7t0)pDW42z*}o$1 z{F@XVFN>!6>W1P)TEoSvt)7R>M4b6oLI6GcF2f;%VQ5YUG>WX#5RyS2A1F z+R;-{>r}4k@@z34mWBGgvQb#x64)?#KsM7;ylMkP$*a!+;hu4>O z#vWYZjj<-?s{i0pFpa?U_FcpD1G0izjuVkwbmsNe1uj(xx4jh`Ne8&e5<)AQyFUsy zX_T7wlhtGjC*_o1^M-^>G0c)p)_A0&C{eL0tv6r|r#X@rLtX?B_ti&ve~F$+REkXo zs6fUr@z%*zP{>-7*+p*#D@9ajY7D9BR^KCk2hn+iW;30hcCS-vkZg+@LBQ{7LVLSC z5oSZMqGZaMT8eP1ScB@&xT_c|eky)sy<~V)b7IG>_;Q^9!RCCHBRqPH(R6fz_K(eW z`Q$1&iPY?KbV8m270Iy0<(DK1;vz~i2NBfQmZ`*G4z8-De3$CsiD`a8kfFf5o@!Qqp3pK#uH^k7^7&D9JinG zud{q%AdY+PJHbwrATQCSZ(DQ=?PEYXA7^0>oI|E6U_r2yYM#d$i%Vm1DLm`tm9;l| zQgT*e$pafYbm?zzNcN(p^L zk>M(EG!mA{um0;Bj{@a!GbbG1*jule(6uI2816j-IXZi{#lw|?u$NjXc~dQ;wek3f zhftj64h)((ST+!nE`H!97$L#8lgf@^xxey8JRo_S=U9t~mjU<@x(FW_vLXx%R}eu8 z{BdU>;?z^VcS~aFrpLy!P#VIooGB01$vu%q^h>Snw=ZXiD=sercw@|wDb6<~PXVMO z=~!i79F4Gp|B;PWtle-QxZ>j9`%h^}aI>}!f5hB8eR=jAPs1^Lw}gp4L90`$llc&n z6Gs}@nvH)1gU7f3qK)9MMF$hn+-9M2P_i`mdl;APeQlB9vC{aEFme3O_MBd5|>>Kr&cEmlGrm?Byzgf zRSJ)97hm_{%cU{?cr8A$Y)sQJJKt4C;36w8NfM5;^ zCv~oar<9-41e(Q1W=Vlfa?$TR2}f2&HJMR>4{d_{_FH!3s(sBMEae{R6Bk!Mga^3w z(^f!nh^bOROj2%uaBE0O!2g&_yLjgI;gN`ZRT8IMb+(w}>dH*qKEVWy%9e#&hLbIQ z^ty84&|2T@wi~)a9JD@=+TZa?)f1Jz@B~nzXG|SICq^y-HG<9kzp%@(WevAM8$VAD-v*1-9OwA?AVaw37 zf(Kpo#)+rSoGeU-W>AZ%(54iKbwD#ss)|~Ev zA)0#hT-b9KKV-srWD;9wTydd7r!YSE7-RL&=!{Jk<(Hh4=Gx z%p~WF=v5pqSR3=M#vbu9Lr=yWU0T{;AzFGDdDQ)@Qsh>gFz05;kO#VxkrGk}tYlrv zA?Y@|joO+t?g6s^?7LRZ;3?8A>3Cq6D?T>Am~;x|>Gm|m4e~qFwg0;Aa`D9RQg#ha z;$d)M!LZz~&Cc8o%+S<2v~UJrDC2a$C*M|e*m@{-PM2^m7MLKquQ!W#6%?KpE|xmG zuuuhI;D4Vc9}DucC1$wCfJ*ehu3ZJY7gX9-{>9R)?*wJ9vQUSE-4Fy;!UhM1A!n9K ziV=^q#J$2o(jDR^QjLgQk^^x-#uVF;jE+(d`%7jl9^Mqe$TK*y5FLpqQ!DTcxxh|4tH4+-reloRMwdR^ z1%?UAtvQ!Oa1PwS(hr`qP7G!mU<1UNznh{~l2v5y^o({O_!^ABMKf|5X2hk-TZ9s- z-U3(U@MwHI>uvs zZ^JomVu14scw6z5yOp!&f7{FlIW~-gvLLC-vF(<1F<(o@z<34!XOzo4yZ(J}qiS1eagdm^Tz(jTs%=-n{r{4hk z)|9r>yd)}G`};&Nje>;W+#E4BQ@g|sH}EwPO;-o?9Fz)G%tM+V6|82ZBInyfiA}Oq zmc;8Ebgi2tN)cV!!{vKfuSX>shp-Um%OwO*L)M56DsOt~p3Uk`XqBTUF-nun-^ZbA z!0I6Ho+l|RjK!vy(z?hMZ_*;JJ3nyM=*V;;65_z*ly$vmeAr#lVasujfbehEnrkd` zA*+6MGD={iIM{`nEi32C&TKh=XO~x)R~GaOA4dy1Zc0&47$2#bX>8_4k3c md3fopk!VIY9n{+cBmc0N6`?D4ACe6nWs*qpa%Zbc+aBeFE{1{t diff --git a/.github/secrets/ios/LutraConsultingLtdInputAppStore.mobileprovision.gpg b/.github/secrets/ios/LutraConsultingLtdInputAppStore.mobileprovision.gpg index 1dd1fa490b3f7edae6397b4603b6fdddf8bc9718..2310c5598f51a8d5f69c796291419fe2a60e680f 100644 GIT binary patch literal 7886 zcmV;<9x>sJ4Fm}T2ulXLZbmA_)%?=x0lZ`bpKzuJ5ni(3T~BkXy+q$utbf51TuZh= zE#0Uux5l|?7|t|nr5Fsy&M6Tje3ekh5++cMGT57*3(|7rB!BFAyT~V@>!6|Zx{Y=^ zoCpf9pk1z-!>Itdue;IrPGnQKhT)ad_KP{qrfAvb`sxCi9Aik#Rz@y?+|?129&6Ak zA_%k33_&pc-Yq`;p{O<_Ocnz3a~&HuP=-q#-&>YjC(g*%Mq&AdY>X){m?%d{92Eo) z1{2CexE*p7-^0vfo3*XbSNWkb?E7 z6|j(`Wqh9S`XaVDPRsUs5xAkWdcHt?o%whyq{N*E@QF-o`tu;yhHm;)2+hs z5jWtjo(U4f&46fQ31<8e=hA0jzU9u52}0lBl6d-xI7T12sM98jRoz0B*ST?Rc*68M zSNiX-QS$w4Gxy4GcTuijQsbCebyV_du`lyj*@qHiMB__3uN))YVu8D-LhKNvbyC8T zt(W^@6`ad>Ie8S)Rmi3TQ>v;!`u`d#dvOsO^!%GhxTrP*h)!4eN+QGZ$_yT1IT+hY zp(cX|UZkC8mNQ=aJGGv}c-X(8AuOUO`-`jpI`JHII?gFRJop#gFCA#jF9a(+0N}+-@Q-CX--H5D7iGf0N zj0{T78C1~Z-|K>T9}y_A3sU^4#GlY2zPprFF-lQ|WNC`+Y{_f=dS=+PxQ>BM>Ws{@{pIgp&_m9in-p>JNv_;@{`3{k0xP6EDmItpN1#^KU0k zTG>SwYi_fHf$t8 z_TPoS4zYen?Az(c8G{-{ra)E~GFKe|a52RidA=7@><~p6?;*Xm24Eaz;%-C+UX0z> zGU~5wmS`+{>L_j`nt!#k)%%RwH;Mlgm|_N160iMl(x8Cm`t>t$tat-pf+Rdwmrs&2 z5Fq@r+ku6bxtp9Q);MFR-CZQ%VdNk9ag5q=tHS^Y4J^8-3I{mjVR8o1NsgTpror~& zwm&yPaMN_YxD4eBzSaLMa5z+7Xpms0w?V&4VAu2yn&aqG3Svtc0m_gTpuQCuaW z3xbIO(M-V-@njfC2W9??HQDm#hL4E^h;<4LNN=G!3$j=>L2XAdCsZbLfudK#qSngr zrZAffrQo1TXRdG@qaA`q&?^jMq{jwoRo!(MQ;7$gP|oMXWjCEqgbOC#qZ=!(r&(1f zjHXk)|KK*qQQ>_Inh!2>DyYb*a$lnnF<^Zm9|*BU;_5+$on1r%MClS%Zi~rhLiOxS zySnzClL&G52udTQcmzrKWj$zTV$~^;C{-J_smb9~SS5!V`#@}Wd~z7abaOVa^!AxT|_4sLh< zrm8gL?eQ8sv@N^%KCCID@DuF`;mkJ`br(kV5V)$M&}oW29ILH^XIm0lwkOk+eSimw zotb5Nn!FlWZ__7%$A7`{&?x&TCim(|SIcm79YNwfBY^LCsd3jNa(Y^-@s-c- zg~Qri-6?0kUJUwcWgnBqp30Y>Og(*&2P^w)a7$8>4+^u^UHIY0TUimfkPPrNR$il) z6E(Z<*(IxI+bM*@A!xLXd#XpEzrl@+j7l!j?5u6wJ8=fwk9uR|_^=ErPX#yv3;Jfq z^SrO$(GP57BPSZ}r=*5AviPEX))f}ye$GW(G~+@-dE&LrV{pkQ$vwqDJSiiMsj3>f zzo9cXvaAwIi;o9kkoJY=@oj?W3b;5Q%U=`F+T*)c5UJdA%db)8;lU;y(kzG&of3l1 z7mtp+Y9Ivj@0-iO!}^KqrZ8-wY9bJG!^4edm<0iwheF=!>q7%$h_y1Ojm7xyUFKC0?&SR9~iWk#o3=Ax%mHaex2SzF%c zwfj#aaG(zP`c0)$uEp3Al?$^Si?uQ@ovdYEl?W1qNd>ea zfl6R=rfYX(re&<}22hgf!hyDTsAk=njii>zA0h`@nCz6Hp5fv-`wa*WHR{7Pey-Xv zx{cPykP}6&KMd9N`Vu8@*;?ndb^t;5M!8z?RMzX`6*E4`m}_xyOQkT$6(i+ZI2ZU( zcLsxJP#l6E*cXEf-<&1LvKndrcoaHN+ZpvnfWyj6><^)B^bvg&tc{i}^FS@(| z=GN-`$fSHrS(z4SLr_^gE&O9))Fd#2VQ(_lEf$aLIBMs?PGnxLxyBN2Hb_p_lFWQ~ zD`ev*;=q_|b2B$Y)|T}LUWg$z<^@9VbGs^Dc^X*US&PrJ{BwcXX~o=@As2;Uq4iu) zUs44Qp3Pg^1-o?`gvY{M-8^Go;CYQ<2`&N%p~7(I8G~tdxMtN9g(l*1M|4~1^zZ21 zF6#|ZDCi7y+gP6iAK)Wc@Z;n88(Jkw=uO(dcc(1R+@?^~yz%jwDOlg`-WgyJaPRq4M=1|4C%-tH>TYIwX}AgKPl2EG`rk5mlGG4PU68!Jkyj|VY=udqo~)mgs+%x%~{D*AwzhtQlfZ$ z=r6r+gf&^W4&_-J9WNr)~ZBPMdsz>HR!CC*`)9+eZ#Kn#a&k!*gUq?nvyPMyjlGDJI}cq zPZDr(*{lbeQ=kyPu2ub?Hl>Jjogb*SOu}=zYM?27qA7Xt+`W))@3@O57S)o^Kd)O_gXwc>V0@&| zw;18;n;tt3QT#K%?k&fcCA5~ z2Fy2ni^c9~GHk_BS*`8moEEA4wPE1$$i6646gQBp6o5!C9@ynloE4PnKazth$MW6* z*&R_JrJ}NsLjziJfvy?W-VNH|vokLgTa^8mqP1!NLwN1pu^BN4*4k`$861B}&QEkV z#L{QzOfsonHw(mf8j6M?#Vef}@5TBKsnJeI#Ah{$pF?tYhB(K>4&SQeQrhc+rV=A7 z-MlyR*eYqh?Ar&{V2cKU{Y=(0D5B2mU}K9?1lZ=eZ7aWG=)f2dE$SGz`jFNHb5}aU z_qjP&`8V!cr|o#)(ziM1PnRxi=_{{3^9b{pO+>2|nBT|=wud>abUotPo#(AJc|vr` zix~D}H|8z75zTzdyio*2zED)$^Qg=vw1h}iEwh*C*~Hocn$$X@>S;UGbM4~Tb`I|A zf<`RTc8b`y4J7yI{kKOsj?t8FEqf-h1?K5C0-F44+))T?UrS zaYts7(Jf9#YwjzV{RSZGODh*`PZ({AT>kRi53wr?md}l5&3*e7D=mHL4Rj zQ6%Yt#-0X$M2U?wz=lE=uAnpxMJZul_Mrw7i+HhQC^e-J7WLwlkVwmLNQ-joI&?wW z6*RjR|E_|sHN4egeC#n#zb+4?o{=N^biIZ27jd&D{g|uH*5@u|~$i%1#rb1bD`25SXvJ*MJI{qwAnJf!fQJM4>UzO#j1MCy`aTsWDYjJ10$4q)*Hy31M5DAXRb-5pA?bHvxb4oQEwzY}FHZAf!hT0JTue$tZ=?+=%b5L? z%VD;Y_!_ESv%`f9E%c?6E_#Gg$JvS%8IFdGW~4bgqkvURk0S*8r{v5c$*&Wa5Nn1j zI=Zqnvph5DvdKUHGRNlH{046Rt_o?4G-rwr;Xzs3ZIGneJaxTVPqO|yEEA~rPZ~Op z8Mp&59F!9xmeeT(T0UR1S*&s;J1TQGzwl86p$#NQK zQh*%9musDCfc`ef0Ch@;+{^P9xQyijgHo{;4MRA?YtJHj&f4S`xutc7Gcgc1I7z*rVg0~P{W>3Wk9@jqs{G1EVYz4ht5 zK7?gK4EPu>{?{z#q#1TaBJ&LCHAejbZ$zX5t&u^_Lu0f9gm{YSnzMT<4el@S>pLJP zchIWzjE`vmwdK~MHgD)dnQ&&o$6whb9HJA*oA+e*>xtgY7Z6hHSgg^YKY={8FE~wUzb)A;K_ZPbyqx#e_ zpu5X)xC!spjM5%7*7w0gKE%W9eD)td(y>{-x_`p3DsO#ea*>y&&P&B1Z2*j40_Jqk zbHTB*_#ibj6#C3r2Uh`*`HQ@CFADum*7LUYl=C8%Rhgn%$rR%)Qgk3OW)U5zijYki z5hwkWEH~eW*cW52Xn;}XO7_K$VC<7!#d4fGrC|VP*yBDTM<>OX7WSCzs);VlIlTFp z3wEVh-a=tqokSE@Hv?c(vTB-*YbNVf&&G|xDj=d)Y%gqu9d4TY>oxjgAo5HlbP;@P z^_m$2-+t53t0SJQ&;V4rwi^0PqZRy{{OL;!?>E&HyZgPW!fqjo=b@CYG4CL|_`T_@ zHDlWN{0axGa26O4g2}cUQ@THun9J5tbONcPK`r9YFY-JAS%$Jz1cWR+_0K4({vc1S zhB0f=B2WP>bD2)K*G6N^(pJjv{O)?0SYFL@Aj^RX&{lQ9dPMxq?H3h>n%^Fqzgtg& ze?T{N%l5BZcXa&z@in5oqfG`vzX;i!;l%ba2vz-x&eTkFw#+ki3ODPjk?>7`sl~%D4Vxb|OJtQ-nYW2Q?N!FcpJeqvWJ?smKx2N*ao*sbZ_POi& zAo-RORIOraI&zeXX?1D-T%LSz(c?L_&Dg_(Qsw2(a zmub=T4RNK)4)u0c8%LQH7iL+hB8UFYHEg;F=0?)=1(_-mk%Gk#hKWy;B6#=)Sk=W+ zhcA|fKq*wN|BEZcExleDo-2dLT)K4SeZ!Ya!psc*<*X&MY-+1SPf2$-nhS|ZAyb9_ zxxFe!hEJ-nZmAc7XA{Q!fsyD5tbE!c>>4OWo|r^$GRNvY!m)a;ffdpgF1ADVY2n{ zBO)hy3N15SY-E8EoexKJ;A6@20AN)y)4m&)jog(hkRQe&XqWB87H;%&*DZBTOP!CH zz&_VTu1+mM9`ib~+fh9fiqvgXXtpO%Pp&fU9m&q$zDrFoes?FZD{vhXZT{4~jG z-V8wVcX#5#2r6_s`X4q4QaKNF%8%U&=%QW~uH}~dHO%BD@Xiy9X%m0Ri)gIn+?#ow z?cOLSzvnUPLO(bbwXGImT{EvvFJ7nkaDvVtV9&Ila}Yekt3)k z{qomD2wxxh+}o4i^W5vpxE77IZ=jeIO|WxP+d?7WF{g)20vF!mLEwU3S#L&U^POWf z1Y{0S!Vf?lz$fmgny7JT1ld=O=yr-&WL>@>QWmHlyOp0l^Qq2O8hR|J;7MNKV5`Wy zM;=N9BNQ7%j4_sD7Hk$2$?t=goZ=ox!c?MO8#IR=AxIUzcb`|qj{UQG4I0?bBIJkn zDAOOUO1Ia0m{Td3DBF`prc3cK>1zB-3Gnj~(~W3E&qsk_*bOvGY$4V?qwh2-g7>EX zjc4pQr5rPKvpmy?lKFsOG7R07IXlp|ov;aD`5(X4jr6~ZvDBMU&b~eJa)8)xq+ykaj z>>MXPAm1^*d3`1E45ZH@qYD~sRe@dPE9I+66~=X242NXF``isMu$>S_mK{Dlm!tih z&$}JBpfFZT=`DcmHl=-C1I{zzVQ9vCny!1N1&N2v(k-=O81d!y$6DGlVbn~*3?Yxv zpC6+J>1)c6F}WrlIId>grj)Hga}K^ZNlC`9rpkqY#n>>-Es(+XI)~SZEF9o}n-Ope z0CQcyDSj^k_?CAw7lOO2x-^LrU-5GC?WMbWS4cI^DG0$vI(|el(3k_P;>@ z`Hj)>1|DE%F*p0CFU(hW2=SoxUibj(KN*Qo{D3 zR^H*v9H=1nBMXtK6kKyh0|HrkPS8P-n0}?v3s#R}!k6G#=yq(qM=oat&0wEJm>}k_ zSbM;W1aq>)aXBr9?w`cX`;G3b0N7}tm(bm8)@>LQG$o|o=-XLqeF|F8=v9lGv*D13 z@EmF3*4=M=g%`Ycs^GBRRi2>fH$8@9*D!n>yPg6?Ctm@@1GuUiG$OY)q=aP#E!<(j zAl*8149tKkO&_u}?8nK5vZIN4Ni)KHpU{+qg+R?U7BTjNj<3?X3Qmf)WUm|wYXVXW zI<-dIBI=hbySQTkJXwUWz`Rx-0aY9>qRjW0&1(R~qAdJ0CF63sE209z4@<&Y$^+!r zw-U~uHfy)DhVp9gI4ThMC@(^;`l@9R!SU=SHA=i>AnX5ejW|I7XHwxYYgW3+cj_Xq z_1q20Y18KmADi`wts1cryN|_4-pT4i>HCy9lx;(cSRTKQ@Qz&B$JR@OH7l{q4OJ?$ z%pyl82oJb}T8n*f?64F$uLC$6TvuLOQ9lRbTi}rXgI@v2KeA}!Oj*M1&30WNu1FHk zdwZOx1oN?piEXZK!auUFgjg*f+}0bAo-K*!zWA3+B+3YJmYvgyV8SSIqV;`gY#OSt z%wd}a2wNhR2P9mVo^pD@(S3sH=gB&nl^9t`Z8``X3!k3crMHHd!oQ9V7aJx01c3&9JCf` z-6teux52fs&LDNdFqj1~_Uki6UGCIy#{1d{vw}8WxI$aHl@mFRuTgi&r)qliW~!fj ztvt^2L!RZR4+X+6xR-Hbii#F)S}(2Ks1`mN8}}Aq8U|l8jj7aTzgK{m<(@tM-O<0v z=M<*y3m_y3KKUAaA-Dva2tYxEOG=4Ffs~mPxhFDm)$|V8-5Ur*_mb#1z4(;ESdk^r zw_~=Au>2O-XNGtFo@;FAJ*0(iI50+J@XnIi1V4AY*$PnstKj9l3?fl>dm3 s!hGQr6kG@FtQfhuj=n5nI2r%WdQ5>rMI?&|XofpF|5{WQl9ooG zXn(9fNY_)zKp{Xwcpc_P8+$$8S?+X&=_4)!O`bAbVvNvS*DvsCUKib-U+oRN7*DJ4-%iF-DzTLLx(_70U(~!VVq?b8qBF=y4NDJgMl0dqrJti$% zvZ+WuMInFt;05m^K}mahQgP{VaFz*60N-_%`r#P+A6Se>y8ss4V5tFN@4}w&f14%o zR_s6-G~tRj+y8oP5FbJiamf;RU$cWdDoE(^=};brs4WRr*7le74PfOrdnga7d0@(AF*etcPmND1Mw z_U$Q-)46Tz^%{jhi+cx<9yF+U_)8^RNB?gjDMJaEIuwW?dkVbqHY=IYC2ZR{QFOa) zi0Z5w*Pp$pa~B3BXYf#sz;{2f033qxE8v}L5h9D)V~{VPz*Lz=to1NdLsn#I*Py0o zlmx{`W|Ck%oAA^CnQchxLP~Gl9udGxTPjs1YO|yc@int#x17Df{KQKvYY|_1!8whg zLr6ZVZA^3xAXg9J>N1#GTEG`UOJ)M-oNMSCPS^u5YEoQ_gG&T19x;r={nX$(TS z3wo|fo9Uv~>Xz~wxfF{^Hzc+^oP%u30t9Da0c#0UUf&|I=-r34m{u?frt+a7Zrkhb z=)>c*0HQm^r~r7hq=UkxU=Go_0|#o&LWBiu6UQETZR0qKf4GF6de49~7 z=ET7<*kjPDb6DI>v`?yF@%LwaVLC@`ZElM~=0aJKEWO(@CU<##tH6;(D7kz&0_A*~ z0^YJlEC$(ijVfGlQ;TRDSK6_#*%3F9{mzN7eItIvSZ>oBbzraNl4(^azU>P44<1Yi z8StsA6hxadCF|d=!NFM8vjKL*<(1#*P3NU6MPzu+98G6PQ{khI4gf zkOe0?MD94vAlGWUc>`>j(?uun1E?D7wsKagYuuf{7uEqd^^0eWU%+o#L~Aq^RLZ&C z>s&a&$V_lHppv9J?!tn1%UJ9DQa+)XxKdT)Gz6_ttpAV{|FiEke8Dt(QWkg4tH@z$m)0l=ZYoS>Ot0ep`3HpFgO z^x{eSjCR_Ra#p}O=k7=QhCrlTm#$bw3!BC7@z4B{G+Atx&BCw@WNXru*19hN9!CDi z&M9b^IR*?~83U^y3J*g?o*gbW!L3IrK9M#-cB^Vifwl`)@iT-|j$*(MCAHu((hs)i z(e##%TH(I#1cUPNepsED%q#O$4V*tD&n*gLLr5~%cSMlCVMS*s$cP1yzd%{zSl!yN zTOSSFMgOkhO;*K9D*)tKt1OWUc&c!)?}Odjp9rWA<~JE;02LJ4THZo1FQ2Fz_7(C6 z%{wi{m2CTJdYe?^?3c?$Q9xn(RqP6>#@1XH#o9V0M};aU@h|>-^d?H#4>L3xq?6x~hQvMx69%z*rq|Gq^OBvnGagYC;t$+}S+j?Cwb8x_w zNo!C%nn+tGGWL(0mB_u^j}Uhk=P@XVVW&IcN0J!;a0lex?|6^7HI7T&MS{dIU}U_* zO$ZED``5ERi!A))gQL&ed^ovtkO^R6y1$f?kMh|6Hq}cO=USL)_@uq|tm62sD*dE} zsCN@47ye)P;(dY`{GQ61oRkV>$TG+pea98#>mPxKyVhV1bH8I8M#@m~?cAiAE!fFw z@mNGGsv|me$RKTz4P}!=5}4Mz@TVfC8Hdjatf-J?gcJHy<*Cc4!0UziYwR#+`VIcW z6=#aGFC5tci)N|8cojhYah=8Ud~sFYOaIrB%Q3IxOwaIC_R#wlQ+b6E)NdW8!%4-9uV(7t|Xk6&RAbZ;kf z)M|#drX@4O7>Dr7lJ}|mP%EK{9g4AA$iz}5{AU&f0k1}c@_4d)nb~RP&^80@vB3Gh zl6ow*c}WWNBaf|al^aZxN2JX1Vo;2JVJ?-B@Vy8mH_Lp$x_NBqGkds(`&%xAu{$F0 z7T95FhPBi1tEf>i3VBP-;qcKBXoNqIgLd0Xofy9iYeVZ4U%aPH)dAIG^Z@ho&O#}Ceecz5w zO4H&>Ex0Jt@ILedmaEGVL!WTf)pAICWGajw%+U@Y^LedWp}MG>ht0+*k4&Y5TFPjS zle~WILUXgC?la!=Wz8^eH&?eZ4YQKZ+Etd7al817q`lc~q?W>bN1u)4y@qc|uK8zs z%o~hOFW9+B#S0VoKu5!1-bDvLQ_^MgKG*f__Fs$4|GU`@CwRZmOp%o>_-c;JD^!sB zenwymN$J>k$y6Ek#nfQ^3hlGySZu=L{vhyuLH!;$?&1LAuYGP^+a-3#JBK~XD;|=( zpV=De-(-4ck{+=B_hVNqlsef8zDIQ|Tc7jN8$DtBWLXB%Ogij@G>8|YIYgsAzL0eR zNjrAsI3}2PDEbT47}C_B0~xF08fk6xFfoenC-DJ@3R>lVRt3|-;mYzkf(VOHzWbdD zZq^E$mTgH?E_mFU$J#uxD9(NE|Hco}z+?K0((07DW#xS__wZRz(Cmj`oTFSx48RmXZ(t z^_c!a_nqU9$T~d0v5plp+1lk>(>Tiw@sjKV^H=;7N4tuA`&F;g*t;mS{HgGKia*83 zYqjx4X6rQEL`7oiHvmh#RuD%o@={)dxQogynnEca_e?PJQHok2+L!0d)}+|E`)hI- zJzaN`L49U$FUROdrjs-gfrdAodu1`>At1m#GyVDbYC30Ipo6+}f85M+i)N}~_LoQL zgz}aL0yq80plh)#V@;LQ$G8{upV0BOSt1M00xK4_9am$T3RXMDUhYV+Oi@RO2-s7W zg9W{!}$Qryf6Da_A%|xM-h$OMns>P+>W4OhgZng z_n5B#tHnRtApsWJKcJcUCC9Sf7HKJ%w@`u0cB`XGi?^R zNa=KexsdfN{~KY3{Eayym8lUvf>2jUiDiepl{B-0l0bg>A8IxgFl=_s4WeD;LJL^M z4lOt@KYrxauPE&$%f&5CtK|xOz#C`g~+-1~O+752F2cKyu?MSF1*|Q$B zszz06r%&{L1OE{V%**R34r;7^l>Z^cid6rWJM(22*tRXL^11Fk6|~9eZE-Nz91S}t zQGSd5SlwcOtj*C>G|~ z-a_P{%SJaZ))K5~N&3Y3-CXQ({4uaS&}8M!_tFipGG0HwC0su6?db@X&}Rtj6`xO_ z?lV?w5loO8ruz0{Ue0`DjoD|t7KfmMwR>T-VrP(n)Z}0HV~91x^*!b>Wh@ih5jAE7 zPX--@LDAt*>;2dvxneM50{`&Gm7YM*s9caL-2`5~-0H-Hi0&-oxo}<8tccE6x*S8e36qTM+D#A}kq~as9J|#IJ=#T*IH+I4}-^sGXWOl{4{5vPZAORmrfv2218o6XwQ9K zH}E}%YmS}T`gp8VRQDDbR9lT|mpi_YmF?O&v6i{f(9gr=fjb^ZGPA%^Hox{hS_!ot zp|?4iLRx^J2elB?G5z}^Fvl0(IU#z^s9q>3dW7adO|(a1lYUZI=ZUJDdSH1&rke{) z?l1hwID@QFF<_CuFIvIdgH#4TB$hH}>XGLpup@8tR*vWG^WmAVZ_8_6qFU1B$QIcn zAm(+QJeERdL;a%qq^+gp#(fbPEYM}F=VZ1(5N%tN%WquM5H~^E5Lg2g>OW*xmE~o! zW-65?&eN)Yi>}J(9(jf?9k$7*mvepv>?x@CIc84sTB)Kr$Dl_`=4vCPNZ|Ojk8OPJ zbK&cK_Ij)UKS<;7_(ulu+u|!UJ+pJm=akT0#5WDI8@%;wY6%?+MbhC04X(l}3TG-ZFRTOiG{^Q}b^TTX@%49oJEVFuq zTO1j=1`&`pFih#29UY8HeQE_@SKj!?47gOP2W=1w$P+X0OLt%b5*gGxNZ*BX_>qWC zTd&m!dfQ~JE;{Nn*-Ad_MUS^KJRDtvJ{?Z+8TCy`(1}J#$Y6AE!BP5TW6Wvp4II*x zeo03t1W3rKO>;fbQMULfy%W)I$@-r^UU3Z#F!)l}I&S+6`<)z{m^Jy#Mnvt$p7W#! z&M@nOr~#avo=GlIrI5RJj%B7=u$1yTr+E(E(ifi+1>f*`zVr7y0bCS=7t{_^HKZSp z@K?W4c-F=C4i*C>$f($aBlMJ^R5k3>5|;-53aR74PUAjSsdss88Xbz2U`!6yLx#qm zo$7=UHA#YJWz8jE=}u02v>kvFSlb)A4tGP!O`!z7fAh80<{q=xIJAcQcr+^o=*qy^B`l0Z)VOyp>1~X$KflSM?6&-5jVHE-2x4WhJ4O|^x?WnFi zVB>f*)*+z@zpBc_0HvM;O~~xgl2e&>EeJVF>bvruX`T~7vn5^u)|pvhW;VV5JmuAE zkkp(6z{6UskENoR=8pAGe)27COP-=xqd5M5{yOH4`>!~!z+iOQuLD((U-#q}!SX8o z?c4^M*{`GvKPcEL*#-k^8I6Ls=}#%t7nJ)~W}UWgs)>*v1NmEW16LVba86DMe_(Cp z4#&A7_kRbQ>BCPV|1nVRJ%?VMz0yfc6#pTpcFknyTOYZMd~g{7#4!ACU=Lt=?&Lx^ zn!<%Qsf4ZCB@I0BBfFLtw5&bwnT>1Q>AmADBT@w|kS(Rqv4pPgG++S)O2EGQK0Fj` z$2OYnIP*@ql^;BF=xmbc5tE4x>Vn4z-n-9s$_kF_gd+EFAPoz|CR-_xubxUX5Tk1U zb7TjmrljQm)Ud!|t4EPhj#}b*S@Zmlvwu;a%KTuhRclMsKg&(*VqZ~JvW%o>WvgXS zxGpG*?HqOb%Jeb7zT7M~kV*~#G6U*sE<9PsbI81`*12cl3hy`T=+X-qsYQv5*-4M$ z0=Mn3VgJmV`yL%M1APg#q@3#?jT{%`awh*$0FLQ@b|vl7Td6M@g3Vz>07%@gf9mb2 zwx6aIAf!}8il7;$9U!|}TX*!(v-vQKrhJOF5*`ptDOq%|-u1p+at>H_IbaPs2s6=V zDDD5x4Q4e*J@%JHfjMU!eR6KN_Ug;VuI}*Yi^`sJ?KM7a6A{K}H?0rWWKd#a!A6FZc-iRtx^b)6RNyl%M%8F{%WOMzk|IvJGWri> zr*)k9ZiiMdA0@xiOGp76qhvlxCGXO5-5a&I)8bfDkOtj4?r58i=oE;c4X!HaX7mIBOxUKK=guF~P)SGI?pq3_R=HdSq0r+YnXRERi!irt574*+cPo~W209#Qfx~6N?Ce{hR|Lk( z(6z(ko)?!z#o0b7IB7{?a&k!pKzP^XTyiAfw*>hB;*I^D-DCT zV&J)17dR2{0U`fwudyktL4eP@3$a9rJ-gi3wX7Ld{!VP+{nk@Qa4`Roh3f4q!!;rK zyJu!Yv9q`Bh^IU%sh0-`{-k1OrNr@3KNP&26)(ZN^!@G&K{0G|qw9W8&Mk`* znDXITXZ=ivZNRJvGV48OVxP#RL_!}%l;6k^Q!G@B4vyy}3MynrtDNf#28FmJ5s45I znQIL&!ZwZ#?tkS?m2S^KJ43cvc`XQe2Z=)9Z?wbdp`APuN~-@b(ma2gXqN3SLY*EV zrHLcDTd*Xpvp%HrJvcgk zcu%0m;p%Etqso&n;{cF{Lu9qHiD!5AzC(Zk8Syb0AO(mMp-> zSI9=2?C;mTQ044tJ~s&iOR0PHG)OFShPG(72tkv?CotUI8ti{Z{;IxS2)RJy~iZHDL+Fyu45z9nv`KhSJQ2o?)EtvO4HljAA}yLoU1cB`60% zFfDl1^J|dmzLq<8njLB>7!b{&Eu=d)KMPjX+zN!=d*E@Hp-;LlyL`4!LX4S%*Uk&- zxKOP?`kXIcSx@fRpCaZ81uehi^+R1n+(q7%E*<9Q&ZZ2rRWSI$p9`Nif{( zzV49^p~X=(VDRhg&=&wrAbQXf3NFeqob1HVH~z{gm$}$XLRrw?&wa zvCP$%xA83(=r?-Cm=JD21U!1_IlcnB{*)|c;~Fsu@O`*wn`BiqE=+j);>(rQD&t?Z zv0dk;XS$Wpx8+nQMER+lwcUBCqs?eNnX)5p9Xjim-Ffk$Cwre_%&4k?TqsEST0DlU z(*4Qp!886`E_Vz)5w3lj*=zfs|8TyHvfc-p3w}gL{|tzDY^KnU7nzi5rVbL-u+?8k z0m+jwCyy(HZ!u(=NHc7Mw_&qn_4}j+YzzY4)>TBaN2x)t=@$AS-by?NKCo<|KM3Zw$3rFT2QK zh%U~VW|z(JOY&l5DK>t-vm$>hm=SxlG)Ozcn9YtA1G)O1r14HBaIp5xEzc5p zqR5gyzh zImAi!r~y`iXfE&Zz!HTV>XLl-O0*63OgloMZL{t<9vy`z1}5YHwC{{NmMmTSknIQ@ zk7VL>1lNW+R37?2TDktg&r9)fkC`&t#zp+)Zhk=MJGI5^g@8ikHwg5MM*|xpH`!@&a2!6i1N5ZRxg;g83o&>;6C3osB(6T TbBe#Vrmv3=#5)hEYj}nrK=xd! From ce76cc371bed9087dfdd79d3421540a2950cda40 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 6 May 2026 18:33:15 +0200 Subject: [PATCH 24/61] Another try to fix iOS certs --- .github/workflows/ios.yml | 2 +- scripts/ci/ios/exportOptions.plist | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 2c3a70532..7f453edf7 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -26,7 +26,7 @@ env: XC_VERSION: ${{ '26.4.1' }} TRIPLET: arm64-ios IOS_PROVISIONING_PROFILE_UUID: 59aaa8d7-516a-4592-8c58-d7d1c1f81610 - KEYCHAIN: ${{ 'inputapp.keychain' }} + KEYCHAIN: ${{ 'mmapp.keychain' }} concurrency: group: ci-${{github.ref}}-ios diff --git a/scripts/ci/ios/exportOptions.plist b/scripts/ci/ios/exportOptions.plist index 372eedf93..34c1a0b27 100644 --- a/scripts/ci/ios/exportOptions.plist +++ b/scripts/ci/ios/exportOptions.plist @@ -14,7 +14,7 @@ LutraConsultingLtd.Input.AppStore signingCertificate - iPhone Distribution: LUTRA CONSULTING LIMITED (79QMH2QRAH) + Apple Distribution: LUTRA CONSULTING LIMITED (79QMH2QRAH) signingStyle manual teamID From 93e59480c1edea9fed5813904b690438d2864dee Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 09:12:31 +0200 Subject: [PATCH 25/61] Fix iOS signing cert --- app/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index c2c2e8a0a..64c8ea0f1 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -439,7 +439,7 @@ if (IOS) PROPERTIES XCODE_ATTRIBUTE_PROVISIONING_PROFILE_SPECIFIER "LutraConsultingLtd.Input.AppStore" XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY - "iPhone Distribution: LUTRA CONSULTING LIMITED (79QMH2QRAH)" + "Apple Distribution: LUTRA CONSULTING LIMITED (79QMH2QRAH)" XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Manual" ) message(STATUS "Using manual code sign with production certificate") From 5ce46a913f71d46c69ff7db336c5bc3268681123 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 10:21:12 +0200 Subject: [PATCH 26/61] Format geodiff port --- vcpkg/ports/geodiff/portfile.cmake | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/vcpkg/ports/geodiff/portfile.cmake b/vcpkg/ports/geodiff/portfile.cmake index 7a1734df3..325eb70ef 100644 --- a/vcpkg/ports/geodiff/portfile.cmake +++ b/vcpkg/ports/geodiff/portfile.cmake @@ -26,19 +26,21 @@ else () endif () set(GEODIFF_OPTIONS - -DENABLE_TESTS=OFF - -DBUILD_TOOLS=OFF - -DWITH_POSTGRESQL=OFF - ${GEODIFF_LINK_OPTIONS} + -DENABLE_TESTS=OFF + -DBUILD_TOOLS=OFF + -DWITH_POSTGRESQL=OFF + ${GEODIFF_LINK_OPTIONS} ) -if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) +if (VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) list(APPEND GEODIFF_OPTIONS "-DCMAKE_CXX_FLAGS=-Wno-error=deprecated-literal-operator") -endif() +endif () vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH}/geodiff - OPTIONS ${GEODIFF_OPTIONS} + SOURCE_PATH + ${SOURCE_PATH}/geodiff + OPTIONS + ${GEODIFF_OPTIONS} ) vcpkg_install_cmake() From b627e9b0ae37ae562ab7d915e19b9216798997d5 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 10:28:20 +0200 Subject: [PATCH 27/61] Update QtDeclarative to 6.10.3 --- VCPKG_BASELINE | 2 +- vcpkg.json | 2 +- vcpkg/ports/README.md | 2 +- vcpkg/ports/qtdeclarative/port.data.cmake | 6 +++--- vcpkg/ports/qtdeclarative/portfile.cmake | 3 ++- vcpkg/ports/qtdeclarative/vcpkg.json | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/VCPKG_BASELINE b/VCPKG_BASELINE index 465cc50b3..7b562fde9 100644 --- a/VCPKG_BASELINE +++ b/VCPKG_BASELINE @@ -1 +1 @@ -13bf92b7216b42ffc7d8cf55b6181e486039accd \ No newline at end of file +a78b96b07eb590c59bde5db0f4b260bda45ba92d \ No newline at end of file diff --git a/vcpkg.json b/vcpkg.json index fc0ebae1f..2829642a5 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -114,7 +114,7 @@ "default-features": false } ], - "builtin-baseline": "13bf92b7216b42ffc7d8cf55b6181e486039accd", + "builtin-baseline": "a78b96b07eb590c59bde5db0f4b260bda45ba92d", "overrides": [ { "name": "openssl", diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 0217a3d12..ecb721c22 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -3,7 +3,7 @@ - qca - we needed 2.3.9, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 -- qtdeclarative - unknown +- qtdeclarative - optimization to decrease package size - qtkeychain-qt6 - official port uses qt5 - qtmultimedia - unknown - qtpositioning - unknown diff --git a/vcpkg/ports/qtdeclarative/port.data.cmake b/vcpkg/ports/qtdeclarative/port.data.cmake index c40986015..6991c8c4c 100644 --- a/vcpkg/ports/qtdeclarative/port.data.cmake +++ b/vcpkg/ports/qtdeclarative/port.data.cmake @@ -1,7 +1,7 @@ set(qtdeclarative_HASH - "93b76ea0c9a804042335e6c476fc1b9a987ea29b3c5c18fbda2266cba14c7c9c7f0c91ac5de23eeb06748dfa3009d91ea72e7b7df7c0940273cdcf3ca7638d98" + "187a525b73595e7c4d89c98be657df4f480114957649813aa9ecd3fba23f56f20c8804f2ab507d83a5fb6120a2c6c36751fe5c80f43f9feb6c3479a733fb6684" ) set(qtdeclarative_URL - "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtdeclarative-everywhere-src-6.10.2.tar.xz" + "https://download.qt.io/archive/qt/6.10/6.10.3/submodules/qtdeclarative-everywhere-src-6.10.3.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.3/submodules/qtdeclarative-everywhere-src-6.10.3.tar.xz" ) -set(qtdeclarative_FILENAME "qtdeclarative-everywhere-src-6.10.2.tar.xz") +set(qtdeclarative_FILENAME "qtdeclarative-everywhere-src-6.10.3.tar.xz") diff --git a/vcpkg/ports/qtdeclarative/portfile.cmake b/vcpkg/ports/qtdeclarative/portfile.cmake index e25092041..833ca308b 100644 --- a/vcpkg/ports/qtdeclarative/portfile.cmake +++ b/vcpkg/ports/qtdeclarative/portfile.cmake @@ -33,7 +33,8 @@ qt_install_submodule( TOOL_NAMES ${TOOL_NAMES} CONFIGURE_OPTIONS - -DFEATURE_quickcontrols2_fusion:BOOL=ON + # space and load time optimization, we don't compile styles that are not used + -DFEATURE_quickcontrols2_fusion:BOOL=OFF -DFEATURE_quickcontrols2_material:BOOL=ON -DFEATURE_quickcontrols2_imagine:BOOL=OFF -DFEATURE_quickcontrols2_universal:BOOL=OFF diff --git a/vcpkg/ports/qtdeclarative/vcpkg.json b/vcpkg/ports/qtdeclarative/vcpkg.json index 9471525d8..2083031d4 100644 --- a/vcpkg/ports/qtdeclarative/vcpkg.json +++ b/vcpkg/ports/qtdeclarative/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qtdeclarative", - "version": "6.10.2", + "version": "6.10.3", "description": "Qt Declarative (Quick 2)", "homepage": "https://www.qt.io/", "license": null, From 8a3cf926295d9c0786e96ce95cbde0722d046b18 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 13:39:27 +0200 Subject: [PATCH 28/61] Remove QtKeychain overlay port --- vcpkg/ports/README.md | 1 - vcpkg/ports/qtkeychain-qt6/portfile.cmake | 74 ----------------------- vcpkg/ports/qtkeychain-qt6/vcpkg.json | 29 --------- 3 files changed, 104 deletions(-) delete mode 100644 vcpkg/ports/qtkeychain-qt6/portfile.cmake delete mode 100644 vcpkg/ports/qtkeychain-qt6/vcpkg.json diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index ecb721c22..a8c9d7c5c 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -4,7 +4,6 @@ - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 - qtdeclarative - optimization to decrease package size -- qtkeychain-qt6 - official port uses qt5 - qtmultimedia - unknown - qtpositioning - unknown - gstreamer - unknown (linux build ffmpeg?) \ No newline at end of file diff --git a/vcpkg/ports/qtkeychain-qt6/portfile.cmake b/vcpkg/ports/qtkeychain-qt6/portfile.cmake deleted file mode 100644 index 74cb50aa7..000000000 --- a/vcpkg/ports/qtkeychain-qt6/portfile.cmake +++ /dev/null @@ -1,74 +0,0 @@ -message( - WARNING - "qtkeychain is a third-party extension to Qt and is not affiliated with The Qt Company" -) - -vcpkg_from_github( - OUT_SOURCE_PATH - SOURCE_PATH - REPO - frankosterfeld/qtkeychain - REF - "${VERSION}" - SHA512 - d1d87553db94bf54da1373016a847476e6cd608db6d427ed72532658e2272501daf45d7c9976efdde2f26ab3810ba9dbfec2518d46dee5a76ecaa369bfee2e4a - HEAD_REF - master -) - -if (VCPKG_CROSSCOMPILING) - list(APPEND QTKEYCHAIN_OPTIONS -DQT_HOST_PATH=${CURRENT_HOST_INSTALLED_DIR}) - list(APPEND QTKEYCHAIN_OPTIONS - -DQT_HOST_PATH_CMAKE_DIR:PATH=${CURRENT_HOST_INSTALLED_DIR}/share - ) - # remove when https://github.com/microsoft/vcpkg/pull/16111 is merged - if (VCPKG_TARGET_ARCHITECTURE STREQUAL arm64 AND VCPKG_TARGET_IS_WINDOWS) - list( - APPEND - QTKEYCHAIN_OPTIONS - -DCMAKE_CROSSCOMPILING=ON - -DCMAKE_SYSTEM_PROCESSOR:STRING=ARM64 - -DCMAKE_SYSTEM_NAME:STRING=Windows - ) - endif () -endif () - -list(APPEND QTKEYCHAIN_OPTIONS -DBUILD_TEST_APPLICATION:BOOL=OFF) -list(APPEND QTKEYCHAIN_OPTIONS -DLIBSECRET_SUPPORT:BOOL=OFF) - -# FIXME: Why does build translations fail on arm64-windows? -if (VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL arm64) - list(APPEND QTKEYCHAIN_OPTIONS -DBUILD_TRANSLATIONS:BOOL=OFF) -else () - list(APPEND QTKEYCHAIN_OPTIONS -DBUILD_TRANSLATIONS:BOOL=ON) -endif () - -vcpkg_cmake_configure( - DISABLE_PARALLEL_CONFIGURE - SOURCE_PATH - ${SOURCE_PATH} - OPTIONS - -DBUILD_WITH_QT6=ON - ${QTKEYCHAIN_OPTIONS} -) -vcpkg_cmake_install() - -vcpkg_copy_pdbs() -vcpkg_cmake_config_fixup( - CONFIG_PATH - lib/cmake/Qt6Keychain - PACKAGE_NAME - Qt6Keychain -) - -# Remove unneeded dirs -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" - "${CURRENT_PACKAGES_DIR}/debug/share" -) - -# Handle copyright -file( - INSTALL "${SOURCE_PATH}/COPYING" - DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" - RENAME copyright -) diff --git a/vcpkg/ports/qtkeychain-qt6/vcpkg.json b/vcpkg/ports/qtkeychain-qt6/vcpkg.json deleted file mode 100644 index dd42992d0..000000000 --- a/vcpkg/ports/qtkeychain-qt6/vcpkg.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "qtkeychain-qt6", - "version": "0.14.3", - "port-version": 0, - "description": "(Unaffiliated with Qt) Platform-independent Qt6 API for storing passwords securely", - "homepage": "https://github.com/frankosterfeld/qtkeychain", - "license": "BSD-3-Clause", - "dependencies": [ - { - "name": "qtbase", - "default-features": false - }, - { - "name": "qttools", - "host": true, - "features": [ - "linguist" - ] - }, - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - } - ] -} \ No newline at end of file From 2aeb487a02cb3c61f13f475edd30b3495dff4486 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 13:45:53 +0200 Subject: [PATCH 29/61] Update cmake info in INSTALL.md --- INSTALL.md | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 386ae2ca3..370cd3427 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -139,7 +139,7 @@ Steps to build and run mobile app: bison flex lcov nasm libxrandr-dev xvfb ``` - Also install CMake 3.x, Ninja and ccache + Also install CMake, Ninja and ccache 2. Install vcpkg and checkout to correct version from file `VCPKG_BASELINE` Read [vcpkg](#vcpkg) section. @@ -426,7 +426,7 @@ mobile app for Android on Windows, please help us to update this section. 1. Setup development environment - XCode - - install deps, see requirements in `.github/workflows/ios.yml`. Most specifically cmake 3.x, ninja, bison and flex (on PATH) + - install deps, see requirements in `.github/workflows/ios.yml`. Most specifically cmake, ninja, bison and flex (on PATH) - if you want to build for production, you need development certificates. These are not needed for local development, signing is handled automatically (see IOS_USE_PRODUCTION_SIGNING cmake variable for more info). You can get the certificates by following: - Get device UDID: either iTunes or about this mac->system report->USB->find iPAD (Serial Number) - Create dev iOS certificate for development @@ -506,12 +506,7 @@ Once the project is opened, build it from Xcode. ``` brew install cmake automake bison flex gnu-sed autoconf-archive libtool ninja pkg-config ``` - install cmake 3.x - Note: - - cmake 4.0.1 is broken (empty -isysroot) - - TODO test with cmake 4.0.3 which is today's - 2. Install vcpkg and checkout to correct version from file `VCPKG_BASELINE` Read [vcpkg](#vcpkg) section. From 62eb6f7885ff97379859287d5f5b7d0061a7769b Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 14:17:08 +0200 Subject: [PATCH 30/61] Remove QtMultimedia overlay port, use VCPKG default --- vcpkg/ports/README.md | 1 - vcpkg/ports/qtmultimedia/ffmpeg.patch | 33 ------ vcpkg/ports/qtmultimedia/port.data.cmake | 7 -- vcpkg/ports/qtmultimedia/portfile.cmake | 103 ------------------ .../qtmultimedia/remove-static-ssl-stub.patch | 26 ----- .../qtmultimedia/static_find_modules.patch | 23 ---- vcpkg/ports/qtmultimedia/vcpkg.json | 86 --------------- 7 files changed, 279 deletions(-) delete mode 100644 vcpkg/ports/qtmultimedia/ffmpeg.patch delete mode 100644 vcpkg/ports/qtmultimedia/port.data.cmake delete mode 100644 vcpkg/ports/qtmultimedia/portfile.cmake delete mode 100644 vcpkg/ports/qtmultimedia/remove-static-ssl-stub.patch delete mode 100644 vcpkg/ports/qtmultimedia/static_find_modules.patch delete mode 100644 vcpkg/ports/qtmultimedia/vcpkg.json diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index a8c9d7c5c..faa9e27ff 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -4,6 +4,5 @@ - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 - qtdeclarative - optimization to decrease package size -- qtmultimedia - unknown - qtpositioning - unknown - gstreamer - unknown (linux build ffmpeg?) \ No newline at end of file diff --git a/vcpkg/ports/qtmultimedia/ffmpeg.patch b/vcpkg/ports/qtmultimedia/ffmpeg.patch deleted file mode 100644 index e2727de20..000000000 --- a/vcpkg/ports/qtmultimedia/ffmpeg.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/cmake/FindFFmpeg.cmake b/cmake/FindFFmpeg.cmake -index decac97dc..672991080 100644 ---- a/cmake/FindFFmpeg.cmake -+++ b/cmake/FindFFmpeg.cmake -@@ -282,10 +282,10 @@ function(__ffmpeg_internal_set_dependencies _component) - set(suffix_lib "\\.lib($| )") - set(framework_regex "-framework [A-Za-z0-9_]*") - -- string(REGEX REPLACE ".*Libs:([^\n\r]+).*" "\\1" out "${pcfile}") -- string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_dependency ${out}) -- string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_dependency_lib ${out}) -- string(REGEX MATCHALL "${framework_regex}" framework_dependencies ${out}) -+ string(REGEX MATCH "Libs:([^\n\r]+)" match "${pcfile}") -+ set(out "${CMAKE_MATCH_1}") -+ string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_dependency "${out}") -+ string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_dependency_lib "${out}") - - foreach(dependency IN LISTS libs_dependency) - string(REGEX REPLACE ${prefix_l} "" dependency ${dependency}) -@@ -298,9 +298,10 @@ function(__ffmpeg_internal_set_dependencies _component) - endforeach() - - # we don't link private dependencies, but just populate the FFMPEG_STUBS -- string(REGEX REPLACE ".*Libs.private:([^\n\r]+).*" "\\1" out "${pcfile}") -- string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_private_dependency ${out}) -- string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_private_dependency_lib ${out}) -+ string(REGEX MATCH "Libs.private:([^\n\r]+)" match "${pcfile}") -+ set(out "${CMAKE_MATCH_1}") -+ string(REGEX MATCHALL "${prefix_l}[^ ]+" libs_private_dependency "${out}") -+ string(REGEX MATCHALL "[^ ]+${suffix_lib}" libs_private_dependency_lib "${out}") - - foreach(dependency IN LISTS libs_private_dependency) - string(REGEX REPLACE ${prefix_l} "" dependency ${dependency}) diff --git a/vcpkg/ports/qtmultimedia/port.data.cmake b/vcpkg/ports/qtmultimedia/port.data.cmake deleted file mode 100644 index df3297d96..000000000 --- a/vcpkg/ports/qtmultimedia/port.data.cmake +++ /dev/null @@ -1,7 +0,0 @@ -set(qtmultimedia_HASH - "3946953ad1690972f690c30b6c8be7070f1e95241e4ac5d29db86c18eed3eeab7bca281235c7797bb029af3e33ba077976e06454ba942d170de57a90c80a1207" -) -set(qtmultimedia_URL - "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtmultimedia-everywhere-src-6.10.2.tar.xz" -) -set(qtmultimedia_FILENAME "qtmultimedia-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtmultimedia/portfile.cmake b/vcpkg/ports/qtmultimedia/portfile.cmake deleted file mode 100644 index 44824c3e1..000000000 --- a/vcpkg/ports/qtmultimedia/portfile.cmake +++ /dev/null @@ -1,103 +0,0 @@ -set(SCRIPT_PATH "${CURRENT_INSTALLED_DIR}/share/qtbase") -include("${SCRIPT_PATH}/qt_install_submodule.cmake") - -set(${PORT}_PATCHES static_find_modules.patch remove-static-ssl-stub.patch ffmpeg.patch) - -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_OPTIONS - FEATURES - "qml" - CMAKE_REQUIRE_FIND_PACKAGE_Qt6Quick - "widgets" - CMAKE_REQUIRE_FIND_PACKAGE_Qt6Widgets - INVERTED_FEATURES - "qml" - CMAKE_DISABLE_FIND_PACKAGE_Qt6Quick - "widgets" - CMAKE_DISABLE_FIND_PACKAGE_Qt6Widgets - "gstreamer" - CMAKE_DISABLE_FIND_PACKAGE_GStreamer - "ffmpeg" - CMAKE_DISABLE_FIND_PACKAGE_FFmpeg - # Features not yet added in the manifest: - "vaapi" - CMAKE_DISABLE_FIND_PACKAGE_VAAPI # not in vpckg -) - -set(unused "") -if ("gstreamer" IN_LIST FEATURES) - list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer='yes'") -else () - list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer='no'") - list( - APPEND - unused - INPUT_gstreamer_gl - INPUT_gstreamer_photography - ) -endif () -list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer_gl='no'") -list(APPEND FEATURE_OPTIONS "-DINPUT_gstreamer_photography='no'") - -if (VCPKG_TARGET_IS_WINDOWS) - list(APPEND FEATURE_OPTIONS "-DFEATURE_wmf=ON") -else () - list(APPEND FEATURE_OPTIONS "-DFEATURE_wmf=OFF") -endif () - -if ("ffmpeg" IN_LIST FEATURES) - # Note: Requires pulsadio on linux and wmfsdk on windows - list(APPEND FEATURE_OPTIONS "-DINPUT_ffmpeg='yes'") - if (VCPKG_TARGET_IS_WINDOWS - OR VCPKG_TARGET_IS_OSX - OR VCPKG_TARGET_IS_ANDROID - ) - list(APPEND FEATURE_OPTIONS "-DINPUT_pulseaudio='no'") - else () - list(APPEND FEATURE_OPTIONS "-DINPUT_pulseaudio='yes'") - endif () -else () - list(APPEND FEATURE_OPTIONS "-DINPUT_ffmpeg='no'") - list(APPEND FEATURE_OPTIONS "-DINPUT_pulseaudio='no'") -endif () - -# alsa is not ready -if (NOT - "ffmpeg" - IN_LIST - FEATURES - AND NOT - "gstreamer" - IN_LIST - FEATURES - AND VCPKG_TARGET_IS_LINUX -) - # list(APPEND FEATURE_OPTIONS "-DFEATURE_alsa=ON") # alsa is experimental so don't - # activate it (also missing the dep on it.) - message(FATAL_ERROR "You need to activate at least one backend.") -else () - list(APPEND FEATURE_OPTIONS "-DFEATURE_alsa=OFF") -endif () - -qt_install_submodule( - PATCHES - ${${PORT}_PATCHES} - CONFIGURE_OPTIONS - --trace-expand - ${FEATURE_OPTIONS} - -DCMAKE_FIND_PACKAGE_TARGETS_GLOBAL=ON - CONFIGURE_OPTIONS_RELEASE - CONFIGURE_OPTIONS_DEBUG - CONFIGURE_OPTIONS_MAYBE_UNUSED - ${unused} -) - -if ("gstreamer" IN_LIST FEATURES AND VCPKG_LIBRARY_LINKAGE STREQUAL "static") - vcpkg_replace_string( - "${CURRENT_PACKAGES_DIR}/share/Qt6Multimedia/Qt6QGstreamerMediaPluginDependencies.cmake" - "GStreamer\;FALSE\;\;\;;GStreamer\;FALSE\;\;App\;;GStreamer\;FALSE\;\;\;Gl" - "GStreamer\;FALSE\;\;\;;GStreamer\;FALSE\;\;App\;;GStreamer\;FALSE\;\;\;Gl;EGL\;FALSE\;\;\;" - IGNORE_UNCHANGED - ) -endif () diff --git a/vcpkg/ports/qtmultimedia/remove-static-ssl-stub.patch b/vcpkg/ports/qtmultimedia/remove-static-ssl-stub.patch deleted file mode 100644 index b74b66c3d..000000000 --- a/vcpkg/ports/qtmultimedia/remove-static-ssl-stub.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake b/src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake -index 5778ae4d23..8c0df4b44d 100644 ---- a/src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake -+++ b/src/plugins/multimedia/ffmpeg/cmake/QtAddFFmpegStubs.cmake -@@ -70,7 +70,10 @@ macro(qt_internal_multimedia_find_openssl_soversion) - if (NOT OPENSSL_SSL_LIBRARY) - message(FATAL_ERROR "OPENSSL_SSL_LIBRARY is not found") - endif() -- -+ set(openssl_is_shared ON) -+ if(OPENSSL_SSL_LIBRARY MATCHES "${CMAKE_STATIC_LIBRARY_SUFFIX}$") -+ set(openssl_is_shared OFF) -+ endif() - get_filename_component(ssl_lib_realpath "${OPENSSL_SSL_LIBRARY}" REALPATH) - - string(REGEX MATCH "[0-9]+(\\.[0-9]+)*[a-z]?$" ssl_soversion "${ssl_lib_realpath}") -@@ -187,6 +190,9 @@ function(qt_internal_multimedia_add_ffmpeg_stubs) - - if (ffmpeg_has_openssl) - qt_internal_multimedia_find_openssl_soversion() -+ if(NOT openssl_is_shared) -+ list(REMOVE_ITEM FFMPEG_STUBS ssl crypto) -+ endif() - endif() - - foreach (stub ${FFMPEG_STUBS}) diff --git a/vcpkg/ports/qtmultimedia/static_find_modules.patch b/vcpkg/ports/qtmultimedia/static_find_modules.patch deleted file mode 100644 index d68a60d30..000000000 --- a/vcpkg/ports/qtmultimedia/static_find_modules.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/cmake/FindGObject.cmake b/cmake/FindGObject.cmake -index 19a8a67..09e95d1 100644 ---- a/cmake/FindGObject.cmake -+++ b/cmake/FindGObject.cmake -@@ -13,8 +13,8 @@ - # ``GObject::GObject`` - # The gobject-2.0 library - --include(CMakeFindDependencyMacro) --find_dependency(GLIB2) -+find_package(GLIB2) -+find_package(libffi) - qt_internal_disable_find_package_global_promotion(GLIB2::GLIB2) - - if(NOT TARGET GObject::GObject) -@@ -40,6 +40,7 @@ if(NOT TARGET GObject::GObject) - target_link_libraries(GObject::GObject INTERFACE - ${GObject_LIBRARY} - GLIB2::GLIB2 -+ libffi - ) - endif() - include(FindPackageHandleStandardArgs) diff --git a/vcpkg/ports/qtmultimedia/vcpkg.json b/vcpkg/ports/qtmultimedia/vcpkg.json deleted file mode 100644 index 1120cba5d..000000000 --- a/vcpkg/ports/qtmultimedia/vcpkg.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "name": "qtmultimedia", - "version": "6.10.2", - "description": "Qt Multimedia is an add-on module that provides a rich set of QML types and C++ classes to handle multimedia content.", - "homepage": "https://www.qt.io/", - "license": null, - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "concurrent", - "gui", - "network" - ] - }, - { - "name": "qtshadertools", - "default-features": false - } - ], - "default-features": [ - "widgets" - ], - "features": { - "ffmpeg": { - "description": "Build with ffmpeg", - "dependencies": [ - { - "name": "ffmpeg", - "default-features": false, - "features": [ - "avcodec", - "avdevice", - "avformat", - "swresample", - "swscale" - ] - }, - { - "name": "pulseaudio", - "platform": "linux" - }, - { - "name": "qtdeclarative", - "default-features": false - } - ] - }, - "gstreamer": { - "description": "Build with gstreamer", - "supports": "linux", - "dependencies": [ - "egl", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "qml": { - "description": "Build QML imports", - "dependencies": [ - { - "name": "qtdeclarative", - "default-features": false - } - ] - }, - "widgets": { - "description": "Build Multimedia Widgets", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "widgets" - ] - } - ] - } - } -} From e1a184deedccfb3c0298b87760444c90cc11f424 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 14:38:26 +0200 Subject: [PATCH 31/61] Update QtPositioning to 6.10.3 --- vcpkg/ports/README.md | 2 +- .../android15_altitude_fix.patch | 68 ------------------- .../qtpositioning/devendor-poly2tri.patch | 16 ++--- vcpkg/ports/qtpositioning/port.data.cmake | 6 +- vcpkg/ports/qtpositioning/portfile.cmake | 4 +- vcpkg/ports/qtpositioning/vcpkg.json | 2 +- 6 files changed, 15 insertions(+), 83 deletions(-) delete mode 100644 vcpkg/ports/qtpositioning/android15_altitude_fix.patch diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index faa9e27ff..bc81ee1bc 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -4,5 +4,5 @@ - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 - qtdeclarative - optimization to decrease package size -- qtpositioning - unknown +- qtpositioning - Android service fix & iOS orthometric position hack - gstreamer - unknown (linux build ffmpeg?) \ No newline at end of file diff --git a/vcpkg/ports/qtpositioning/android15_altitude_fix.patch b/vcpkg/ports/qtpositioning/android15_altitude_fix.patch deleted file mode 100644 index 453b830a2..000000000 --- a/vcpkg/ports/qtpositioning/android15_altitude_fix.patch +++ /dev/null @@ -1,68 +0,0 @@ -diff --git a/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java b/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java -index e4163b09..afb2889e 100644 ---- a/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java -+++ b/src/plugins/position/android/jar/src/org/qtproject/qt/android/positioning/QtPositioning.java -@@ -112,6 +112,8 @@ class QtPositioning implements LocationListener - static private void addMslAltitude(Location location) - { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { -+ if (location.hasMslAltitude()) // Nothing to be done -+ return; - if (altitudeConverter == null) - altitudeConverter = new AltitudeConverter(); - try { -diff --git a/src/plugins/position/android/src/jnipositioning.cpp b/src/plugins/position/android/src/jnipositioning.cpp -index 2b2919fa..0abc2cad 100644 ---- a/src/plugins/position/android/src/jnipositioning.cpp -+++ b/src/plugins/position/android/src/jnipositioning.cpp -@@ -220,7 +220,7 @@ namespace AndroidPositioning { - return ret; - } - -- QGeoPositionInfo positionInfoFromJavaLocation(const jobject &location) -+ QGeoPositionInfo positionInfoFromJavaLocation(const jobject &location, bool useAltConverter) - { - QGeoPositionInfo info; - -@@ -241,8 +241,11 @@ namespace AndroidPositioning { - coordinate.setAltitude(value); - } - // MSL altitude, available in API Level 34+. -- // It will be available only if we requested it when starting updates. -- if (QNativeInterface::QAndroidApplication::sdkVersion() >= 34) { -+ // In API Level 34 it was available only if we manually added it. -+ // In API Level 35 (and potentially later), it's automatically added -+ // to the location object, so we need to use it *only* when the user -+ // set the relevant plugin parameter. -+ if (useAltConverter && QNativeInterface::QAndroidApplication::sdkVersion() >= 34) { - attributeExists = jniObject.callMethod("hasMslAltitude"); - if (attributeExists) { - const jdouble value = jniObject.callMethod("getMslAltitudeMeters"); -@@ -451,7 +454,7 @@ namespace AndroidPositioning { - if (location == nullptr) - return QGeoPositionInfo(); - -- const QGeoPositionInfo info = positionInfoFromJavaLocation(location); -+ const QGeoPositionInfo info = positionInfoFromJavaLocation(location, useAltitudeConverter); - - return info; - } -@@ -615,7 +618,6 @@ static void positionUpdated(JNIEnv *env, jobject thiz, QtJniTypes::Location loca - { - Q_UNUSED(env); - Q_UNUSED(thiz); -- QGeoPositionInfo info = AndroidPositioning::positionInfoFromJavaLocation(location.object()); - - QGeoPositionInfoSourceAndroid *source = AndroidPositioning::idToPosSource()->value(androidClassKey); - if (!source) { -@@ -623,6 +625,10 @@ static void positionUpdated(JNIEnv *env, jobject thiz, QtJniTypes::Location loca - return; - } - -+ const bool useAltitudeConverter = source->useAltitudeConverter(); -+ QGeoPositionInfo info = -+ AndroidPositioning::positionInfoFromJavaLocation(location.object(), useAltitudeConverter); -+ - //we need to invoke indirectly as the Looper thread is likely to be not the same thread - if (!isSingleUpdate) - QMetaObject::invokeMethod(source, "processPositionUpdate", Qt::AutoConnection, diff --git a/vcpkg/ports/qtpositioning/devendor-poly2tri.patch b/vcpkg/ports/qtpositioning/devendor-poly2tri.patch index 1dd6ed4fd..9d4084d3a 100644 --- a/vcpkg/ports/qtpositioning/devendor-poly2tri.patch +++ b/vcpkg/ports/qtpositioning/devendor-poly2tri.patch @@ -1,7 +1,6 @@ -diff --git a/src/3rdparty/clip2tri/CMakeLists.txt b/src/3rdparty/clip2tri/CMakeLists.txt -index 9b5a56b..343314e 100644 ---- a/src/3rdparty/clip2tri/CMakeLists.txt -+++ b/src/3rdparty/clip2tri/CMakeLists.txt +diff --color -Naur a/src/3rdparty/clip2tri/CMakeLists.txt b/src/3rdparty/clip2tri/CMakeLists.txt +--- a/src/3rdparty/clip2tri/CMakeLists.txt 2023-05-13 16:59:42.377052155 +0200 ++++ b/src/3rdparty/clip2tri/CMakeLists.txt 2023-05-13 23:05:44.950379088 +0200 @@ -4,6 +4,7 @@ ## Bundled_Clip2Tri Generic Library: ##################################################################### @@ -10,7 +9,7 @@ index 9b5a56b..343314e 100644 qt_internal_add_3rdparty_library(Bundled_Clip2Tri QMAKE_LIB_NAME _clip2tri STATIC -@@ -13,11 +14,12 @@ qt_internal_add_3rdparty_library(Bundled_Clip2Tri +@@ -13,11 +14,12 @@ clip2tri.cpp clip2tri.h INCLUDE_DIRECTORIES ../clipper @@ -25,10 +24,9 @@ index 9b5a56b..343314e 100644 qt_disable_warnings(Bundled_Clip2Tri) qt_set_symbol_visibility_hidden(Bundled_Clip2Tri) -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 980c492..b1c48f2 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt +diff --color -Naur a/src/CMakeLists.txt b/src/CMakeLists.txt +--- a/src/CMakeLists.txt 2023-05-13 16:59:42.379052157 +0200 ++++ b/src/CMakeLists.txt 2023-05-13 17:00:19.256085781 +0200 @@ -2,7 +2,6 @@ # SPDX-License-Identifier: BSD-3-Clause diff --git a/vcpkg/ports/qtpositioning/port.data.cmake b/vcpkg/ports/qtpositioning/port.data.cmake index bb612be03..94477d34b 100644 --- a/vcpkg/ports/qtpositioning/port.data.cmake +++ b/vcpkg/ports/qtpositioning/port.data.cmake @@ -1,7 +1,7 @@ set(qtpositioning_HASH - "51cfcf50989508da13e2bb96293b866c72d4d26e2b702fae41fd5201738af8b96e17393fdec2668f3f217ef83257f2fbce0d33f53cea81ef980601c74991229e" + "52d6ebca4e2921776402895fed6c8cc81c50d274215c783bf499cdd37935c29b6027e203d717cffcc30c5be3d79081285112509b4dbe81355d8d02acb4a35c25" ) set(qtpositioning_URL - "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtpositioning-everywhere-src-6.10.2.tar.xz" + "https://download.qt.io/archive/qt/6.10/6.10.3/submodules/qtpositioning-everywhere-src-6.10.3.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.3/submodules/qtpositioning-everywhere-src-6.10.3.tar.xz" ) -set(qtpositioning_FILENAME "qtpositioning-everywhere-src-6.10.2.tar.xz") +set(qtpositioning_FILENAME "qtpositioning-everywhere-src-6.10.3.tar.xz") diff --git a/vcpkg/ports/qtpositioning/portfile.cmake b/vcpkg/ports/qtpositioning/portfile.cmake index 9e0875910..0266c3620 100644 --- a/vcpkg/ports/qtpositioning/portfile.cmake +++ b/vcpkg/ports/qtpositioning/portfile.cmake @@ -1,7 +1,9 @@ set(SCRIPT_PATH "${CURRENT_INSTALLED_DIR}/share/qtbase") include("${SCRIPT_PATH}/qt_install_submodule.cmake") -set(${PORT}_PATCHES devendor-poly2tri.patch foregroundservice.patch) +set(${PORT}_PATCHES devendor-poly2tri.patch foregroundservice.patch + ios_orthometric_altitude.patch +) vcpkg_check_features( OUT_FEATURE_OPTIONS diff --git a/vcpkg/ports/qtpositioning/vcpkg.json b/vcpkg/ports/qtpositioning/vcpkg.json index 59d430bf0..e227d6841 100644 --- a/vcpkg/ports/qtpositioning/vcpkg.json +++ b/vcpkg/ports/qtpositioning/vcpkg.json @@ -1,6 +1,6 @@ { "name": "qtpositioning", - "version": "6.10.2", + "version": "6.10.3", "description": "The Qt Positioning API provides positioning information via QML and C++ interfaces.", "homepage": "https://www.qt.io/", "license": null, From c2225a70d8af9ba21c1817be40db66070173ef22 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 14:48:53 +0200 Subject: [PATCH 32/61] Remove GStreamer overlay port and use VCPKG default --- vcpkg/ports/README.md | 3 +- .../gstreamer/base-must-be-enabled.patch | 13 - .../fix-bz2-windows-debug-dependency.patch | 26 - vcpkg/ports/gstreamer/fix-clang-cl-bad.patch | 111 --- vcpkg/ports/gstreamer/fix-clang-cl-base.patch | 13 - vcpkg/ports/gstreamer/fix-clang-cl-good.patch | 22 - .../gstreamer/fix-clang-cl-gstreamer.patch | 39 - vcpkg/ports/gstreamer/fix-clang-cl-ugly.patch | 13 - vcpkg/ports/gstreamer/fix-clang-cl.patch | 22 - .../gstreamer-disable-no-unused.patch | 14 - vcpkg/ports/gstreamer/no-downloads.patch | 17 - .../plugin-base-disable-no-unused.patch | 26 - vcpkg/ports/gstreamer/plugins-base-x11.patch | 13 - vcpkg/ports/gstreamer/portfile.cmake | 542 ----------- .../ports/gstreamer/remove_x264_define.patch | 18 - vcpkg/ports/gstreamer/srtp_fix.patch | 30 - vcpkg/ports/gstreamer/vcpkg.json | 841 ------------------ 17 files changed, 1 insertion(+), 1762 deletions(-) delete mode 100644 vcpkg/ports/gstreamer/base-must-be-enabled.patch delete mode 100644 vcpkg/ports/gstreamer/fix-bz2-windows-debug-dependency.patch delete mode 100644 vcpkg/ports/gstreamer/fix-clang-cl-bad.patch delete mode 100644 vcpkg/ports/gstreamer/fix-clang-cl-base.patch delete mode 100644 vcpkg/ports/gstreamer/fix-clang-cl-good.patch delete mode 100644 vcpkg/ports/gstreamer/fix-clang-cl-gstreamer.patch delete mode 100644 vcpkg/ports/gstreamer/fix-clang-cl-ugly.patch delete mode 100644 vcpkg/ports/gstreamer/fix-clang-cl.patch delete mode 100644 vcpkg/ports/gstreamer/gstreamer-disable-no-unused.patch delete mode 100644 vcpkg/ports/gstreamer/no-downloads.patch delete mode 100644 vcpkg/ports/gstreamer/plugin-base-disable-no-unused.patch delete mode 100644 vcpkg/ports/gstreamer/plugins-base-x11.patch delete mode 100644 vcpkg/ports/gstreamer/portfile.cmake delete mode 100644 vcpkg/ports/gstreamer/remove_x264_define.patch delete mode 100644 vcpkg/ports/gstreamer/srtp_fix.patch delete mode 100644 vcpkg/ports/gstreamer/vcpkg.json diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index bc81ee1bc..6e4de6896 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -4,5 +4,4 @@ - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 - qtdeclarative - optimization to decrease package size -- qtpositioning - Android service fix & iOS orthometric position hack -- gstreamer - unknown (linux build ffmpeg?) \ No newline at end of file +- qtpositioning - Android service fix & iOS orthometric position hack \ No newline at end of file diff --git a/vcpkg/ports/gstreamer/base-must-be-enabled.patch b/vcpkg/ports/gstreamer/base-must-be-enabled.patch deleted file mode 100644 index 5a4d3abeb..000000000 --- a/vcpkg/ports/gstreamer/base-must-be-enabled.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/meson.build b/meson.build -index 6d07929..df015cb 100644 ---- a/meson.build -+++ b/meson.build -@@ -159,7 +159,7 @@ foreach sp : subprojects - subproj = subproject(project_name, required: is_required, default_options: default_options) - endif - -- if project_name == 'gst-plugins-base' -+ if project_name == 'gst-plugins-base' and subproj.found() - gst_base_orc_req = subproj.get_variable('orc_req', '') - if gst_base_orc_req != orc_req - error('orc_req is "@0@" but it should be "@1@" from subprojects/gst-plugins-base/meson.build' diff --git a/vcpkg/ports/gstreamer/fix-bz2-windows-debug-dependency.patch b/vcpkg/ports/gstreamer/fix-bz2-windows-debug-dependency.patch deleted file mode 100644 index 2be3d28ae..000000000 --- a/vcpkg/ports/gstreamer/fix-bz2-windows-debug-dependency.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/subprojects/gst-plugins-bad/ext/bz2/meson.build b/subprojects/gst-plugins-bad/ext/bz2/meson.build -index 08d1596..be5fa02 100644 ---- a/subprojects/gst-plugins-bad/ext/bz2/meson.build -+++ b/subprojects/gst-plugins-bad/ext/bz2/meson.build -@@ -4,7 +4,7 @@ bz2_sources = [ - 'gstbz2enc.c', - ] - --bz2_dep = cc.find_library('bz2', required : get_option('bz2')) -+bz2_dep = dependency('bzip2', required : get_option('bz2')) - - if bz2_dep.found() and cc.has_header_symbol('bzlib.h', 'BZ2_bzlibVersion') - gstbz2 = library('gstbz2', -diff --git a/subprojects/gst-plugins-good/gst/matroska/meson.build b/subprojects/gst-plugins-good/gst/matroska/meson.build -index d8a6a96..dd03de2 100644 ---- a/subprojects/gst-plugins-good/gst/matroska/meson.build -+++ b/subprojects/gst-plugins-good/gst/matroska/meson.build -@@ -12,7 +12,7 @@ matroska_sources = [ - 'lzo.c', - ] - --bz2_dep = cc.find_library('bz2', required : get_option('bz2')) -+bz2_dep = dependency('bzip2', required : get_option('bz2')) - cdata.set('HAVE_BZ2', bz2_dep.found() and cc.has_header('bzlib.h')) - - gstmatroska = library('gstmatroska', diff --git a/vcpkg/ports/gstreamer/fix-clang-cl-bad.patch b/vcpkg/ports/gstreamer/fix-clang-cl-bad.patch deleted file mode 100644 index c3eeaf1e0..000000000 --- a/vcpkg/ports/gstreamer/fix-clang-cl-bad.patch +++ /dev/null @@ -1,111 +0,0 @@ -diff --git a/subprojects/gst-plugins-bad/ext/dts/meson.build b/subprojects/gst-plugins-bad/ext/dts/meson.build -index c4868a4..6b34cb7 100644 ---- a/subprojects/gst-plugins-bad/ext/dts/meson.build -+++ b/subprojects/gst-plugins-bad/ext/dts/meson.build -@@ -20,7 +20,7 @@ if not dca_dep.found() - endif - - no_warn_c_args = [] --if cc.get_id() != 'msvc' -+if cc.get_argument_syntax() != 'msvc' - # autotools didn't use the libdca pkg-config cflags, and they - # can point to a non-existing location (/usr/include/dca) - no_warn_c_args = ['-Wno-missing-include-dirs'] -diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build -index 160080a..6acf110 100644 ---- a/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build -+++ b/subprojects/gst-plugins-bad/gst-libs/gst/d3d11/meson.build -@@ -158,7 +158,7 @@ endif - - # MinGW 32bits compiler seems to be complaining about redundant-decls - # when ComPtr is in use. Let's just disable the warning --if cc.get_id() != 'msvc' -+if cc.get_argument_syntax() != 'msvc' - extra_args = cc.get_supported_arguments([ - '-Wno-redundant-decls', - ]) -diff --git a/subprojects/gst-plugins-bad/meson.build b/subprojects/gst-plugins-bad/meson.build -index 84eeb17..1743f41 100644 ---- a/subprojects/gst-plugins-bad/meson.build -+++ b/subprojects/gst-plugins-bad/meson.build -@@ -54,7 +54,7 @@ endif - - cdata = configuration_data() - cdata.set('ENABLE_NLS', 1) - --if cc.get_id() == 'msvc' -+if cc.get_argument_syntax() == 'msvc' - msvc_args = [ - # Ignore several spurious warnings for things gstreamer does very commonly - # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it -diff --git a/subprojects/gst-plugins-bad/sys/asio/meson.build b/subprojects/gst-plugins-bad/sys/asio/meson.build -index c61ad4e..b30793c 100644 ---- a/subprojects/gst-plugins-bad/sys/asio/meson.build -+++ b/subprojects/gst-plugins-bad/sys/asio/meson.build -@@ -15,7 +15,7 @@ endif - - # FIXME: non-msvc is not tested, and unlikely supported yet because of - # tool-chain issue --if cxx.get_id() != 'msvc' -+if cxx.get_argument_syntax() != 'msvc' - if asio_option.enabled() - error('asio plugin can only be built with MSVC') - else -diff --git a/subprojects/gst-plugins-bad/sys/d3d11/meson.build b/subprojects/gst-plugins-bad/sys/d3d11/meson.build -index 1368b79..8dd3b30 100644 ---- a/subprojects/gst-plugins-bad/sys/d3d11/meson.build -+++ b/subprojects/gst-plugins-bad/sys/d3d11/meson.build -@@ -96,7 +96,7 @@ endif - - # MinGW 32bits compiler seems to be complaining about redundant-decls - # when ComPtr is in use. Let's just disable the warning --if cc.get_id() != 'msvc' -+if cc.get_argument_syntax() != 'msvc' - extra_mingw_args = cc.get_supported_arguments([ - '-Wno-redundant-decls', - ]) -diff --git a/subprojects/gst-plugins-bad/sys/decklink/meson.build b/subprojects/gst-plugins-bad/sys/decklink/meson.build -index d869e79a4..c7b37a7c6 100644 ---- a/subprojects/gst-plugins-bad/sys/decklink/meson.build -+++ b/subprojects/gst-plugins-bad/sys/decklink/meson.build -@@ -18,7 +18,7 @@ decklink_libs = [] - - if host_system == 'windows' - decklink_sources += ['win/DeckLinkAPIDispatch.cpp', 'win/DeckLinkAPI_i.c'] -- if cxx.get_id() == 'msvc' -+ if cxx.get_argument_syntax() == 'msvc' - # FIXME: Use commsuppwd.lib for debug builds? - comutil_dep = cxx.find_library('comsuppw', required : get_option('decklink')) - if comutil_dep.found() -diff --git a/subprojects/gst-plugins-bad/sys/mediafoundation/meson.build b/subprojects/gst-plugins-bad/sys/mediafoundation/meson.build -index 6b9a059..40713ce 100644 ---- a/subprojects/gst-plugins-bad/sys/mediafoundation/meson.build -+++ b/subprojects/gst-plugins-bad/sys/mediafoundation/meson.build -@@ -54,7 +54,7 @@ if host_system != 'windows' or mf_option.disabled() - subdir_done() - endif - --if cc.get_id() != 'msvc' -+if cc.get_argument_syntax() != 'msvc' - if mf_option.enabled() - error('mediafoundation plugin can only be built with MSVC') - endif -diff --git a/subprojects/gst-plugins-bad/sys/msdk/meson.build b/subprojects/gst-plugins-bad/sys/msdk/meson.build -index 659b96c..92e6bc4 100644 ---- a/subprojects/gst-plugins-bad/sys/msdk/meson.build -+++ b/subprojects/gst-plugins-bad/sys/msdk/meson.build -@@ -176,12 +176,12 @@ if use_onevpl and have_mfx_ver205 - endif - - if host_machine.system() == 'windows' -- if cc.get_id() != 'msvc' and msdk_option.enabled() -+ if cc.get_argument_syntax() != 'msvc' and msdk_option.enabled() - error('msdk plugin can only be built with MSVC') - endif - legacy_stdio_dep = cc.find_library('legacy_stdio_definitions', required: get_option('msdk')) - msdk_deps = declare_dependency(dependencies: [gstd3d11_dep, legacy_stdio_dep]) -- msdk_deps_found = gstd3d11_dep.found() and legacy_stdio_dep.found() and cc.get_id() == 'msvc' -+ msdk_deps_found = d3d11_dep.found() and legacy_stdio_dep.found() and cc.get_argument_syntax() == 'msvc' - else - libdl_dep = cc.find_library('dl', required: get_option('msdk')) - libgudev_dep = dependency('gudev-1.0', required: get_option('msdk')) diff --git a/vcpkg/ports/gstreamer/fix-clang-cl-base.patch b/vcpkg/ports/gstreamer/fix-clang-cl-base.patch deleted file mode 100644 index 227a7e05b..000000000 --- a/vcpkg/ports/gstreamer/fix-clang-cl-base.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/subprojects/gst-plugins-base/meson.build b/subprojects/gst-plugins-base/meson.build -index c040bc9..ce9071c 100644 ---- a/subprojects/gst-plugins-base/meson.build -+++ b/subprojects/gst-plugins-base/meson.build -@@ -51,7 +51,7 @@ gst_libraries = [] - - cc = meson.get_compiler('c') - --if cc.get_id() == 'msvc' -+if cc.get_argument_syntax() == 'msvc' - msvc_args = [ - # Ignore several spurious warnings for things gstreamer does very commonly - # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it diff --git a/vcpkg/ports/gstreamer/fix-clang-cl-good.patch b/vcpkg/ports/gstreamer/fix-clang-cl-good.patch deleted file mode 100644 index 10be6030a..000000000 --- a/vcpkg/ports/gstreamer/fix-clang-cl-good.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/subprojects/gst-plugins-good/meson.build b/subprojects/gst-plugins-good/meson.build -index 64705379f..0c55b9732 100644 ---- a/subprojects/gst-plugins-good/meson.build -+++ b/subprojects/gst-plugins-good/meson.build -@@ -30,7 +30,7 @@ plugins = [] - cc = meson.get_compiler('c') - host_system = host_machine.system() - --if cc.get_id() == 'msvc' -+if cc.get_argument_syntax() == 'msvc' - msvc_args = [ - # Ignore several spurious warnings for things gstreamer does very commonly - # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it -@@ -183,7 +183,7 @@ cdata.set('SIZEOF_OFF_T', cc.sizeof('off_t')) - # Here be fixmes. - # FIXME: check if this is correct - cdata.set('HAVE_CPU_X86_64', host_machine.cpu() == 'amd64') --cdata.set('HAVE_GCC_ASM', cc.get_id() != 'msvc') -+cdata.set('HAVE_GCC_ASM', cc.get_argument_syntax() != 'msvc') - cdata.set_quoted('VERSION', gst_version) - cdata.set_quoted('PACKAGE_VERSION', gst_version) - cdata.set_quoted('GST_LICENSE', 'LGPL') diff --git a/vcpkg/ports/gstreamer/fix-clang-cl-gstreamer.patch b/vcpkg/ports/gstreamer/fix-clang-cl-gstreamer.patch deleted file mode 100644 index a89167b30..000000000 --- a/vcpkg/ports/gstreamer/fix-clang-cl-gstreamer.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/subprojects/gstreamer/gst/parse/meson.build b/subprojects/gstreamer/gst/parse/meson.build -index b79a07c..891f907 100644 ---- a/subprojects/gstreamer/gst/parse/meson.build -+++ b/subprojects/gstreamer/gst/parse/meson.build -@@ -16,7 +16,7 @@ else - endif - - flex_cdata.set('FLEX', flex.full_path()) --if cc.get_id() == 'msvc' -+if cc.get_argument_syntax() == 'msvc' - flex_cdata.set('FLEX_ARGS', '--nounistd') - else - flex_cdata.set('FLEX_ARGS', '') -diff --git a/subprojects/gstreamer/meson.build b/subprojects/gstreamer/meson.build -index 941bedc..cd37a40 100644 ---- a/subprojects/gstreamer/meson.build -+++ b/subprojects/gstreamer/meson.build -@@ -47,7 +47,7 @@ endif - - cdata = configuration_data() - --if cc.get_id() == 'msvc' -+if cc.get_argument_syntax() == 'msvc' - msvc_args = [ - # Ignore several spurious warnings for things gstreamer does very commonly - # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it -@@ -347,8 +347,10 @@ static __uint128_t v2 = 10; - static __uint128_t u; - u = v1 / v2; - }''' --if cc.compiles(uint128_t_src, name : '__uint128_t available') -- cdata.set('HAVE_UINT128_T', 1) -+if cc.get_argument_syntax() != 'msvc' -+ if cc.compiles(uint128_t_src, name : '__uint128_t available') -+ cdata.set('HAVE_UINT128_T', 1) -+ endif - endif - - # All supported platforms have long long now diff --git a/vcpkg/ports/gstreamer/fix-clang-cl-ugly.patch b/vcpkg/ports/gstreamer/fix-clang-cl-ugly.patch deleted file mode 100644 index 100b6a7b6..000000000 --- a/vcpkg/ports/gstreamer/fix-clang-cl-ugly.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/subprojects/gst-plugins-ugly/meson.build b/subprojects/gst-plugins-ugly/meson.build -index 14be48c4c..83d019874 100644 ---- a/subprojects/gst-plugins-ugly/meson.build -+++ b/subprojects/gst-plugins-ugly/meson.build -@@ -31,7 +31,7 @@ if have_cxx - cxx = meson.get_compiler('cpp') - endif - --if cc.get_id() == 'msvc' -+if cc.get_argument_syntax() == 'msvc' - msvc_args = [ - # Ignore several spurious warnings for things gstreamer does very commonly - # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it diff --git a/vcpkg/ports/gstreamer/fix-clang-cl.patch b/vcpkg/ports/gstreamer/fix-clang-cl.patch deleted file mode 100644 index ac00b9e13..000000000 --- a/vcpkg/ports/gstreamer/fix-clang-cl.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/meson.build b/meson.build -index 1316366ed..daeaf3cb1 100644 ---- a/meson.build -+++ b/meson.build -@@ -62,7 +62,7 @@ endif - # Ensure that MSVC interprets all source code as UTF-8. Only do this when we're - # not a subproject, because subprojects are not allowed to call - # add_global_arguments(). --if not meson.is_subproject() and cc.get_id() == 'msvc' -+if not meson.is_subproject() and cc.get_argument_syntax() == 'msvc' - add_global_arguments( - cc.get_supported_arguments(['/utf-8']), # set the input encoding to utf-8 - language: ['c', 'cpp']) -@@ -316,7 +316,7 @@ if get_option('default_library') == 'static' - if cc.has_link_argument(link_arg) - gstfull_link_args += link_arg - link_deps += symbol_map -- elif cc.get_id() == 'msvc' -+ elif cc.get_argument_syntax() == 'msvc' - warning('FIXME: Provide a def file to publish the public symbols') - else - warning('FIXME: Linker does not support the supplied version script (' + symbol_map + '), please disable the "gst-full-version-script" option') diff --git a/vcpkg/ports/gstreamer/gstreamer-disable-no-unused.patch b/vcpkg/ports/gstreamer/gstreamer-disable-no-unused.patch deleted file mode 100644 index 971d80295..000000000 --- a/vcpkg/ports/gstreamer/gstreamer-disable-no-unused.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/subprojects/gstreamer/meson.build b/subprojects/gstreamer/meson.build -index bed8c4e..772809e 100644 ---- a/subprojects/gstreamer/meson.build -+++ b/subprojects/gstreamer/meson.build -@@ -435,8 +435,8 @@ if cc.has_header('execinfo.h') - endif - endif - - gst_debug = get_option('gst_debug') --if not gst_debug -+if not gst_debug and cc.has_argument('-Wno-unused') - add_project_arguments(['-Wno-unused'], language: 'c') - endif - diff --git a/vcpkg/ports/gstreamer/no-downloads.patch b/vcpkg/ports/gstreamer/no-downloads.patch deleted file mode 100644 index caf128021..000000000 --- a/vcpkg/ports/gstreamer/no-downloads.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/meson.build b/meson.build -index df015cb..93cf7e9 100644 ---- a/meson.build -+++ b/meson.build -@@ -105,12 +105,6 @@ subprojects = [ - ['gst-plugins-rs', { 'option': get_option('rs'), 'build-hotdoc': true, 'match_gst_version': false}], - ] - --if build_system == 'windows' -- subproject('win-flex-bison-binaries') -- subproject('win-nasm') --elif build_system == 'darwin' -- subproject('macos-bison-binary') --endif - - orc_option = get_option('orc') - # There is a check below to keep this in sync with subprojects/gst-plugins-base/meson.build diff --git a/vcpkg/ports/gstreamer/plugin-base-disable-no-unused.patch b/vcpkg/ports/gstreamer/plugin-base-disable-no-unused.patch deleted file mode 100644 index f8c249d96..000000000 --- a/vcpkg/ports/gstreamer/plugin-base-disable-no-unused.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/subprojects/gst-plugins-base/meson.build b/subprojects/gst-plugins-base/meson.build -index 9b00253..495671e 100644 ---- a/subprojects/gst-plugins-base/meson.build -+++ b/subprojects/gst-plugins-base/meson.build -@@ -388,10 +388,11 @@ int32x4_t testfunc(int16_t *a, int16_t *b) { - endif - endif - -+build_system = build_machine.system() - if gst_dep.type_name() == 'internal' - gst_proj = subproject('gstreamer') - -- if not gst_proj.get_variable('gst_debug') -+ if not gst_proj.get_variable('gst_debug') and build_system != 'windows' - message('GStreamer debug system is disabled') - add_project_arguments('-Wno-unused', language: 'c') - else -@@ -404,7 +405,7 @@ else - #include - #ifdef GST_DISABLE_GST_DEBUG - #error "debugging disabled, make compiler fail" --#endif''' , dependencies: gst_dep) -+#endif''' , dependencies: gst_dep) and build_system != 'windows' - message('GStreamer debug system is disabled') - add_project_arguments('-Wno-unused', language: 'c') - else diff --git a/vcpkg/ports/gstreamer/plugins-base-x11.patch b/vcpkg/ports/gstreamer/plugins-base-x11.patch deleted file mode 100644 index f42551948..000000000 --- a/vcpkg/ports/gstreamer/plugins-base-x11.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/subprojects/gst-plugins-base/meson.build b/subprojects/gst-plugins-base/meson.build -index 9b00253a0f..e3c3a0d920 100644 ---- a/subprojects/gst-plugins-base/meson.build -+++ b/subprojects/gst-plugins-base/meson.build -@@ -316,7 +316,7 @@ else - gtk_quartz_dep = dependency('', required : false) - endif - --core_conf.set('HAVE_X11', x11_dep.found()) -+core_conf.set('HAVE_X11', false) - core_conf.set('HAVE_GIO_UNIX_2_0', giounix_dep.found()) - - if gio_dep.type_name() == 'pkgconfig' diff --git a/vcpkg/ports/gstreamer/portfile.cmake b/vcpkg/ports/gstreamer/portfile.cmake deleted file mode 100644 index 1bebdb2b9..000000000 --- a/vcpkg/ports/gstreamer/portfile.cmake +++ /dev/null @@ -1,542 +0,0 @@ -if (VCPKG_TARGET_IS_WINDOWS) - set(PATCHES plugin-base-disable-no-unused.patch) -endif () - -vcpkg_from_gitlab( - GITLAB_URL - https://gitlab.freedesktop.org - OUT_SOURCE_PATH - SOURCE_PATH - REPO - gstreamer/gstreamer - REF - "${VERSION}" - SHA512 - 0d69896d0a83452320df0d0f56c710df1365a259cd3f48dc7cd4df18d45b27caea7174aafa15ae5eb8637ccdef192c1047185b369b7232db4eaacbc57ffaaa22 - HEAD_REF - main - PATCHES - fix-clang-cl.patch - fix-clang-cl-gstreamer.patch - fix-clang-cl-base.patch - fix-clang-cl-good.patch - fix-clang-cl-bad.patch - fix-clang-cl-ugly.patch - gstreamer-disable-no-unused.patch - srtp_fix.patch - fix-bz2-windows-debug-dependency.patch - base-must-be-enabled.patch - no-downloads.patch - ${PATCHES} -) - -vcpkg_find_acquire_program(FLEX) -vcpkg_find_acquire_program(BISON) -vcpkg_find_acquire_program(NASM) - -if (VCPKG_TARGET_IS_OSX) - # In Darwin platform, there can be an old version of `bison`, Which can't be used for - # `gst-build`. It requires 2.4+ - execute_process(COMMAND ${BISON} --version OUTPUT_VARIABLE BISON_OUTPUT) - string( - REGEX MATCH - "([0-9]+)\\.([0-9]+)\\.([0-9]+)" - BISON_VERSION - "${BISON_OUTPUT}" - ) - set(BISON_MAJOR ${CMAKE_MATCH_1}) - set(BISON_MINOR ${CMAKE_MATCH_2}) - message(STATUS "Using bison: ${BISON_MAJOR}.${BISON_MINOR}.${CMAKE_MATCH_3}") - if (NOT (BISON_MAJOR GREATER_EQUAL 2 AND BISON_MINOR GREATER_EQUAL 4)) - message( - WARNING - "'bison' upgrade is required. Please check the https://stackoverflow.com/a/35161881" - ) - endif () -endif () - -# General features -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_OPTIONS - FEATURES - gpl - gpl - libav - libav - nls - nls - ges - ges - plugins-base - base - gl-graphene - gst-plugins-base:gl-graphene - alsa - gst-plugins-base:alsa - ogg - gst-plugins-base:ogg - opus-base - gst-plugins-base:opus - pango - gst-plugins-base:pango - vorbis - gst-plugins-base:vorbis - x11-base - gst-plugins-base:x11 - x11-base - gst-plugins-base:xshm - plugins-good - good - bzip2-good - gst-plugins-good:bz2 - cairo - gst-plugins-good:cairo - flac - gst-plugins-good:flac - gdk-pixbuf - gst-plugins-good:gdk-pixbuf - jpeg - gst-plugins-good:jpeg - mpg123 - gst-plugins-good:mpg123 - png - gst-plugins-good:png - speex - gst-plugins-good:speex - taglib - gst-plugins-good:taglib - vpx - gst-plugins-good:vpx - plugins-ugly - ugly - x264 - gst-plugins-ugly:x264 - plugins-bad - bad - aes - gst-plugins-bad:aes - aom - gst-plugins-bad:aom - assrender - gst-plugins-bad:assrender - bzip2-bad - gst-plugins-bad:bz2 - chromaprint - gst-plugins-bad:chromaprint - closedcaption - gst-plugins-bad:closedcaption - colormanagement - gst-plugins-bad:colormanagement - dash - gst-plugins-bad:dash - dc1394 - gst-plugins-bad:dc1394 - dtls - gst-plugins-bad:dtls - faad - gst-plugins-bad:faad - fdkaac - gst-plugins-bad:fdkaac - fluidsynth - gst-plugins-bad:fluidsynth - libde265 - gst-plugins-bad:libde265 - microdns - gst-plugins-bad:microdns - modplug - gst-plugins-bad:modplug - nvcodec - gst-plugins-bad:nvcodec - openal - gst-plugins-bad:openal - openh264 - gst-plugins-bad:openh264 - openjpeg - gst-plugins-bad:openjpeg - openmpt - gst-plugins-bad:openmpt - opus-bad - gst-plugins-bad:opus - smoothstreaming - gst-plugins-bad:smoothstreaming - sndfile - gst-plugins-bad:sndfile - soundtouch - gst-plugins-bad:soundtouch - srt - gst-plugins-bad:srt - srtp - gst-plugins-bad:srtp - webp - gst-plugins-bad:webp - webrtc - gst-plugins-bad:webrtc - wildmidi - gst-plugins-bad:wildmidi - x11-bad - gst-plugins-bad:x11 - x265 - gst-plugins-bad:x265 - asio - gst-plugins-bad:asio -) - -string( - REPLACE "OFF" - "disabled" - FEATURE_OPTIONS - "${FEATURE_OPTIONS}" -) -string( - REPLACE "ON" - "enabled" - FEATURE_OPTIONS - "${FEATURE_OPTIONS}" -) - -if (VCPKG_TARGET_IS_WINDOWS) - set(PLUGIN_BASE_WINDOW_SYSTEM win32) - set(PLUGIN_BASE_GL_PLATFORM wgl) -else () - set(PLUGIN_BASE_WINDOW_SYSTEM auto) - set(PLUGIN_BASE_GL_PLATFORM auto) -endif () - -if ("asio" IN_LIST FEATURES) - set(PLUGIN_BAD_ASIO_SDK_PATH ${CURRENT_INSTALLED_DIR}/include/asiosdk) -else () - set(PLUGIN_BAD_ASIO_SDK_PATH "") -endif () - -# -# References -# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/1.20.4/subprojects/gstreamer/meson_options.txt -# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/1.20.4/subprojects/gst-plugins-base/meson_options.txt -# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/1.20.4/subprojects/gst-plugins-good/meson_options.txt -# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/1.20.4/subprojects/gst-plugins-ugly/meson_options.txt -# https://gitlab.freedesktop.org/gstreamer/gstreamer/-/blob/1.20.4/subprojects/gst-plugins-bad/meson_options.txt -# -# Rationale for added options Common options are added below systematically Feature -# options are added below only if the feature needs an external dependency Feature options -# that are dependent on the operating system type (like wasapi or osxaudio) are set to -# auto Every other feature options are made available if the dependency is available on -# vcpkg and if the plugin has managed to build during tests -# - -vcpkg_configure_meson( - SOURCE_PATH - "${SOURCE_PATH}" - OPTIONS - ${FEATURE_OPTIONS} - # General options - -Dpython=disabled - -Dlibnice=disabled - -Ddevtools=disabled - -Drtsp_server=disabled - -Domx=disabled - -Dvaapi=disabled - -Dsharp=disabled - -Drs=disabled - -Dgst-examples=disabled - -Dtls=disabled - -Dqt5=disabled - # Common options - -Dtests=disabled - -Dexamples=disabled - -Dintrospection=disabled - -Dorc=disabled # gstreamer requires a specific version of orc which is not available in - # vcpkg - -Ddoc=disabled - -Dgtk_doc=disabled - # gstreamer - -Dgstreamer:check=disabled - -Dgstreamer:libunwind=disabled - -Dgstreamer:libdw=disabled - -Dgstreamer:dbghelp=disabled - -Dgstreamer:bash-completion=disabled - -Dgstreamer:coretracers=disabled - -Dgstreamer:benchmarks=disabled - -Dgstreamer:gst_debug=true - # gst-plugins-base - -Dgst-plugins-base:gl_winsys=${PLUGIN_BASE_WINDOW_SYSTEM} - -Dgst-plugins-base:gl_platform=${PLUGIN_BASE_GL_PLATFORM} - -Dgst-plugins-base:cdparanoia=disabled - -Dgst-plugins-base:libvisual=disabled - -Dgst-plugins-base:theora=disabled - -Dgst-plugins-base:tremor=disabled - -Dgst-plugins-base:xvideo=disabled - # gst-plugins-good - -Dgst-plugins-good:aalib=disabled - -Dgst-plugins-good:directsound=auto - -Dgst-plugins-good:dv=disabled - -Dgst-plugins-good:dv1394=disabled - -Dgst-plugins-good:gtk3=disabled # GTK version 3 only - -Dgst-plugins-good:jack=disabled - -Dgst-plugins-good:lame=disabled - -Dgst-plugins-good:libcaca=disabled - -Dgst-plugins-good:oss=disabled - -Dgst-plugins-good:oss4=disabled - -Dgst-plugins-good:osxaudio=auto - -Dgst-plugins-good:osxvideo=auto - -Dgst-plugins-good:pulse=auto - -Dgst-plugins-good:qt5=disabled - -Dgst-plugins-good:shout2=disabled - # -Dgst-plugins-good:soup=disabled - -Dgst-plugins-good:twolame=disabled - -Dgst-plugins-good:waveform=auto - -Dgst-plugins-good:wavpack=disabled # Error during plugin build - # gst-plugins-ugly - -Dgst-plugins-ugly:a52dec=disabled - -Dgst-plugins-ugly:amrnb=disabled - -Dgst-plugins-ugly:amrwbdec=disabled - -Dgst-plugins-ugly:cdio=disabled - -Dgst-plugins-ugly:dvdread=disabled - -Dgst-plugins-ugly:mpeg2dec=disabled # libmpeg2 not found - -Dgst-plugins-ugly:sidplay=disabled - # gst-plugins-bad - -Dgst-plugins-bad:avtp=disabled - -Dgst-plugins-bad:androidmedia=auto - -Dgst-plugins-bad:applemedia=auto - -Dgst-plugins-bad:asio-sdk-path=${PLUGIN_BAD_ASIO_SDK_PATH} - -Dgst-plugins-bad:bluez=disabled - -Dgst-plugins-bad:bs2b=disabled - -Dgst-plugins-bad:curl=disabled # Error during plugin build - -Dgst-plugins-bad:curl-ssh2=disabled - -Dgst-plugins-bad:d3dvideosink=auto - -Dgst-plugins-bad:d3d11=auto - -Dgst-plugins-bad:decklink=disabled - -Dgst-plugins-bad:directfb=disabled - -Dgst-plugins-bad:directsound=auto - -Dgst-plugins-bad:dts=disabled - -Dgst-plugins-bad:dvb=auto - -Dgst-plugins-bad:faac=disabled - -Dgst-plugins-bad:fbdev=auto - -Dgst-plugins-bad:flite=disabled - -Dgst-plugins-bad:gl=auto - -Dgst-plugins-bad:gme=disabled - -Dgst-plugins-bad:gs=disabled # Error during plugin configuration (abseil pkg-config - # file missing) - -Dgst-plugins-bad:gsm=disabled - -Dgst-plugins-bad:ipcpipeline=auto - -Dgst-plugins-bad:iqa=disabled - -Dgst-plugins-bad:kate=disabled - -Dgst-plugins-bad:kms=disabled - -Dgst-plugins-bad:ladspa=disabled - -Dgst-plugins-bad:ldac=disabled - -Dgst-plugins-bad:lv2=disabled # Error during plugin configuration (lilv pkg-config file - # missing) - -Dgst-plugins-bad:mediafoundation=auto - -Dgst-plugins-bad:mpeg2enc=disabled - -Dgst-plugins-bad:mplex=disabled - -Dgst-plugins-bad:msdk=disabled - -Dgst-plugins-bad:musepack=disabled - -Dgst-plugins-bad:neon=disabled - -Dgst-plugins-bad:onnx=disabled # libonnxruntime not found - -Dgst-plugins-bad:openaptx=disabled - -Dgst-plugins-bad:opencv=disabled # opencv not found - -Dgst-plugins-bad:openexr=disabled # OpenEXR::IlmImf target not found - -Dgst-plugins-bad:openni2=disabled # libopenni2 not found - -Dgst-plugins-bad:opensles=disabled - -Dgst-plugins-bad:qroverlay=disabled - -Dgst-plugins-bad:resindvd=disabled - -Dgst-plugins-bad:rsvg=disabled # librsvg-2.0 not found - -Dgst-plugins-bad:rtmp=disabled # librtmp not found - -Dgst-plugins-bad:sbc=disabled - -Dgst-plugins-bad:sctp=auto - -Dgst-plugins-bad:shm=disabled - -Dgst-plugins-bad:spandsp=disabled - -Dgst-plugins-bad:svthevcenc=disabled - -Dgst-plugins-bad:teletext=disabled - -Dgst-plugins-bad:tinyalsa=disabled - -Dgst-plugins-bad:transcode=disabled - -Dgst-plugins-bad:ttml=disabled - -Dgst-plugins-bad:uvch264=disabled - -Dgst-plugins-bad:va=disabled - -Dgst-plugins-bad:voaacenc=disabled - -Dgst-plugins-bad:voamrwbenc=disabled - -Dgst-plugins-bad:vulkan=auto - -Dgst-plugins-bad:wasapi=auto - -Dgst-plugins-bad:wasapi2=auto - -Dgst-plugins-bad:wayland=auto - -Dgst-plugins-bad:winks=disabled - -Dgst-plugins-bad:winscreencap=auto - -Dgst-plugins-bad:zbar=disabled # Error during plugin build - -Dgst-plugins-bad:zxing=disabled # Error during plugin build - -Dgst-plugins-bad:wpe=disabled - -Dgst-plugins-bad:magicleap=disabled - -Dgst-plugins-bad:v4l2codecs=disabled - -Dgst-plugins-bad:isac=disabled - OPTIONS_RELEASE - -Dgobject-cast-checks=disabled - -Dglib-asserts=disabled - -Dglib-checks=disabled - -Dgstreamer:extra-checks=disabled - ADDITIONAL_BINARIES - flex='${FLEX}' - bison='${BISON}' - nasm='${NASM}' - glib-genmarshal='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-genmarshal' - glib-mkenums='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-mkenums' -) - -vcpkg_install_meson() - -# Remove duplicated GL headers (we already have `opengl-registry`) -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/KHR" - "${CURRENT_PACKAGES_DIR}/include/GL" -) - -if (NOT VCPKG_TARGET_IS_LINUX AND "plugins-base" IN_LIST FEATURES) - file(RENAME "${CURRENT_PACKAGES_DIR}/lib/gstreamer-1.0/include/gst/gl/gstglconfig.h" - "${CURRENT_PACKAGES_DIR}/include/gstreamer-1.0/gst/gl/gstglconfig.h" - ) -endif () - -list( - APPEND - GST_BIN_TOOLS - gst-inspect-1.0 - gst-launch-1.0 - gst-stats-1.0 - gst-typefind-1.0 -) -list(APPEND GST_LIBEXEC_TOOLS gst-plugin-scanner) - -if ("ges" IN_LIST FEATURES) - list(APPEND GST_BIN_TOOLS ges-launch-1.0) -endif () - -if ("plugins-base" IN_LIST FEATURES) - list( - APPEND - GST_BIN_TOOLS - gst-device-monitor-1.0 - gst-discoverer-1.0 - gst-play-1.0 - ) -endif () - -if ("plugins-bad" IN_LIST FEATURES) - list(APPEND GST_BIN_TOOLS gst-transcoder-1.0) -endif () - -vcpkg_copy_tools(TOOL_NAMES ${GST_BIN_TOOLS} AUTO_CLEAN) - -vcpkg_copy_tools( - TOOL_NAMES - ${GST_LIBEXEC_TOOLS} - SEARCH_DIR - "${CURRENT_PACKAGES_DIR}/libexec/gstreamer-1.0" - AUTO_CLEAN -) - -file( - REMOVE_RECURSE - "${CURRENT_PACKAGES_DIR}/debug/share" - "${CURRENT_PACKAGES_DIR}/debug/libexec" - "${CURRENT_PACKAGES_DIR}/debug/lib/gstreamer-1.0/include" - "${CURRENT_PACKAGES_DIR}/libexec" - "${CURRENT_PACKAGES_DIR}/lib/gstreamer-1.0/include" - "${CURRENT_PACKAGES_DIR}/share/gdb" -) - -if (VCPKG_LIBRARY_LINKAGE STREQUAL "static") - # Move plugin pkg-config files - file(GLOB pc_files "${CURRENT_PACKAGES_DIR}/lib/gstreamer-1.0/pkgconfig/*") - file(COPY ${pc_files} DESTINATION "${CURRENT_PACKAGES_DIR}/lib/pkgconfig") - file(GLOB pc_files_dbg "${CURRENT_PACKAGES_DIR}/debug/lib/gstreamer-1.0/pkgconfig/*") - file(COPY ${pc_files_dbg} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/gstreamer-1.0/pkgconfig/" - "${CURRENT_PACKAGES_DIR}/lib/gstreamer-1.0/pkgconfig/" - ) - - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin" "${CURRENT_PACKAGES_DIR}/bin") - set(PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}") - set(SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}") - file(REMOVE "${CURRENT_PACKAGES_DIR}/debug/lib/${PREFIX}gstreamer-full-1.0${SUFFIX}" - "${CURRENT_PACKAGES_DIR}/lib/${PREFIX}gstreamer-full-1.0${SUFFIX}" - ) - vcpkg_replace_string( - "${CURRENT_PACKAGES_DIR}/include/gstreamer-1.0/gst/gstconfig.h" - "!defined(GST_STATIC_COMPILATION)" "0" - ) -endif () - -if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - # move plugins to ${prefix}/plugins/${PORT} instead of ${prefix}/lib/gstreamer-1.0 - if (NOT VCPKG_BUILD_TYPE) - file( - GLOB - DBG_BINS - "${CURRENT_PACKAGES_DIR}/debug/lib/gstreamer-1.0/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}" - "${CURRENT_PACKAGES_DIR}/debug/lib/gstreamer-1.0/*.pdb" - ) - file(COPY ${DBG_BINS} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/plugins/${PORT}") - endif () - file( - GLOB - REL_BINS - "${CURRENT_PACKAGES_DIR}/lib/gstreamer-1.0/${CMAKE_SHARED_LIBRARY_PREFIX}*${CMAKE_SHARED_LIBRARY_SUFFIX}" - "${CURRENT_PACKAGES_DIR}/lib/gstreamer-1.0/*.pdb" - ) - file(COPY ${REL_BINS} DESTINATION "${CURRENT_PACKAGES_DIR}/plugins/${PORT}") - file(REMOVE ${DBG_BINS} ${REL_BINS}) - if (NOT VCPKG_TARGET_IS_WINDOWS) - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/lib/gstreamer-1.0" - "${CURRENT_PACKAGES_DIR}/lib/gstreamer-1.0" - ) - endif () - - set(_file "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/gstreamer-1.0.pc") - if (EXISTS "${_file}") - file(READ "${_file}" _contents) - string( - REPLACE [[toolsdir=${exec_prefix}/bin]] - "toolsdir=\${prefix}/../tools/${PORT}" - _contents - "${_contents}" - ) - string( - REPLACE [[pluginscannerdir=${libexecdir}/gstreamer-1.0]] - "pluginscannerdir=\${prefix}/../tools/${PORT}" - _contents - "${_contents}" - ) - string( - REPLACE [[pluginsdir=${libdir}/gstreamer-1.0]] - "pluginsdir=\${prefix}/plugins/${PORT}" - _contents - "${_contents}" - ) - file(WRITE "${_file}" "${_contents}") - endif () - - set(_file "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/gstreamer-1.0.pc") - if (EXISTS "${_file}") - file(READ "${_file}" _contents) - string( - REPLACE [[toolsdir=${exec_prefix}/bin]] - "toolsdir=\${prefix}/tools/${PORT}" - _contents - "${_contents}" - ) - string( - REPLACE [[pluginscannerdir=${libexecdir}/gstreamer-1.0]] - "pluginscannerdir=\${prefix}/tools/${PORT}" - _contents - "${_contents}" - ) - string( - REPLACE [[pluginsdir=${libdir}/gstreamer-1.0]] - "pluginsdir=\${prefix}/plugins/${PORT}" - _contents - "${_contents}" - ) - file(WRITE "${_file}" "${_contents}") - endif () -endif () - -vcpkg_fixup_pkgconfig() - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/vcpkg/ports/gstreamer/remove_x264_define.patch b/vcpkg/ports/gstreamer/remove_x264_define.patch deleted file mode 100644 index 044fb926b..000000000 --- a/vcpkg/ports/gstreamer/remove_x264_define.patch +++ /dev/null @@ -1,18 +0,0 @@ -diff --git a/ext/x264/gstx264enc.h b/ext/x264/gstx264enc.h -index 6cbfc5c3d..ba7845b20 100644 ---- a/ext/x264/gstx264enc.h -+++ b/ext/x264/gstx264enc.h -@@ -31,13 +31,6 @@ - #include - #endif - --/* The x264.h header says this isn't needed with MinGW, but sometimes the -- * compiler is unable to correctly do the pointer indirection for us, which -- * leads to a segfault when you try to dereference any const values provided -- * by x264.dll. See: https://bugzilla.gnome.org/show_bug.cgi?id=779249 */ --#if defined(_WIN32) && !defined(X264_API_IMPORTS) --# define X264_API_IMPORTS --#endif - #include - - G_BEGIN_DECLS diff --git a/vcpkg/ports/gstreamer/srtp_fix.patch b/vcpkg/ports/gstreamer/srtp_fix.patch deleted file mode 100644 index ed4601d45..000000000 --- a/vcpkg/ports/gstreamer/srtp_fix.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff --git a/subprojects/gst-plugins-bad/ext/srtp/meson.build b/subprojects/gst-plugins-bad/ext/srtp/meson.build -index 49eed5b..db5aed0 100644 ---- a/subprojects/gst-plugins-bad/ext/srtp/meson.build -+++ b/subprojects/gst-plugins-bad/ext/srtp/meson.build -@@ -6,13 +6,15 @@ srtp_sources = [ - 'gstsrtpenc.c', - ] - -+gst_plugins_install_dir = join_paths(get_option('libdir'), 'gstreamer-1.0') -+ - srtp_cargs = [] - if get_option('srtp').disabled() - srtp_dep = dependency('', required : false) - subdir_done() - endif - --srtp_dep = dependency('libsrtp2', version : '>= 2.1.0', required : false) -+srtp_dep = dependency('libSRTP', modules: ['libSRTP::srtp2'], version : '>= 2.1.0', required : false) - if srtp_dep.found() - srtp_cargs += ['-DHAVE_SRTP2'] - else -@@ -38,7 +40,7 @@ if srtp_dep.found() - include_directories : [configinc], - dependencies : [gstrtp_dep, gstvideo_dep, srtp_dep], - install : true, -- install_dir : plugins_install_dir, -+ install_dir : gst_plugins_install_dir, - ) - plugins += [gstsrtp] - endif diff --git a/vcpkg/ports/gstreamer/vcpkg.json b/vcpkg/ports/gstreamer/vcpkg.json deleted file mode 100644 index af363911b..000000000 --- a/vcpkg/ports/gstreamer/vcpkg.json +++ /dev/null @@ -1,841 +0,0 @@ -{ - "name": "gstreamer", - "version": "1.22.5", - "port-version": 8, - "description": "GStreamer open-source multimedia framework core library", - "homepage": "https://gstreamer.freedesktop.org/", - "license": "LGPL-2.0-only", - "supports": "!uwp & !xbox", - "dependencies": [ - "glib", - { - "name": "glib", - "host": true - }, - { - "name": "opengl", - "platform": "windows | osx" - }, - { - "name": "vcpkg-tool-meson", - "host": true - } - ], - "default-features": [ - "plugins-base" - ], - "features": { - "aes": { - "description": "Enable support for AES encryption/decryption", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "openssl" - ] - }, - "alsa": { - "description": "Enable support for ALSA (Advanced Linux Sound Architecture)", - "supports": "linux", - "dependencies": [ - { - "name": "alsa", - "platform": "linux" - }, - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "aom": { - "description": "Enable support for the Alliance for Open Media (AOM) AV1 encoder and decoder", - "supports": "!windows", - "dependencies": [ - "aom", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - } - ] - }, - "asio": { - "description": "Enable support for the Steinberg Audio Streaming Input Output (ASIO) library (Windows only)", - "dependencies": [ - { - "name": "asiosdk", - "platform": "windows" - }, - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - } - ] - }, - "assrender": { - "description": "Enable support for the ASS/SSA subtitle renderer", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libass" - ] - }, - "bzip2-bad": { - "description": "Enable bzip2 stream compression in bad plugins", - "dependencies": [ - "bzip2", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - } - ] - }, - "bzip2-good": { - "description": "Enable bzip2 stream compression in good plugins", - "dependencies": [ - "bzip2", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - } - ] - }, - "cairo": { - "description": "Enable support for the cairo graphics library", - "dependencies": [ - { - "name": "cairo", - "features": [ - "gobject" - ] - }, - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - } - ] - }, - "chromaprint": { - "description": "Enable support for the Chromaprint audio fingerprint library", - "dependencies": [ - "chromaprint", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - } - ] - }, - "closedcaption": { - "description": "Enable support for the closed caption extractor, decoder, and overlay", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "pango" - ] - }, - "colormanagement": { - "description": "Enable support for the color management correction", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "lcms" - ] - }, - "dash": { - "description": "Enable support for the DASH demuxer", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libxml2" - ] - }, - "dc1394": { - "description": "Enable support for the libdc1394 IIDC camera source", - "supports": "!windows", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libdc1394" - ] - }, - "dtls": { - "description": "Enable support for the DTLS encoder and decoder", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "openssl" - ] - }, - "faad": { - "description": "Enable support for the free AAC audio decoder (GPL licensed)", - "dependencies": [ - "faad2", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "gpl", - "plugins-bad" - ] - } - ] - }, - "fdkaac": { - "description": "Enable support for the Fraunhofer AAC audio codec", - "dependencies": [ - "fdk-aac", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - } - ] - }, - "flac": { - "description": "Enable support for FLAC: Free Lossless Audio Codec", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "ogg", - "plugins-good" - ] - }, - "libflac" - ] - }, - "fluidsynth": { - "description": "Enable support for the Fluidsynth MIDI decoder", - "supports": "!windows", - "dependencies": [ - { - "name": "fluidsynth", - "platform": "!windows" - }, - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - } - ] - }, - "gdk-pixbuf": { - "description": "Enable support for gdk-pixbuf image loader", - "dependencies": [ - "gdk-pixbuf", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - } - ] - }, - "ges": { - "description": "Enable support for GStreamer Editing Services", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "gl-graphene": { - "description": "Use Graphene in OpenGL plugin", - "dependencies": [ - "graphene", - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "gpl": { - "description": "Allow build of plugins that have (A)GPL-licensed dependencies", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "jpeg": { - "description": "Enable support for the JPEG file format", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base", - "plugins-good" - ] - }, - "libjpeg-turbo" - ] - }, - "libav": { - "description": "libav plugins", - "dependencies": [ - { - "name": "ffmpeg", - "default-features": false - }, - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "libde265": { - "description": "Enable support for the HEVC/H.265 video decoder", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libde265" - ] - }, - "microdns": { - "description": "Enable support for the microdns device provider", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libmicrodns" - ] - }, - "modplug": { - "description": "Enable support for the ModPlug audio decoder", - "supports": "!uwp", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - { - "name": "libmodplug", - "platform": "!uwp" - } - ] - }, - "mpg123": { - "description": "Enable support for the MPG123 decoding library", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - }, - "mpg123" - ] - }, - "nls": { - "description": "National language support", - "dependencies": [ - "gettext", - { - "name": "gettext", - "host": true, - "default-features": false, - "features": [ - "tools" - ] - }, - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "nvcodec": { - "description": "Enable support for the NVCODEC encoders and decoders", - "supports": "!osx & !ios & !android & !emscripten", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - } - ] - }, - "ogg": { - "description": "Enable support for the Ogg container format (commonly used by Vorbis, Theora and flac)", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - }, - "libogg" - ] - }, - "openal": { - "description": "Enable support for the OpenAL audio library", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "openal-soft" - ] - }, - "openh264": { - "description": "Enable support for the OpenH264 codec", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "openh264" - ] - }, - "openjpeg": { - "description": "Enable support for the JPEG2000 codec", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "openjpeg" - ] - }, - "openmpt": { - "description": "Enable support for the OpenMPT codec", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libopenmpt" - ] - }, - "opus-bad": { - "description": "Enable support for the Opus codec in bad plugins", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "opus" - ] - }, - "opus-base": { - "description": "Enable support for the Opus codec in base plugins", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - }, - "opus" - ] - }, - "pango": { - "description": "Enable support for pango font rendering", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - }, - "pango" - ] - }, - "plugins-bad": { - "description": "'Bad' GStreamer plugins and helper libraries", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "plugins-base": { - "description": "'Base' GStreamer plugins and helper libraries", - "dependencies": [ - "zlib" - ] - }, - "plugins-good": { - "description": "'Good' GStreamer plugins and helper libraries", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - }, - "zlib" - ] - }, - "plugins-ugly": { - "description": "'Ugly' GStreamer plugins and helper libraries", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-base" - ] - } - ] - }, - "png": { - "description": "Enable support for the PNG image format", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - }, - "libpng" - ] - }, - "smoothstreaming": { - "description": "Enable support for the Microsoft Smooth Streaming format", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libxml2" - ] - }, - "sndfile": { - "description": "Enable support for the SndFile file reader/writer", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libsndfile" - ] - }, - "soundtouch": { - "description": "Enable support for the SoundTouch audio processing library", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "soundtouch" - ] - }, - "soup": { - "description": "Enable support for the soup plugin", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - }, - "libsoup" - ] - }, - "speex": { - "description": "Enable support for the speex codec", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - }, - "speex" - ] - }, - "srt": { - "description": "Enable support for the SRT protocol", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libsrt" - ] - }, - "srtp": { - "description": "Enable support for the SRTP protocol", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libsrtp" - ] - }, - "taglib": { - "description": "Enable support for the taglib library", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - }, - "taglib" - ] - }, - "vorbis": { - "description": "Enable support for the OggVorbis audio codec", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "ogg", - "plugins-base" - ] - }, - "libvorbis" - ] - }, - "vpx": { - "description": "Enable support for the VP8 and VP9 codecs", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - }, - "libvpx" - ] - }, - "webp": { - "description": "Enable support for WebP image format", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libwebp" - ] - }, - "webrtc": { - "description": "Enable support for WebRTC", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libnice" - ] - }, - "wildmidi": { - "description": "Enable support for the WildMIDI synthesizer", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "wildmidi" - ] - }, - "x11-bad": { - "description": "Enable support for X11 in bad plugins", - "supports": "!windows", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-bad" - ] - }, - "libxkbcommon", - "xcb" - ] - }, - "x11-base": { - "description": "Enable support for X11 in base plugins", - "supports": "!windows", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "plugins-good" - ] - }, - "libx11", - "libxext" - ] - }, - "x264": { - "description": "Enable support for the x264 encoder (GPL license)", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "gpl", - "plugins-ugly" - ] - }, - "x264" - ] - }, - "x265": { - "description": "Enable support for the x265 encoder (GPL license)", - "dependencies": [ - { - "name": "gstreamer", - "default-features": false, - "features": [ - "gpl", - "plugins-bad" - ] - }, - "x265" - ] - } - } -} From 6002d80b584a555a0f9a968cab5ef81408277833 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 15:02:32 +0200 Subject: [PATCH 33/61] Remove libb2 overlay port, vcpkg bug should be fixed now --- vcpkg/ports/README.md | 1 - vcpkg/ports/libb2/README | 1 - vcpkg/ports/libb2/portfile.cmake | 39 -------------------------------- vcpkg/ports/libb2/vcpkg.json | 8 ------- 4 files changed, 49 deletions(-) delete mode 100644 vcpkg/ports/libb2/README delete mode 100644 vcpkg/ports/libb2/portfile.cmake delete mode 100644 vcpkg/ports/libb2/vcpkg.json diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 6e4de6896..7c4c4eb75 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,5 +1,4 @@ - Geodiff - no official port in vcpkg -- libb2 - bug, see: https://github.com/microsoft/vcpkg/issues/43326#issuecomment-2827154631 - qca - we needed 2.3.9, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 diff --git a/vcpkg/ports/libb2/README b/vcpkg/ports/libb2/README deleted file mode 100644 index 4dfe72179..000000000 --- a/vcpkg/ports/libb2/README +++ /dev/null @@ -1 +0,0 @@ -https://github.com/microsoft/vcpkg/issues/43326 \ No newline at end of file diff --git a/vcpkg/ports/libb2/portfile.cmake b/vcpkg/ports/libb2/portfile.cmake deleted file mode 100644 index 012f9360a..000000000 --- a/vcpkg/ports/libb2/portfile.cmake +++ /dev/null @@ -1,39 +0,0 @@ -vcpkg_from_github( - OUT_SOURCE_PATH - SOURCE_PATH - REPO - BLAKE2/libb2 - REF - 2c5142f12a2cd52f3ee0a43e50a3a76f75badf85 - SHA512 - cf29cf9391ae37a978eb6618de6f856f3defa622b8f56c2d5a519ab34fd5e4d91f3bb868601a44e9c9164a2992e80dde188ccc4d1605dffbdf93687336226f8d - HEAD_REF - master -) - -set(OPTIONS) -if (CMAKE_HOST_WIN32) - set(OPTIONS --disable-native) # requires cpuid -endif () - -vcpkg_configure_make( - AUTOCONFIG - SOURCE_PATH - ${SOURCE_PATH} - OPTIONS - ax_cv_check_cflags___O3=no # see - # https://github.com/microsoft/vcpkg/pull/17912#issuecomment-840514179 - ${OPTIONS} -) -vcpkg_install_make() -vcpkg_fixup_pkgconfig() - -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) - -vcpkg_copy_pdbs() - -file( - INSTALL ${SOURCE_PATH}/COPYING - DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} - RENAME copyright -) diff --git a/vcpkg/ports/libb2/vcpkg.json b/vcpkg/ports/libb2/vcpkg.json deleted file mode 100644 index e8ef8ec05..000000000 --- a/vcpkg/ports/libb2/vcpkg.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "libb2", - "version": "0.98.1", - "port-version": 6, - "description": "C library providing BLAKE2b, BLAKE2s, BLAKE2bp, BLAKE2sp", - "homepage": "https://github.com/BLAKE2/libb2", - "supports": "!windows" -} From e3957b4afa9fbb2f14ea15c1772f8fe0f2d2a625 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 15:18:16 +0200 Subject: [PATCH 34/61] Update libiconv overlay port to match VCPKG port --- vcpkg/ports/README.md | 1 + .../ports/libiconv/vcpkg-cmake-wrapper.cmake | 29 ++++++++++++++++++- vcpkg/ports/libiconv/vcpkg.json | 2 +- 3 files changed, 30 insertions(+), 2 deletions(-) diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 7c4c4eb75..685accde3 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,4 +1,5 @@ - Geodiff - no official port in vcpkg +- libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) - qca - we needed 2.3.9, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 diff --git a/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake index 926737e78..869f29410 100644 --- a/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake +++ b/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake @@ -1,7 +1,34 @@ include(SelectLibraryConfigurations) +set(Z_VCPKG_ICONV_USES_DARWIN_SDK FALSE) +if (APPLE + AND CMAKE_OSX_SYSROOT + AND EXISTS "${CMAKE_OSX_SYSROOT}/usr/include/iconv.h" +) + set(Z_VCPKG_ICONV_USES_DARWIN_SDK TRUE) + set(Iconv_IS_BUILT_IN + FALSE + CACHE BOOL "iconv requires a separate library" + ) + if (NOT Iconv_INCLUDE_DIR) + set(Iconv_INCLUDE_DIR + "${CMAKE_OSX_SYSROOT}/usr/include" + CACHE PATH "iconv include directory" + ) + endif () + if (NOT Iconv_LIBRARY) + set(Iconv_LIBRARY + iconv + CACHE STRING "iconv library" + ) + endif () +endif () + _find_package(${ARGS}) -if (Iconv_FOUND AND NOT Iconv_IS_BUILT_IN) +if (Iconv_FOUND + AND NOT Iconv_IS_BUILT_IN + AND NOT Z_VCPKG_ICONV_USES_DARWIN_SDK +) find_path( CHARSET_INCLUDE_DIR NAMES "libcharset.h" diff --git a/vcpkg/ports/libiconv/vcpkg.json b/vcpkg/ports/libiconv/vcpkg.json index f53286be0..761257b8a 100644 --- a/vcpkg/ports/libiconv/vcpkg.json +++ b/vcpkg/ports/libiconv/vcpkg.json @@ -1,7 +1,7 @@ { "name": "libiconv", "version": "1.18", - "port-version": 3, + "port-version": 4, "description": [ "iconv() text conversion.", "This port installs GNU libiconv if the system C runtime doesn't provide a suitable iconv() implementation." From 619338dfd7ddc70d401a16c2620b070dc602a057 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 15:30:58 +0200 Subject: [PATCH 35/61] Add LibSpatialIndex port info to README --- vcpkg/ports/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 685accde3..0f938b6a0 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,5 +1,6 @@ - Geodiff - no official port in vcpkg - libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) +- libspatialindex - issue in newer version https://github.com/qgis/QGIS/pull/63196 - qca - we needed 2.3.9, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 From b274f0b76f0824c4ccee6a9fce4f8fcf7fb4ce6a Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 16:00:18 +0200 Subject: [PATCH 36/61] Remove unused qca patches, update README --- vcpkg/ports/README.md | 2 +- vcpkg/ports/qca/connect_fix.patch | 29 ----------------------------- vcpkg/ports/qca/ios.patch | 13 ------------- 3 files changed, 1 insertion(+), 43 deletions(-) delete mode 100644 vcpkg/ports/qca/connect_fix.patch delete mode 100644 vcpkg/ports/qca/ios.patch diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 0f938b6a0..e3729a02c 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,7 +1,7 @@ - Geodiff - no official port in vcpkg - libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) - libspatialindex - issue in newer version https://github.com/qgis/QGIS/pull/63196 -- qca - we needed 2.3.9, there is 2.3.7 in main repo +- qca - we needed 2.3.10, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 - qtdeclarative - optimization to decrease package size diff --git a/vcpkg/ports/qca/connect_fix.patch b/vcpkg/ports/qca/connect_fix.patch deleted file mode 100644 index 0a2aa1377..000000000 --- a/vcpkg/ports/qca/connect_fix.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/src/qca_safeobj.h b/src/qca_safeobj.h -index 5c47adad..20570b27 100644 ---- a/src/qca_safeobj.h -+++ b/src/qca_safeobj.h -@@ -57,7 +57,7 @@ public Q_SLOTS: - } - - Q_SIGNALS: -- void activated(); -+ void activated(QSocketDescriptor socket, QSocketNotifier::Type type); - - private: - QSocketNotifier *sn; -diff --git a/src/support/qpipe.cpp b/src/support/qpipe.cpp -index 122e96a8..2d9d8ab7 100644 ---- a/src/support/qpipe.cpp -+++ b/src/support/qpipe.cpp -@@ -1075,8 +1075,10 @@ public Q_SLOTS: - #endif - } - -- void sn_read_activated() -+ void sn_read_activated(QSocketDescriptor socket, QSocketNotifier::Type type) - { -+ Q_UNUSED(socket) -+ Q_UNUSED(type) - #ifdef Q_OS_UNIX - if (blockReadNotify) - return; diff --git a/vcpkg/ports/qca/ios.patch b/vcpkg/ports/qca/ios.patch deleted file mode 100644 index 06d53bd2c..000000000 --- a/vcpkg/ports/qca/ios.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 47773219..0e2b90ac 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -52,7 +52,7 @@ SET( SOURCES - - IF (WIN32) - SET( SOURCES ${SOURCES} qca_systemstore_win.cpp ) --elseif(APPLE AND NOT IOS) -+elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set( SOURCES ${SOURCES} qca_systemstore_mac.cpp) - else() - SET( SOURCES ${SOURCES} qca_systemstore_flatfile.cpp ) From 392e93593be4589a7ec6f2f984fd06466ca85a78 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 17:38:46 +0200 Subject: [PATCH 37/61] Remove libspatialindex overlay port & pin version in vcpkg.json --- vcpkg.json | 10 ++++-- vcpkg/ports/README.md | 1 - vcpkg/ports/libspatialindex/portfile.cmake | 36 ---------------------- vcpkg/ports/libspatialindex/vcpkg.json | 18 ----------- 4 files changed, 8 insertions(+), 57 deletions(-) delete mode 100644 vcpkg/ports/libspatialindex/portfile.cmake delete mode 100644 vcpkg/ports/libspatialindex/vcpkg.json diff --git a/vcpkg.json b/vcpkg.json index 2829642a5..c3413bc8d 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -117,8 +117,14 @@ "builtin-baseline": "a78b96b07eb590c59bde5db0f4b260bda45ba92d", "overrides": [ { - "name": "openssl", - "version": "3.3.2" + "$comment": "Required for QCA to work properly", + "name": "openssl", + "version": "3.3.2" + }, + { + "$comment": "Issue in newer version https://github.com/qgis/QGIS/pull/63196", + "name": "libspatialindex", + "version": "2.0.0" } ] } diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index e3729a02c..cab61d096 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,6 +1,5 @@ - Geodiff - no official port in vcpkg - libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) -- libspatialindex - issue in newer version https://github.com/qgis/QGIS/pull/63196 - qca - we needed 2.3.10, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 diff --git a/vcpkg/ports/libspatialindex/portfile.cmake b/vcpkg/ports/libspatialindex/portfile.cmake deleted file mode 100644 index 17530c769..000000000 --- a/vcpkg/ports/libspatialindex/portfile.cmake +++ /dev/null @@ -1,36 +0,0 @@ -vcpkg_from_github( - OUT_SOURCE_PATH - SOURCE_PATH - REPO - libspatialindex/libspatialindex - REF - "${VERSION}" - SHA512 - a508a9ed4019641bdaaa53533505531f3db440b046a9c7d9f78ed480293200c51796c2d826a6bb9b4f9543d60bb0fef9e4c885ec3f09326cfa4d2fb81c1593aa - HEAD_REF - master -) - -vcpkg_cmake_configure( - SOURCE_PATH - "${SOURCE_PATH}" - WINDOWS_USE_MSBUILD - OPTIONS - -DCMAKE_DEBUG_POSTFIX=d - -DSIDX_BUILD_TESTS:BOOL=OFF -) - -vcpkg_cmake_install() -vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) -vcpkg_fixup_pkgconfig() -vcpkg_copy_pdbs() - -# Debug -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") - -# Handle copyright -file( - INSTALL "${SOURCE_PATH}/COPYING" - DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" - RENAME copyright -) diff --git a/vcpkg/ports/libspatialindex/vcpkg.json b/vcpkg/ports/libspatialindex/vcpkg.json deleted file mode 100644 index d8235a2c0..000000000 --- a/vcpkg/ports/libspatialindex/vcpkg.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "libspatialindex", - "version": "2.0.0", - "description": "C++ implementation of R*-tree, an MVR-tree and a TPR-tree with C API.", - "homepage": "http://libspatialindex.github.com", - "license": "MIT", - "dependencies": [ - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - }, - "zlib" - ] -} From 625c38e201e9cc628742268d781d9a15f6c97679 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 17:54:10 +0200 Subject: [PATCH 38/61] Remove qtbase overlay port in place of VCPKG default port --- vcpkg/ports/README.md | 1 - vcpkg/ports/qtbase/GLIB2-static.patch | 75 -- vcpkg/ports/qtbase/allow_outside_prefix.patch | 17 - vcpkg/ports/qtbase/clang-cl_QGADGET_fix.diff | 38 - .../qtbase/clang-cl_source_location.patch | 14 - .../qtbase/cmake/qt_install_copyright.cmake | 31 - .../qtbase/cmake/qt_install_submodule.cmake | 599 ------------ .../ports/qtbase/cmake/qt_port_details.cmake | 258 ----- vcpkg/ports/qtbase/config_install.patch | 13 - .../qtbase/dont_force_cmakecache_latest.patch | 13 - vcpkg/ports/qtbase/env.patch | 16 - vcpkg/ports/qtbase/fix-host-aliasing.patch | 17 - .../ports/qtbase/fix-link-lib-discovery.patch | 12 - vcpkg/ports/qtbase/fix_cmake_build.patch | 15 - vcpkg/ports/qtbase/fix_deploy_windows.patch | 13 - vcpkg/ports/qtbase/fix_egl.patch | 12 - vcpkg/ports/qtbase/fix_egl_2.patch | 13 - vcpkg/ports/qtbase/fix_find_framework.patch | 15 - vcpkg/ports/qtbase/fix_yield_arm_acle.patch | 15 - vcpkg/ports/qtbase/harfbuzz.patch | 13 - vcpkg/ports/qtbase/installed_dir.patch | 15 - vcpkg/ports/qtbase/macdeployqt-symlinks.patch | 33 - vcpkg/ports/qtbase/port.data.cmake | 7 - vcpkg/ports/qtbase/portfile.cmake | 888 ------------------ vcpkg/ports/qtbase/qmake.debug.bat | 2 - vcpkg/ports/qtbase/qt.conf.in | 31 - vcpkg/ports/qtbase/qtpaths.debug.bat | 2 - vcpkg/ports/qtbase/vcpkg.json | 570 ----------- vcpkg/ports/qtbase/windeployqt.debug.bat | 10 - 29 files changed, 2758 deletions(-) delete mode 100644 vcpkg/ports/qtbase/GLIB2-static.patch delete mode 100644 vcpkg/ports/qtbase/allow_outside_prefix.patch delete mode 100644 vcpkg/ports/qtbase/clang-cl_QGADGET_fix.diff delete mode 100644 vcpkg/ports/qtbase/clang-cl_source_location.patch delete mode 100644 vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake delete mode 100644 vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake delete mode 100644 vcpkg/ports/qtbase/cmake/qt_port_details.cmake delete mode 100644 vcpkg/ports/qtbase/config_install.patch delete mode 100644 vcpkg/ports/qtbase/dont_force_cmakecache_latest.patch delete mode 100644 vcpkg/ports/qtbase/env.patch delete mode 100644 vcpkg/ports/qtbase/fix-host-aliasing.patch delete mode 100644 vcpkg/ports/qtbase/fix-link-lib-discovery.patch delete mode 100644 vcpkg/ports/qtbase/fix_cmake_build.patch delete mode 100644 vcpkg/ports/qtbase/fix_deploy_windows.patch delete mode 100644 vcpkg/ports/qtbase/fix_egl.patch delete mode 100644 vcpkg/ports/qtbase/fix_egl_2.patch delete mode 100644 vcpkg/ports/qtbase/fix_find_framework.patch delete mode 100644 vcpkg/ports/qtbase/fix_yield_arm_acle.patch delete mode 100644 vcpkg/ports/qtbase/harfbuzz.patch delete mode 100644 vcpkg/ports/qtbase/installed_dir.patch delete mode 100644 vcpkg/ports/qtbase/macdeployqt-symlinks.patch delete mode 100644 vcpkg/ports/qtbase/port.data.cmake delete mode 100644 vcpkg/ports/qtbase/portfile.cmake delete mode 100644 vcpkg/ports/qtbase/qmake.debug.bat delete mode 100644 vcpkg/ports/qtbase/qt.conf.in delete mode 100644 vcpkg/ports/qtbase/qtpaths.debug.bat delete mode 100644 vcpkg/ports/qtbase/vcpkg.json delete mode 100644 vcpkg/ports/qtbase/windeployqt.debug.bat diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index cab61d096..08e0323ff 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -2,6 +2,5 @@ - libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) - qca - we needed 2.3.10, there is 2.3.7 in main repo - qgis - no official port in vcpkg -- qtbase - https://github.com/microsoft/vcpkg/issues/39832#issuecomment-2221449238 - qtdeclarative - optimization to decrease package size - qtpositioning - Android service fix & iOS orthometric position hack \ No newline at end of file diff --git a/vcpkg/ports/qtbase/GLIB2-static.patch b/vcpkg/ports/qtbase/GLIB2-static.patch deleted file mode 100644 index c384b741c..000000000 --- a/vcpkg/ports/qtbase/GLIB2-static.patch +++ /dev/null @@ -1,75 +0,0 @@ -diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake -index 24a194c..91c8e41 100644 ---- a/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake -+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindGLIB2.cmake -@@ -95,6 +95,18 @@ find_library(GLIB2_GIO_LIBRARIES - HINTS ${PC_GIO_LIBDIR} - ) - -+pkg_check_modules(PC_GMODULE QUIET gmodule-2.0) -+ -+find_path(GLIB2_GMODULE_INCLUDE_DIRS -+ NAMES gmodule.h -+ HINTS ${PC_GMODULE} -+ PATH_SUFFIXES glib-2.0) -+ -+find_library(GLIB2_GMODULE_LIBRARIES -+ NAMES gmodule-2.0 -+ HINTS ${PC_GMODULE} -+) -+ - # search the glibconfig.h include dir under the same root where the library is found - get_filename_component(glib2LibDir "${GLIB2_LIBRARIES}" PATH) - -@@ -126,6 +138,11 @@ if(GLIB2_GIO_LIBRARIES AND GLIB2_GIO_INCLUDE_DIRS) - set(GLIB2_GIO_FOUND TRUE) - endif() - -+if(GLIB2_GMODULE_LIBRARIES AND GLIB2_GMODULE_INCLUDE_DIRS) -+ set(GLIB2_GMODULE_FOUND TRUE) -+endif() -+ -+ - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(GLIB2 - REQUIRED_VARS GLIB2_LIBRARIES GTHREAD2_LIBRARIES GLIB2_INCLUDE_DIRS -@@ -137,6 +154,16 @@ if(GLIB2_FOUND AND NOT TARGET GLIB2::GLIB2) - IMPORTED_LOCATION "${GLIB2_LIBRARIES}" - INTERFACE_LINK_LIBRARIES "${GTHREAD2_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_INCLUDE_DIRS}") -+ #vcpkg specific -+ pkg_check_modules(PC_PCRE2_8BIT QUIET libpcre2-8) -+ find_library(PCRE2_8BIT_LIBRARIES -+ NAMES pcre2-8 -+ HINTS ${PC_PCRE2_8BIT} -+ ) -+ target_link_libraries(GLIB2::GLIB2 INTERFACE ${PCRE2_8BIT_LIBRARIES}) -+ find_package(Iconv) -+ find_package(Intl) -+ target_link_libraries(GLIB2::GLIB2 INTERFACE Intl::Intl Iconv::Iconv) - endif() - - if(GLIB2_GOBJECT_FOUND AND NOT TARGET GLIB2::GOBJECT) -@@ -153,12 +180,21 @@ if(GLIB2_GIO_FOUND AND NOT TARGET GLIB2::GIO) - INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_GIO_INCLUDE_DIRS}") - endif() - -+if(GLIB2_GMODULE_FOUND AND NOT TARGET GLIB2::GMODULE) -+ add_library(GLIB2::GMODULE UNKNOWN IMPORTED) -+ set_target_properties(GLIB2::GMODULE PROPERTIES -+ IMPORTED_LOCATION "${GLIB2_GMODULE_LIBRARIES}" -+ INTERFACE_INCLUDE_DIRECTORIES "${GLIB2_GMODULE_INCLUDE_DIRS}") -+endif() -+ -+ - mark_as_advanced(GLIB2_INCLUDE_DIRS GLIB2_INCLUDE_DIR - GLIB2_LIBRARIES GLIB2_LIBRARY - GLIB2_GOBJECT_INCLUDE_DIRS GLIB2_GOBJECT_INCLUDE_DIR - GLIB2_GOBJECT_LIBRARIES GLIB2_GOBJECT_LIBRARY - GLIB2_GIO_INCLUDE_DIRS GLIB2_GIO_INCLUDE_DIR -- GLIB2_GIO_LIBRARIES GLIB2_GIO_LIBRARY) -+ GLIB2_GIO_LIBRARIES GLIB2_GIO_LIBRARY -+ GLIB2_GMODULE_LIBRARIES GLIB2_GMODULE_INCLUDE_DIRS) - - include(FeatureSummary) - set_package_properties(GLIB2 PROPERTIES diff --git a/vcpkg/ports/qtbase/allow_outside_prefix.patch b/vcpkg/ports/qtbase/allow_outside_prefix.patch deleted file mode 100644 index eeb503bcb..000000000 --- a/vcpkg/ports/qtbase/allow_outside_prefix.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/cmake/QtBuildPathsHelpers.cmake b/cmake/QtBuildPathsHelpers.cmake -index bd186c28b..2c1994d2e 100644 ---- a/cmake/QtBuildPathsHelpers.cmake -+++ b/cmake/QtBuildPathsHelpers.cmake -@@ -141,11 +141,9 @@ function(qt_configure_process_path name default docstring) - elseif(rel_path MATCHES "^\.\./") - # INSTALL_SYSCONFDIR is allowed to be outside the prefix. - if(NOT name STREQUAL "INSTALL_SYSCONFDIR") -- message(FATAL_ERROR -- "Path component '${name}' is outside computed install prefix: ${rel_path} ") - endif() - # Keep the absolute path. - set(new_value "${${name}}") - else() - # Use the canonicalized path. - set(new_value "${rel_path}") - diff --git a/vcpkg/ports/qtbase/clang-cl_QGADGET_fix.diff b/vcpkg/ports/qtbase/clang-cl_QGADGET_fix.diff deleted file mode 100644 index e400649b4..000000000 --- a/vcpkg/ports/qtbase/clang-cl_QGADGET_fix.diff +++ /dev/null @@ -1,38 +0,0 @@ -diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h -index e40cd85..ba68a01 100644 ---- a/src/corelib/kernel/qmetatype.h -+++ b/src/corelib/kernel/qmetatype.h -@@ -18,6 +18,7 @@ - #include - #include - -+#include - #include - #include - #include -@@ -826,7 +829,13 @@ - struct IsGadgetHelper { enum { IsRealGadget = false, IsGadgetOrDerivedFrom = false }; }; - - template -+#if defined(__clang__) && (__clang_major__ > 11) -+ // Clang does not reject T::QtGadgetHelper as ambiguous if a class inherits from two QGADGETS -+ // but is not a QGADGET itself -+ struct IsGadgetHelper> -+#else - struct IsGadgetHelper -+#endif - { - template - static char checkType(void (X::*)()); -@@ -841,7 +850,11 @@ - struct IsPointerToGadgetHelper { enum { IsRealGadget = false, IsGadgetOrDerivedFrom = false }; }; - - template -+#if defined(__clang__) && (__clang_major__ > 11) -+ struct IsPointerToGadgetHelper> -+#else - struct IsPointerToGadgetHelper -+#endif - { - using BaseType = T; - template diff --git a/vcpkg/ports/qtbase/clang-cl_source_location.patch b/vcpkg/ports/qtbase/clang-cl_source_location.patch deleted file mode 100644 index 5155fb4bb..000000000 --- a/vcpkg/ports/qtbase/clang-cl_source_location.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/src/corelib/kernel/qproperty.h b/src/corelib/kernel/qproperty.h -index 823b2057b..4a8cd4fa8 100644 ---- a/src/corelib/kernel/qproperty.h -+++ b/src/corelib/kernel/qproperty.h -@@ -16,8 +16,8 @@ - - #include - --#if __has_include() && __cplusplus >= 202002L && !defined(Q_QDOC) -+#if __has_include() && __cplusplus >= 202002L && !defined(Q_QDOC) && ( (defined(__cpp_consteval) && defined(_MSC_VER)) || !defined(_MSC_VER) ) - #include - #if defined(__cpp_lib_source_location) - #define QT_SOURCE_LOCATION_NAMESPACE std - #define QT_PROPERTY_COLLECT_BINDING_LOCATION diff --git a/vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake b/vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake deleted file mode 100644 index 4a7084b5d..000000000 --- a/vcpkg/ports/qtbase/cmake/qt_install_copyright.cmake +++ /dev/null @@ -1,31 +0,0 @@ -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 deleted file mode 100644 index aef225e36..000000000 --- a/vcpkg/ports/qtbase/cmake/qt_install_submodule.cmake +++ /dev/null @@ -1,599 +0,0 @@ -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 - "${${_qarg_SUBMODULE}_URL}" - 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 () - - vcpkg_download_distfile( - archive - URLS - ${${_qarg_SUBMODULE}_URL} - FILENAME - ${${_qarg_SUBMODULE}_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_ - 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= # 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} - "-DQT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX:STRING=${CURRENT_INSTALLED_DIR}" - 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 - QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX - ${_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. - # /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_details.cmake b/vcpkg/ports/qtbase/cmake/qt_port_details.cmake deleted file mode 100644 index 8bcdb9f32..000000000 --- a/vcpkg/ports/qtbase/cmake/qt_port_details.cmake +++ /dev/null @@ -1,258 +0,0 @@ -# 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.10.2) -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 - qtinterfaceframework -) -# 1. These modules are mirrored to github and have branches matching the release -set(QT_FROM_GITHUB_BRANCH qtdeviceutilities) -# 1. These modules are not mirrored to github and not part of the release -set(QT_FROM_QT_GIT "") -# 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 - 4 - 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}") - - set(port_data "") - 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") - string(APPEND port_data "set(${qt_port}_REF ${tag_sha})\n") - string(APPEND port_data - "set(${qt_port}_URL \"https://code.qt.io/cgit/qt/${qt_port}.git\")\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") - string(APPEND port_data "set(${qt_port}_HASH \"${hash}\")\n") - string(APPEND port_data "set(${qt_port}_URL \"${urls}\")\n") - string(APPEND port_data "set(${qt_port}_FILENAME \"${filename}\")\n") - endif () - file(WRITE "${CMAKE_CURRENT_LIST_DIR}/../../${qt_port}/port.data.cmake" - "${port_data}" - ) - 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("${CURRENT_PORT_DIR}/port.data.cmake") diff --git a/vcpkg/ports/qtbase/config_install.patch b/vcpkg/ports/qtbase/config_install.patch deleted file mode 100644 index fdfc70330..000000000 --- a/vcpkg/ports/qtbase/config_install.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmake/QtBuildPathsHelpers.cmake b/cmake/QtBuildPathsHelpers.cmake -index bd186c28b..edee52e8b 100644 ---- a/cmake/QtBuildPathsHelpers.cmake -+++ b/cmake/QtBuildPathsHelpers.cmake -@@ -100,7 +100,7 @@ function(qt_internal_set_up_global_paths) - if(QT_CONFIG_INSTALL_DIR) - string(APPEND QT_CONFIG_INSTALL_DIR "/") - endif() -- string(APPEND QT_CONFIG_INSTALL_DIR ${__config_path_part}) -+ string(APPEND QT_CONFIG_INSTALL_DIR "share") - - set(QT_BUILD_DIR "${QT_BUILD_DIR}" PARENT_SCOPE) - set(QT_INSTALL_DIR "${QT_INSTALL_DIR}" PARENT_SCOPE) diff --git a/vcpkg/ports/qtbase/dont_force_cmakecache_latest.patch b/vcpkg/ports/qtbase/dont_force_cmakecache_latest.patch deleted file mode 100644 index 752cefe6d..000000000 --- a/vcpkg/ports/qtbase/dont_force_cmakecache_latest.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmake/QtPostProcessHelpers.cmake b/cmake/QtPostProcessHelpers.cmake -index 4f8106dfa..bec5c402e 100644 ---- a/cmake/QtPostProcessHelpers.cmake -+++ b/cmake/QtPostProcessHelpers.cmake -@@ -414,7 +414,7 @@ function(qt_generate_install_prefixes out_var) - - foreach(var ${vars}) - get_property(docstring CACHE "${var}" PROPERTY HELPSTRING) -- string(APPEND content "set(${var} \"${${var}}\" CACHE STRING \"${docstring}\" FORCE)\n") -+ string(APPEND content "set(${var} \"${${var}}\" CACHE STRING \"${docstring}\")\n") - endforeach() - - set(${out_var} "${content}" PARENT_SCOPE) diff --git a/vcpkg/ports/qtbase/env.patch b/vcpkg/ports/qtbase/env.patch deleted file mode 100644 index 6a3716759..000000000 --- a/vcpkg/ports/qtbase/env.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/cmake/QtTestHelpers.cmake b/cmake/QtTestHelpers.cmake -index 279ab07dd..951fd3d36 100644 ---- a/cmake/QtTestHelpers.cmake -+++ b/cmake/QtTestHelpers.cmake -@@ -653,9 +653,9 @@ function(qt_internal_collect_command_environment out_path out_plugin_path) - # The regular CMAKE_INSTALL_PREFIX can be different for example when building standalone tests. - # Any given CMAKE_INSTALL_PREFIX takes priority over qt_relocatable_install_prefix for the - # PATH environment variable. -- set(install_prefixes "${CMAKE_INSTALL_PREFIX}") -+ set(install_prefixes "${CMAKE_INSTALL_PREFIX}$<$:/debug>") - if(QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX) -- list(APPEND install_prefixes "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}") -+ list(APPEND install_prefixes "${QT_BUILD_INTERNALS_RELOCATABLE_INSTALL_PREFIX}$<$:/debug>") - endif() - - file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}" test_env_path) diff --git a/vcpkg/ports/qtbase/fix-host-aliasing.patch b/vcpkg/ports/qtbase/fix-host-aliasing.patch deleted file mode 100644 index 1823a351d..000000000 --- a/vcpkg/ports/qtbase/fix-host-aliasing.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/cmake/QtTargetHelpers.cmake b/cmake/QtTargetHelpers.cmake -index 180ec33..a03e3b1 100644 ---- a/cmake/QtTargetHelpers.cmake -+++ b/cmake/QtTargetHelpers.cmake -@@ -281,10 +281,10 @@ function(qt_internal_add_target_aliases target) - set_target_properties("${target}" PROPERTIES _qt_versionfull_alias "${versionfull_alias}") - - get_target_property(type "${target}" TYPE) -- if (type STREQUAL EXECUTABLE) -+ if (type STREQUAL EXECUTABLE AND NOT TARGET "${versionfull_alias}") - add_executable("${versionless_alias}" ALIAS "${target}") - add_executable("${versionfull_alias}" ALIAS "${target}") -- else() -+ elseif(NOT type STREQUAL EXECUTABLE) - add_library("${versionless_alias}" ALIAS "${target}") - add_library("${versionfull_alias}" ALIAS "${target}") - endif() diff --git a/vcpkg/ports/qtbase/fix-link-lib-discovery.patch b/vcpkg/ports/qtbase/fix-link-lib-discovery.patch deleted file mode 100644 index 339d25490..000000000 --- a/vcpkg/ports/qtbase/fix-link-lib-discovery.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/cmake/QtPriHelpers.cmake b/cmake/QtPriHelpers.cmake -index b6f1242..eaa4d65 100644 ---- a/cmake/QtPriHelpers.cmake -+++ b/cmake/QtPriHelpers.cmake -@@ -37,6 +37,7 @@ function(qt_generate_qmake_libraries_pri_content module_name output_root_dir out - get_target_property(lib_target_type ${lib_target} TYPE) - if(lib_target_type MATCHES "^(INTERFACE|UNKNOWN)_LIBRARY") - get_target_property(iface_libs ${lib_target} INTERFACE_LINK_LIBRARIES) -+ string(REGEX REPLACE [[\$]+)>]] "\\1" iface_libs "${iface_libs}") - if(iface_libs) - list(PREPEND lib_targets ${iface_libs}) - endif() diff --git a/vcpkg/ports/qtbase/fix_cmake_build.patch b/vcpkg/ports/qtbase/fix_cmake_build.patch deleted file mode 100644 index 65410e3fc..000000000 --- a/vcpkg/ports/qtbase/fix_cmake_build.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/cmake/QtBuildInternalsExtra.cmake.in b/cmake/QtBuildInternalsExtra.cmake.in -index ffc9d90f8..0b3a7d59e 100644 ---- a/cmake/QtBuildInternalsExtra.cmake.in -+++ b/cmake/QtBuildInternalsExtra.cmake.in -@@ -51,8 +51,8 @@ endif() - set(QT_WILL_INSTALL @QT_WILL_INSTALL@ CACHE BOOL - "Boolean indicating if doing a Qt prefix build (vs non-prefix build)." FORCE) - --set(QT_SOURCE_TREE "@QT_SOURCE_TREE@" CACHE PATH --"A path to the source tree of the previously configured QtBase project." FORCE) -+# set(QT_SOURCE_TREE "@QT_SOURCE_TREE@" CACHE PATH -+# "A path to the source tree of the previously configured QtBase project." FORCE) - - # Propagate decision of building tests and examples to other repositories. - set(QT_BUILD_TESTS @QT_BUILD_TESTS@ CACHE BOOL "Build the testing tree.") diff --git a/vcpkg/ports/qtbase/fix_deploy_windows.patch b/vcpkg/ports/qtbase/fix_deploy_windows.patch deleted file mode 100644 index c89506950..000000000 --- a/vcpkg/ports/qtbase/fix_deploy_windows.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/src/corelib/Qt6CoreMacros.cmake b/src/corelib/Qt6CoreMacros.cmake -index bfac685..f40138e 100644 ---- a/src/corelib/Qt6CoreMacros.cmake -+++ b/src/corelib/Qt6CoreMacros.cmake -@@ -3243,7 +3243,7 @@ function(_qt_internal_setup_deploy_support) - endif() - endforeach() - -- set(qtpaths_prefix "${QT6_INSTALL_PREFIX}/${QT6_INSTALL_BINS}") -+ set(qtpaths_prefix "${QT6_INSTALL_PREFIX}/tools/Qt6/bin") - - set(candidate_paths "") - foreach(qtpaths_name_candidate IN LISTS qtpaths_name_candidates) diff --git a/vcpkg/ports/qtbase/fix_egl.patch b/vcpkg/ports/qtbase/fix_egl.patch deleted file mode 100644 index 786831068..000000000 --- a/vcpkg/ports/qtbase/fix_egl.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake -index eafbc1ff9..dd4068838 100644 ---- a/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake -+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake -@@ -82,6 +82,7 @@ find_path(EGL_INCLUDE_DIR - find_library(EGL_LIBRARY - NAMES - EGL -+ libEGL # required to find angle on windows within vcpkg. - HINTS - ${PKG_EGL_LIBRARY_DIRS} - ) diff --git a/vcpkg/ports/qtbase/fix_egl_2.patch b/vcpkg/ports/qtbase/fix_egl_2.patch deleted file mode 100644 index 78b1c360f..000000000 --- a/vcpkg/ports/qtbase/fix_egl_2.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake b/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake -index db48f79b9..4b1686132 100644 ---- a/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake -+++ b/cmake/3rdparty/extra-cmake-modules/find-modules/FindEGL.cmake -@@ -116,7 +116,7 @@ if(EGL_INCLUDE_DIR) - unset(_EGL_version_lines) - endif() - --cmake_push_check_state(RESET) -+cmake_push_check_state() # To be able to fix the compile check in vcpkg-cmake-wrapper - list(APPEND CMAKE_REQUIRED_LIBRARIES "${EGL_LIBRARY}") - list(APPEND CMAKE_REQUIRED_INCLUDES "${EGL_INCLUDE_DIR}") - list(APPEND CMAKE_REQUIRED_DEFINITIONS "${EGL_DEFINITIONS}") diff --git a/vcpkg/ports/qtbase/fix_find_framework.patch b/vcpkg/ports/qtbase/fix_find_framework.patch deleted file mode 100644 index 6bbe9fff7..000000000 --- a/vcpkg/ports/qtbase/fix_find_framework.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/cmake/QtFrameworkHelpers.cmake b/cmake/QtFrameworkHelpers.cmake -index b48e39c..c14e220 100644 ---- a/cmake/QtFrameworkHelpers.cmake -+++ b/cmake/QtFrameworkHelpers.cmake -@@ -54,7 +54,10 @@ function(qt_internal_find_apple_system_framework out_var framework_name) - # We might revisit this later. - set(cache_var_name "${out_var}Internal") - -+ set(_qt_save_cmake_find_framework ${CMAKE_FIND_FRAMEWORK}) -+ set(CMAKE_FIND_FRAMEWORK FIRST) - find_library(${cache_var_name} "${framework_name}") -+ set(CMAKE_FIND_FRAMEWORK ${_qt_save_cmake_find_framework}) - - if(${cache_var_name} AND ${cache_var_name} MATCHES ".framework$") - set(${out_var} "-framework ${framework_name}" PARENT_SCOPE) diff --git a/vcpkg/ports/qtbase/fix_yield_arm_acle.patch b/vcpkg/ports/qtbase/fix_yield_arm_acle.patch deleted file mode 100644 index 604800d6b..000000000 --- a/vcpkg/ports/qtbase/fix_yield_arm_acle.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/src/corelib/thread/qyieldcpu.h b/src/corelib/thread/qyieldcpu.h -index 6615648..56f3728 100644 ---- a/src/corelib/thread/qyieldcpu.h -+++ b/src/corelib/thread/qyieldcpu.h -@@ -10,6 +10,10 @@ - #include - #include - -+#if defined(Q_PROCESSOR_ARM) && defined(Q_CC_GNU) && !defined(Q_CC_MSVC_ONLY) -+# include -+#endif -+ - #ifdef Q_CC_MSVC_ONLY - // MSVC defines _YIELD_PROCESSOR() in , but as that is a private - // header, we include the public ones diff --git a/vcpkg/ports/qtbase/harfbuzz.patch b/vcpkg/ports/qtbase/harfbuzz.patch deleted file mode 100644 index a2f8e7424..000000000 --- a/vcpkg/ports/qtbase/harfbuzz.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/cmake/FindWrapSystemHarfbuzz.cmake b/cmake/FindWrapSystemHarfbuzz.cmake -index 3cb44aa76..9bf0d7165 100644 ---- a/cmake/FindWrapSystemHarfbuzz.cmake -+++ b/cmake/FindWrapSystemHarfbuzz.cmake -@@ -6,7 +6,7 @@ if(TARGET WrapSystemHarfbuzz::WrapSystemHarfbuzz) - endif() - set(WrapSystemHarfbuzz_REQUIRED_VARS __harfbuzz_found) - --find_package(harfbuzz ${${CMAKE_FIND_PACKAGE_NAME}_FIND_VERSION} QUIET) -+find_package(harfbuzz QUIET) # VCPKG is missing the version file for harfbuzz. - - # Gentoo has some buggy version of a harfbuzz Config file. Check if include paths are valid. - set(__harfbuzz_target_name "harfbuzz::harfbuzz") diff --git a/vcpkg/ports/qtbase/installed_dir.patch b/vcpkg/ports/qtbase/installed_dir.patch deleted file mode 100644 index 918673141..000000000 --- a/vcpkg/ports/qtbase/installed_dir.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/cmake/qt.toolchain.cmake.in b/cmake/qt.toolchain.cmake.in -index 6e37ae02..e7e84468 100644 ---- a/cmake/qt.toolchain.cmake.in -+++ b/cmake/qt.toolchain.cmake.in -@@ -65,6 +65,10 @@ get_filename_component(QT_TOOLCHAIN_RELOCATABLE_INSTALL_PREFIX - # one level higher is what we're looking for. - get_filename_component(QT_TOOLCHAIN_RELOCATABLE_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE) - -+get_filename_component(vcpkg_installed_dir -+ ${CMAKE_CURRENT_LIST_DIR}/../../../ -+ ABSOLUTE) -+ - # REROOT_PATH_ISSUE_MARKER - # There's a subdirectory check in cmake's cmFindCommon::RerootPaths() function, that doesn't handle - # the case of CMAKE_PREFIX_PATH == CMAKE_FIND_ROOT_PATH for a particular pair of entries. diff --git a/vcpkg/ports/qtbase/macdeployqt-symlinks.patch b/vcpkg/ports/qtbase/macdeployqt-symlinks.patch deleted file mode 100644 index ce6fe71f6..000000000 --- a/vcpkg/ports/qtbase/macdeployqt-symlinks.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/src/tools/macdeployqt/shared/shared.cpp b/src/tools/macdeployqt/shared/shared.cpp -index 6ff269b..caffd44 100644 ---- a/src/tools/macdeployqt/shared/shared.cpp -+++ b/src/tools/macdeployqt/shared/shared.cpp -@@ -1,4 +1,5 @@ - // Copyright (C) 2016 The Qt Company Ltd. -+ - // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - #include - #include -@@ -85,7 +86,21 @@ - } - } - -- if (QFile::copy(from, to)) { -+ QFileInfo fromFileInfo(from); -+ -+ if (fromFileInfo.isSymLink()) { -+ const QString fromSymLinkTarget = fromFileInfo.absoluteDir().relativeFilePath(fromFileInfo.symLinkTarget()); -+ if (QFile::link(fromSymLinkTarget, to)) { -+ return copyFilePrintStatus(fromFileInfo.absoluteDir().absoluteFilePath(fromSymLinkTarget), QFileInfo(to).absoluteDir().absoluteFilePath(fromSymLinkTarget)); -+ } -+ else { -+ LogError() << "symlink copy failed from" << from; -+ LogError() << " to" << to; -+ return false; -+ } -+ -+ } -+ else if (QFile::copy(from, to)) { - QFile dest(to); - dest.setPermissions(dest.permissions() | QFile::WriteOwner | QFile::WriteUser); - LogNormal() << " copied:" << from; diff --git a/vcpkg/ports/qtbase/port.data.cmake b/vcpkg/ports/qtbase/port.data.cmake deleted file mode 100644 index ca9d0bab9..000000000 --- a/vcpkg/ports/qtbase/port.data.cmake +++ /dev/null @@ -1,7 +0,0 @@ -set(qtbase_HASH - "69e7317aa3114d8ca14e0067a001e42f0d2b9208070bdd1a2391cc1b1ccbb7fc3f90c8adcb0742d3c0b4ec7b3a6b770dbb411265458330d05d45f306cfae95c2" -) -set(qtbase_URL - "https://download.qt.io/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz;https://mirrors.ocf.berkeley.edu/qt/archive/qt/6.10/6.10.2/submodules/qtbase-everywhere-src-6.10.2.tar.xz" -) -set(qtbase_FILENAME "qtbase-everywhere-src-6.10.2.tar.xz") diff --git a/vcpkg/ports/qtbase/portfile.cmake b/vcpkg/ports/qtbase/portfile.cmake deleted file mode 100644 index bdc8ae708..000000000 --- a/vcpkg/ports/qtbase/portfile.cmake +++ /dev/null @@ -1,888 +0,0 @@ -# Reminder for myself and everybody else: Qt cross module dependency information within -# the Qt respository is wrong and/or incomplete. Always check the toplevel CMakeLists.txt -# for the find_package call and search for linkage against the Qt:: targets Often enough -# certain (bigger) dependencies are only used to build examples and/or tests. As such -# getting the correct dependency information relevant for vcpkg requires a manual -# search/check -set(QT_IS_LATEST ON) - -# All above goes into the qt_port_hashes in the future -include("${CMAKE_CURRENT_LIST_DIR}/cmake/qt_install_submodule.cmake") - -set(${PORT}_PATCHES - allow_outside_prefix.patch - config_install.patch - fix_cmake_build.patch - harfbuzz.patch - fix_egl.patch - fix_egl_2.patch - installed_dir.patch - GLIB2-static.patch # alternative is to force pkg-config - clang-cl_source_location.patch - clang-cl_QGADGET_fix.diff - fix-host-aliasing.patch - fix_deploy_windows.patch - fix-link-lib-discovery.patch - macdeployqt-symlinks.patch - fix_find_framework.patch - fix_yield_arm_acle.patch -) - -if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - list(APPEND ${PORT}_PATCHES env.patch) -endif () - -list(APPEND ${PORT}_PATCHES dont_force_cmakecache_latest.patch) - -if (VCPKG_TARGET_IS_WINDOWS - AND NOT - "doubleconversion" - IN_LIST - FEATURES -) - message(FATAL_ERROR "${PORT} requires feature doubleconversion on windows!") -endif () - -if (VCPKG_TARGET_IS_LINUX) - message( - WARNING - "qtbase currently requires packages from the system package manager. " - "They can be installed on Ubuntu systems via sudo apt-get install " - "'^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev " - "libxkbcommon-x11-dev libegl1-mesa-dev." - ) -endif () - -# Features can be found via searching for qt_feature in all configure.cmake files in the -# source: The files also contain information about the Platform for which it is searched -# Always use FEATURE_ in vcpkg_cmake_configure (using QT_FEATURE_X overrides Qts -# condition check for the feature.) Theoretically there is a feature for every widget to -# enable/disable it but that is way to much for vcpkg - -set(input_vars - doubleconversion - freetype - harfbuzz - libb2 - jpeg - libmd4c - png - sql-sqlite -) -set(INPUT_OPTIONS) -foreach (_input IN LISTS input_vars) - if (_input MATCHES "(png|jpeg)") - list(APPEND INPUT_OPTIONS -DINPUT_lib${_input}:STRING=) - elseif (_input MATCHES "(sql-sqlite)") # Not yet used by the cmake build - - else () - list(APPEND INPUT_OPTIONS -DINPUT_${_input}:STRING=) - endif () - if ("${_input}" IN_LIST FEATURES) - string(APPEND INPUT_OPTIONS system) - elseif (_input STREQUAL "libb2" AND NOT VCPKG_TARGET_IS_WINDOWS) - string(APPEND INPUT_OPTIONS system) - elseif (_input STREQUAL "libmd4c") - string(APPEND INPUT_OPTIONS qt) # libmd4c is not yet in VCPKG (but required by - # qtdeclarative) - else () - string(APPEND INPUT_OPTIONS no) - endif () -endforeach () - -# General features: - -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_OPTIONS - FEATURES - "appstore-compliant" - FEATURE_appstore_compliant - "zstd" - FEATURE_zstd - "framework" - FEATURE_framework - "concurrent" - FEATURE_concurrent - "concurrent" - FEATURE_future - "dbus" - FEATURE_dbus - "gui" - FEATURE_gui - "thread" - FEATURE_thread - "network" - FEATURE_network - "sql" - FEATURE_sql - "widgets" - FEATURE_widgets - # "xml" FEATURE_xml # Required to build moc - "testlib" - FEATURE_testlib - "zstd" - CMAKE_REQUIRE_FIND_PACKAGE_zstd - ${require_features} - INVERTED_FEATURES - "zstd" - CMAKE_DISABLE_FIND_PACKAGE_ZSTD - "dbus" - CMAKE_DISABLE_FIND_PACKAGE_WrapDBus1 -) - -list(APPEND FEATURE_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Libudev:BOOL=ON) -list(APPEND FEATURE_OPTIONS -DFEATURE_xml:BOOL=ON) - -if ("dbus" IN_LIST FEATURES AND VCPKG_TARGET_IS_LINUX) - list(APPEND FEATURE_OPTIONS -DINPUT_dbus=linked) -elseif ("dbus" IN_LIST FEATURES) - list(APPEND FEATURE_OPTIONS -DINPUT_dbus=runtime) -else () - list(APPEND FEATURE_OPTIONS -DINPUT_dbus=no) -endif () - -if (VCPKG_QT_NAMESPACE) - list(APPEND FEATURE_OPTIONS "-DQT_NAMESPACE:STRING=${VCPKG_QT_NAMESPACE}") -endif () - -# Corelib features: -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_CORE_OPTIONS - FEATURES - "doubleconversion" - FEATURE_doubleconversion - "glib" - FEATURE_glib - "icu" - FEATURE_icu - "pcre2" - FEATURE_pcre2 - # "icu" CMAKE_REQUIRE_FIND_PACKAGE_ICU - "glib" - CMAKE_REQUIRE_FIND_PACKAGE_GLIB2 - INVERTED_FEATURES - # "doubleconversion" CMAKE_DISABLE_FIND_PACKAGE_WrapDoubleConversion # Required - # "pcre2" CMAKE_DISABLE_FIND_PACKAGE_WrapSystemPCRE2 # Bug in qt cannot - # be deactivated - "icu" - CMAKE_DISABLE_FIND_PACKAGE_ICU - "glib" - CMAKE_DISABLE_FIND_PACKAGE_GLIB2 -) - -list(APPEND FEATURE_CORE_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_LTTngUST:BOOL=ON) -list(APPEND FEATURE_CORE_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_PPS:BOOL=ON) -list(APPEND FEATURE_CORE_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Slog2:BOOL=ON) -list(APPEND FEATURE_CORE_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Libsystemd:BOOL=ON) -list(APPEND FEATURE_CORE_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_WrapBacktrace:BOOL=ON) -# list(APPEND FEATURE_CORE_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_WrapAtomic:BOOL=ON) # -# Cannot be disabled on x64 platforms list(APPEND FEATURE_CORE_OPTIONS -# -DCMAKE_DISABLE_FIND_PACKAGE_WrapRt:BOOL=ON) # Cannot be disabled on osx - -if (VCPKG_TARGET_IS_ANDROID) - list(APPEND FEATURE_CORE_OPTIONS -DFEATURE_getentropy:BOOL=OFF) -endif () - -# Network features: -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_NET_OPTIONS - FEATURES - "openssl" - FEATURE_openssl - "brotli" - FEATURE_brotli - "securetransport" - FEATURE_securetransport - "dnslookup" - FEATURE_dnslookup - # "brotli" CMAKE_REQUIRE_FIND_PACKAGE_WrapBrotli "openssl" - # CMAKE_REQUIRE_FIND_PACKAGE_WrapOpenSSL - INVERTED_FEATURES - "brotli" - CMAKE_DISABLE_FIND_PACKAGE_WrapBrotli - "openssl" - CMAKE_DISABLE_FIND_PACKAGE_WrapOpenSSL - "dnslookup" - CMAKE_DISABLE_FIND_PACKAGE_WrapResolve -) - -if ("openssl" IN_LIST FEATURES) - list(APPEND FEATURE_NET_OPTIONS -DINPUT_openssl=linked) -else () - list(APPEND FEATURE_NET_OPTIONS -DINPUT_openssl=no) -endif () - -if ("dnslookup" IN_LIST FEATURES AND NOT VCPKG_TARGET_IS_WINDOWS) - list(APPEND FEATURE_NET_OPTIONS -DFEATURE_libresolv:BOOL=ON) -endif () - -list(APPEND FEATURE_NET_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Libproxy:BOOL=ON) -list(APPEND FEATURE_NET_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_GSSAPI:BOOL=ON) - -# Gui features: -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_GUI_OPTIONS - FEATURES - "freetype" - FEATURE_freetype # required on windows - "harfbuzz" - FEATURE_harfbuzz - "fontconfig" - FEATURE_fontconfig # NOT WINDOWS - "jpeg" - FEATURE_jpeg - "png" - FEATURE_png - "opengl" - FEATURE_opengl - "xlib" - FEATURE_xlib - "xkb" - FEATURE_xkbcommon - "xcb" - FEATURE_xcb - "xcb-xlib" - FEATURE_xcb_xlib - "xkbcommon-x11" - FEATURE_xkbcommon_x11 - "xrender" - FEATURE_xrender # requires FEATURE_xcb_native_painting; otherwise disabled. - "xrender" - FEATURE_xcb_native_painting # experimental - "gles2" - FEATURE_opengles2 - "gles3" - FEATURE_opengles3 - # Cannot be required since Qt will look in CONFIG mode first but is controlled via - # CMAKE_DISABLE_FIND_PACKAGE_Vulkan below "vulkan" - # CMAKE_REQUIRE_FIND_PACKAGE_WrapVulkanHeaders - "egl" - FEATURE_egl - # "fontconfig" CMAKE_REQUIRE_FIND_PACKAGE_Fontconfig "harfbuzz" - # CMAKE_REQUIRE_FIND_PACKAGE_WrapSystemHarfbuzz "jpeg" CMAKE_REQUIRE_FIND_PACKAGE_JPEG - # "png" CMAKE_REQUIRE_FIND_PACKAGE_PNG "xlib" - # CMAKE_REQUIRE_FIND_PACKAGE_X11 "xkb" CMAKE_REQUIRE_FIND_PACKAGE_XKB "xcb" - # CMAKE_REQUIRE_FIND_PACKAGE_XCB "xcb-xlib" CMAKE_REQUIRE_FIND_PACKAGE_X11_XCB - # "xkbcommon-x11" CMAKE_REQUIRE_FIND_PACKAGE_XKB_COMMON_X11 "xrender" - # CMAKE_REQUIRE_FIND_PACKAGE_XRender - INVERTED_FEATURES - "vulkan" - CMAKE_DISABLE_FIND_PACKAGE_Vulkan - "opengl" - CMAKE_DISABLE_FIND_PACKAGE_WrapOpenGL - "egl" - CMAKE_DISABLE_FIND_PACKAGE_EGL - "gles2" - CMAKE_DISABLE_FIND_PACKAGE_GLESv2 - "gles3" - CMAKE_DISABLE_FIND_PACKAGE_GLESv3 - "fontconfig" - CMAKE_DISABLE_FIND_PACKAGE_Fontconfig - # "freetype" CMAKE_DISABLE_FIND_PACKAGE_WrapSystemFreetype # Bug in qt cannot - # be deactivated - "harfbuzz" - CMAKE_DISABLE_FIND_PACKAGE_WrapSystemHarfbuzz - "jpeg" - CMAKE_DISABLE_FIND_PACKAGE_JPEG - # "png" CMAKE_DISABLE_FIND_PACKAGE_PNG # Unable to disable if Freetype - # requires it - "xlib" - CMAKE_DISABLE_FIND_PACKAGE_X11 - "xkb" - CMAKE_DISABLE_FIND_PACKAGE_XKB - "xcb" - CMAKE_DISABLE_FIND_PACKAGE_XCB - "xcb-xlib" - CMAKE_DISABLE_FIND_PACKAGE_X11_XCB - "xkbcommon-x11" - CMAKE_DISABLE_FIND_PACKAGE_XKB_COMMON_X11 - "xrender" - CMAKE_DISABLE_FIND_PACKAGE_XRender - # There are more X features but I am unsure how to safely disable them! Most of them - # seem to be found automaticall with find_package(X11) -) - -if ("gles2" IN_LIST FEATURES) - list(APPEND FEATURE_GUI_OPTIONS -DINPUT_opengl='es2') - list(APPEND FEATURE_GUI_OPTIONS -DFEATURE_opengl_desktop=OFF) -endif () - -if (NOT - "opengl" - IN_LIST - FEATURES - AND NOT - "gles2" - IN_LIST - FEATURES -) - list(APPEND FEATURE_GUI_OPTIONS -DINPUT_opengl='no') - list(APPEND FEATURE_GUI_OPTIONS -DFEATURE_opengl_desktop=OFF) - list(APPEND FEATURE_GUI_OPTIONS -DFEATURE_opengl_dynamic=OFF) -endif () - -if ("xcb" IN_LIST FEATURES) - list(APPEND FEATURE_GUI_OPTIONS -DINPUT_xcb=yes) -else () - list(APPEND FEATURE_GUI_OPTIONS -DINPUT_xcb=no) -endif () -if ("xkb" IN_LIST FEATURES) - list(APPEND FEATURE_GUI_OPTIONS -DINPUT_xkbcommon=yes) -else () - list(APPEND FEATURE_GUI_OPTIONS -DINPUT_xkbcommon=no) -endif () - -# Disable OpenGL ES 3.1 and 3.2 -list(APPEND FEATURE_GUI_OPTIONS -DFEATURE_opengles31:BOOL=OFF) -list(APPEND FEATURE_GUI_OPTIONS -DFEATURE_opengles32:BOOL=OFF) - -list(APPEND FEATURE_GUI_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_ATSPI2:BOOL=ON) -list(APPEND FEATURE_GUI_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_DirectFB:BOOL=ON) -list(APPEND FEATURE_GUI_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Libdrm:BOOL=ON) -list(APPEND FEATURE_GUI_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_gbm:BOOL=ON) -list(APPEND FEATURE_GUI_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Libinput:BOOL=ON) -list(APPEND FEATURE_GUI_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Mtdev:BOOL=ON) -list(APPEND FEATURE_GUI_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_Tslib:BOOL=ON) -# sql-drivers features: - -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_SQLDRIVERS_OPTIONS - FEATURES - "sql-sqlite" - FEATURE_system_sqlite - "sql-odbc" - FEATURE_sql_odbc - "sql-mysql" - FEATURE_sql_mysql - "sql-oci" - FEATURE_sql_oci - # "sql-psql" CMAKE_REQUIRE_FIND_PACKAGE_PostgreSQL "sql-sqlite" - # CMAKE_REQUIRE_FIND_PACKAGE_SQLite3 - INVERTED_FEATURES - "sql-psql" - CMAKE_DISABLE_FIND_PACKAGE_PostgreSQL - "sql-sqlite" - CMAKE_DISABLE_FIND_PACKAGE_SQLite3 - "sql-odbc" - CMAKE_DISABLE_FIND_PACKAGE_ODBC - "sql-mysql" - CMAKE_DISABLE_FIND_PACKAGE_MySQL - "sql-oci" - CMAKE_DISABLE_FIND_PACKAGE_Oracle -) - -set(DB_LIST DB2 Interbase Mimer) -foreach (_db IN LISTS DB_LIST) - list(APPEND FEATURE_SQLDRIVERS_OPTIONS -DCMAKE_DISABLE_FIND_PACKAGE_${_db}:BOOL=ON) -endforeach () - -# printsupport features: -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_PRINTSUPPORT_OPTIONS - FEATURES - "cups" - FEATURE_cups - INVERTED_FEATURES - "cups" - CMAKE_DISABLE_FIND_PACKAGE_Cups -) - -vcpkg_check_features( - OUT_FEATURE_OPTIONS - FEATURE_WIDGETS_OPTIONS - FEATURES - "gtk3" - FEATURE_gtk3 - INVERTED_FEATURES - "gtk3" - CMAKE_DISABLE_FIND_PACKAGE_GTK3 -) - -set(TOOL_NAMES - androiddeployqt - androidtestrunner - cmake_automoc_parser - moc - qdbuscpp2xml - qdbusxml2cpp - qlalr - qmake - qmake6 - qvkgen - rcc - tracegen - uic - qtpaths - qtpaths6 - windeployqt - windeployqt6 - macdeployqt - macdeployqt6 - androiddeployqt6 - syncqt - tracepointgen -) - -qt_install_submodule( - PATCHES - ${${PORT}_PATCHES} - TOOL_NAMES - ${TOOL_NAMES} - CONFIGURE_OPTIONS - # --trace-expand - ${FEATURE_OPTIONS} - ${FEATURE_CORE_OPTIONS} - ${FEATURE_NET_OPTIONS} - ${FEATURE_GUI_OPTIONS} - ${FEATURE_SQLDRIVERS_OPTIONS} - ${FEATURE_PRINTSUPPORT_OPTIONS} - ${FEATURE_WIDGETS_OPTIONS} - ${INPUT_OPTIONS} - -DQT_USE_BUNDLED_BundledFreetype:BOOL=FALSE - -DQT_USE_BUNDLED_BundledHarfbuzz:BOOL=FALSE - -DQT_USE_BUNDLED_BundledLibpng:BOOL=FALSE - -DQT_USE_BUNDLED_BundledPcre2:BOOL=FALSE - -DINPUT_bundled_xcb_xinput:STRING=no - -DFEATURE_force_debug_info:BOOL=ON - -DFEATURE_relocatable:BOOL=ON - -DQT_AVOID_CMAKE_ARCHIVING_API=ON - CONFIGURE_OPTIONS_RELEASE - CONFIGURE_OPTIONS_DEBUG - -DFEATURE_debug:BOOL=ON - CONFIGURE_OPTIONS_MAYBE_UNUSED - FEATURE_appstore_compliant # only used for android/ios -) - -# Install CMake helper scripts -file(COPY "${CMAKE_CURRENT_LIST_DIR}/cmake/" - DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" -) - -file( - CONFIGURE - OUTPUT - "${CURRENT_PACKAGES_DIR}/share/${PORT}/port_status.cmake" - CONTENT - "set(qtbase_with_icu ${FEATURE_icu})\n" -) - -set(other_files - qt-cmake - qt-cmake-create - qt-cmake-private - qt-cmake-standalone-test - qt-configure-module - qt-internal-configure-tests - qt-cmake-create - qt-internal-configure-examples - qt-internal-configure-tests - qmake - qmake6 - qtpaths - qtpaths6 -) - -if (CMAKE_HOST_WIN32) - set(script_suffix ".bat") -else () - set(script_suffix "") -endif () -list(TRANSFORM other_files APPEND "${script_suffix}") - -list( - APPEND - other_files - android_cmakelist_patcher.sh - android_emulator_launcher.sh - ensure_pro_file.cmake - qt-android-runner.py - qt-cmake-private-install.cmake - qt-testrunner.py - qt-wasmtestrunner.py - sanitizer-testrunner.py - syncqt.pl - target_qt.conf -) - -foreach (_config debug release) - if (_config MATCHES "debug") - set(path_suffix debug/) - else () - set(path_suffix) - endif () - if (NOT EXISTS "${CURRENT_PACKAGES_DIR}/${path_suffix}bin") - continue() - endif () - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/${path_suffix}") - foreach (other_file IN LISTS other_files) - if (EXISTS "${CURRENT_PACKAGES_DIR}/${path_suffix}bin/${other_file}") - set(target_file "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/${path_suffix}${other_file}") - file(RENAME "${CURRENT_PACKAGES_DIR}/${path_suffix}bin/${other_file}" - "${target_file}" - ) - file(READ "${target_file}" _contents) - if (_config MATCHES "debug") - string( - REPLACE "..\\share\\" - "..\\..\\..\\..\\share\\" - _contents - "${_contents}" - ) - string( - REPLACE "../share/" - "../../../../share/" - _contents - "${_contents}" - ) - else () - string( - REPLACE "..\\share\\" - "..\\..\\..\\share\\" - _contents - "${_contents}" - ) - string( - REPLACE "../share/" - "../../../share/" - _contents - "${_contents}" - ) - endif () - string( - REGEX - REPLACE "set cmake_path=[^\n]+\n" - "set cmake_path=cmake\n" - _contents - "${_contents}" - ) - string( - REGEX - REPLACE "original_cmake_path=[^\n]+\n" - "original_cmake_path=does-not-exist\n" - _contents - "${_contents}" - ) - file(WRITE "${target_file}" "${_contents}") - endif () - endforeach () -endforeach () - -# Fixup qt.toolchain.cmake -set(qttoolchain "${CURRENT_PACKAGES_DIR}/share/Qt6/qt.toolchain.cmake") -file(READ "${qttoolchain}" toolchain_contents) -string( - REGEX - REPLACE "set\\\(__qt_initially_configured_toolchain_file [^\\\n]+\\\n" - "" - toolchain_contents - "${toolchain_contents}" -) -string( - REGEX - REPLACE "set\\\(__qt_chainload_toolchain_file [^\\\n]+\\\n" - "set(__qt_chainload_toolchain_file \"\${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}\")" - toolchain_contents - "${toolchain_contents}" -) -string( - REGEX - REPLACE "set\\\(VCPKG_CHAINLOAD_TOOLCHAIN_FILE [^\\\n]+\\\n" - "" - toolchain_contents - "${toolchain_contents}" -) -string( - REGEX - REPLACE "set\\\(__qt_initial_c_compiler [^\\\n]+\\\n" - "" - toolchain_contents - "${toolchain_contents}" -) -string( - REGEX - REPLACE "set\\\(__qt_initial_cxx_compiler [^\\\n]+\\\n" - "" - toolchain_contents - "${toolchain_contents}" -) -string( - REPLACE "${CURRENT_HOST_INSTALLED_DIR}" - "\${vcpkg_installed_dir}/${HOST_TRIPLET}" - toolchain_contents - "${toolchain_contents}" -) -file(WRITE "${qttoolchain}" "${toolchain_contents}") - -if (VCPKG_LIBRARY_LINKAGE STREQUAL "static" OR NOT VCPKG_TARGET_IS_WINDOWS) - if (VCPKG_CROSSCOMPILING) - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin/qmake" - "${CURRENT_PACKAGES_DIR}/debug/bin/qmake" - ) # qmake has been moved so this is the qmake helper script - endif () - file(GLOB_RECURSE _bin_files "${CURRENT_PACKAGES_DIR}/bin/*") - if (NOT _bin_files) # Only clean if empty otherwise let vcpkg throw and error. - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin/" - "${CURRENT_PACKAGES_DIR}/debug/bin/" - ) - else () - message(STATUS "Files in '/bin':${_bin_files}") - endif () -endif () - -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/Qt6/QtBuildInternals") - -if (NOT VCPKG_TARGET_IS_OSX) - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/Qt6/macos") -endif () -if (NOT VCPKG_TARGET_IS_IOS) - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/Qt6/ios") -endif () - -file( - RELATIVE_PATH - installed_to_host - "${CURRENT_INSTALLED_DIR}" - "${CURRENT_HOST_INSTALLED_DIR}" -) -file( - RELATIVE_PATH - host_to_installed - "${CURRENT_HOST_INSTALLED_DIR}" - "${CURRENT_INSTALLED_DIR}" -) -if (installed_to_host) - string(APPEND installed_to_host "/") - string(APPEND host_to_installed "/") -endif () -set(_file "${CMAKE_CURRENT_LIST_DIR}/qt.conf.in") -set(REL_PATH "") -set(REL_HOST_TO_DATA "\${CURRENT_INSTALLED_DIR}/") -configure_file("${_file}" "${CURRENT_PACKAGES_DIR}/tools/Qt6/qt_release.conf" @ONLY -)# For vcpkg-qmake -set(BACKUP_CURRENT_INSTALLED_DIR "${CURRENT_INSTALLED_DIR}") -set(BACKUP_CURRENT_HOST_INSTALLED_DIR "${CURRENT_HOST_INSTALLED_DIR}") -set(CURRENT_INSTALLED_DIR "./../../../") -set(CURRENT_HOST_INSTALLED_DIR "${CURRENT_INSTALLED_DIR}${installed_to_host}") - -# Configure installed qt.conf -set(REL_HOST_TO_DATA "${host_to_installed}") -configure_file("${_file}" "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/qt.conf") -set(REL_PATH debug/) -configure_file("${_file}" "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/qt.debug.conf") - -set(CURRENT_INSTALLED_DIR "${BACKUP_CURRENT_INSTALLED_DIR}") -set(CURRENT_HOST_INSTALLED_DIR "${BACKUP_CURRENT_HOST_INSTALLED_DIR}") -set(REL_HOST_TO_DATA "\${CURRENT_INSTALLED_DIR}/") -configure_file("${_file}" "${CURRENT_PACKAGES_DIR}/tools/Qt6/qt_debug.conf" @ONLY -)# For vcpkg-qmake - -set(target_qt_conf "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/target_qt.conf") -if (EXISTS "${target_qt_conf}") - file(READ "${target_qt_conf}" qt_conf_contents) - string( - REGEX - REPLACE "Prefix=[^\n]+" - "Prefix=./../../../" - qt_conf_contents - ${qt_conf_contents} - ) - string( - REGEX - REPLACE "HostData=[^\n]+" - "HostData=./../${TARGET_TRIPLET}/share/Qt6" - qt_conf_contents - ${qt_conf_contents} - ) - string( - REGEX - REPLACE "HostPrefix=[^\n]+" - "HostPrefix=./../../../../${_HOST_TRIPLET}" - qt_conf_contents - ${qt_conf_contents} - ) - file(WRITE "${target_qt_conf}" "${qt_conf_contents}") - if (NOT VCPKG_BUILD_TYPE) - set(target_qt_conf_debug "${CURRENT_PACKAGES_DIR}/tools/Qt6/target_qt_debug.conf") - configure_file("${target_qt_conf}" "${target_qt_conf_debug}" COPYONLY) - file(READ "${target_qt_conf_debug}" qt_conf_contents) - string( - REGEX - REPLACE "=(bin|lib|Qt6/plugins|Qt6/qml)" - "=debug/\\1" - qt_conf_contents - ${qt_conf_contents} - ) - file(WRITE "${target_qt_conf_debug}" "${qt_conf_contents}") - - configure_file( - "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/qmake${script_suffix}" - "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/qmake.debug${script_suffix}" COPYONLY - ) - vcpkg_replace_string( - "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/qmake.debug${script_suffix}" - "target_qt.conf" "target_qt_debug.conf" - ) - endif () -endif () - -if (VCPKG_TARGET_IS_EMSCRIPTEN) - vcpkg_replace_string( - "${CURRENT_PACKAGES_DIR}/share/Qt6Core/Qt6WasmMacros.cmake" - "_qt_test_emscripten_version()" "" - ) # this is missing a include(QtPublicWasmToolchainHelpers) -endif () - -if (VCPKG_TARGET_IS_WINDOWS) - set(_DLL_FILES - brotlicommon - brotlidec - bz2 - freetype - harfbuzz - libpng16 - ) - set(DLLS_TO_COPY "") - foreach (_file IN LISTS _DLL_FILES) - if (EXISTS "${CURRENT_INSTALLED_DIR}/bin/${_file}.dll") - list(APPEND DLLS_TO_COPY "${CURRENT_INSTALLED_DIR}/bin/${_file}.dll") - endif () - endforeach () - file(COPY ${DLLS_TO_COPY} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin") -endif () - -set(hostinfofile "${CURRENT_PACKAGES_DIR}/share/Qt6HostInfo/Qt6HostInfoConfig.cmake") -file(READ "${hostinfofile}" _contents) -string( - REPLACE [[set(QT6_HOST_INFO_LIBEXECDIR "bin")]] - [[set(QT6_HOST_INFO_LIBEXECDIR "tools/Qt6/bin")]] - _contents - "${_contents}" -) -string( - REPLACE [[set(QT6_HOST_INFO_BINDIR "bin")]] - [[set(QT6_HOST_INFO_BINDIR "tools/Qt6/bin")]] - _contents - "${_contents}" -) -file(WRITE "${hostinfofile}" "${_contents}") - -# MANUAL FIX - see https://github.com/microsoft/vcpkg/issues/44792 -if (NOT VCPKG_CROSSCOMPILING - OR EXISTS - "${CURRENT_PACKAGES_DIR}/share/Qt6CoreTools/Qt6CoreToolsAdditionalTargetInfo.cmake" -) - vcpkg_replace_string( - "${CURRENT_PACKAGES_DIR}/share/Qt6CoreTools/Qt6CoreToolsAdditionalTargetInfo.cmake" - "CMAKE_CURRENT_LIST_DIR}/../../bin/syncqt" - "CMAKE_CURRENT_LIST_DIR}/../../tools/Qt6/bin/syncqt" - IGNORE_UNCHANGED - ) - vcpkg_replace_string( - "${CURRENT_PACKAGES_DIR}/share/Qt6CoreTools/Qt6CoreToolsAdditionalTargetInfo.cmake" - "PACKAGE_PREFIX_DIR}/bin/syncqt" - "PACKAGE_PREFIX_DIR}/tools/Qt6/bin/syncqt" - IGNORE_UNCHANGED - ) -endif () - -set(configfile - "${CURRENT_PACKAGES_DIR}/share/Qt6CoreTools/Qt6CoreToolsTargets-debug.cmake" -) -if (EXISTS "${configfile}") - file(READ "${configfile}" _contents) - if (EXISTS "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/qmake.exe") - file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/qmake.debug.bat" - DESTINATION "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin" - ) - string( - REPLACE [[ "${_IMPORT_PREFIX}/tools/Qt6/bin/qmake.exe"]] - [[ "${_IMPORT_PREFIX}/tools/Qt6/bin/qmake.debug.bat"]] - _contents - "${_contents}" - ) - endif () - if (EXISTS "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/qtpaths.exe") - file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/qtpaths.debug.bat" - DESTINATION "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin" - ) - string( - REPLACE [[ "${_IMPORT_PREFIX}/tools/Qt6/bin/qtpaths.exe"]] - [[ "${_IMPORT_PREFIX}/tools/Qt6/bin/qtpaths.debug.bat"]] - _contents - "${_contents}" - ) - endif () - if (EXISTS "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/windeployqt.exe") - file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/windeployqt.debug.bat" - DESTINATION "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin" - ) - string( - REPLACE [[ "${_IMPORT_PREFIX}/tools/Qt6/bin/windeployqt.exe"]] - [[ "${_IMPORT_PREFIX}/tools/Qt6/bin/windeployqt.debug.bat"]] - _contents - "${_contents}" - ) - endif () - file(WRITE "${configfile}" "${_contents}") -endif () - -if (VCPKG_CROSSCOMPILING) - vcpkg_replace_string( - "${CURRENT_PACKAGES_DIR}/share/Qt6/Qt6Dependencies.cmake" - "${CURRENT_HOST_INSTALLED_DIR}" "\${CMAKE_CURRENT_LIST_DIR}/../../../${HOST_TRIPLET}" - ) -endif () - -function (remove_original_cmake_path file) - file(READ "${file}" _contents) - string( - REGEX - REPLACE "original_cmake_path=[^\n]*" - "original_cmake_path=''" - _contents - "${_contents}" - ) - file(WRITE "${file}" "${_contents}") -endfunction () - -if (NOT VCPKG_TARGET_IS_WINDOWS AND NOT CMAKE_HOST_WIN32) - foreach (file "qt-cmake${script_suffix}" "qt-cmake-private${script_suffix}") - remove_original_cmake_path("${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/${file}") - if (NOT VCPKG_BUILD_TYPE) - remove_original_cmake_path("${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/debug/${file}") - endif () - endforeach () -endif () - -if (VCPKG_TARGET_IS_WINDOWS) - # dlls owned but not automatically installed by qtbase this is required to avoid - # ownership troubles in downstream qt modules - set(qtbase_owned_dlls - double-conversion.dll - icudt74.dll - icuin74.dll - icuuc74.dll - libcrypto-3-${VCPKG_TARGET_ARCHITECTURE}.dll - libcrypto-3.dll # for x86 - pcre2-16.dll - zlib1.dll - zstd.dll - ) - if ("dbus" IN_LIST FEATURES) - list(APPEND qtbase_owned_dlls dbus-1-3.dll) - endif () - list(TRANSFORM qtbase_owned_dlls PREPEND "${CURRENT_INSTALLED_DIR}/bin/") - foreach (dll IN LISTS qtbase_owned_dlls) - if (NOT EXISTS "${dll}") # Need to remove non-existant dlls since dependencies could - # have been build statically - list(REMOVE_ITEM qtbase_owned_dlls "${dll}") - endif () - endforeach () - file(COPY ${qtbase_owned_dlls} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/Qt6/bin") -endif () diff --git a/vcpkg/ports/qtbase/qmake.debug.bat b/vcpkg/ports/qtbase/qmake.debug.bat deleted file mode 100644 index a7ed903a3..000000000 --- a/vcpkg/ports/qtbase/qmake.debug.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -"%0\..\qmake.exe" -qtconf "%0\..\qt.debug.conf" %* diff --git a/vcpkg/ports/qtbase/qt.conf.in b/vcpkg/ports/qtbase/qt.conf.in deleted file mode 100644 index 8e76b8f6d..000000000 --- a/vcpkg/ports/qtbase/qt.conf.in +++ /dev/null @@ -1,31 +0,0 @@ -[DevicePaths] -Prefix=${CURRENT_INSTALLED_DIR} -Headers=include/@QT6_DIRECTORY_PREFIX@ -Libraries=@REL_PATH@lib -Plugins=@REL_PATH@@QT6_DIRECTORY_PREFIX@plugins -Qml2Imports=@REL_PATH@@QT6_DIRECTORY_PREFIX@qml -Documentation=doc/@QT6_DIRECTORY_PREFIX@ -Binaries=@REL_PATH@bin -LibraryExecutables=tools/Qt6/bin -ArchData=share/Qt6 -Data=share/Qt6 -Translations=translations/@QT6_DIRECTORY_PREFIX@ -Examples=share/examples/@QT6_DIRECTORY_PREFIX@ -[Paths] -Prefix=${CURRENT_INSTALLED_DIR} -Headers=include/@QT6_DIRECTORY_PREFIX@ -Libraries=@REL_PATH@lib -Plugins=@REL_PATH@@QT6_DIRECTORY_PREFIX@plugins -Qml2Imports=@REL_PATH@@QT6_DIRECTORY_PREFIX@qml -Documentation=doc/@QT6_DIRECTORY_PREFIX@ -Binaries=@REL_PATH@bin -LibraryExecutables=tools/Qt6/bin -ArchData=share/Qt6 -Data=share/Qt6 -Translations=translations/@QT6_DIRECTORY_PREFIX@ -Examples=share/examples/@QT6_DIRECTORY_PREFIX@ -HostPrefix=${CURRENT_HOST_INSTALLED_DIR} -HostData=@REL_HOST_TO_DATA@share/Qt6 -HostBinaries=@REL_PATH@bin -HostLibraries=@REL_PATH@lib -HostLibraryExecutables=tools/Qt6/bin diff --git a/vcpkg/ports/qtbase/qtpaths.debug.bat b/vcpkg/ports/qtbase/qtpaths.debug.bat deleted file mode 100644 index ab3bbc907..000000000 --- a/vcpkg/ports/qtbase/qtpaths.debug.bat +++ /dev/null @@ -1,2 +0,0 @@ -@echo off -"%~dp0qtpaths.exe" --qtconf "%~dp0qt.debug.conf" %* diff --git a/vcpkg/ports/qtbase/vcpkg.json b/vcpkg/ports/qtbase/vcpkg.json deleted file mode 100644 index 8de5c559d..000000000 --- a/vcpkg/ports/qtbase/vcpkg.json +++ /dev/null @@ -1,570 +0,0 @@ -{ - "name": "qtbase", - "version": "6.10.2", - "port-version": 1, - "description": "Qt Base (Core, Gui, Widgets, Network, ...)", - "homepage": "https://www.qt.io/", - "license": null, - "supports": "!uwp", - "dependencies": [ - { - "name": "libb2", - "platform": "!windows" - }, - { - "name": "pcre2", - "default-features": false - }, - { - "name": "qtbase", - "host": true, - "default-features": false - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "doubleconversion" - ] - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "cups" - ], - "platform": "osx" - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "thread" - ], - "platform": "osx" - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "pcre2" - ], - "platform": "windows & static" - }, - { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", - "host": true - }, - "zlib" - ], - "default-features": [ - { - "name": "appstore-compliant", - "platform": "uwp" - }, - "brotli", - "concurrent", - { - "name": "dbus", - "platform": "!(static & windows)" - }, - "dnslookup", - "doubleconversion", - { - "name": "egl", - "platform": "linux" - }, - { - "name": "egl", - "platform": "android" - }, - { - "name": "fontconfig", - "platform": "linux" - }, - "freetype", - { - "name": "gles2", - "platform": "android" - }, - "gui", - "harfbuzz", - "icu", - "jpeg", - "network", - { - "name": "opengl", - "platform": "!ios" - }, - { - "name": "openssl", - "platform": "!ios" - }, - "pcre2", - "png", - { - "name": "securetransport", - "platform": "ios" - }, - "sql", - "sql-psql", - "sql-sqlite", - "testlib", - "thread", - "widgets", - { - "name": "xcb", - "platform": "linux" - }, - { - "name": "xcb-xlib", - "platform": "linux" - }, - { - "name": "xrender", - "platform": "linux" - }, - "zstd" - ], - "features": { - "appstore-compliant": { - "description": "Disable code that is not allowed in platform app stores. This is on by default for platforms which require distribution through an app store by default, in particular Android, iOS, tvOS, and watchOS." - }, - "brotli": { - "description": "Support for downloading and decompressing resources compressed with Brotli through QNetworkAccessManager.", - "dependencies": [ - "brotli", - { - "name": "qtbase", - "default-features": false, - "features": [ - "network" - ] - } - ] - }, - "concurrent": { - "description": "Provides a high-level multi-threading API. Qt Concurrent", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "thread" - ] - } - ] - }, - "cups": { - "description": "Provides support for the Common Unix Printing System.", - "supports": "linux | osx" - }, - "dbus": { - "description": "Qt D-Bus", - "dependencies": [ - { - "name": "dbus", - "default-features": false - }, - { - "name": "qtbase", - "host": true, - "default-features": false, - "features": [ - "dbus" - ] - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "thread" - ] - } - ] - }, - "dnslookup": { - "description": "Enable DNS lookup support", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "network" - ] - } - ] - }, - "doubleconversion": { - "description": "Enable double conversion support", - "dependencies": [ - "double-conversion" - ] - }, - "egl": { - "description": "EGL", - "supports": "linux", - "dependencies": [ - "egl" - ] - }, - "fontconfig": { - "description": "Use fontconfig", - "dependencies": [ - "fontconfig", - { - "name": "qtbase", - "default-features": false, - "features": [ - "gui" - ] - } - ] - }, - "framework": { - "description": "MAC framework build", - "supports": "osx & !static" - }, - "freetype": { - "description": "Supports the FreeType 2 font engine (and its supported font formats).", - "dependencies": [ - { - "name": "freetype", - "default-features": false - } - ] - }, - "gles2": { - "description": "OpenGL ES 2.0", - "supports": "!windows & !osx", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "gui" - ] - } - ] - }, - "gles3": { - "description": "OpenGL ES 3.0", - "supports": "!windows & !osx", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "gles2" - ] - } - ] - }, - "glib": { - "description": "GLib", - "dependencies": [ - "glib" - ] - }, - "gtk3": { - "description": "GTK3 platform theme plugin", - "supports": "linux", - "dependencies": [ - "gtk3", - { - "name": "qtbase", - "default-features": false, - "features": [ - "glib" - ] - } - ] - }, - "gui": { - "description": "Qt Gui", - "dependencies": [ - { - "name": "opengl", - "platform": "!ios" - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "freetype" - ] - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "opengl" - ], - "platform": "osx" - }, - { - "name": "qtbase", - "default-features": false, - "features": [ - "thread" - ], - "platform": "windows" - } - ] - }, - "harfbuzz": { - "description": "Use harfbuzz", - "dependencies": [ - "harfbuzz", - { - "name": "qtbase", - "default-features": false, - "features": [ - "gui" - ] - } - ] - }, - "icu": { - "description": "Enable ICU support", - "dependencies": [ - "icu" - ] - }, - "jpeg": { - "description": "Enable JPEG", - "dependencies": [ - "libjpeg-turbo", - { - "name": "qtbase", - "default-features": false, - "features": [ - "gui" - ] - } - ] - }, - "network": { - "description": "Qt Network" - }, - "opengl": { - "description": "OpenGL", - "dependencies": [ - "opengl", - { - "name": "qtbase", - "default-features": false, - "features": [ - "gui" - ] - } - ] - }, - "openssl": { - "description": "Enable OpenSSL", - "dependencies": [ - "openssl", - { - "name": "qtbase", - "default-features": false, - "features": [ - "network" - ] - } - ] - }, - "pcre2": { - "description": "Enable PCRE2 support", - "dependencies": [ - { - "name": "pcre2", - "default-features": false - } - ] - }, - "png": { - "description": "Enable PNG", - "dependencies": [ - "libpng", - { - "name": "qtbase", - "default-features": false, - "features": [ - "gui" - ] - } - ] - }, - "securetransport": { - "description": "Enable Secure Transport", - "supports": "ios | osx" - }, - "sql": { - "description": "Qt Sql", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "concurrent" - ] - } - ] - }, - "sql-mysql": { - "description": "Enable SQL Driver MySQL", - "dependencies": [ - "libmysql", - { - "name": "qtbase", - "default-features": false, - "features": [ - "sql" - ] - } - ] - }, - "sql-oci": { - "description": "Enable SQL Driver Oracle OCI", - "dependencies": [ - "ocilib", - { - "name": "qtbase", - "default-features": false, - "features": [ - "sql" - ] - } - ] - }, - "sql-odbc": { - "description": "Enable SQL Driver odbc", - "supports": "windows", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "sql" - ] - } - ] - }, - "sql-psql": { - "description": "Enable SQL Driver psql", - "dependencies": [ - "libpq", - { - "name": "qtbase", - "default-features": false, - "features": [ - "sql" - ] - } - ] - }, - "sql-sqlite": { - "description": "Enable SQL Driver sqlite", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "sql" - ] - }, - "sqlite3" - ] - }, - "testlib": { - "description": "Qt Testlib" - }, - "thread": { - "description": "Thread support; provides QThread and related classes." - }, - "vulkan": { - "description": "Enable Vulkan support", - "dependencies": [ - "vulkan" - ] - }, - "widgets": { - "description": "Qt Widgets", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "gui" - ] - } - ] - }, - "xcb": { - "description": "XCB", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "concurrent", - "xkbcommon-x11", - "xlib" - ] - } - ] - }, - "xcb-xlib": { - "description": "xcb-xlib", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "xlib" - ] - } - ] - }, - "xkb": { - "description": "XKB" - }, - "xkbcommon-x11": { - "description": "xkbcommon_x11", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "xkb" - ] - } - ] - }, - "xlib": { - "description": "XLib" - }, - "xrender": { - "description": "XRender for native painting", - "dependencies": [ - { - "name": "qtbase", - "default-features": false, - "features": [ - "xcb" - ] - } - ] - }, - "zstd": { - "description": "Zstandard support", - "dependencies": [ - "zstd" - ] - } - } -} diff --git a/vcpkg/ports/qtbase/windeployqt.debug.bat b/vcpkg/ports/qtbase/windeployqt.debug.bat deleted file mode 100644 index 234bb4383..000000000 --- a/vcpkg/ports/qtbase/windeployqt.debug.bat +++ /dev/null @@ -1,10 +0,0 @@ -@echo off -setlocal enabledelayedexpansion -set mypath=%~dp0 -set mypath=%mypath:~0,-1% -set BAKCD=!CD! -cd /D "%mypath%\..\..\..\debug\bin" -set PATH=!CD!;%PATH% -cd /D "%BAKCD%" -"%mypath%\windeployqt6.exe" --qtpaths "%mypath%\qtpaths.debug.bat" %* -endlocal From 98929a0d5d88d59636db998d0f1f2946c84376c7 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 17:54:50 +0200 Subject: [PATCH 39/61] Add wayland support for linux build --- vcpkg.json | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vcpkg.json b/vcpkg.json index c3413bc8d..3cbfc30c8 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -84,7 +84,13 @@ }, { "name": "qtbase", - "default-features": false + "default-features": false, + "features": [ + { + "name": "wayland", + "platform": "linux" + } + ] }, "qtconnectivity", "qtdeclarative", From d53b56952143c8078b5c79caa417854da9abcc49 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 18:05:20 +0200 Subject: [PATCH 40/61] Update xcode in Android CI --- .github/workflows/android.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 8db4c956b..d53883e72 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -48,7 +48,7 @@ jobs: QT_ANDROID_KEYSTORE_ALIAS: input QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }} QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }} - XC_VERSION: ${{ '16.2' }} + XC_VERSION: ${{ '26.4.1' }} VCPKG_ROOT: '${{ github.workspace }}/vcpkg' LC_ALL: 'en_US.UTF-8' #fastlane LANG: 'en_US.UTF-8' #fastlane @@ -97,7 +97,7 @@ jobs: cmakeVersion: ${{ env.CMAKE_VERSION }} - name: Setup XCode - uses: maxim-lobanov/setup-xcode@v1.6.0 + uses: maxim-lobanov/setup-xcode@v1.7.0 with: xcode-version: ${{ env.XC_VERSION }} From c6bf02b8557104be2fa407b7f5f46dd412d1acee Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 7 May 2026 18:09:22 +0200 Subject: [PATCH 41/61] Update cmake version in CI to match used by VCPKG --- .github/workflows/android.yml | 2 +- .github/workflows/ios.yml | 2 +- .github/workflows/linux.yml | 2 +- .github/workflows/macos.yml | 2 +- .github/workflows/win.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index d53883e72..3f3108dfb 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -44,7 +44,7 @@ jobs: ANDROIDAPI: 24 VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' SDK_BUILD_TOOLS: 34.0.0 - CMAKE_VERSION: '3.31.11' + CMAKE_VERSION: '4.3.2' QT_ANDROID_KEYSTORE_ALIAS: input QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }} QT_ANDROID_KEYSTORE_STORE_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }} diff --git a/.github/workflows/ios.yml b/.github/workflows/ios.yml index 7f453edf7..5eb881dd3 100644 --- a/.github/workflows/ios.yml +++ b/.github/workflows/ios.yml @@ -20,7 +20,7 @@ on: - published env: - CMAKE_VERSION: '3.31.11' + CMAKE_VERSION: '4.3.2' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' XC_VERSION: ${{ '26.4.1' }} diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 589ebd038..9bf7aa4dc 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -20,7 +20,7 @@ on: - published env: - CMAKE_VERSION: '3.31.11' + CMAKE_VERSION: '4.3.2' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: "${{ github.workspace }}/vcpkg" TRIPLET: x64-linux diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 2ccf11225..3417ab130 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -19,7 +19,7 @@ on: - published env: - CMAKE_VERSION: '3.31.11' + CMAKE_VERSION: '4.3.2' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' VCPKG_ROOT: '${{ github.workspace }}/vcpkg' XC_VERSION: ${{ '26.4.1' }} diff --git a/.github/workflows/win.yml b/.github/workflows/win.yml index 9f5b5374e..b854ae37d 100644 --- a/.github/workflows/win.yml +++ b/.github/workflows/win.yml @@ -31,7 +31,7 @@ jobs: VS_VERSION: "2022" # we can't reference other variables within, so make sure the year in path is same as VS_VERSION VCINSTALLDIR: "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/" - CMAKE_VERSION: '3.31.11' + CMAKE_VERSION: '4.3.2' VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' TRIPLET: x64-windows CMAKE_GENERATOR: "Visual Studio 17 2022" # see https://github.com/actions/runner-images/blob/main/images/windows/Windows2022-Readme.md From 87c2fa885ece8d4a5d1b2513b14f720cfc7032f9 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Fri, 8 May 2026 11:01:52 +0200 Subject: [PATCH 42/61] Add wayland packages for linux build --- .github/workflows/linux.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 9bf7aa4dc..b693dc24a 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -50,7 +50,8 @@ jobs: gperf autopoint '^libxcb.*-dev' libx11-xcb-dev libegl1-mesa-dev \ libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev \ autoconf-archive libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0 libfuse2t64 \ - lcov nasm libxrandr-dev mono-complete xvfb libltdl-dev + lcov nasm libxrandr-dev mono-complete xvfb libltdl-dev libwayland-dev libwayland-egl-backend-dev \ + wayland-protocols # Required to run unit tests on linux echo "QT_QPA_PLATFORM=offscreen" >> $GITHUB_ENV From 74dfc7514d767da7e5ae0ec1afebbc3495a9b455 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Mon, 11 May 2026 10:45:56 +0200 Subject: [PATCH 43/61] Add pcre2 port to fix android linker error --- vcpkg/ports/README.md | 1 + .../ports/pcre2/fix-lld-version-script.patch | 56 ++++++++++++ vcpkg/ports/pcre2/no-static-suffix.patch | 33 +++++++ vcpkg/ports/pcre2/pcre2-10.35_fix-uwp.patch | 12 +++ vcpkg/ports/pcre2/portfile.cmake | 90 +++++++++++++++++++ vcpkg/ports/pcre2/usage | 6 ++ vcpkg/ports/pcre2/vcpkg.json | 38 ++++++++ 7 files changed, 236 insertions(+) create mode 100644 vcpkg/ports/pcre2/fix-lld-version-script.patch create mode 100644 vcpkg/ports/pcre2/no-static-suffix.patch create mode 100644 vcpkg/ports/pcre2/pcre2-10.35_fix-uwp.patch create mode 100644 vcpkg/ports/pcre2/portfile.cmake create mode 100644 vcpkg/ports/pcre2/usage create mode 100644 vcpkg/ports/pcre2/vcpkg.json diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 08e0323ff..22238ecd5 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,4 +1,5 @@ - Geodiff - no official port in vcpkg +- pcre2 - patch missing `_init`/`_fini` symbols causing lld linker errors on Android - libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) - qca - we needed 2.3.10, there is 2.3.7 in main repo - qgis - no official port in vcpkg diff --git a/vcpkg/ports/pcre2/fix-lld-version-script.patch b/vcpkg/ports/pcre2/fix-lld-version-script.patch new file mode 100644 index 000000000..59c32b6af --- /dev/null +++ b/vcpkg/ports/pcre2/fix-lld-version-script.patch @@ -0,0 +1,56 @@ +diff --git a/src/libpcre2-16.sym b/src/libpcre2-16.sym +index fd5257db..a404f926 100644 +--- a/src/libpcre2-16.sym ++++ b/src/libpcre2-16.sym +@@ -80,9 +80,6 @@ PCRE2_10.47 { + pcre2_substring_list_get_16; + pcre2_substring_nametable_scan_16; + pcre2_substring_number_from_name_16; +- local: +- _fini; +- _init; + }; + + # PCRE2_10.48 {} PCRE2_10.47; +diff --git a/src/libpcre2-32.sym b/src/libpcre2-32.sym +index d4606c2b..d65f7848 100644 +--- a/src/libpcre2-32.sym ++++ b/src/libpcre2-32.sym +@@ -80,9 +80,6 @@ PCRE2_10.47 { + pcre2_substring_list_get_32; + pcre2_substring_nametable_scan_32; + pcre2_substring_number_from_name_32; +- local: +- _fini; +- _init; + }; + + # PCRE2_10.48 {} PCRE2_10.47; +diff --git a/src/libpcre2-8.sym b/src/libpcre2-8.sym +index 368b4e44..7b06ed21 100644 +--- a/src/libpcre2-8.sym ++++ b/src/libpcre2-8.sym +@@ -80,9 +80,6 @@ PCRE2_10.47 { + pcre2_substring_list_get_8; + pcre2_substring_nametable_scan_8; + pcre2_substring_number_from_name_8; +- local: +- _fini; +- _init; + }; + + # PCRE2_10.48 {} PCRE2_10.47; +diff --git a/src/libpcre2-posix.sym b/src/libpcre2-posix.sym +index 04a56cf6..675c4a2a 100644 +--- a/src/libpcre2-posix.sym ++++ b/src/libpcre2-posix.sym +@@ -5,9 +5,6 @@ PCRE2_10.47 { + pcre2_regerror; + pcre2_regexec; + pcre2_regfree; +- local: +- _fini; +- _init; + }; + + # PCRE2_10.48 {} PCRE2_10.47; diff --git a/vcpkg/ports/pcre2/no-static-suffix.patch b/vcpkg/ports/pcre2/no-static-suffix.patch new file mode 100644 index 000000000..4c81e96e0 --- /dev/null +++ b/vcpkg/ports/pcre2/no-static-suffix.patch @@ -0,0 +1,33 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 523bdcb..9d5d1a4 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -942,8 +942,8 @@ if(PCRE2_BUILD_PCRE2_8) + list(APPEND TARGETS pcre2-posix-static) + + if(MSVC) +- set_target_properties(pcre2-8-static PROPERTIES OUTPUT_NAME pcre2-8-static) +- set_target_properties(pcre2-posix-static PROPERTIES OUTPUT_NAME pcre2-posix-static) ++ set_target_properties(pcre2-8-static PROPERTIES OUTPUT_NAME pcre2-8) ++ set_target_properties(pcre2-posix-static PROPERTIES OUTPUT_NAME pcre2-posix) + else() + set_target_properties(pcre2-8-static PROPERTIES OUTPUT_NAME pcre2-8) + set_target_properties(pcre2-posix-static PROPERTIES OUTPUT_NAME pcre2-posix) +@@ -1049,7 +1049,7 @@ if(PCRE2_BUILD_PCRE2_16) + list(APPEND TARGETS pcre2-16-static) + + if(MSVC) +- set_target_properties(pcre2-16-static PROPERTIES OUTPUT_NAME pcre2-16-static) ++ set_target_properties(pcre2-16-static PROPERTIES OUTPUT_NAME pcre2-16) + else() + set_target_properties(pcre2-16-static PROPERTIES OUTPUT_NAME pcre2-16) + endif() +@@ -1127,7 +1127,7 @@ if(PCRE2_BUILD_PCRE2_32) + list(APPEND TARGETS pcre2-32-static) + + if(MSVC) +- set_target_properties(pcre2-32-static PROPERTIES OUTPUT_NAME pcre2-32-static) ++ set_target_properties(pcre2-32-static PROPERTIES OUTPUT_NAME pcre2-32) + else() + set_target_properties(pcre2-32-static PROPERTIES OUTPUT_NAME pcre2-32) + endif() diff --git a/vcpkg/ports/pcre2/pcre2-10.35_fix-uwp.patch b/vcpkg/ports/pcre2/pcre2-10.35_fix-uwp.patch new file mode 100644 index 000000000..16d8d7711 --- /dev/null +++ b/vcpkg/ports/pcre2/pcre2-10.35_fix-uwp.patch @@ -0,0 +1,12 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index c970996..523bdcb 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -894,6 +894,7 @@ endif() + + if(MSVC) + add_compile_definitions(_CRT_SECURE_NO_DEPRECATE _CRT_SECURE_NO_WARNINGS) ++ add_compile_options(/wd4146) + endif() + + set(TARGETS) diff --git a/vcpkg/ports/pcre2/portfile.cmake b/vcpkg/ports/pcre2/portfile.cmake new file mode 100644 index 000000000..021f12c9d --- /dev/null +++ b/vcpkg/ports/pcre2/portfile.cmake @@ -0,0 +1,90 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO PCRE2Project/pcre2 + REF "pcre2-${VERSION}" + SHA512 4deef8ce95711e65fe07624e6b2aace794594adb15e8363a0279a7b947bf5c75a5858fbdc5251d0a28a7ca97ae8bba561aa5f85805d5c07d417d3e7b3b3486a4 + HEAD_REF master + PATCHES + pcre2-10.35_fix-uwp.patch + no-static-suffix.patch + # TODO: remove with version 10.48, the issue should be fixed + fix-lld-version-script.patch +) + +vcpkg_from_github( + OUT_SOURCE_PATH SLJIT_SOURCE_PATH + REPO zherczeg/sljit + REF 45f910b78c6605ebf5b53d3ec7cb00f2312fe417 + SHA512 c05c83cc762f430c01e2aaf876aaac41a70b67ed8b91bc81102ad527c8921c5e75b41bab35bb8237dd5f53fecd7b8f31206865efffce2ea0a1aa9c87079fc643 + HEAD_REF main +) + +file(REMOVE_RECURSE "${SOURCE_PATH}/deps/sljit") +file(MAKE_DIRECTORY "${SOURCE_PATH}/deps") +file(RENAME "${SLJIT_SOURCE_PATH}" "${SOURCE_PATH}/deps/sljit") + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC) +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" INSTALL_PDB) +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" BUILD_STATIC_CRT) + +vcpkg_check_features( + OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + jit PCRE2_SUPPORT_JIT +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${FEATURE_OPTIONS} + -DBUILD_STATIC_LIBS=${BUILD_STATIC} + -DPCRE2_STATIC_RUNTIME=${BUILD_STATIC_CRT} + -DPCRE2_BUILD_PCRE2_8=ON + -DPCRE2_BUILD_PCRE2_16=ON + -DPCRE2_BUILD_PCRE2_32=ON + -DPCRE2_SUPPORT_UNICODE=ON + -DPCRE2_BUILD_TESTS=OFF + -DPCRE2_BUILD_PCRE2GREP=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=ON + -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Readline=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Editline=ON + -DINSTALL_MSVC_PDB=${INSTALL_PDB} + ) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() + +file(READ "${CURRENT_PACKAGES_DIR}/include/pcre2.h" PCRE2_H) +if(BUILD_STATIC) + string(REPLACE "defined(PCRE2_STATIC)" "1" PCRE2_H "${PCRE2_H}") +else() + string(REPLACE "defined(PCRE2_STATIC)" "0" PCRE2_H "${PCRE2_H}") +endif() +file(WRITE "${CURRENT_PACKAGES_DIR}/include/pcre2.h" "${PCRE2_H}") + +vcpkg_fixup_pkgconfig() +vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/man" + "${CURRENT_PACKAGES_DIR}/share/doc" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/man" + "${CURRENT_PACKAGES_DIR}/debug/share") + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/pcre2") +file(RENAME "${CURRENT_PACKAGES_DIR}/bin/pcre2-config" "${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config") +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config" "${CURRENT_PACKAGES_DIR}" [[$(cd "$(dirname "$0")/../.."; pwd -P)]]) +if(NOT VCPKG_BUILD_TYPE) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug") + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/bin/pcre2-config" "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config") + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" "${CURRENT_PACKAGES_DIR}/debug" [[$(cd "$(dirname "$0")/../../../debug"; pwd -P)]]) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" [[${prefix}/include]] [[${prefix}/../include]]) +endif() +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin" "${CURRENT_PACKAGES_DIR}/bin") +endif() + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/vcpkg/ports/pcre2/usage b/vcpkg/ports/pcre2/usage new file mode 100644 index 000000000..a23aadd33 --- /dev/null +++ b/vcpkg/ports/pcre2/usage @@ -0,0 +1,6 @@ +The package pcre2 is compatible with built-in CMake targets: + + # Each component imports a target: + # TARGETS: PCRE2::8BIT PCRE2::16BIT PCRE2::32BIT PCRE2::POSIX + find_package(pcre2 CONFIG REQUIRED) + target_link_libraries(main PRIVATE PCRE2::8BIT PCRE2::16BIT PCRE2::32BIT PCRE2::POSIX) diff --git a/vcpkg/ports/pcre2/vcpkg.json b/vcpkg/ports/pcre2/vcpkg.json new file mode 100644 index 000000000..55e1d20d4 --- /dev/null +++ b/vcpkg/ports/pcre2/vcpkg.json @@ -0,0 +1,38 @@ +{ + "name": "pcre2", + "version": "10.47", + "description": "Regular Expression pattern matching using the same syntax and semantics as Perl 5.", + "homepage": "https://github.com/PCRE2Project/pcre2", + "license": "BSD-3-Clause", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "default-features": [ + "platform-default-features" + ], + "features": { + "jit": { + "description": "Enable support for Just-In-Time compiling regex matchers", + "supports": "!emscripten & !ios" + }, + "platform-default-features": { + "description": "Enable default features", + "dependencies": [ + { + "name": "pcre2", + "features": [ + "jit" + ], + "platform": "!emscripten & !ios" + } + ] + } + } +} From 9bb623556a91918628c84d382b839b1ad16acf2b Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Mon, 11 May 2026 14:02:05 +0200 Subject: [PATCH 44/61] Update android CI --- .github/workflows/android.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 3f3108dfb..1fd3228ba 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -40,10 +40,9 @@ jobs: NDK_VERSION: 'r27' # '27.2.12479018' NDK_VERSION_FULL: r27c JDK_VERSION: 17 - SDK_PLATFORM: android-35 - ANDROIDAPI: 24 + SDK_PLATFORM: android-36 VCPKG_BINARY_SOURCES: 'clear;nuget,GitHub,readwrite' - SDK_BUILD_TOOLS: 34.0.0 + SDK_BUILD_TOOLS: 36.0.0 CMAKE_VERSION: '4.3.2' QT_ANDROID_KEYSTORE_ALIAS: input QT_ANDROID_KEYSTORE_KEY_PASS: ${{ secrets.INPUTKEYSTORE_STOREPASS }} @@ -126,13 +125,15 @@ jobs: add-to-path: true - name: Set up JDK - uses: actions/setup-java@v3 + uses: actions/setup-java@v5 with: java-version: ${{ env.JDK_VERSION }} distribution: zulu - name: Setup Android SDK - uses: malinskiy/action-android/install-sdk@release/0.1.7 + uses: android-actions/setup-android@v4 + with: + packages: '' - name: Install Android Tools run: | From e964458ab67c3c78cd3a593d48e807982dc4931b Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Mon, 11 May 2026 14:03:16 +0200 Subject: [PATCH 45/61] Update Android setup based on Qt 6.10 --- CMakeLists.txt | 2 +- cmake_templates/build.gradle.in | 27 +++++++++++++-------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b43b4e1e3..f09d86a6f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,7 +29,7 @@ if (ANDROID_ABI) set(ANDROID_ARM_NEON ON) # Target/Minimum API levels for Android, used as MerginMaps target properties - set(MM_ANDROID_TARGET_SDK_VERSION "35") + set(MM_ANDROID_TARGET_SDK_VERSION "36") set(MM_ANDROID_MIN_SDK_VERSION "${ANDROIDAPI}") set(MM_ANDROID_NDK_PATH "$ENV{ANDROID_NDK_HOME}") if (NOT MM_ANDROID_NDK_PATH) diff --git a/cmake_templates/build.gradle.in b/cmake_templates/build.gradle.in index 5a39d2f6b..08dab27b5 100644 --- a/cmake_templates/build.gradle.in +++ b/cmake_templates/build.gradle.in @@ -7,7 +7,8 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:8.6.0' + //noinspection AndroidGradlePluginVersion + classpath 'com.android.tools.build:gradle:8.10.1' } } @@ -18,13 +19,12 @@ repositories { apply plugin: qtGradlePluginType - dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) implementation "androidx.appcompat:appcompat:1.7.1" - implementation "androidx.core:core:1.13.1" - implementation "androidx.core:core-splashscreen:1.0.1" - implementation "androidx.exifinterface:exifinterface:1.4.1" + implementation "androidx.core:core:1.16.0" + implementation "androidx.core:core-splashscreen:1.2.0" + implementation "androidx.exifinterface:exifinterface:1.4.2" implementation "com.google.android.gms:play-services-location:21.3.0" } @@ -36,6 +36,7 @@ android { * - qtAndroidDir - holds the path to qt android files * needed to build any Qt application * on Android. + * - qtGradlePluginType - whether to build an app or a library * * are defined in gradle.properties file. This file is * updated by QtCreator and androiddeployqt tools. @@ -45,12 +46,10 @@ android { namespace 'uk.co.lutraconsulting' compileSdkVersion androidCompileSdkVersion buildToolsVersion androidBuildToolsVersion - ndkVersion androidNdkVersion + ndkVersion = androidNdkVersion // don't get rid of this line as it inflates the final bundle size 5x ndkPath '@MM_ANDROID_NDK_PATH@' - packagingOptions.jniLibs.useLegacyPackaging true - sourceSets { main { manifest.srcFile 'AndroidManifest.xml' @@ -66,27 +65,27 @@ android { tasks.withType(JavaCompile) { options.incremental = true + options.compilerArgs += ['-Xlint:all'] } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 } lintOptions { - abortOnError false + abortOnError = false } - // Do not compress Qt binary resources file aaptOptions { + // Do not compress Qt binary resources file noCompress 'rcc' } defaultConfig { - resConfigs "en" + resConfig "en" minSdkVersion qtMinSdkVersion targetSdkVersion qtTargetSdkVersion ndk.abiFilters = qtTargetAbiList.split(",") - ndk.debugSymbolLevel "SYMBOL_TABLE" } } From d64f4dfdf053b238b60021178f475474f72868a5 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Mon, 11 May 2026 18:12:36 +0200 Subject: [PATCH 46/61] Fix Android build issues --- CMakeLists.txt | 17 ++++++++++++----- app/CMakeLists.txt | 4 ++++ cmake_templates/build.gradle.in | 2 +- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f09d86a6f..ff1964ea0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -182,13 +182,20 @@ find_package( REQUIRED ) -# Qt by default assumes that cmake files live in `lib/cmake`. Point to `share` instead. -# See -# https://github.com/qt/qtbase/blob/39290c508e2c7fa816c6f79b3eb284adc0cad3c0/src/corelib/Qt6AndroidMacros.cmake#L1016C16-L1026 if (ANDROID) - get_filename_component( - QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI} "${Qt6_DIR}/.." ABSOLUTE + # Android requires access to private headers for AndroidUtils + find_package( + Qt6 + COMPONENTS + CorePrivate + REQUIRED ) + + # Qt by default assumes that cmake files live in `lib/cmake`. Point to `share` instead. + # See + # https://github.com/qt/qtbase/blob/7ddbc87d8e14ce51d2957ea72d0a6077593d5ff4/src/corelib/Qt6AndroidMacros.cmake#L1281-L1296 + cmake_path(SET QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI} "${Qt6_DIR}/..") + cmake_path(ABSOLUTE_PATH QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI} NORMALIZE) message( STATUS "QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI}: ${QT_ANDROID_PATH_CMAKE_DIR_${ANDROID_ABI}}" diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 64c8ea0f1..16dddc3b5 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -484,6 +484,10 @@ target_link_libraries( Qt6::Widgets ) +if (ANDROID) + target_link_libraries(MerginMaps PRIVATE Qt6::CorePrivate) +endif () + if (HAVE_BLUETOOTH) target_link_libraries(MerginMaps PUBLIC Qt6::Bluetooth) endif () diff --git a/cmake_templates/build.gradle.in b/cmake_templates/build.gradle.in index 08dab27b5..a97e036c0 100644 --- a/cmake_templates/build.gradle.in +++ b/cmake_templates/build.gradle.in @@ -8,7 +8,7 @@ buildscript { dependencies { //noinspection AndroidGradlePluginVersion - classpath 'com.android.tools.build:gradle:8.10.1' + classpath 'com.android.tools.build:gradle:8.11.1' } } From a5a50f1f4ed05abfa17afbf0e79375a4608e9782 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Mon, 11 May 2026 18:45:55 +0200 Subject: [PATCH 47/61] Format cmake --- CMakeLists.txt | 7 +- vcpkg/ports/pcre2/portfile.cmake | 177 ++++++++++++++++++++----------- 2 files changed, 119 insertions(+), 65 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ff1964ea0..1dd161f6b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -185,10 +185,9 @@ find_package( if (ANDROID) # Android requires access to private headers for AndroidUtils find_package( - Qt6 - COMPONENTS - CorePrivate - REQUIRED + Qt6 + COMPONENTS CorePrivate + REQUIRED ) # Qt by default assumes that cmake files live in `lib/cmake`. Point to `share` instead. diff --git a/vcpkg/ports/pcre2/portfile.cmake b/vcpkg/ports/pcre2/portfile.cmake index 021f12c9d..46d5a9321 100644 --- a/vcpkg/ports/pcre2/portfile.cmake +++ b/vcpkg/ports/pcre2/portfile.cmake @@ -1,90 +1,145 @@ vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO PCRE2Project/pcre2 - REF "pcre2-${VERSION}" - SHA512 4deef8ce95711e65fe07624e6b2aace794594adb15e8363a0279a7b947bf5c75a5858fbdc5251d0a28a7ca97ae8bba561aa5f85805d5c07d417d3e7b3b3486a4 - HEAD_REF master - PATCHES - pcre2-10.35_fix-uwp.patch - no-static-suffix.patch - # TODO: remove with version 10.48, the issue should be fixed - fix-lld-version-script.patch + OUT_SOURCE_PATH + SOURCE_PATH + REPO + PCRE2Project/pcre2 + REF + "pcre2-${VERSION}" + SHA512 + 4deef8ce95711e65fe07624e6b2aace794594adb15e8363a0279a7b947bf5c75a5858fbdc5251d0a28a7ca97ae8bba561aa5f85805d5c07d417d3e7b3b3486a4 + HEAD_REF + master + PATCHES + pcre2-10.35_fix-uwp.patch + no-static-suffix.patch + # TODO: remove with version 10.48, the issue should be fixed + fix-lld-version-script.patch ) vcpkg_from_github( - OUT_SOURCE_PATH SLJIT_SOURCE_PATH - REPO zherczeg/sljit - REF 45f910b78c6605ebf5b53d3ec7cb00f2312fe417 - SHA512 c05c83cc762f430c01e2aaf876aaac41a70b67ed8b91bc81102ad527c8921c5e75b41bab35bb8237dd5f53fecd7b8f31206865efffce2ea0a1aa9c87079fc643 - HEAD_REF main + OUT_SOURCE_PATH + SLJIT_SOURCE_PATH + REPO + zherczeg/sljit + REF + 45f910b78c6605ebf5b53d3ec7cb00f2312fe417 + SHA512 + c05c83cc762f430c01e2aaf876aaac41a70b67ed8b91bc81102ad527c8921c5e75b41bab35bb8237dd5f53fecd7b8f31206865efffce2ea0a1aa9c87079fc643 + HEAD_REF + main ) file(REMOVE_RECURSE "${SOURCE_PATH}/deps/sljit") file(MAKE_DIRECTORY "${SOURCE_PATH}/deps") file(RENAME "${SLJIT_SOURCE_PATH}" "${SOURCE_PATH}/deps/sljit") -string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC) -string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" INSTALL_PDB) -string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" BUILD_STATIC_CRT) +string( + COMPARE EQUAL + "${VCPKG_LIBRARY_LINKAGE}" + "static" + BUILD_STATIC +) +string( + COMPARE EQUAL + "${VCPKG_LIBRARY_LINKAGE}" + "dynamic" + INSTALL_PDB +) +string( + COMPARE EQUAL + "${VCPKG_CRT_LINKAGE}" + "static" + BUILD_STATIC_CRT +) vcpkg_check_features( - OUT_FEATURE_OPTIONS FEATURE_OPTIONS - FEATURES - jit PCRE2_SUPPORT_JIT + OUT_FEATURE_OPTIONS + FEATURE_OPTIONS + FEATURES + jit + PCRE2_SUPPORT_JIT ) vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - OPTIONS - ${FEATURE_OPTIONS} - -DBUILD_STATIC_LIBS=${BUILD_STATIC} - -DPCRE2_STATIC_RUNTIME=${BUILD_STATIC_CRT} - -DPCRE2_BUILD_PCRE2_8=ON - -DPCRE2_BUILD_PCRE2_16=ON - -DPCRE2_BUILD_PCRE2_32=ON - -DPCRE2_SUPPORT_UNICODE=ON - -DPCRE2_BUILD_TESTS=OFF - -DPCRE2_BUILD_PCRE2GREP=OFF - -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=ON - -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=ON - -DCMAKE_DISABLE_FIND_PACKAGE_Readline=ON - -DCMAKE_DISABLE_FIND_PACKAGE_Editline=ON - -DINSTALL_MSVC_PDB=${INSTALL_PDB} - ) + SOURCE_PATH + "${SOURCE_PATH}" + OPTIONS + ${FEATURE_OPTIONS} + -DBUILD_STATIC_LIBS=${BUILD_STATIC} + -DPCRE2_STATIC_RUNTIME=${BUILD_STATIC_CRT} + -DPCRE2_BUILD_PCRE2_8=ON + -DPCRE2_BUILD_PCRE2_16=ON + -DPCRE2_BUILD_PCRE2_32=ON + -DPCRE2_SUPPORT_UNICODE=ON + -DPCRE2_BUILD_TESTS=OFF + -DPCRE2_BUILD_PCRE2GREP=OFF + -DCMAKE_DISABLE_FIND_PACKAGE_BZip2=ON + -DCMAKE_DISABLE_FIND_PACKAGE_ZLIB=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Readline=ON + -DCMAKE_DISABLE_FIND_PACKAGE_Editline=ON + -DINSTALL_MSVC_PDB=${INSTALL_PDB} +) vcpkg_cmake_install() vcpkg_copy_pdbs() file(READ "${CURRENT_PACKAGES_DIR}/include/pcre2.h" PCRE2_H) -if(BUILD_STATIC) - string(REPLACE "defined(PCRE2_STATIC)" "1" PCRE2_H "${PCRE2_H}") -else() - string(REPLACE "defined(PCRE2_STATIC)" "0" PCRE2_H "${PCRE2_H}") -endif() +if (BUILD_STATIC) + string( + REPLACE "defined(PCRE2_STATIC)" + "1" + PCRE2_H + "${PCRE2_H}" + ) +else () + string( + REPLACE "defined(PCRE2_STATIC)" + "0" + PCRE2_H + "${PCRE2_H}" + ) +endif () file(WRITE "${CURRENT_PACKAGES_DIR}/include/pcre2.h" "${PCRE2_H}") vcpkg_fixup_pkgconfig() vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/${PORT}) -file(REMOVE_RECURSE - "${CURRENT_PACKAGES_DIR}/man" - "${CURRENT_PACKAGES_DIR}/share/doc" - "${CURRENT_PACKAGES_DIR}/debug/include" - "${CURRENT_PACKAGES_DIR}/debug/man" - "${CURRENT_PACKAGES_DIR}/debug/share") +file( + REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/man" + "${CURRENT_PACKAGES_DIR}/share/doc" + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/man" + "${CURRENT_PACKAGES_DIR}/debug/share" +) file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/pcre2") -file(RENAME "${CURRENT_PACKAGES_DIR}/bin/pcre2-config" "${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config") -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config" "${CURRENT_PACKAGES_DIR}" [[$(cd "$(dirname "$0")/../.."; pwd -P)]]) -if(NOT VCPKG_BUILD_TYPE) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug") - file(RENAME "${CURRENT_PACKAGES_DIR}/debug/bin/pcre2-config" "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config") - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" "${CURRENT_PACKAGES_DIR}/debug" [[$(cd "$(dirname "$0")/../../../debug"; pwd -P)]]) - vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" [[${prefix}/include]] [[${prefix}/../include]]) -endif() -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin" "${CURRENT_PACKAGES_DIR}/bin") -endif() +file(RENAME "${CURRENT_PACKAGES_DIR}/bin/pcre2-config" + "${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config" +) +vcpkg_replace_string( + "${CURRENT_PACKAGES_DIR}/tools/pcre2/pcre2-config" "${CURRENT_PACKAGES_DIR}" + [[$(cd "$(dirname "$0")/../.."; pwd -P)]] +) +if (NOT VCPKG_BUILD_TYPE) + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug") + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/bin/pcre2-config" + "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" + ) + vcpkg_replace_string( + "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" + "${CURRENT_PACKAGES_DIR}/debug" [[$(cd "$(dirname "$0")/../../../debug"; pwd -P)]] + ) + vcpkg_replace_string( + "${CURRENT_PACKAGES_DIR}/tools/pcre2/debug/pcre2-config" [[${prefix}/include]] + [[${prefix}/../include]] + ) +endif () +if (VCPKG_LIBRARY_LINKAGE STREQUAL "static") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/bin" "${CURRENT_PACKAGES_DIR}/bin") +endif () -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" +) vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") From c986fd9b0fbaa9f1df96ec206c53c1359aebb743 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 12 May 2026 14:15:49 +0200 Subject: [PATCH 48/61] Fix Android ARMv7 build --- vcpkg/triplets/arm-android.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/vcpkg/triplets/arm-android.cmake b/vcpkg/triplets/arm-android.cmake index 67e1f11d5..6ec3ed7c1 100644 --- a/vcpkg/triplets/arm-android.cmake +++ b/vcpkg/triplets/arm-android.cmake @@ -19,6 +19,7 @@ set(VCPKG_CMAKE_CONFIGURE_OPTIONS -DANDROID_ABI=armeabi-v7a -DANDROID_ARM_NEON=O set(ANDROIDAPI "28") # when changed change CMakeLists.txt set(ANDROID_PLATFORM "android-${ANDROIDAPI}") set(ANDROID_NDK_PLATFORM "android-${ANDROIDAPI}") +set(VCPKG_CMAKE_SYSTEM_VERSION "${ANDROIDAPI}") set(ANDROID_STL "c++_shared") if (NOT DEFINED ENV{ANDROID_SDK_ROOT}) From d339f5fdad18bc999b99be266c202dd09f55d103 Mon Sep 17 00:00:00 2001 From: Gabriel Bolbotina <80618569+gabriel-bolbotina@users.noreply.github.com> Date: Tue, 12 May 2026 15:44:24 +0300 Subject: [PATCH 49/61] WIP fixed safe area rendering on iOS and cmake configuration for android (#4472) --- app/androidutils.cpp | 34 ----------------- app/androidutils.h | 2 - app/ios/iosutils.cpp | 8 ---- app/ios/iosutils.h | 4 -- app/ios/iosutils.mm | 20 ---------- app/main.cpp | 56 ++++++++-------------------- app/qml/components/MMPage.qml | 7 ++++ app/qml/form/MMFormController.qml | 7 ++++ app/qml/form/MMFormPage.qml | 8 ++++ app/qml/layers/MMLayerDetailPage.qml | 6 +++ app/qml/main.qml | 36 ++++-------------- 11 files changed, 51 insertions(+), 137 deletions(-) diff --git a/app/androidutils.cpp b/app/androidutils.cpp index 03a3e85c1..c6fe3c9e6 100644 --- a/app/androidutils.cpp +++ b/app/androidutils.cpp @@ -186,40 +186,6 @@ QString AndroidUtils::getDeviceModel() return deviceModel; } -QVector AndroidUtils::getSafeArea() -{ - QVector ret; - -#ifdef ANDROID - const auto activity = QJniObject( QNativeInterface::QAndroidApplication::context() ); - const auto safeArrayStringObj = activity.callMethod( "getSafeArea", "()Ljava/lang/String;" ); - - if ( safeArrayStringObj.isValid() ) - { - const QString safeArrayString = safeArrayStringObj.toString(); - - QStringList stringParts = safeArrayString.split( "," ); - if ( stringParts.length() != 4 ) - { - CoreUtils::log( "SafeArea", "Android returned malformed string from getSafeArea method" ); - return ret; - } - - const int top = stringParts[0].toInt(); // top inset - const int right = stringParts[1].toInt(); // right inset - const int bottom = stringParts[2].toInt(); // bottom inset - const int left = stringParts[3].toInt(); // left inset - - ret << top << right << bottom << left; - return ret; - } - - CoreUtils::log( "SafeArea", "Android returned null from getSafeArea method" ); - return ret; -#endif - return ret; -} - void AndroidUtils::hideSplashScreen() { #ifdef ANDROID diff --git a/app/androidutils.h b/app/androidutils.h index f5f3752bf..b98e7a44f 100644 --- a/app/androidutils.h +++ b/app/androidutils.h @@ -58,8 +58,6 @@ class AndroidUtils: public QObject static QString getManufacturer(); static QString getDeviceModel(); - Q_INVOKABLE QVector getSafeArea(); - static void hideSplashScreen(); /** diff --git a/app/ios/iosutils.cpp b/app/ios/iosutils.cpp index e261ac7c6..c2612978c 100644 --- a/app/ios/iosutils.cpp +++ b/app/ios/iosutils.cpp @@ -59,14 +59,6 @@ QString IosUtils::readExif( const QString &filepath, const QString &tag ) #endif } -QVector IosUtils::getSafeArea() -{ -#ifdef Q_OS_IOS - return getSafeAreaImpl(); -#endif - return QVector(); -} - QString IosUtils::getManufacturer() { #ifdef Q_OS_IOS diff --git a/app/ios/iosutils.h b/app/ios/iosutils.h index 9bcb0b474..1a6e06aa9 100644 --- a/app/ios/iosutils.h +++ b/app/ios/iosutils.h @@ -40,8 +40,6 @@ class IosUtils: public QObject IOSImagePicker *imagePicker() const; static QString readExif( const QString &filepath, const QString &tag ); - Q_INVOKABLE QVector getSafeArea(); - Q_INVOKABLE static bool openFile( const QString &filePath ); static Q_INVOKABLE QString getManufacturer(); @@ -68,8 +66,6 @@ class IosUtils: public QObject */ void setIdleTimerDisabled(); - QVector getSafeAreaImpl(); - static QString getManufacturerImpl(); static QString getDeviceModelImpl(); static bool openFileImpl( const QString &filePath ); diff --git a/app/ios/iosutils.mm b/app/ios/iosutils.mm index 23e4b0856..163b5ffc5 100644 --- a/app/ios/iosutils.mm +++ b/app/ios/iosutils.mm @@ -26,26 +26,6 @@ [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; } -QVector IosUtils::getSafeAreaImpl() -{ - QVector ret; - - if ( @available( iOS 11.0, * ) ) - { - UIWindow *window = UIApplication.sharedApplication.windows.firstObject; - - int top = window.safeAreaInsets.top; - int right = window.safeAreaInsets.right; - int bottom = window.safeAreaInsets.bottom; - int left = window.safeAreaInsets.left; - - ret << top << right << bottom << left; - return ret; - } - - return ret; -} - QString IosUtils::getManufacturerImpl() { return "APPLE INC."; diff --git a/app/main.cpp b/app/main.cpp index e91cb18ec..164adaaf6 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -812,46 +812,6 @@ int main( int argc, char *argv[] ) engine.rootContext()->setContextProperty( "__version", version ); - // Set safe areas for mobile devices -#ifdef ANDROID - auto safeAreaInsets = androidUtils.getSafeArea(); - - if ( safeAreaInsets.length() == 4 ) - { - // Values from Android API must be scaled with dpr - qreal dpr = QGuiApplication::primaryScreen()->devicePixelRatio(); - style->setSafeAreaTop( safeAreaInsets[0] / dpr ); - style->setSafeAreaRight( safeAreaInsets[1] / dpr ); - style->setSafeAreaBottom( safeAreaInsets[2] / dpr ); - style->setSafeAreaLeft( safeAreaInsets[3] / dpr ); - } -#elif defined( Q_OS_IOS ) - - // - // After migration to Qt 6.8.3, we can no longer reliably read the safe area on app startup (on iOS). - // It appears the UIWindow is not fully initialized, returning zero safe area insets. - // However, the window is correctly initialized once the event loop begins processing events. - // Therefore, we delay the safe area retrieval until after the event loop starts. - // This is a temporary workaround and might be replaced in the future by - // the more robust approach described in https://www.qt.io/blog/expanded-client-areas-and-safe-areas-in-qt-6.9. - // - - const int SAFE_AREA_REFRESH_DELAY_MS = 10; - - QTimer::singleShot( SAFE_AREA_REFRESH_DELAY_MS, &lambdaContext, [&iosUtils, &style]() - { - auto safeAreaInsets = iosUtils.getSafeArea(); - - if ( safeAreaInsets.length() == 4 ) - { - style->setSafeAreaTop( safeAreaInsets[0] ); - style->setSafeAreaRight( safeAreaInsets[1] ); - style->setSafeAreaBottom( safeAreaInsets[2] ); - style->setSafeAreaLeft( safeAreaInsets[3] ); - } - } ); - -#endif // Set simulated position for desktop builds #ifdef DESKTOP_OS @@ -914,6 +874,22 @@ int main( int argc, char *argv[] ) if ( QQuickWindow *quickWindow = qobject_cast( object ) ) { quickWindow->setIcon( QIcon( logoUrl ) ); + +#if defined( ANDROID ) || defined( Q_OS_IOS ) + // Qt 6.9+ provides QWindow::safeAreaMargins() natively for both Android and iOS. + + auto applyMargins = [style, quickWindow]() + { + const QMargins m = quickWindow->safeAreaMargins(); + style->setSafeAreaTop( m.top() ); + style->setSafeAreaRight( m.right() ); + style->setSafeAreaBottom( m.bottom() ); + style->setSafeAreaLeft( m.left() ); + }; + + QObject::connect( quickWindow, &QWindow::safeAreaMarginsChanged, &lambdaContext, applyMargins ); + QTimer::singleShot( 10, &lambdaContext, applyMargins ); +#endif } #ifdef DESKTOP_OS diff --git a/app/qml/components/MMPage.qml b/app/qml/components/MMPage.qml index 4328e88da..d2da1cbc8 100644 --- a/app/qml/components/MMPage.qml +++ b/app/qml/components/MMPage.qml @@ -27,6 +27,13 @@ Page { enum BottomMarginPolicy { UseMargin, PaintBehindSystemBar } + // Qt 6.9+ Page automatically adds safe area margins as padding. + // MMPageHeader and page content already handle safe areas manually. + topPadding: 0 + bottomPadding: 0 + leftPadding: 0 + rightPadding: 0 + implicitHeight: ApplicationWindow.window?.height ?? 0 implicitWidth: ApplicationWindow.window?.width ?? 0 diff --git a/app/qml/form/MMFormController.qml b/app/qml/form/MMFormController.qml index c0abccd6d..6b098ac52 100644 --- a/app/qml/form/MMFormController.qml +++ b/app/qml/form/MMFormController.qml @@ -59,6 +59,13 @@ Item { Drawer { id: drawer + // Qt 6.9+ Popup/Drawer automatically applies safe area margins as padding. + // MMFormPage and MMPreviewDrawer already handle safe areas manually. + topPadding: 0 + bottomPadding: 0 + leftPadding: 0 + rightPadding: 0 + StateGroup { id: statesManager diff --git a/app/qml/form/MMFormPage.qml b/app/qml/form/MMFormPage.qml index fe13097ba..8a1cf0037 100644 --- a/app/qml/form/MMFormPage.qml +++ b/app/qml/form/MMFormPage.qml @@ -24,6 +24,14 @@ import "../dialogs" Page { id: root + // Qt 6.9+ Page automatically adds safe area margins as padding. + // MMPageHeader and MMToolbar already handle safe areas manually, so + // we set them to zero to avoid double-applying the insets. + topPadding: 0 + bottomPadding: 0 + leftPadding: 0 + rightPadding: 0 + /** * When feature in the form is saved. */ diff --git a/app/qml/layers/MMLayerDetailPage.qml b/app/qml/layers/MMLayerDetailPage.qml index cc9ff8380..9f29d5dc8 100644 --- a/app/qml/layers/MMLayerDetailPage.qml +++ b/app/qml/layers/MMLayerDetailPage.qml @@ -20,6 +20,12 @@ import "../inputs" Page { id: root + // Qt 6.9+ auto-applies safe area padding; child MMPage instances handle it manually. + topPadding: 0 + bottomPadding: 0 + leftPadding: 0 + rightPadding: 0 + signal close() signal featureClicked( var featurePair ) signal addFeatureClicked( var targetLayer ) diff --git a/app/qml/main.qml b/app/qml/main.qml index 8c77c4610..cfeedeb51 100644 --- a/app/qml/main.qml +++ b/app/qml/main.qml @@ -52,10 +52,13 @@ ApplicationWindow { title: "Mergin Maps" // Do not translate - readonly property bool isPortraitOrientation: ( Screen.primaryOrientation === Qt.PortraitOrientation - || Screen.primaryOrientation === Qt.InvertedPortraitOrientation ) - - onIsPortraitOrientationChanged: recalculateSafeArea() + // Qt 6.9+ ApplicationWindow automatically adds safe area margins as padding to its + // contentItem. Since this app manages safe areas manually via __style, + // we override the automatic padding to avoid double-applying the insets. + topPadding: 0 + bottomPadding: 0 + leftPadding: 0 + rightPadding: 0 // start window where it was closed last time onXChanged: storeWindowPosition() @@ -1231,31 +1234,6 @@ ApplicationWindow { } } - function recalculateSafeArea() { - let safeArea = [] - - // Should be merged in future with the same code in main.cpp - if ( Qt.platform.os === "ios" ) { - safeArea = Array.from( __iosUtils.getSafeArea() ) - } - else if ( Qt.platform.os === "android" ) { - safeArea = Array.from( __androidUtils.getSafeArea() ) - - // Values from Android API must be divided by dpr - safeArea[0] = safeArea[0] / Screen.devicePixelRatio - safeArea[1] = safeArea[1] / Screen.devicePixelRatio - safeArea[2] = safeArea[2] / Screen.devicePixelRatio - safeArea[3] = safeArea[3] / Screen.devicePixelRatio - } - - if ( safeArea.length === 4 ) { - __style.safeAreaTop = safeArea[0] - __style.safeAreaRight = safeArea[1] - __style.safeAreaBottom = safeArea[2] - __style.safeAreaLeft = safeArea[3] - } - } - function storeWindowPosition() { if ( Qt.platform.os !== "ios" && Qt.platform.os !== "android") { From 492d9eb10478beb122ce45891f56c807731fea2e Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 12 May 2026 16:25:19 +0200 Subject: [PATCH 50/61] Add libpq port for iOS --- vcpkg/ports/README.md | 1 + vcpkg/ports/libpq/ios-detection.patch | 14 + vcpkg/ports/libpq/libintl.diff | 17 ++ vcpkg/ports/libpq/libpq-and-client-tools.diff | 127 +++++++++ vcpkg/ports/libpq/library-linkage.diff | 241 ++++++++++++++++++ vcpkg/ports/libpq/portfile.cmake | 111 ++++++++ vcpkg/ports/libpq/usage | 4 + vcpkg/ports/libpq/vcpkg-cmake-wrapper.cmake | 69 +++++ vcpkg/ports/libpq/vcpkg.json | 114 +++++++++ vcpkg/ports/libpq/windows/getopt.patch | 14 + vcpkg/ports/libpq/windows/macro-def.patch | 18 ++ vcpkg/ports/libpq/windows/spin_delay.patch | 24 ++ vcpkg/ports/libpq/zic.diff | 22 ++ 13 files changed, 776 insertions(+) create mode 100644 vcpkg/ports/libpq/ios-detection.patch create mode 100644 vcpkg/ports/libpq/libintl.diff create mode 100644 vcpkg/ports/libpq/libpq-and-client-tools.diff create mode 100644 vcpkg/ports/libpq/library-linkage.diff create mode 100644 vcpkg/ports/libpq/portfile.cmake create mode 100644 vcpkg/ports/libpq/usage create mode 100644 vcpkg/ports/libpq/vcpkg-cmake-wrapper.cmake create mode 100644 vcpkg/ports/libpq/vcpkg.json create mode 100644 vcpkg/ports/libpq/windows/getopt.patch create mode 100644 vcpkg/ports/libpq/windows/macro-def.patch create mode 100644 vcpkg/ports/libpq/windows/spin_delay.patch create mode 100644 vcpkg/ports/libpq/zic.diff diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 22238ecd5..eeb707fa8 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,6 +1,7 @@ - Geodiff - no official port in vcpkg - pcre2 - patch missing `_init`/`_fini` symbols causing lld linker errors on Android - libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) +- libpq - ios fix for OS detection, we change the detected OS to darwin - qca - we needed 2.3.10, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtdeclarative - optimization to decrease package size diff --git a/vcpkg/ports/libpq/ios-detection.patch b/vcpkg/ports/libpq/ios-detection.patch new file mode 100644 index 000000000..71e5d5dcb --- /dev/null +++ b/vcpkg/ports/libpq/ios-detection.patch @@ -0,0 +1,14 @@ +diff --git a/meson.build b/meson.build +index 34456b36bbf..ed64e289512 100644 +--- a/meson.build ++++ b/meson.build +@@ -189,6 +189,9 @@ elif host_system == 'android' + # while android isn't quite a normal linux, it seems close enough + # for our purposes so far + host_system = 'linux' ++elif host_system == 'ios' ++ # map iOS as darwin ++ host_system = 'darwin' + endif + + # meson's system names don't quite map to our "traditional" names. In some diff --git a/vcpkg/ports/libpq/libintl.diff b/vcpkg/ports/libpq/libintl.diff new file mode 100644 index 000000000..a5d116731 --- /dev/null +++ b/vcpkg/ports/libpq/libintl.diff @@ -0,0 +1,17 @@ +diff --git a/meson.build b/meson.build +index dd7ca47..8e0964a 100644 +--- a/meson.build ++++ b/meson.build +@@ -3023,6 +3023,12 @@ if not nlsopt.disabled() + endif + + if libintl.found() ++ if build_system == 'windows' ++ iconv_dep = cc.find_library('iconv', required: false, dirs: test_lib_d) ++ if iconv_dep.found() ++ libintl = declare_dependency(dependencies: [libintl, iconv_dep]) ++ endif ++ endif + i18n = import('i18n') + cdata.set('ENABLE_NLS', 1) + endif diff --git a/vcpkg/ports/libpq/libpq-and-client-tools.diff b/vcpkg/ports/libpq/libpq-and-client-tools.diff new file mode 100644 index 000000000..2f0cddb90 --- /dev/null +++ b/vcpkg/ports/libpq/libpq-and-client-tools.diff @@ -0,0 +1,127 @@ +diff --git a/config/meson.build b/config/meson.build +index ab19c38..b6203b5 100644 +--- a/config/meson.build ++++ b/config/meson.build +@@ -1,3 +1,4 @@ ++subdir_done() + install_data( + 'install-sh', 'missing', + install_dir: dir_pgxs / 'config' +diff --git a/meson.build b/meson.build +index 4016033..dd7ca47 100644 +--- a/meson.build ++++ b/meson.build +@@ -3381,6 +3381,10 @@ test_install_libs = [] + + subdir('src') + ++contrib_data_dir = dir_data_extension ++ ++if false # skip for vcpkg port ++ + subdir('contrib') + + subdir('src/test') +@@ -3924,6 +3928,7 @@ if not meson.is_subproject() + endif + endif + ++endif # skip for vcpkg port libpq + + + ############################################################### +diff --git a/meson_options.txt b/meson_options.txt +index 06bf562..5505bfd 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,3 +1,6 @@ ++option('tools', type: 'feature', value: 'disabled', ++ description: 'Enable tool executables') ++ + # Copyright (c) 2022-2025, PostgreSQL Global Development Group + + # Data layout influencing options +diff --git a/src/backend/meson.build b/src/backend/meson.build +index 2b0db21..75d8f68 100644 +--- a/src/backend/meson.build ++++ b/src/backend/meson.build +@@ -40,6 +40,8 @@ subdir('po', if_found: libintl) + backend_link_args = [] + backend_link_depends = [] + ++subdir_done() ++if false # skip for vcpkg port + + # On windows when compiling with msvc we need to make postgres export all its + # symbols so that extension libraries can use them. For that we need to scan +@@ -140,6 +142,8 @@ postgres = executable('postgres', + + backend_targets += postgres + ++endif # skip for vcpkg port ++ + pg_mod_c_args = cflags_mod + pg_mod_cpp_args = cxxflags_mod + pg_mod_link_args = ldflags_sl + ldflags_mod +@@ -187,6 +191,7 @@ pg_test_mod_args = pg_mod_args + { + } + + ++subdir_done() + + # Shared modules that, on some system, link against the server binary. Only + # enter these after we defined the server build. +diff --git a/src/bin/meson.build b/src/bin/meson.build +index b33cb6c..b08941f 100644 +--- a/src/bin/meson.build ++++ b/src/bin/meson.build +@@ -1,24 +1,13 @@ + # Copyright (c) 2022-2025, PostgreSQL Global Development Group + +-subdir('initdb') ++# vcpkg: Reduced to documented "Client applications" (and scripts) ++# Cf. https://www.postgresql.org/docs/current/reference-client.html + subdir('pg_amcheck') +-subdir('pg_archivecleanup') + subdir('pg_basebackup') +-subdir('pg_checksums') + subdir('pg_combinebackup') + subdir('pg_config') +-subdir('pg_controldata') +-subdir('pg_ctl') + subdir('pg_dump') +-subdir('pg_resetwal') +-subdir('pg_rewind') +-subdir('pg_test_fsync') +-subdir('pg_test_timing') +-subdir('pg_upgrade') + subdir('pg_verifybackup') +-subdir('pg_waldump') +-subdir('pg_walsummary') + subdir('pgbench') +-subdir('pgevent') + subdir('psql') + subdir('scripts') +diff --git a/src/meson.build b/src/meson.build +index f098f9f..28eb09c 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -3,12 +3,18 @@ + # libraries that other subsystems might depend upon first, in their respective + # dependency order + ++subdir('interfaces') ++if not get_option('tools').disabled() ++ + subdir('timezone') + + subdir('backend') + + subdir('bin') + ++endif ++subdir_done() ++ + subdir('pl') + + subdir('interfaces') diff --git a/vcpkg/ports/libpq/library-linkage.diff b/vcpkg/ports/libpq/library-linkage.diff new file mode 100644 index 000000000..6c3c260d3 --- /dev/null +++ b/vcpkg/ports/libpq/library-linkage.diff @@ -0,0 +1,241 @@ +diff --git a/meson.build b/meson.build +index 6e1c867..4016033 100644 +--- a/meson.build ++++ b/meson.build +@@ -3293,6 +3293,12 @@ frontend_shlib_code = declare_dependency( + dependencies: [shlib_code, os_deps, libintl], + ) + ++if get_option('default_library') == 'shared' ++ frontend_lib_code = frontend_shlib_code ++else ++ frontend_lib_code = frontend_stlib_code ++endif ++ + # For frontend code that doesn't use fe_utils - this mainly exists for libpq's + # tests, which are defined before fe_utils is defined, as fe_utils depends on + # libpq. +@@ -3326,7 +3332,7 @@ subdir('src/interfaces/libpq-oauth') + # for frontend binaries + frontend_code = declare_dependency( + include_directories: [postgres_inc], +- link_with: [fe_utils, common_static, pgport_static], ++ link_with: [fe_utils, common_default, pgport_default], + sources: generated_headers, + dependencies: [os_deps, libintl], + ) +diff --git a/src/bin/initdb/meson.build b/src/bin/initdb/meson.build +index 06958e3..a25abd1 100644 +--- a/src/bin/initdb/meson.build ++++ b/src/bin/initdb/meson.build +@@ -20,7 +20,7 @@ initdb = executable('initdb', + # from libpq, else we have risks of version skew if we run with a libpq + # shared library from a different PG version. Define + # USE_PRIVATE_ENCODING_FUNCS to ensure that that happens. +- c_args: ['-DUSE_PRIVATE_ENCODING_FUNCS'], ++ # But vcpkg cannot build the libs with this definition. + dependencies: [frontend_code, libpq, icu, icu_i18n], + kwargs: default_bin_args, + ) +diff --git a/src/bin/pg_combinebackup/meson.build b/src/bin/pg_combinebackup/meson.build +index bbc4c57..9ea8597 100644 +--- a/src/bin/pg_combinebackup/meson.build ++++ b/src/bin/pg_combinebackup/meson.build +@@ -17,7 +17,7 @@ endif + + pg_combinebackup = executable('pg_combinebackup', + pg_combinebackup_sources, +- dependencies: [frontend_code], ++ dependencies: [frontend_code, libpq], + kwargs: default_bin_args, + ) + bin_targets += pg_combinebackup +diff --git a/src/common/meson.build b/src/common/meson.build +index 1540ba6..e29d594 100644 +--- a/src/common/meson.build ++++ b/src/common/meson.build +@@ -114,6 +114,8 @@ common_sources_frontend_shlib += files( + ) + + common_sources_excluded_shlib = files( ++) ++common_sources_frontend_shlib += files( + 'fe_memutils.c', + 'logging.c', + ) +@@ -144,7 +146,7 @@ pgcommon_variants = { + 'dependencies': [frontend_common_code], + # Files in libpgcommon.a should use/export the "xxx_private" versions + # of pg_char_to_encoding() and friends. +- 'c_args': ['-DUSE_PRIVATE_ENCODING_FUNCS'], ++ # But vcpkg's static library linkage must not add the private suffix + }, + '_shlib': default_lib_args + { + 'pic': true, +@@ -159,6 +161,19 @@ pgcommon_variants = { + + foreach name, opts : pgcommon_variants + ++ if name == '_srv' ++ pgcommon += {name: disabler()} ++ continue ++ endif ++ if name == '' and get_option('default_library') == 'shared' ++ pgcommon += {name: disabler()} ++ continue ++ endif ++ if name == '_shlib' and get_option('default_library') == 'static' ++ pgcommon += {name: disabler()} ++ continue ++ endif ++ + # Build internal static libraries for sets of files that need to be built + # with different cflags + cflag_libs = [] +@@ -195,6 +210,7 @@ foreach name, opts : pgcommon_variants + } + ) + pgcommon += {name: lib} ++ common_default = lib + endforeach + + common_srv = pgcommon['_srv'] +diff --git a/src/interfaces/ecpg/compatlib/meson.build b/src/interfaces/ecpg/compatlib/meson.build +index 56e0a21..e3c8675 100644 +--- a/src/interfaces/ecpg/compatlib/meson.build ++++ b/src/interfaces/ecpg/compatlib/meson.build +@@ -41,11 +41,17 @@ ecpg_compat_so = shared_library('libecpg_compat', + ) + ecpg_targets += ecpg_compat_so + ++if get_option('default_library') == 'shared' ++ ecpg_compat_libraries = ecpg_compat_so ++else ++ ecpg_compat_libraries = ecpg_compat_st ++endif ++ + pkgconfig.generate( + name: 'libecpg_compat', + description: 'PostgreSQL libecpg_compat library', + url: pg_url, +- libraries: ecpg_compat_so, +- libraries_private: [frontend_stlib_code, thread_dep], ++ libraries: ecpg_compat_libraries, ++ libraries_private: [frontend_lib_code, thread_dep], + requires_private: ['libecpg', 'libpgtypes'], + ) +diff --git a/src/interfaces/ecpg/ecpglib/meson.build b/src/interfaces/ecpg/ecpglib/meson.build +index 8f478c6..fbae057 100644 +--- a/src/interfaces/ecpg/ecpglib/meson.build ++++ b/src/interfaces/ecpg/ecpglib/meson.build +@@ -52,12 +52,18 @@ ecpglib_so = shared_library('libecpg', + ) + ecpg_targets += ecpglib_so + ++if get_option('default_library') == 'shared' ++ ecpglib_libraries = ecpglib_so ++else ++ ecpglib_libraries = ecpglib_st ++endif ++ + pkgconfig.generate( + name: 'libecpg', + description: 'PostgreSQL libecpg library', + url: pg_url, +- libraries: ecpglib_so, +- libraries_private: [frontend_stlib_code, thread_dep], ++ libraries: ecpglib_libraries, ++ libraries_private: [frontend_lib_code, thread_dep], + requires_private: ['libpgtypes', 'libpq'], + ) + +diff --git a/src/interfaces/ecpg/pgtypeslib/meson.build b/src/interfaces/ecpg/pgtypeslib/meson.build +index 02301ec..e695b98 100644 +--- a/src/interfaces/ecpg/pgtypeslib/meson.build ++++ b/src/interfaces/ecpg/pgtypeslib/meson.build +@@ -46,10 +46,16 @@ ecpg_pgtypes_so = shared_library('libpgtypes', + ) + ecpg_targets += ecpg_pgtypes_so + ++if get_option('default_library') == 'shared' ++ ecpg_pgtypes_libraries = ecpg_pgtypes_so ++else ++ ecpg_pgtypes_libraries = ecpg_pgtypes_st ++endif ++ + pkgconfig.generate( + name: 'libpgtypes', + description: 'PostgreSQL libpgtypes library', + url: pg_url, +- libraries: ecpg_pgtypes_so, +- libraries_private: [frontend_stlib_code], ++ libraries: ecpg_pgtypes_libraries, ++ libraries_private: [frontend_lib_code], + ) +diff --git a/src/interfaces/libpq/meson.build b/src/interfaces/libpq/meson.build +index a74e885..7354286 100644 +--- a/src/interfaces/libpq/meson.build ++++ b/src/interfaces/libpq/meson.build +@@ -60,7 +60,7 @@ libpq_so_c_args = ['-DUSE_DYNAMIC_OAUTH'] + libpq_st = static_library('libpq', + libpq_sources, + include_directories: [libpq_inc], +- c_args: libpq_c_args, ++ c_args: libpq_c_args + ['-DFRONTEND'], + c_pch: pch_postgres_fe_h, + dependencies: [frontend_stlib_code, libpq_deps], + kwargs: default_lib_args, +@@ -80,13 +80,19 @@ libpq_so = shared_library('libpq', + kwargs: default_lib_args, + ) + ++if get_option('default_library') == 'shared' ++ libpq_link_with = [libpq_so] ++else ++ libpq_link_with = [libpq_st] ++endif ++ + libpq = declare_dependency( +- link_with: [libpq_so], ++ link_with: libpq_link_with, + include_directories: [include_directories('.')] + ) + + private_deps = [ +- frontend_stlib_code, ++ frontend_lib_code, + libpq_deps, + ] + +diff --git a/src/port/meson.build b/src/port/meson.build +index fc7b059..3b8cf40 100644 +--- a/src/port/meson.build ++++ b/src/port/meson.build +@@ -167,6 +167,19 @@ pgport_variants = { + + foreach name, opts : pgport_variants + ++ if name == '_srv' ++ pgport += {name: disabler()} ++ continue ++ endif ++ if name == '' and get_option('default_library') == 'shared' ++ pgport += {name: disabler()} ++ continue ++ endif ++ if name == '_shlib' and get_option('default_library') == 'static' ++ pgport += {name: disabler()} ++ continue ++ endif ++ + # Build internal static libraries for sets of files that need to be built + # with different cflags + cflag_libs = [] +@@ -196,6 +209,7 @@ foreach name, opts : pgport_variants + } + ) + pgport += {name: lib} ++ pgport_default = lib + endforeach + + pgport_srv = pgport['_srv'] diff --git a/vcpkg/ports/libpq/portfile.cmake b/vcpkg/ports/libpq/portfile.cmake new file mode 100644 index 000000000..338a829e4 --- /dev/null +++ b/vcpkg/ports/libpq/portfile.cmake @@ -0,0 +1,111 @@ +vcpkg_download_distfile(ARCHIVE + URLS "https://ftp.postgresql.org/pub/source/v${VERSION}/postgresql-${VERSION}.tar.bz2" + "https://www.mirrorservice.org/sites/ftp.postgresql.org/source/v${VERSION}/postgresql-${VERSION}.tar.bz2" + FILENAME "postgresql-${VERSION}.tar.bz2" + SHA512 fdbe6d726f46738cf14acab96e5c05f7d65aefe78563281b416bb14a27c7c42e4df921e26b32816a5030ddbe506b95767e2c74a35afc589916504df38d1cb11c +) + +vcpkg_extract_source_archive( + SOURCE_PATH + ARCHIVE "${ARCHIVE}" + PATCHES + library-linkage.diff + libpq-and-client-tools.diff + libintl.diff + zic.diff + windows/macro-def.patch + windows/spin_delay.patch + windows/getopt.patch + ios-detection.patch +) + +file(GLOB _py3_include_path "${CURRENT_HOST_INSTALLED_DIR}/include/python3*") +string(REGEX MATCH "python3\\.([0-9]+)" _python_version_tmp "${_py3_include_path}") +set(PYTHON_VERSION_MINOR "${CMAKE_MATCH_1}") + +vcpkg_cmake_get_vars(cmake_vars_file) +include("${cmake_vars_file}") + +vcpkg_find_acquire_program(BISON) +vcpkg_find_acquire_program(FLEX) +vcpkg_find_acquire_program(PERL) + +vcpkg_list(SET MESON_OPTIONS_RELEASE) +vcpkg_list(SET MESON_OPTIONS) +foreach(option IN ITEMS icu lz4 zlib zstd) + if(option IN_LIST FEATURES) + list(APPEND MESON_OPTIONS -D${option}=enabled) + endif() +endforeach() + +if("openssl" IN_LIST FEATURES) + list(APPEND MESON_OPTIONS -Dssl=openssl) +else() + list(APPEND MESON_OPTIONS -Dssl=none) +endif() + +if("nls" IN_LIST FEATURES) + list(APPEND MESON_OPTIONS -Dnls=enabled) +endif() + +if("client" IN_LIST FEATURES) + list(APPEND MESON_OPTIONS_RELEASE -Dtools=enabled) + if(VCPKG_CROSSCOMPILING) + list(APPEND MESON_OPTIONS "-DZIC=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/zic${VCPKG_HOST_EXECUTABLE_SUFFIX}") + endif() +endif() + +vcpkg_configure_meson( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -Dauto_features=disabled + ${MESON_OPTIONS} + # cannot use ADDITIONAL_BINARIES for "native" programs + "-DBISON=['${BISON}']" + "-DFLEX=['${FLEX}']" + "-DPERL=${PERL}" + OPTIONS_RELEASE + ${MESON_OPTIONS_RELEASE} +) +vcpkg_install_meson() +vcpkg_fixup_pkgconfig() + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + file(GLOB pc_files "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/*.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/*.pc") + foreach(file IN LISTS pc_files) + vcpkg_replace_string("${file}" " -l(pq|pg|ecpg)" " -llib\\1" REGEX) + endforeach() +endif() + +vcpkg_copy_tools(TOOL_NAMES ecpg AUTO_CLEAN) +if("client" IN_LIST FEATURES) + if(NOT VCPKG_CROSSCOMPILING) + vcpkg_copy_tools(TOOL_NAMES zic AUTO_CLEAN DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") + endif() + vcpkg_copy_tools( + TOOL_NAMES + clusterdb createdb createuser + dropdb dropuser + pg_amcheck + pg_basebackup pgbench + pg_combinebackup pg_config pg_createsubscriber + pg_dump pg_dumpall + pg_isready + pg_receivewal pg_recvlogical pg_restore + pg_verifybackup + psql + reindexdb + vacuumdb + AUTO_CLEAN + ) +endif() + + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" +) + +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/postgresql/vcpkg-cmake-wrapper.cmake" @ONLY) +file(INSTALL "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYRIGHT") diff --git a/vcpkg/ports/libpq/usage b/vcpkg/ports/libpq/usage new file mode 100644 index 000000000..1f36ee18b --- /dev/null +++ b/vcpkg/ports/libpq/usage @@ -0,0 +1,4 @@ +libpq provides CMake integration: + + find_package(PostgreSQL REQUIRED) + target_link_libraries(main PRIVATE PostgreSQL::PostgreSQL) diff --git a/vcpkg/ports/libpq/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/libpq/vcpkg-cmake-wrapper.cmake new file mode 100644 index 000000000..fdb714590 --- /dev/null +++ b/vcpkg/ports/libpq/vcpkg-cmake-wrapper.cmake @@ -0,0 +1,69 @@ +find_library(PostgreSQL_LIBRARY_RELEASE NAMES pq libpq NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH REQUIRED) +find_library(PostgreSQL_LIBRARY_DEBUG NAMES pq libpq NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH) +_find_package(${ARGS}) +if(PostgreSQL_FOUND AND NOT "@VCPKG_TARGET_IS_WINDOWS@") + find_library(PostgreSQL_DL_LIBRARY NAMES dl) + if(PostgreSQL_DL_LIBRARY) + list(APPEND PostgreSQL_LIBRARIES "dl") + if(TARGET PostgreSQL::PostgreSQL) + set_property(TARGET PostgreSQL::PostgreSQL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "dl") + endif() + endif() +endif() +if(PostgreSQL_FOUND AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") + include(SelectLibraryConfigurations) + foreach(LIB_ITEM pgport pgcommon) + find_library(PostgreSQL_${LIB_ITEM}_LIBRARY_RELEASE + NAMES ${LIB_ITEM} lib${LIB_ITEM} + NAMES_PER_DIR + PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH + ) + if(TARGET PostgreSQL::PostgreSQL AND PostgreSQL_${LIB_ITEM}_LIBRARY_RELEASE) + set_property( + TARGET PostgreSQL::PostgreSQL + APPEND PROPERTY INTERFACE_LINK_LIBRARIES "\$<\$>:${PostgreSQL_${LIB_ITEM}_LIBRARY_RELEASE}>" + ) + endif() + + find_library(PostgreSQL_${LIB_ITEM}_LIBRARY_DEBUG + NAMES ${LIB_ITEM} lib${LIB_ITEM} + NAMES_PER_DIR + PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH + ) + if(TARGET PostgreSQL::PostgreSQL AND PostgreSQL_${LIB_ITEM}_LIBRARY_DEBUG) + set_property( + TARGET PostgreSQL::PostgreSQL + APPEND PROPERTY INTERFACE_LINK_LIBRARIES "\$<\$:${PostgreSQL_${LIB_ITEM}_LIBRARY_DEBUG}>" + ) + endif() + + if (PostgreSQL_${LIB_ITEM}_LIBRARY_RELEASE OR PostgreSQL_${LIB_ITEM}_LIBRARY_DEBUG) + select_library_configurations(PostgreSQL_${LIB_ITEM}) + list(APPEND PostgreSQL_LIBRARIES ${PostgreSQL_${LIB_ITEM}_LIBRARY}) + endif() + endforeach() + if(WIN32) + if(TARGET PostgreSQL::PostgreSQL) + set_property(TARGET PostgreSQL::PostgreSQL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "secur32.lib") + endif() + list(APPEND PostgreSQL_LIBRARIES secur32.lib) + endif() + cmake_policy(PUSH) + cmake_policy(SET CMP0057 NEW) + set(Z_VCPKG_PORT_FEATURES "@FEATURES@") + if("openssl" IN_LIST Z_VCPKG_PORT_FEATURES) + find_package(OpenSSL REQUIRED) + if(TARGET PostgreSQL::PostgreSQL) + set_property(TARGET PostgreSQL::PostgreSQL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "OpenSSL::SSL") + endif() + list(APPEND PostgreSQL_LIBRARIES ${OPENSSL_LIBRARIES}) + endif() + if(WIN32) + if(TARGET PostgreSQL::PostgreSQL) + set_property(TARGET PostgreSQL::PostgreSQL APPEND PROPERTY INTERFACE_LINK_LIBRARIES "wldap32.lib") + endif() + list(APPEND PostgreSQL_LIBRARIES wldap32.lib) + endif() + unset(Z_VCPKG_PORT_FEATURES) + cmake_policy(POP) +endif() diff --git a/vcpkg/ports/libpq/vcpkg.json b/vcpkg/ports/libpq/vcpkg.json new file mode 100644 index 000000000..ef00d2cb9 --- /dev/null +++ b/vcpkg/ports/libpq/vcpkg.json @@ -0,0 +1,114 @@ +{ + "name": "libpq", + "version": "18.3", + "port-version": 1, + "description": "The official database access API of postgresql", + "homepage": "https://www.postgresql.org/", + "license": "PostgreSQL", + "supports": "!uwp & !emscripten", + "dependencies": [ + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, + { + "name": "vcpkg-tool-meson", + "host": true + } + ], + "default-features": [ + "lz4", + "openssl", + "zlib" + ], + "features": { + "all": { + "description": "Build all supported features", + "dependencies": [ + { + "name": "libpq", + "features": [ + "client", + "icu", + "lz4", + "nls", + "openssl", + "zlib", + "zstd" + ] + }, + { + "name": "libpq", + "features": [ + "readline" + ], + "platform": "!windows" + } + ] + }, + "client": { + "description": "Build all client tools and libraries", + "dependencies": [ + { + "name": "libpq", + "host": true, + "default-features": false, + "features": [ + "client" + ] + } + ] + }, + "icu": { + "description": "Build with support for the ICU library", + "dependencies": [ + "icu" + ] + }, + "lz4": { + "description": "Use lz4", + "dependencies": [ + "lz4" + ] + }, + "nls": { + "description": "Native Language Support", + "supports": "!osx", + "dependencies": [ + { + "name": "gettext", + "host": true, + "features": [ + "tools" + ] + }, + "gettext-libintl" + ] + }, + "openssl": { + "description": "support for encrypted client connections and random number generation on platforms that do not have \"/dev/urandom\" (except windows)", + "dependencies": [ + "openssl" + ] + }, + "readline": { + "description": "Use readline", + "supports": "!windows, mingw", + "dependencies": [ + "readline" + ] + }, + "zlib": { + "description": "Use zlib", + "dependencies": [ + "zlib" + ] + }, + "zstd": { + "description": "Use zstd", + "dependencies": [ + "zstd" + ] + } + } +} diff --git a/vcpkg/ports/libpq/windows/getopt.patch b/vcpkg/ports/libpq/windows/getopt.patch new file mode 100644 index 000000000..c6e0126a3 --- /dev/null +++ b/vcpkg/ports/libpq/windows/getopt.patch @@ -0,0 +1,14 @@ +diff --git a/meson.build b/meson.build +index 34456b3..052e8c8 100644 +--- a/meson.build ++++ b/meson.build +@@ -2650,6 +2650,9 @@ foreach header : header_checks + description: 'Define to 1 if you have the <@0@> header file.'.format(header)) + endforeach + ++if cc.get_id() == 'msvc' ++ cdata.set('HAVE_GETOPT_H', false) ++endif + + decl_checks = [ + ['F_FULLFSYNC', 'fcntl.h'], diff --git a/vcpkg/ports/libpq/windows/macro-def.patch b/vcpkg/ports/libpq/windows/macro-def.patch new file mode 100644 index 000000000..7eb508d88 --- /dev/null +++ b/vcpkg/ports/libpq/windows/macro-def.patch @@ -0,0 +1,18 @@ +diff --git a/src/include/common/checksum_helper.h b/src/include/common/checksum_helper.h +index cac7570ea..d0ca1243c 100644 +--- a/src/include/common/checksum_helper.h ++++ b/src/include/common/checksum_helper.h +@@ -28,7 +28,13 @@ + */ + typedef enum pg_checksum_type + { ++#pragma push_macro("CHECKSUM_TYPE_NONE") ++#ifdef CHECKSUM_TYPE_NONE ++// winioctl.h defines CHECKSUM_TYPE_NONE to 0 as a macro. ++#undef CHECKSUM_TYPE_NONE ++#endif + CHECKSUM_TYPE_NONE, ++#pragma pop_macro("CHECKSUM_TYPE_NONE") + CHECKSUM_TYPE_CRC32C, + CHECKSUM_TYPE_SHA224, + CHECKSUM_TYPE_SHA256, diff --git a/vcpkg/ports/libpq/windows/spin_delay.patch b/vcpkg/ports/libpq/windows/spin_delay.patch new file mode 100644 index 000000000..163e8e6ef --- /dev/null +++ b/vcpkg/ports/libpq/windows/spin_delay.patch @@ -0,0 +1,24 @@ +diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h +index 4d3ffc7..658b1a1 100644 +--- a/src/include/storage/s_lock.h ++++ b/src/include/storage/s_lock.h +@@ -953,12 +953,18 @@ typedef LONG slock_t; + /* If using Visual C++ on Win64, inline assembly is unavailable. + * Use a _mm_pause intrinsic instead of rep nop. + */ +-#if defined(_WIN64) ++#if defined(_M_X64) && !defined(_M_ARM64EC) + static __forceinline void + spin_delay(void) + { + _mm_pause(); + } ++#elif defined(_M_ARM) || defined(_M_ARM64) || defined(_M_ARM64EC) ++static __forceinline void ++spin_delay(void) ++{ ++ __yield(); ++} + #else + static __forceinline void + spin_delay(void) diff --git a/vcpkg/ports/libpq/zic.diff b/vcpkg/ports/libpq/zic.diff new file mode 100644 index 000000000..737182f2d --- /dev/null +++ b/vcpkg/ports/libpq/zic.diff @@ -0,0 +1,22 @@ +diff --git a/src/timezone/meson.build b/src/timezone/meson.build +index ad9f6f6..bb06082 100644 +--- a/src/timezone/meson.build ++++ b/src/timezone/meson.build +@@ -27,7 +27,7 @@ if get_option('system_tzdata') == '' + # FIXME: For cross builds, it would need a native built libpgport/pgcommon to + # build our zic. But for that we'd need to run a good chunk of the configure + # tests both natively and cross. Unclear if it's worth it. +- if meson.is_cross_build() ++ if meson.is_cross_build() or get_option('ZIC') != 'zic' + zic = find_program(get_option('ZIC'), native: true, required: true) + else + if host_system == 'windows' +@@ -38,7 +38,7 @@ if get_option('system_tzdata') == '' + + zic = executable('zic', zic_sources, + dependencies: [frontend_code], +- kwargs: default_bin_args + {'install': false} ++ kwargs: default_bin_args + {'install': true} + ) + endif + From 35c5c4a8e7f4f6a4c9af6a3390459e27af4ee49f Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 12 May 2026 16:57:39 +0200 Subject: [PATCH 51/61] Fix another libpq issue on iOS --- vcpkg/ports/libpq/ios-system-unavailable.patch | 17 +++++++++++++++++ vcpkg/ports/libpq/portfile.cmake | 1 + 2 files changed, 18 insertions(+) create mode 100644 vcpkg/ports/libpq/ios-system-unavailable.patch diff --git a/vcpkg/ports/libpq/ios-system-unavailable.patch b/vcpkg/ports/libpq/ios-system-unavailable.patch new file mode 100644 index 000000000..222c46456 --- /dev/null +++ b/vcpkg/ports/libpq/ios-system-unavailable.patch @@ -0,0 +1,17 @@ +diff --git a/src/fe_utils/archive.c b/src/fe_utils/archive.c +index 5de3617cb29..5be21760ef2 100644 +--- a/src/fe_utils/archive.c ++++ b/src/fe_utils/archive.c +@@ -54,7 +54,12 @@ RestoreArchivedFile(const char *path, const char *xlogfname, + * archival storage. + */ + fflush(NULL); ++#if defined(__APPLE__) && defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) ++ /* system() is not available on iOS */ ++ rc = -1; ++#else + rc = system(xlogRestoreCmd); ++#endif + pfree(xlogRestoreCmd); + + if (rc == 0) diff --git a/vcpkg/ports/libpq/portfile.cmake b/vcpkg/ports/libpq/portfile.cmake index 338a829e4..ff839162e 100644 --- a/vcpkg/ports/libpq/portfile.cmake +++ b/vcpkg/ports/libpq/portfile.cmake @@ -17,6 +17,7 @@ vcpkg_extract_source_archive( windows/spin_delay.patch windows/getopt.patch ios-detection.patch + ios-system-unavailable.patch ) file(GLOB _py3_include_path "${CURRENT_HOST_INSTALLED_DIR}/include/python3*") From f552d789393751297ee3d596ebaca6c5f67c0a90 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 12 May 2026 18:17:37 +0200 Subject: [PATCH 52/61] Fix iOS build arg for make in VCPKG --- vcpkg/triplets/arm64-ios.cmake | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vcpkg/triplets/arm64-ios.cmake b/vcpkg/triplets/arm64-ios.cmake index b3d21737e..073879ab0 100644 --- a/vcpkg/triplets/arm64-ios.cmake +++ b/vcpkg/triplets/arm64-ios.cmake @@ -3,7 +3,8 @@ set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_CMAKE_SYSTEM_NAME iOS) set(VCPKG_OSX_ARCHITECTURES arm64) - + +set(VCPKG_MAKE_BUILD_TRIPLET "--host=aarch64-apple-ios${VCPKG_OSX_DEPLOYMENT_TARGET}") set(VCPKG_OSX_DEPLOYMENT_TARGET 16.0) set(VCPKG_BUILD_TYPE release) From 6792688a307612c8c9dfb08238fb02da89248ad5 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Tue, 12 May 2026 18:18:49 +0200 Subject: [PATCH 53/61] Remove libiconv port --- vcpkg/ports/README.md | 3 +- .../ports/libiconv/0002-Config-for-MSVC.patch | 14 --- vcpkg/ports/libiconv/0003-Add-export.patch | 12 --- .../ports/libiconv/0004-ModuleFileName.patch | 13 --- .../libiconv/0005-ios-cross-compile.patch | 13 --- vcpkg/ports/libiconv/portfile.cmake | 98 ------------------- vcpkg/ports/libiconv/usage | 4 - .../ports/libiconv/vcpkg-cmake-wrapper.cmake | 74 -------------- vcpkg/ports/libiconv/vcpkg.json | 18 ---- 9 files changed, 1 insertion(+), 248 deletions(-) delete mode 100644 vcpkg/ports/libiconv/0002-Config-for-MSVC.patch delete mode 100644 vcpkg/ports/libiconv/0003-Add-export.patch delete mode 100644 vcpkg/ports/libiconv/0004-ModuleFileName.patch delete mode 100644 vcpkg/ports/libiconv/0005-ios-cross-compile.patch delete mode 100644 vcpkg/ports/libiconv/portfile.cmake delete mode 100644 vcpkg/ports/libiconv/usage delete mode 100644 vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake delete mode 100644 vcpkg/ports/libiconv/vcpkg.json diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index eeb707fa8..7594ae2a1 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,8 +1,7 @@ - Geodiff - no official port in vcpkg - pcre2 - patch missing `_init`/`_fini` symbols causing lld linker errors on Android -- libiconv - ios fix for Qt 6.10.3 (best to retest every update if it's necessary) - libpq - ios fix for OS detection, we change the detected OS to darwin - qca - we needed 2.3.10, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtdeclarative - optimization to decrease package size -- qtpositioning - Android service fix & iOS orthometric position hack \ No newline at end of file +- qtpositioning - Android service fix & iOS orthometric position hack diff --git a/vcpkg/ports/libiconv/0002-Config-for-MSVC.patch b/vcpkg/ports/libiconv/0002-Config-for-MSVC.patch deleted file mode 100644 index 0b40e366b..000000000 --- a/vcpkg/ports/libiconv/0002-Config-for-MSVC.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/srclib/fcntl.c b/srclib/fcntl.c -index f9753c4..02fc8be 100644 ---- a/srclib/fcntl.c -+++ b/srclib/fcntl.c -@@ -37,6 +37,9 @@ - /* Get declarations of the native Windows API functions. */ - # define WIN32_LEAN_AND_MEAN - # include -+#if defined(WINAPI_FAMILY) && (WINAPI_FAMILY == WINAPI_FAMILY_APP) -+#define HANDLE_FLAG_INHERIT 0 -+#endif - - /* Get _get_osfhandle. */ - # if GNULIB_MSVC_NOTHROW diff --git a/vcpkg/ports/libiconv/0003-Add-export.patch b/vcpkg/ports/libiconv/0003-Add-export.patch deleted file mode 100644 index c8d131d2e..000000000 --- a/vcpkg/ports/libiconv/0003-Add-export.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -uNr libiconv-1.16/libcharset/include/libcharset.h.in libiconv-1.16-work/libcharset/include/libcharset.h.in ---- libiconv-1.16/libcharset/include/libcharset.h.in 2018-09-17 19:07:42.000000000 +0300 -+++ libiconv-1.16-work/libcharset/include/libcharset.h.in 2019-12-04 17:15:50.000000000 +0300 -@@ -33,7 +33,7 @@ - by the corresponding pathname with the current prefix instead. Both - prefixes should be directory names without trailing slash (i.e. use "" - instead of "/"). */ --extern void libcharset_set_relocation_prefix (const char *orig_prefix, -+extern void LIBCHARSET_DLL_EXPORTED libcharset_set_relocation_prefix (const char *orig_prefix, - const char *curr_prefix); - - diff --git a/vcpkg/ports/libiconv/0004-ModuleFileName.patch b/vcpkg/ports/libiconv/0004-ModuleFileName.patch deleted file mode 100644 index 7079406be..000000000 --- a/vcpkg/ports/libiconv/0004-ModuleFileName.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/srclib/relocatable.c b/srclib/relocatable.c -index 365c085..4e08fdc 100644 ---- a/srclib/relocatable.c -+++ b/srclib/relocatable.c -@@ -338,7 +338,7 @@ DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) - /* The DLL is being loaded into an application's address range. */ - static char location[MAX_PATH]; - -- if (!GetModuleFileName (module_handle, location, sizeof (location))) -+ if (!GetModuleFileNameA (module_handle, location, sizeof (location))) - /* Shouldn't happen. */ - return FALSE; - diff --git a/vcpkg/ports/libiconv/0005-ios-cross-compile.patch b/vcpkg/ports/libiconv/0005-ios-cross-compile.patch deleted file mode 100644 index 73dadc4a8..000000000 --- a/vcpkg/ports/libiconv/0005-ios-cross-compile.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- a/configure -+++ b/configure -@@ -5506,5 +5506,10 @@ ac_clean_files="$ac_clean_files conftest.out" - # Check that the compiler produces executables we can run. If not, either - # the compiler is broken, or we cross compile. - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 - printf %s "checking whether we are cross compiling... " >&6; } -+# On Apple Silicon, arm64-ios binaries are executable on the host macOS, causing -+# this detection to hang. Force cross_compiling=yes for iOS targets. -+case "$host" in -+ *-*-ios*) cross_compiling=yes ;; -+esac - if test "$cross_compiling" != yes; then diff --git a/vcpkg/ports/libiconv/portfile.cmake b/vcpkg/ports/libiconv/portfile.cmake deleted file mode 100644 index 56ffff8bb..000000000 --- a/vcpkg/ports/libiconv/portfile.cmake +++ /dev/null @@ -1,98 +0,0 @@ -if (NOT DEFINED X_VCPKG_BUILD_GNU_LIBICONV) - set(X_VCPKG_BUILD_GNU_LIBICONV 0) - if (VCPKG_TARGET_IS_WINDOWS - OR VCPKG_TARGET_IS_IOS - OR VCPKG_TARGET_IS_BSD - ) - set(X_VCPKG_BUILD_GNU_LIBICONV 1) - elseif (VCPKG_TARGET_IS_ANDROID) - vcpkg_cmake_get_vars(cmake_vars_file) - include("${cmake_vars_file}") - if (VCPKG_DETECTED_CMAKE_SYSTEM_VERSION VERSION_LESS "28") - set(X_VCPKG_BUILD_GNU_LIBICONV 1) - endif () - endif () -endif () - -if (NOT X_VCPKG_BUILD_GNU_LIBICONV) - message(STATUS "Not building GNU libiconv.") - set(VCPKG_POLICY_EMPTY_PACKAGE enabled) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/share/iconv") - file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" - DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv" - ) - return() -endif () - -vcpkg_download_distfile( - ARCHIVE - URLS - "https://ftpmirror.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" - "https://ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" - "https://www.mirrorservice.org/sites/ftp.gnu.org/gnu/libiconv/libiconv-${VERSION}.tar.gz" - FILENAME - "libiconv-${VERSION}.tar.gz" - SHA512 - a55eb3b7b785a78ab8918db8af541c9e11deb5ff4f89d54483287711ed797d87848ce0eafffa7ce26d9a7adb4b5a9891cb484f94bd4f51d3ce97a6a47b4c719a -) -vcpkg_extract_source_archive( - SOURCE_PATH - ARCHIVE - "${ARCHIVE}" - SOURCE_BASE - "v${VERSION}" - PATCHES - 0002-Config-for-MSVC.patch - 0003-Add-export.patch - 0004-ModuleFileName.patch - 0005-ios-cross-compile.patch -) - -vcpkg_list(SET OPTIONS) -if (NOT VCPKG_TARGET_IS_ANDROID) - vcpkg_list(APPEND OPTIONS --enable-relocatable) -endif () - -vcpkg_configure_make( - SOURCE_PATH - "${SOURCE_PATH}" - DETERMINE_BUILD_TRIPLET - USE_WRAPPERS - OPTIONS - --enable-extra-encodings - --without-libiconv-prefix - --without-libintl-prefix - ${OPTIONS} -) -vcpkg_install_make() - -vcpkg_copy_pdbs() -vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/bin") -vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/tools/${PORT}/debug/bin") - -file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" - DESTINATION "${CURRENT_PACKAGES_DIR}/share/iconv" -) - -set(VCPKG_POLICY_ALLOW_RESTRICTED_HEADERS enabled) -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/share/${PORT}") # share contains unneeded doc - # files - -# Please keep, the default usage is broken -file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" - DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" -) - -# Handle copyright -vcpkg_install_copyright( - FILE_LIST - "${SOURCE_PATH}/COPYING.LIB" - "${SOURCE_PATH}/COPYING" - COMMENT - " -The libiconv and libcharset libraries and their header files are under LGPL, -see COPYING.LIB below. - -The iconv program and the documentation are under GPL, see COPYING below." -) diff --git a/vcpkg/ports/libiconv/usage b/vcpkg/ports/libiconv/usage deleted file mode 100644 index 778f34516..000000000 --- a/vcpkg/ports/libiconv/usage +++ /dev/null @@ -1,4 +0,0 @@ -libiconv provides CMake targets: - - find_package(Iconv REQUIRED) - target_link_libraries(main PRIVATE Iconv::Iconv) diff --git a/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake b/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake deleted file mode 100644 index 869f29410..000000000 --- a/vcpkg/ports/libiconv/vcpkg-cmake-wrapper.cmake +++ /dev/null @@ -1,74 +0,0 @@ -include(SelectLibraryConfigurations) - -set(Z_VCPKG_ICONV_USES_DARWIN_SDK FALSE) -if (APPLE - AND CMAKE_OSX_SYSROOT - AND EXISTS "${CMAKE_OSX_SYSROOT}/usr/include/iconv.h" -) - set(Z_VCPKG_ICONV_USES_DARWIN_SDK TRUE) - set(Iconv_IS_BUILT_IN - FALSE - CACHE BOOL "iconv requires a separate library" - ) - if (NOT Iconv_INCLUDE_DIR) - set(Iconv_INCLUDE_DIR - "${CMAKE_OSX_SYSROOT}/usr/include" - CACHE PATH "iconv include directory" - ) - endif () - if (NOT Iconv_LIBRARY) - set(Iconv_LIBRARY - iconv - CACHE STRING "iconv library" - ) - endif () -endif () - -_find_package(${ARGS}) -if (Iconv_FOUND - AND NOT Iconv_IS_BUILT_IN - AND NOT Z_VCPKG_ICONV_USES_DARWIN_SDK -) - find_path( - CHARSET_INCLUDE_DIR - NAMES "libcharset.h" - HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include" - ) - find_library( - CHARSET_LIBRARY_DEBUG - NAMES charsetd - libcharsetd - charset - libcharset - NAMES_PER_DIR - PATH_SUFFIXES lib - HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug" - ) - find_library( - CHARSET_LIBRARY_RELEASE - NAMES charset libcharset NAMES_PER_DIR - PATH_SUFFIXES lib - HINTS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}" - ) - select_library_configurations(CHARSET) - if (NOT TARGET Iconv::Charset) - add_library(Iconv::Charset INTERFACE IMPORTED) - set_target_properties( - Iconv::Charset - PROPERTIES - INTERFACE_LINK_LIBRARIES - "\$<\$>:${CHARSET_LIBRARY_RELEASE}>;\$<\$:${CHARSET_LIBRARY_DEBUG}>" - INTERFACE_INCLUDE_DIRECTORIES "${CHARSET_INCLUDE_DIRS}" - ) - endif () - if (CHARSET_LIBRARIES) - list(APPEND Iconv_LIBRARIES ${CHARSET_LIBRARIES}) - if (TARGET Iconv::Iconv) - set_property( - TARGET Iconv::Iconv - APPEND - PROPERTY INTERFACE_LINK_LIBRARIES Iconv::Charset - ) - endif () - endif () -endif () diff --git a/vcpkg/ports/libiconv/vcpkg.json b/vcpkg/ports/libiconv/vcpkg.json deleted file mode 100644 index 761257b8a..000000000 --- a/vcpkg/ports/libiconv/vcpkg.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "libiconv", - "version": "1.18", - "port-version": 4, - "description": [ - "iconv() text conversion.", - "This port installs GNU libiconv if the system C runtime doesn't provide a suitable iconv() implementation." - ], - "homepage": "https://www.gnu.org/software/libiconv/", - "license": null, - "dependencies": [ - { - "name": "vcpkg-cmake-get-vars", - "host": true, - "platform": "android" - } - ] -} From 9ee3a0af4dd221e61222876230471548dfc956ef Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Wed, 13 May 2026 21:45:11 +0100 Subject: [PATCH 54/61] Fix qtpositioning patches for windows --- vcpkg/ports/qtpositioning/devendor-poly2tri.patch | 7 ++++--- vcpkg/ports/qtpositioning/foregroundservice.patch | 3 ++- vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch | 3 ++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/vcpkg/ports/qtpositioning/devendor-poly2tri.patch b/vcpkg/ports/qtpositioning/devendor-poly2tri.patch index 9d4084d3a..003b42da6 100644 --- a/vcpkg/ports/qtpositioning/devendor-poly2tri.patch +++ b/vcpkg/ports/qtpositioning/devendor-poly2tri.patch @@ -4,7 +4,7 @@ diff --color -Naur a/src/3rdparty/clip2tri/CMakeLists.txt b/src/3rdparty/clip2tr @@ -4,6 +4,7 @@ ## Bundled_Clip2Tri Generic Library: ##################################################################### - + +find_package(poly2tri) qt_internal_add_3rdparty_library(Bundled_Clip2Tri QMAKE_LIB_NAME _clip2tri @@ -23,15 +23,16 @@ diff --color -Naur a/src/3rdparty/clip2tri/CMakeLists.txt b/src/3rdparty/clip2tr +set_target_properties(poly2tri::poly2tri PROPERTIES INTERFACE_QT_PACKAGE_NAME poly2tri) qt_disable_warnings(Bundled_Clip2Tri) qt_set_symbol_visibility_hidden(Bundled_Clip2Tri) - + diff --color -Naur a/src/CMakeLists.txt b/src/CMakeLists.txt --- a/src/CMakeLists.txt 2023-05-13 16:59:42.379052157 +0200 +++ b/src/CMakeLists.txt 2023-05-13 17:00:19.256085781 +0200 @@ -2,7 +2,6 @@ # SPDX-License-Identifier: BSD-3-Clause - + # special case begin -add_subdirectory(3rdparty/poly2tri) add_subdirectory(3rdparty/clipper) add_subdirectory(3rdparty/clip2tri) add_subdirectory(positioning) + \ No newline at end of file diff --git a/vcpkg/ports/qtpositioning/foregroundservice.patch b/vcpkg/ports/qtpositioning/foregroundservice.patch index f0b24fcd4..fbe6bb8e1 100644 --- a/vcpkg/ports/qtpositioning/foregroundservice.patch +++ b/vcpkg/ports/qtpositioning/foregroundservice.patch @@ -5,7 +5,7 @@ index 0abc2ca..9d160a9 100644 @@ -592,10 +592,6 @@ namespace AndroidPositioning { { QLocationPermission permission; - + - // The needed permission depends on whether we run as a service or as an activity - if (!QNativeInterface::QAndroidApplication::isActivityContext()) - permission.setAvailability(QLocationPermission::Always); // background location @@ -13,3 +13,4 @@ index 0abc2ca..9d160a9 100644 bool permitted = false; if (accuracy & AccuracyType::Precise) { permission.setAccuracy(QLocationPermission::Precise); + \ No newline at end of file diff --git a/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch b/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch index d567740ae..4dda3d390 100644 --- a/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch +++ b/vcpkg/ports/qtpositioning/ios_orthometric_altitude.patch @@ -5,7 +5,7 @@ index 95d51a8..656a5d2 100644 @@ -48,11 +48,31 @@ const QDateTime timeStamp = QDateTime::fromMSecsSinceEpoch(qRound64(locationTimeStamp * 1000), QTimeZone::UTC); - + + // The ellipsoidalAltitude property can be populated depending on the manufacturer, we either use this and apply + // transformation with our geoid model or just propagate the geoid elevation from the mocked location + double availableAltitude; @@ -35,3 +35,4 @@ index 95d51a8..656a5d2 100644 if (newLocation.horizontalAccuracy >= 0) location.setAttribute(QGeoPositionInfo::HorizontalAccuracy, newLocation.horizontalAccuracy); if (newLocation.verticalAccuracy >= 0) + \ No newline at end of file From 2af27398b1515f7407777d6eede3d9451dc72886 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 14 May 2026 00:25:42 +0100 Subject: [PATCH 55/61] Fix qgis patches for Windows --- vcpkg/ports/qgis/cmakelists.patch | 7 ++-- vcpkg/ports/qgis/qflags-qstring-arg.patch | 17 +++++----- vcpkg/ports/qgis/qgis4_url_encoding.patch | 41 ++++++++++++----------- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/vcpkg/ports/qgis/cmakelists.patch b/vcpkg/ports/qgis/cmakelists.patch index 25dd70301..67ae46bb9 100644 --- a/vcpkg/ports/qgis/cmakelists.patch +++ b/vcpkg/ports/qgis/cmakelists.patch @@ -13,11 +13,11 @@ index 8dedb77f592..9f7ebbde85d 100644 @@ -480,7 +481,8 @@ if(WITH_CORE) find_package(ZLIB REQUIRED) # for decompression of vector tiles in MBTiles file message(STATUS "Found zlib: ${ZLIB_LIBRARIES}") - + - find_package(EXIV2 REQUIRED) + find_package(exiv2 REQUIRED) + set(EXIV2_LIBRARY exiv2lib) - + # optional if (WITH_POSTGRESQL) @@ -675,6 +677,10 @@ if(WITH_CORE) @@ -37,5 +37,6 @@ index 8dedb77f592..9f7ebbde85d 100644 add_definitions(-DNOMINMAX) + add_definitions(/bigobj) endif() - + if(BUILD_WITH_QT6) + \ No newline at end of file diff --git a/vcpkg/ports/qgis/qflags-qstring-arg.patch b/vcpkg/ports/qgis/qflags-qstring-arg.patch index 253eb5e24..1db8c63e6 100644 --- a/vcpkg/ports/qgis/qflags-qstring-arg.patch +++ b/vcpkg/ports/qgis/qflags-qstring-arg.patch @@ -5,10 +5,10 @@ index 9078011d516..fb5f4bdd5ff 100644 @@ -3166,7 +3166,7 @@ QgsRasterBandStats QgsGdalProvider::bandStatistics( int bandNo, Qgis::RasterBand | Qgis::RasterBandStatistic::Range | Qgis::RasterBandStatistic::Mean | Qgis::RasterBandStatistic::StdDev; - + - QgsDebugMsgLevel( QStringLiteral( "theStats = %1 supportedStats = %2" ).arg( stats, 0, 2 ).arg( supportedStats, 0, 2 ), 2 ); + QgsDebugMsgLevel( QStringLiteral( "theStats = %1 supportedStats = %2" ).arg( static_cast( stats ), 0, 2 ).arg( static_cast( supportedStats ), 0, 2 ), 2 ); - + if ( myRasterBandStats.extent != extent() || ( stats & ( ~supportedStats ) ) ) diff --git a/src/core/raster/qgsrasterinterface.cpp b/src/core/raster/qgsrasterinterface.cpp @@ -22,7 +22,7 @@ index bbd88574da0..942ea6c444e 100644 - QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( stats ).arg( sampleSize ), 4 ); + QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( static_cast( stats ) ).arg( sampleSize ), 4 ); if ( mStatistics.isEmpty() ) return false; - + QgsRasterBandStats myRasterBandStats; @@ -124,7 +124,7 @@ QgsRasterBandStats QgsRasterInterface::bandStatistics( int bandNo, const QgsRectangle &extent, @@ -30,9 +30,9 @@ index bbd88574da0..942ea6c444e 100644 { - QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( stats ).arg( sampleSize ), 4 ); + QgsDebugMsgLevel( QStringLiteral( "theBandNo = %1 stats = %2 sampleSize = %3" ).arg( bandNo ).arg( static_cast( stats ) ).arg( sampleSize ), 4 ); - + // TODO: null values set on raster layer!!! - + diff --git a/src/providers/wms/qgswmsprovider.cpp b/src/providers/wms/qgswmsprovider.cpp index 4e7ba49ba19..7b5d7b1f327 100644 --- a/src/providers/wms/qgswmsprovider.cpp @@ -40,12 +40,12 @@ index 4e7ba49ba19..7b5d7b1f327 100644 @@ -2351,7 +2351,7 @@ Qgis::RasterInterfaceCapabilities QgsWmsProvider::capabilities() const capability |= Qgis::RasterInterfaceCapability::Prefetch; } - + - QgsDebugMsgLevel( QStringLiteral( "capability = %1" ).arg( capability ), 2 ); + QgsDebugMsgLevel( QStringLiteral( "capability = %1" ).arg( static_cast( capability ) ), 2 ); return capability; } - + diff --git a/tests/bench/main.cpp b/tests/bench/main.cpp index 3c085cbefd6..2f329d60984 100644 --- a/tests/bench/main.cpp @@ -58,4 +58,5 @@ index 3c085cbefd6..2f329d60984 100644 + QgsDebugMsgLevel( QStringLiteral( "hints: %1" ).arg( static_cast( hints ) ), 1 ); qbench->setRenderHints( hints ); } - + + \ No newline at end of file diff --git a/vcpkg/ports/qgis/qgis4_url_encoding.patch b/vcpkg/ports/qgis/qgis4_url_encoding.patch index 40534a0b8..a53169c5b 100644 --- a/vcpkg/ports/qgis/qgis4_url_encoding.patch +++ b/vcpkg/ports/qgis/qgis4_url_encoding.patch @@ -428,7 +428,7 @@ index abbca2a1aed..450cc5c2eb0 100644 +++ b/tests/src/core/testqgsvectortilelayer.cpp @@ -260,11 +260,12 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() QCOMPARE( vectorTileMetadata->validLayerTypesForUri( QStringLiteral( "type=mbtiles&url=%1/vector_tile/mbtiles_vt.mbtiles" ).arg( TEST_DATA_DIR ) ), { Qgis::LayerType::VectorTile } ); - + // query sublayers + QString localMbtilesPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/vector_tile/mbtiles_vt.mbtiles" ) ) ); QList sublayers = vectorTileMetadata->querySublayers( QStringLiteral( "%1/vector_tile/mbtiles_vt.mbtiles" ).arg( TEST_DATA_DIR ) ); @@ -448,7 +448,7 @@ index abbca2a1aed..450cc5c2eb0 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=mbtiles&url=%1" ).arg( localMbtilesPath ) ); QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( !sublayers.at( 0 ).skippedContainerScan() ); - + @@ -282,7 +283,7 @@ void TestQgsVectorTileLayer::testMbtilesProviderMetadata() QCOMPARE( sublayers.size(), 1 ); QCOMPARE( sublayers.at( 0 ).providerKey(), QStringLiteral( "mbtilesvectortiles" ) ); @@ -466,7 +466,7 @@ index abbca2a1aed..450cc5c2eb0 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=mbtiles&url=%1" ).arg( localMbtilesPath ) ); QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( sublayers.at( 0 ).skippedContainerScan() ); - + // fast scan mode means that any mbtile file will be reported, including those with only raster tiles // (we are skipping a potentially expensive db open and format check) + QString localIsleOfManPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/isle_of_man.mbtiles" ) ) ); @@ -479,48 +479,48 @@ index abbca2a1aed..450cc5c2eb0 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=mbtiles&url=%1" ).arg( localIsleOfManPath ) ); QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); QVERIFY( sublayers.at( 0 ).skippedContainerScan() ); - + @@ -332,8 +335,9 @@ void TestQgsVectorTileLayer::test_relativePathsMbTiles() QgsReadWriteContext contextRel; contextRel.setPathResolver( QgsPathResolver( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/project.qgs" ) ) ); const QgsReadWriteContext contextAbs; + QString localMbtilesPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/vector_tile/mbtiles_vt.mbtiles" ) ) ); - + - const QString srcMbtiles = QStringLiteral( "type=mbtiles&url=%1/vector_tile/mbtiles_vt.mbtiles" ).arg( TEST_DATA_DIR ); + const QString srcMbtiles = QStringLiteral( "type=mbtiles&url=%1" ).arg( localMbtilesPath ); - + auto layer = std::make_unique( srcMbtiles ); QVERIFY( layer->isValid() ); @@ -341,7 +345,7 @@ void TestQgsVectorTileLayer::test_relativePathsMbTiles() - + // encode source: converting absolute paths to relative const QString srcMbtilesRel = layer->encodedSource( srcMbtiles, contextRel ); - QCOMPARE( srcMbtilesRel, QStringLiteral( "type=mbtiles&url=./vector_tile/mbtiles_vt.mbtiles" ) ); + QCOMPARE( srcMbtilesRel, QStringLiteral( "type=mbtiles&url=.%2Fvector_tile%2Fmbtiles_vt.mbtiles" ) ); - + // encode source: keeping absolute paths QCOMPARE( layer->encodedSource( srcMbtiles, contextAbs ), srcMbtiles ); @@ -392,15 +396,15 @@ void TestQgsVectorTileLayer::test_relativePathsXyz() contextRel.setPathResolver( QgsPathResolver( "/home/qgis/project.qgs" ) ); const QgsReadWriteContext contextAbs; - + - const QString srcXyzLocal = "type=xyz&url=file:///home/qgis/%7Bz%7D/%7Bx%7D/%7By%7D.pbf"; - const QString srcXyzRemote = "type=xyz&url=http://www.example.com/%7Bz%7D/%7Bx%7D/%7By%7D.pbf"; + const QString srcXyzLocal = "type=xyz&url=file%3A%2F%2F%2Fhome%2Fqgis%2F%7Bz%7D%2F%7Bx%7D%2F%7By%7D.pbf"; + const QString srcXyzRemote = "type=xyz&url=http%3A%2F%2Fwww.example.com%2F%7Bz%7D%2F%7Bx%7D%2F%7By%7D.pbf"; - + auto layer = std::make_unique( srcXyzLocal ); QCOMPARE( layer->providerType(), QStringLiteral( "xyzvectortiles" ) ); - + // encode source: converting absolute paths to relative const QString srcXyzLocalRel = layer->encodedSource( srcXyzLocal, contextRel ); - QCOMPARE( srcXyzLocalRel, QStringLiteral( "type=xyz&url=file:./%7Bz%7D/%7Bx%7D/%7By%7D.pbf" ) ); + QCOMPARE( srcXyzLocalRel, QStringLiteral( "type=xyz&url=file%3A.%2F%7Bz%7D%2F%7Bx%7D%2F%7By%7D.pbf" ) ); QCOMPARE( layer->encodedSource( srcXyzRemote, contextRel ), srcXyzRemote ); - + // encode source: keeping absolute paths @@ -436,7 +440,8 @@ void TestQgsVectorTileLayer::test_absoluteRelativeUriXyz() - + QString absoluteUri = dsAbs.encodedUri(); QString relativeUri = dsRel.encodedUri(); - QCOMPARE( vectorTileMetadata->absoluteToRelativeUri( absoluteUri, context ), relativeUri ); @@ -528,10 +528,10 @@ index abbca2a1aed..450cc5c2eb0 100644 + QCOMPARE( absToRelUri, relativeUri ); QCOMPARE( vectorTileMetadata->relativeToAbsoluteUri( relativeUri, context ), absoluteUri ); } - + @@ -458,23 +463,23 @@ void TestQgsVectorTileLayer::testVtpkProviderMetadata() QVERIFY( vectorTileMetadata->querySublayers( QStringLiteral( "type=vtpk&url=%1/points.shp" ).arg( TEST_DATA_DIR ) ).isEmpty() ); - + // vtpk uris - QCOMPARE( vectorTileMetadata->priorityForUri( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/testvtpk.vtpk" ) ), 100 ); - QCOMPARE( vectorTileMetadata->validLayerTypesForUri( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/testvtpk.vtpk" ) ), { Qgis::LayerType::VectorTile } ); @@ -567,27 +567,27 @@ index abbca2a1aed..450cc5c2eb0 100644 + QCOMPARE( sublayers.at( 0 ).uri(), QStringLiteral( "type=vtpk&url=%1" ).arg( localVtpkPath ) ); + QCOMPARE( sublayers.at( 0 ).type(), Qgis::LayerType::VectorTile ); + } - + // test that vtpk provider is the preferred provider for vtpk files QList candidates = QgsProviderRegistry::instance()->preferredProvidersForUri( QStringLiteral( "type=vtpk&url=%1/testvtpk.vtpk" ).arg( TEST_DATA_DIR ) ); @@ -500,7 +505,9 @@ void TestQgsVectorTileLayer::test_relativePathsVtpk() contextRel.setPathResolver( QgsPathResolver( QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/project.qgs" ) ) ); const QgsReadWriteContext contextAbs; - + - const QString srcVtpk = QStringLiteral( "type=vtpk&url=%1/testvtpk.vtpk" ).arg( TEST_DATA_DIR ); + QString localVtpkPath = QStringLiteral( "%1%2" ).arg( QUrl::toPercentEncoding( TEST_DATA_DIR ), QUrl::toPercentEncoding( QStringLiteral( "/testvtpk.vtpk" ) ) ); + + const QString srcVtpk = QStringLiteral( "type=vtpk&url=%1" ).arg( localVtpkPath ); - + auto layer = std::make_unique( srcVtpk ); QVERIFY( layer->isValid() ); @@ -508,7 +515,7 @@ void TestQgsVectorTileLayer::test_relativePathsVtpk() - + // encode source: converting absolute paths to relative const QString srcVtpkRel = layer->encodedSource( srcVtpk, contextRel ); - QCOMPARE( srcVtpkRel, QStringLiteral( "type=vtpk&url=./testvtpk.vtpk" ) ); + QCOMPARE( srcVtpkRel, QStringLiteral( "type=vtpk&url=.%2Ftestvtpk.vtpk" ) ); - + // encode source: keeping absolute paths QCOMPARE( layer->encodedSource( srcVtpk, contextAbs ), srcVtpk ); diff --git a/tests/src/providers/testqgswmsprovider.cpp b/tests/src/providers/testqgswmsprovider.cpp @@ -783,3 +783,4 @@ index 792325c642b..5aa2ab3bd9f 100644 } void TestQgsServerWmsParameters::percent_encoding() + \ No newline at end of file From 56bee7db98574b168b136bf951872136716f5cf6 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 14 May 2026 11:42:56 +0200 Subject: [PATCH 56/61] Add fix for windows build failing on lazperf --- vcpkg/ports/qgis/point-cloud-guard.patch | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/vcpkg/ports/qgis/point-cloud-guard.patch b/vcpkg/ports/qgis/point-cloud-guard.patch index 2f4e37980..f82f50ebb 100644 --- a/vcpkg/ports/qgis/point-cloud-guard.patch +++ b/vcpkg/ports/qgis/point-cloud-guard.patch @@ -1,3 +1,23 @@ +diff --git a/src/core/pointcloud/qgslazinfo.h b/src/core/pointcloud/qgslazinfo.h +index 2e55117f300..f6ae367d19a 100644 +--- a/src/core/pointcloud/qgslazinfo.h ++++ b/src/core/pointcloud/qgslazinfo.h +@@ -23,6 +23,8 @@ + #include "qgspointcloudattribute.h" + #include "qgscoordinatereferencesystem.h" + ++#if WITH_COPC || WITH_EPT ++ + #include "lazperf/header.hpp" + + #define SIP_NO_FILE +@@ -166,4 +168,6 @@ class CORE_EXPORT QgsLazInfo + QVector mExtrabyteAttributes; + }; + ++#endif // WITH_COPC || WITH_EPT ++ + #endif // QGSLAZINFO_H diff --git a/src/core/pointcloud/qgspointcloudeditingindex.cpp b/src/core/pointcloud/qgspointcloudeditingindex.cpp index 40aecdc9a1f..76280678ba0 100644 --- a/src/core/pointcloud/qgspointcloudeditingindex.cpp From cc4964d4946087eff8a404ac72392d8f56ef6b2e Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 14 May 2026 13:07:19 +0200 Subject: [PATCH 57/61] Amend last windows fix to target only windows --- vcpkg/ports/qgis/point-cloud-guard.patch | 34 ++++++++++-------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/vcpkg/ports/qgis/point-cloud-guard.patch b/vcpkg/ports/qgis/point-cloud-guard.patch index f82f50ebb..c5e1ab5a9 100644 --- a/vcpkg/ports/qgis/point-cloud-guard.patch +++ b/vcpkg/ports/qgis/point-cloud-guard.patch @@ -1,23 +1,17 @@ -diff --git a/src/core/pointcloud/qgslazinfo.h b/src/core/pointcloud/qgslazinfo.h -index 2e55117f300..f6ae367d19a 100644 ---- a/src/core/pointcloud/qgslazinfo.h -+++ b/src/core/pointcloud/qgslazinfo.h -@@ -23,6 +23,8 @@ - #include "qgspointcloudattribute.h" - #include "qgscoordinatereferencesystem.h" - -+#if WITH_COPC || WITH_EPT -+ - #include "lazperf/header.hpp" - - #define SIP_NO_FILE -@@ -166,4 +168,6 @@ class CORE_EXPORT QgsLazInfo - QVector mExtrabyteAttributes; - }; - -+#endif // WITH_COPC || WITH_EPT -+ - #endif // QGSLAZINFO_H +diff --git a/external/lazperf/lazperf_base.hpp b/external/lazperf/lazperf_base.hpp +index 864ca2c2f7d..f31ade579cd 100644 +--- a/external/lazperf/lazperf_base.hpp ++++ b/external/lazperf/lazperf_base.hpp +@@ -7,7 +7,9 @@ + #define LAZPERF_VERSION 3.0.0 + + #ifdef _WIN32 ++#if WITH_EPT || WITH_COPC + #define LAZPERF_EXPORT __declspec(dllexport) ++#endif + #else + // This may not be necessary. The GCC doc says it take __declspec((dllexport)) + #define LAZPERF_EXPORT __attribute__((visibility ("default"))) diff --git a/src/core/pointcloud/qgspointcloudeditingindex.cpp b/src/core/pointcloud/qgspointcloudeditingindex.cpp index 40aecdc9a1f..76280678ba0 100644 --- a/src/core/pointcloud/qgspointcloudeditingindex.cpp From 33049c320e058f111dfd15412b812f1e82e90e6d Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 14 May 2026 11:56:25 +0200 Subject: [PATCH 58/61] Fix local ios VCPKG build failing on race condition --- vcpkg/ports/README.md | 1 + .../libspatialite/android-builtin-iconv.diff | 35 +++ .../libspatialite/fix-linux-configure.patch | 30 +++ vcpkg/ports/libspatialite/fix-makefiles.patch | 43 ++++ vcpkg/ports/libspatialite/fix-mingw.patch | 11 + .../ports/libspatialite/fix-utf8-source.patch | 32 +++ .../ports/libspatialite/gaiaconfig-msvc.patch | 31 +++ .../ports/libspatialite/libxml2-no-http.diff | 34 +++ vcpkg/ports/libspatialite/portfile.cmake | 239 ++++++++++++++++++ vcpkg/ports/libspatialite/vcpkg.json | 55 ++++ vcpkg/triplets/arm64-ios.cmake | 4 +- 11 files changed, 513 insertions(+), 2 deletions(-) create mode 100644 vcpkg/ports/libspatialite/android-builtin-iconv.diff create mode 100644 vcpkg/ports/libspatialite/fix-linux-configure.patch create mode 100644 vcpkg/ports/libspatialite/fix-makefiles.patch create mode 100644 vcpkg/ports/libspatialite/fix-mingw.patch create mode 100644 vcpkg/ports/libspatialite/fix-utf8-source.patch create mode 100644 vcpkg/ports/libspatialite/gaiaconfig-msvc.patch create mode 100644 vcpkg/ports/libspatialite/libxml2-no-http.diff create mode 100644 vcpkg/ports/libspatialite/portfile.cmake create mode 100644 vcpkg/ports/libspatialite/vcpkg.json diff --git a/vcpkg/ports/README.md b/vcpkg/ports/README.md index 7594ae2a1..57a033688 100644 --- a/vcpkg/ports/README.md +++ b/vcpkg/ports/README.md @@ -1,6 +1,7 @@ - Geodiff - no official port in vcpkg - pcre2 - patch missing `_init`/`_fini` symbols causing lld linker errors on Android - libpq - ios fix for OS detection, we change the detected OS to darwin +- libspatialite - fix build failing on racing condition for ios builds, force sequential build for some directories - qca - we needed 2.3.10, there is 2.3.7 in main repo - qgis - no official port in vcpkg - qtdeclarative - optimization to decrease package size diff --git a/vcpkg/ports/libspatialite/android-builtin-iconv.diff b/vcpkg/ports/libspatialite/android-builtin-iconv.diff new file mode 100644 index 000000000..db0792657 --- /dev/null +++ b/vcpkg/ports/libspatialite/android-builtin-iconv.diff @@ -0,0 +1,35 @@ +diff --git a/src/gaiaaux/gg_utf8.c b/src/gaiaaux/gg_utf8.c +index f11e604..620696e 100644 +--- a/src/gaiaaux/gg_utf8.c ++++ b/src/gaiaaux/gg_utf8.c +@@ -73,7 +73,7 @@ extern const char *locale_charset (void); + #include + #endif /* end localcharset */ + #else /* not MINGW32 - WIN32 */ +-#if defined(__APPLE__) || defined(__ANDROID__) ++#if defined(__APPLE__) || (defined(__ANDROID__) && __ANDROID_API__ < 28) + #include + #include + #else /* neither Mac OsX nor Android */ +@@ -89,7 +89,7 @@ gaiaGetLocaleCharset () + #if defined(__MINGW32__) || defined(_WIN32) + return locale_charset (); + #else /* not MINGW32 - WIN32 */ +-#if defined(__APPLE__) || defined(__ANDROID__) ++#if defined(__APPLE__) || (defined(__ANDROID__) && __ANDROID_API__ < 28) + return locale_charset (); + #else /* neither Mac OsX nor Android */ + return nl_langinfo (CODESET); +diff --git a/src/gaiageo/gg_shape.c b/src/gaiageo/gg_shape.c +index 8917535..e5e0240 100644 +--- a/src/gaiageo/gg_shape.c ++++ b/src/gaiageo/gg_shape.c +@@ -75,7 +75,7 @@ extern const char *locale_charset (void); + #include + #endif /* end localcharset */ + #else /* not MINGW32 */ +-#if defined(__APPLE__) || defined(__ANDROID__) ++#if defined(__APPLE__) || (defined(__ANDROID__) && __ANDROID_API__ < 28) + #include + #include + #else /* neither Mac OsX nor Android */ diff --git a/vcpkg/ports/libspatialite/fix-linux-configure.patch b/vcpkg/ports/libspatialite/fix-linux-configure.patch new file mode 100644 index 000000000..afb54db06 --- /dev/null +++ b/vcpkg/ports/libspatialite/fix-linux-configure.patch @@ -0,0 +1,30 @@ +diff --git a/configure.ac b/configure.ac +index ead87caff..47abb90f0 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -302,6 +302,7 @@ if test x"$enable_geos" != "xno"; then + #----------------------------------------------------------------------- + # --with-geosconfig + # ++ if 0; then + AC_ARG_WITH([geosconfig], + [AS_HELP_STRING([--with-geosconfig=FILE], [specify an alternative geos-config file])], + [GEOSCONFIG="$withval"], [GEOSCONFIG=""]) +@@ -327,14 +328,17 @@ if test x"$enable_geos" != "xno"; then + # Ensure that we can parse geos_c.h + CPPFLAGS_SAVE="$CPPFLAGS" + CPPFLAGS="$GEOS_CFLAGS" ++ fi + AC_CHECK_HEADERS([geos_c.h],, [AC_MSG_ERROR([could not find geos_c.h - you may need to specify the directory of a geos-config file using --with-geosconfig])]) ++ if 0; then + CPPFLAGS="$CPPFLAGS_SAVE" + # Ensure we can link against libgeos_c + LIBS_SAVE="$LIBS" + LIBS="$GEOS_LDFLAGS" + AC_SEARCH_LIBS(GEOSCoveredBy,geos_c,,AC_MSG_ERROR([could not find libgeos_c (or obsolete 'libgeos_c' < v.3.3.0 found) - you may need to specify the directory of a geos-config file using --with-geosconfig])) + LIBS="$LIBS_SAVE" + LIBS="$LIBS $GEOS_LDFLAGS -lgeos_c" ++ fi + + #----------------------------------------------------------------------- + # --enable-controlpoints diff --git a/vcpkg/ports/libspatialite/fix-makefiles.patch b/vcpkg/ports/libspatialite/fix-makefiles.patch new file mode 100644 index 000000000..167faa1b7 --- /dev/null +++ b/vcpkg/ports/libspatialite/fix-makefiles.patch @@ -0,0 +1,43 @@ +diff --git a/makefile.vc b/makefile.vc +index 9ae0b83..2a80b03 100644 +--- a/makefile.vc ++++ b/makefile.vc +@@ -100,7 +100,8 @@ CFLAGS = /nologo -I.\src\headers -I.\src\topology \ + + default: all + +-all: spatialite.lib spatialite_i.lib ++WANT_LIB = spatialite.lib ++all: $(WANT_LIB) + #$(EXIF_LOADER_EXE) + + spatialite.lib: $(LIBOBJ) +@@ -112,10 +113,7 @@ $(SPATIALITE_DLL): spatialite_i.lib + spatialite_i.lib: $(LIBOBJ) + link /dll /out:$(SPATIALITE_DLL) \ + /implib:spatialite_i.lib $(LIBOBJ) \ +- C:\OSGeo4W\lib\proj_i.lib C:\OSGeo4W\lib\geos_c.lib \ +- C:\OSGeo4w\lib\freexl_i.lib C:\OSGeo4w\lib\iconv.lib \ +- C:\OSGeo4W\lib\sqlite3_i.lib C:\OSGeo4W\lib\zlib.lib \ +- C:\OSGeo4W\lib\libxml2.lib C:\OSGeo4W\lib\librttopo.lib ++ $(LIBS) + if exist $(SPATIALITE_DLL).manifest mt -manifest \ + $(SPATIALITE_DLL).manifest -outputresource:$(SPATIALITE_DLL);2 + +@@ -146,12 +144,14 @@ clean: + + install: all + -mkdir $(INSTDIR) +- -mkdir $(INSTDIR)\bin + -mkdir $(INSTDIR)\lib + -mkdir $(INSTDIR)\include + -mkdir $(INSTDIR)\include\spatialite ++!IF "$(WANT_LIB)" == "spatialite_i.lib" ++ -mkdir $(INSTDIR)\bin + copy *.dll $(INSTDIR)\bin +- copy *.lib $(INSTDIR)\lib ++!ENDIF ++ copy /Y $(WANT_LIB) $(INSTDIR)\lib\spatialite.lib + copy src\headers\spatialite.h $(INSTDIR)\include + copy src\headers\spatialite\*.h $(INSTDIR)\include\spatialite + diff --git a/vcpkg/ports/libspatialite/fix-mingw.patch b/vcpkg/ports/libspatialite/fix-mingw.patch new file mode 100644 index 000000000..abbe3520a --- /dev/null +++ b/vcpkg/ports/libspatialite/fix-mingw.patch @@ -0,0 +1,11 @@ +diff --color -ur a/configure.ac b/configure.ac +--- a/configure.ac 2022-07-21 17:23:50.490298108 +0200 ++++ b/configure.ac 2022-07-21 17:25:45.671489524 +0200 +@@ -116,7 +116,6 @@ + + # Checks for installed libraries + # AC_CHECK_LIB(sqlite3,sqlite3_prepare_v2,,AC_MSG_ERROR(['libsqlite3' is required but it doesn't seem to be installed on this system.]),-lm) +-AC_CHECK_LIB(z,inflateInit_,,AC_MSG_ERROR(['libz' is required but it doesn't seem to be installed on this system.]),-lm) + + AC_CONFIG_FILES([Makefile \ + src/Makefile \ diff --git a/vcpkg/ports/libspatialite/fix-utf8-source.patch b/vcpkg/ports/libspatialite/fix-utf8-source.patch new file mode 100644 index 000000000..76dcf77a5 --- /dev/null +++ b/vcpkg/ports/libspatialite/fix-utf8-source.patch @@ -0,0 +1,32 @@ +diff --git a/src/srsinit/epsg_inlined_21.c b/src/srsinit/epsg_inlined_21.c +index 94aa9d4..457b38a 100644 +--- a/src/srsinit/epsg_inlined_21.c ++++ b/src/srsinit/epsg_inlined_21.c +@@ -619,9 +619,9 @@ initialize_epsg_21 (int filter, struct epsg_defs **first, struct epsg_defs **las + add_srs_wkt (p, 27, + "lic, Chad, Chile, China, Christmas Island, Cocos (Keelin"); + add_srs_wkt (p, 28, +- "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ"); ++ "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ´"); + add_srs_wkt (p, 29, +- "´te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); ++ "te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); + add_srs_wkt (p, 30, + "us, Czechia, Denmark, Djibouti, Dominica, Dominican Repu"); + add_srs_wkt (p, 31, +diff --git a/src/srsinit/epsg_inlined_25.c b/src/srsinit/epsg_inlined_25.c +index 1071eb1..a09cb8c 100644 +--- a/src/srsinit/epsg_inlined_25.c ++++ b/src/srsinit/epsg_inlined_25.c +@@ -3180,9 +3180,9 @@ initialize_epsg_25 (int filter, struct epsg_defs **first, struct epsg_defs **las + add_srs_wkt (p, 26, + "lic, Chad, Chile, China, Christmas Island, Cocos (Keelin"); + add_srs_wkt (p, 27, +- "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ"); ++ "g) Islands, Comoros, Congo, Cook Islands, Costa Rica, CĂ´"); + add_srs_wkt (p, 28, +- "´te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); ++ "te d'Ivoire (Ivory Coast), Croatia, Cuba, Curacao, Cypr"); + add_srs_wkt (p, 29, + "us, Czechia, Denmark, Djibouti, Dominica, Dominican Repu"); + add_srs_wkt (p, 30, diff --git a/vcpkg/ports/libspatialite/gaiaconfig-msvc.patch b/vcpkg/ports/libspatialite/gaiaconfig-msvc.patch new file mode 100644 index 000000000..3bf276d70 --- /dev/null +++ b/vcpkg/ports/libspatialite/gaiaconfig-msvc.patch @@ -0,0 +1,31 @@ +diff --git a/src/headers/spatialite/gaiaconfig-msvc.h b/src/headers/spatialite/gaiaconfig-msvc.h +index 37f0bd1..0053258 100644 +--- a/src/headers/spatialite/gaiaconfig-msvc.h ++++ b/src/headers/spatialite/gaiaconfig-msvc.h +@@ -2,7 +2,7 @@ + /* ./src/headers/spatialite/gaiaconfig-msvc.h.in - manually maintained */ + + /* Should be defined in order to enable GCP support. */ +-#define ENABLE_GCP 1 ++// #define ENABLE_GCP 1 + + /* Should be defined in order to enable GeoPackage support. */ + #define ENABLE_GEOPACKAGE 1 +@@ -11,7 +11,7 @@ + #define ENABLE_LIBXML2 1 + + /* Should be defined in order to enable RTTOPO support. */ +-#define ENABLE_RTTOPO 1 ++// #define ENABLE_RTTOPO 1 + + /* Should be defined in order to enable GEOS_370 support. */ + #define GEOS_370 1 +@@ -32,7 +32,7 @@ + /* #undef OMIT_FREEXL */ + + /* Should be defined in order to disable GEOCALLBACKS support. */ +-#define OMIT_GEOCALLBACKS 1 ++// #define OMIT_GEOCALLBACKS 1 + + /* Should be defined in order to disable GEOS support. */ + /* #undef OMIT_GEOS */ diff --git a/vcpkg/ports/libspatialite/libxml2-no-http.diff b/vcpkg/ports/libspatialite/libxml2-no-http.diff new file mode 100644 index 000000000..22402750a --- /dev/null +++ b/vcpkg/ports/libspatialite/libxml2-no-http.diff @@ -0,0 +1,34 @@ +diff --git a/configure.ac b/configure.ac +index 3a4f288..d9ba65f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -441,6 +441,15 @@ if test x"$enable_libxml2" != "xno"; then + AC_SUBST(LIBXML2_CFLAGS) + AC_SUBST(LIBXML2_LIBS) + AC_DEFINE(ENABLE_LIBXML2) ++ LIBS_SAVE="$LIBS" ++ LIBS="$LIBXML2_LIBS" ++ AC_SEARCH_LIBS(xmlNanoHTTPCleanup, [], [has_nanohttp="yes"], [has_nanohttp="no"]) ++ if test "x$has_nanohttp" != "xno"; then ++ CPPFLAGS="$CFLAGS -DLIBXML2_HAS_NANOHTTP" ++ else ++ AC_MSG_WARN([No http support found in 'libxml2']) ++ fi ++ LIBS="$LIBS_SAVE" + fi + + #----------------------------------------------------------------------- +diff --git a/src/wfs/wfs_in.c b/src/wfs/wfs_in.c +index fe07a0d..93dd778 100644 +--- a/src/wfs/wfs_in.c ++++ b/src/wfs/wfs_in.c +@@ -4637,7 +4637,9 @@ SPATIALITE_DECLARE void + reset_wfs_http_connection (void) + { + /* Resets the libxml2 "nano HTTP": useful when changing the HTTP_PROXY settings */ ++#if defined LIBXML2_HAS_NANOHTTP /* removed in 2.15.0, and optional before */ + xmlNanoHTTPCleanup (); ++#endif + } + + #else /* LIBXML2 isn't enabled */ diff --git a/vcpkg/ports/libspatialite/portfile.cmake b/vcpkg/ports/libspatialite/portfile.cmake new file mode 100644 index 000000000..e65216303 --- /dev/null +++ b/vcpkg/ports/libspatialite/portfile.cmake @@ -0,0 +1,239 @@ +vcpkg_download_distfile(ARCHIVE + URLS "https://www.gaia-gis.it/gaia-sins/libspatialite-sources/libspatialite-${VERSION}.tar.gz" + FILENAME "libspatialite-${VERSION}.tar.gz" + SHA512 2745b373e31cea58623224def6090c491b58409803bb71231450dfa2cfdf3aafc3fc6f680585d55d085008f8cf362c3062ae67ffc7d80257775a22eb81ef1e57 +) + +vcpkg_extract_source_archive(SOURCE_PATH + ARCHIVE "${ARCHIVE}" + PATCHES + fix-makefiles.patch + fix-linux-configure.patch + gaiaconfig-msvc.patch + fix-mingw.patch + fix-utf8-source.patch + android-builtin-iconv.diff + # https://groups.google.com/g/spatialite-users/c/FLBqJNIDkNQ + # https://groups.google.com/g/spatialite-users/c/nyT4iAJbttY + libxml2-no-http.diff +) + +vcpkg_check_features(OUT_FEATURE_OPTIONS unused + FEATURES + freexl ENABLE_FREEXL + gcp ENABLE_GCP + rttopo ENABLE_RTTOPO +) + +set(pkg_config_modules geos libxml-2.0 proj sqlite3 zlib) +if(ENABLE_FREEXL) + list(APPEND pkg_config_modules freexl) +endif() +if(ENABLE_RTTOPO) + list(APPEND pkg_config_modules rttopo) +endif() + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + x_vcpkg_pkgconfig_get_modules( + PREFIX PKGCONFIG + MODULES --msvc-syntax ${pkg_config_modules} + CFLAGS + LIBS + ) + + # cherry-picked from Makefile.vc (CFLAGS) and nmake.opt (OPTFLAGS) + set(CFLAGS "/fp:precise /W4 /D_CRT_SECURE_NO_WARNINGS /DYY_NO_UNISTD_H -I./src/headers -I./src/topology -I.") + set(WANT_LIB spatialite.lib) + if (VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + string(APPEND CFLAGS " /DDLL_EXPORT") + set(WANT_LIB spatialite_i.lib) + endif() + if(NOT ENABLE_FREEXL) + string(APPEND CFLAGS " /DOMIT_FREEXL") + endif() + if(ENABLE_GCP) + string(APPEND CFLAGS " /DENABLE_GCP") + endif() + if(ENABLE_RTTOPO) + string(APPEND CFLAGS " /DENABLE_RTTOPO") + endif() + + set(SYSTEM_LIBS "iconv.lib charset.lib") + + file(TO_NATIVE_PATH "${CURRENT_PACKAGES_DIR}" INST_DIR) + + vcpkg_install_nmake( + SOURCE_PATH "${SOURCE_PATH}" + CL_LANGUAGE C + OPTIONS + "WANT_LIB=${WANT_LIB}" + OPTIONS_RELEASE + "CFLAGS=${CFLAGS} ${PKGCONFIG_CFLAGS_RELEASE}" + "LIBS=${PKGCONFIG_LIBS_RELEASE} ${SYSTEM_LIBS}" + "INSTDIR=${INST_DIR}" + OPTIONS_DEBUG + "CFLAGS=${CFLAGS} ${PKGCONFIG_CFLAGS_DEBUG}" + "LIBS=${PKGCONFIG_LIBS_DEBUG} ${SYSTEM_LIBS}" + "INSTDIR=${INST_DIR}\\debug" + ) + vcpkg_copy_pdbs() + + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + + file(GLOB_RECURSE headers "${CURRENT_PACKAGES_DIR}/include/*.h") + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + foreach(file IN LISTS headers) + vcpkg_replace_string("${file}" "#ifdef DLL_EXPORT" "#if 0" IGNORE_UNCHANGED) + endforeach() + else() + foreach(file IN LISTS headers) + vcpkg_replace_string("${file}" "#ifdef DLL_EXPORT" "#if 1" IGNORE_UNCHANGED) + vcpkg_replace_string("${file}" "__declspec(dllexport)" "__declspec(dllimport)" IGNORE_UNCHANGED) + endforeach() + endif() + + set(infile "${SOURCE_PATH}/spatialite.pc.in") + set(libdir [[${prefix}/lib]]) + set(exec_prefix [[${prefix}]]) + list(JOIN pkg_config_modules " " requires_private) + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + set(includedir [[${prefix}/include]]) + set(outfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/spatialite.pc") + configure_file("${infile}" "${outfile}" @ONLY) + vcpkg_replace_string("${outfile}" "Libs:" "Requires.private: ${requires_private}\nLibs.private: -liconv -lcharset\nLibs:") + vcpkg_replace_string("${outfile}" " -lm" " ") + endif() + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + set(includedir [[${prefix}/../include]]) + set(outfile "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/spatialite.pc") + configure_file("${infile}" "${outfile}" @ONLY) + vcpkg_replace_string("${outfile}" "Libs:" "Requires.private: ${requires_private}\nLibs.private: -liconv -lcharset\nLibs:") + vcpkg_replace_string("${outfile}" " -lm" " ") + endif() +else() + if(ENABLE_FREEXL) + set(FREEXL_OPTION "--enable-freexl") + else() + set(FREEXL_OPTION "--disable-freexl") + endif() + if(ENABLE_GCP) + set(GCP_OPTION "--enable-gcp") + else() + set(GCP_OPTION "--disable-gcp") + endif() + if(ENABLE_GEOCALLBACKS) + set(GEOCALLBACKS_OPTION "--enable-geocallbacks") + else() + set(GEOCALLBACKS_OPTION "--disable-geocallbacks") + endif() + if(ENABLE_RTTOPO) + set(RTTOPO_OPTION "--enable-rttopo") + else() + set(RTTOPO_OPTION "--disable-rttopo") + endif() + list(REMOVE_ITEM pkg_config_modules libxml2) # handled properly by configure + x_vcpkg_pkgconfig_get_modules( + PREFIX PKGCONFIG + MODULES ${pkg_config_modules} + LIBS + ) + if(VCPKG_TARGET_IS_MINGW) + # Avoid system libs (as detected by cmake) in exported pc files + set(SYSTEM_LIBS "") + elseif(VCPKG_TARGET_IS_ANDROID) + set(SYSTEM_LIBS "\$LIBS -llog") + else() + set(SYSTEM_LIBS "\$LIBS") + endif() + # libspatialite needs some targets literally + if(VCPKG_TARGET_IS_ANDROID) + set(TARGET_ALIAS "--target=android") + elseif(VCPKG_TARGET_IS_MINGW) + set(TARGET_ALIAS "--target=mingw32") + elseif(VCPKG_TARGET_IS_OSX) + set(TARGET_ALIAS "--target=macosx") + else() + set(TARGET_ALIAS "") + endif() + vcpkg_make_configure( + SOURCE_PATH "${SOURCE_PATH}" + AUTORECONF + OPTIONS + ${TARGET_ALIAS} + ${FREEXL_OPTION} + ${GCP_OPTION} + ${RTTOPO_OPTION} + "--disable-examples" + "--disable-minizip" + "cross_compiling=yes" # avoid conftest rpath trouble + OPTIONS_DEBUG + "LIBS=${PKGCONFIG_LIBS_DEBUG} ${SYSTEM_LIBS}" + OPTIONS_RELEASE + "LIBS=${PKGCONFIG_LIBS_RELEASE} ${SYSTEM_LIBS}" + ) + + # automake adds the basedir of the generated config to `DEFAULT_INCLUDES`, + # but libspatialite uses `#include `. + file(GLOB_RECURSE makefiles + "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/Makefile" + "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/Makefile" + ) + foreach(makefile IN LISTS makefiles) + vcpkg_replace_string("${makefile}" " -I$(top_builddir)/./src/headers/spatialite" " -I$(top_builddir)/./src/headers" IGNORE_UNCHANGED) + endforeach() + + # On iOS libtool has no shared library support and falls back to static archives + # for both lib.la and .la in every src/ subdirectory, naming both + # .libs/lib.a and causing a parallel build race. Serialize all of them. + if(VCPKG_TARGET_IS_IOS) + file(GLOB ios_makefiles + "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/src/*/Makefile" + "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/src/*/Makefile" + ) + foreach(makefile IN LISTS ios_makefiles) + file(READ "${makefile}" _contents) + string(REPLACE "\nnoinst_LTLIBRARIES = " "\n.NOTPARALLEL:\nnoinst_LTLIBRARIES = " _contents "${_contents}") + file(WRITE "${makefile}" "${_contents}") + endforeach() + endif() + + vcpkg_make_install() + + if(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release") + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/plugins/${PORT}") + file(RENAME "${CURRENT_PACKAGES_DIR}/lib/mod_spatialite.dll" "${CURRENT_PACKAGES_DIR}/plugins/${PORT}/mod_spatialite.dll") + endif() + if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/debug/plugins/${PORT}") + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/mod_spatialite.dll" "${CURRENT_PACKAGES_DIR}/debug/plugins/${PORT}/mod_spatialite.dll") + endif() + endif() +endif() + +vcpkg_fixup_pkgconfig() + +# Handle copyright +set(outfile "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") +if(NOT ENABLE_GCP AND NOT ENABLE_RTTOPO) + file(READ "${SOURCE_PATH}/COPYING" mpl) + file(WRITE "${outfile}" + "SpatiaLite[${FEATURES}] is licensed under the MPL tri-license terms;\n" + "you are free to choose the best-fit license between:\n" + "- the MPL 1.1\n" + "- the GPL v2.0 or any subsequent version\n" + "- the LGPL v2.1 or any subsequent version.\n\n" + "# MPL 1.1 (from COPYING)\n\n" + "${mpl}\n" + ) +else() + file(WRITE "${outfile}" + "SpatiaLite[${FEATURES}] is licensed under:\n" + "the GPL v2.0 or any subsequent version.\n\n" + ) +endif() +file(READ "${SOURCE_PATH}/src/control_points/COPYING" gpl) +file(APPEND "${outfile}" + "# GPL v2.0 (from src/control_points/COPYING)\n\n" + "${gpl}\n" +) diff --git a/vcpkg/ports/libspatialite/vcpkg.json b/vcpkg/ports/libspatialite/vcpkg.json new file mode 100644 index 000000000..e2d22e057 --- /dev/null +++ b/vcpkg/ports/libspatialite/vcpkg.json @@ -0,0 +1,55 @@ +{ + "name": "libspatialite", + "version": "5.1.0", + "port-version": 6, + "description": "SpatiaLite is an open source library intended to extend the SQLite core to support fully fledged Spatial SQL capabilities.", + "homepage": "https://www.gaia-gis.it/fossil/libspatialite/index", + "license": null, + "supports": "!uwp", + "dependencies": [ + "geos", + "libiconv", + { + "name": "libxml2", + "default-features": false + }, + "proj", + { + "name": "sqlite3", + "default-features": false, + "features": [ + "rtree" + ] + }, + { + "name": "vcpkg-make", + "host": true, + "platform": "!windows | mingw" + }, + { + "name": "vcpkg-pkgconfig-get-modules", + "host": true + }, + "zlib" + ], + "default-features": [ + "freexl" + ], + "features": { + "freexl": { + "description": "FreeXL spreadsheet file support.", + "dependencies": [ + "freexl" + ] + }, + "gcp": { + "description": "Ground control points support. This feature reduces the license options to GPLv2+." + }, + "rttopo": { + "description": "RTTOPO support. This feature reduces the license options to GPLv2+.", + "dependencies": [ + "librttopo" + ] + } + } +} diff --git a/vcpkg/triplets/arm64-ios.cmake b/vcpkg/triplets/arm64-ios.cmake index 073879ab0..43c0c08e9 100644 --- a/vcpkg/triplets/arm64-ios.cmake +++ b/vcpkg/triplets/arm64-ios.cmake @@ -3,9 +3,9 @@ set(VCPKG_CRT_LINKAGE dynamic) set(VCPKG_LIBRARY_LINKAGE static) set(VCPKG_CMAKE_SYSTEM_NAME iOS) set(VCPKG_OSX_ARCHITECTURES arm64) - -set(VCPKG_MAKE_BUILD_TRIPLET "--host=aarch64-apple-ios${VCPKG_OSX_DEPLOYMENT_TARGET}") + set(VCPKG_OSX_DEPLOYMENT_TARGET 16.0) +set(VCPKG_MAKE_BUILD_TRIPLET "--host=aarch64-apple-ios${VCPKG_OSX_DEPLOYMENT_TARGET}") set(VCPKG_BUILD_TYPE release) set(VCPKG_CXX_FLAGS "-fvisibility=hidden") From 2282047ba769f400b81b8b70cc99be4120325b74 Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Thu, 14 May 2026 14:13:28 +0200 Subject: [PATCH 59/61] Fix qtmultimedia build on iOS --- vcpkg.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/vcpkg.json b/vcpkg.json index 3cbfc30c8..521e2f821 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -99,11 +99,20 @@ "qtlocation", { "name": "qtmultimedia", + "default-features": false, "features": [ { "name": "ffmpeg", "platform": "linux | android | windows" }, + { + "name": "pipewire", + "platform": "linux" + }, + { + "name": "pulseaudio", + "platform": "linux" + }, "qml" ] }, From a624becab82d81f8899525379cd9092aac69b0cd Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Fri, 15 May 2026 10:10:41 +0200 Subject: [PATCH 60/61] Fix windows QGIS again --- vcpkg/ports/qgis/point-cloud-guard.patch | 33 +++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/vcpkg/ports/qgis/point-cloud-guard.patch b/vcpkg/ports/qgis/point-cloud-guard.patch index c5e1ab5a9..d03f8a4d5 100644 --- a/vcpkg/ports/qgis/point-cloud-guard.patch +++ b/vcpkg/ports/qgis/point-cloud-guard.patch @@ -1,17 +1,44 @@ diff --git a/external/lazperf/lazperf_base.hpp b/external/lazperf/lazperf_base.hpp -index 864ca2c2f7d..f31ade579cd 100644 +index 864ca2c2f7d..234af5a50ec 100644 --- a/external/lazperf/lazperf_base.hpp +++ b/external/lazperf/lazperf_base.hpp -@@ -7,7 +7,9 @@ +@@ -7,8 +7,12 @@ #define LAZPERF_VERSION 3.0.0 #ifdef _WIN32 +#if WITH_EPT || WITH_COPC #define LAZPERF_EXPORT __declspec(dllexport) -+#endif #else ++#define LAZPERF_EXPORT ++#endif ++#else // This may not be necessary. The GCC doc says it take __declspec((dllexport)) #define LAZPERF_EXPORT __attribute__((visibility ("default"))) + #endif +diff --git a/src/core/pointcloud/qgscopcpointcloudindex.h b/src/core/pointcloud/qgscopcpointcloudindex.h +index 2b18d53ce89..f68682d8c39 100644 +--- a/src/core/pointcloud/qgscopcpointcloudindex.h ++++ b/src/core/pointcloud/qgscopcpointcloudindex.h +@@ -32,7 +32,9 @@ + #include "qgspointcloudstatistics.h" + + #include "qgslazinfo.h" ++#if WITH_EPT || WITH_COPC + #include "lazperf/vlr.hpp" ++#endif + + ///@cond PRIVATE + #define SIP_NO_FILE +@@ -109,7 +111,9 @@ class CORE_EXPORT QgsCopcPointCloudIndex: public QgsAbstractPointCloudIndex + bool mIsValid = false; + Qgis::PointCloudAccessType mAccessType = Qgis::PointCloudAccessType::Local; + mutable std::ifstream mCopcFile; ++#if WITH_EPT || WITH_COPC + mutable lazperf::copc_info_vlr mCopcInfoVlr; ++#endif + mutable QHash> mHierarchyNodePos; //!< Additional data hierarchy for COPC + + mutable QMutex mFileMutex; diff --git a/src/core/pointcloud/qgspointcloudeditingindex.cpp b/src/core/pointcloud/qgspointcloudeditingindex.cpp index 40aecdc9a1f..76280678ba0 100644 --- a/src/core/pointcloud/qgspointcloudeditingindex.cpp From 20342017b95d2b1e3aeb89b0a0ca93fc5d4695cf Mon Sep 17 00:00:00 2001 From: Matej Bagar Date: Fri, 15 May 2026 12:16:05 +0200 Subject: [PATCH 61/61] Fix windows packager --- .github/workflows/win.yml | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/.github/workflows/win.yml b/.github/workflows/win.yml index b854ae37d..6a5e6c099 100644 --- a/.github/workflows/win.yml +++ b/.github/workflows/win.yml @@ -56,8 +56,8 @@ jobs: uses: lukka/get-cmake@latest with: cmakeVersion: ${{ env.CMAKE_VERSION }} - - - name: Install ccache + + - name: Install NSIS shell: cmd run: | choco install nsis @@ -141,40 +141,40 @@ jobs: -DCMAKE_CXX_COMPILER_LAUNCHER=ccache ^ -S ${{ steps.vars.outputs.WORKSPACE_DIR }}/mm ^ -B . - + - name: Build app shell: cmd run: | cd build-mm - + set PATH=${{ env.VCPKG_ROOT }};%PATH% - + cmake --build ${{ github.workspace }}\build-mm --config Release --verbose IF NOT EXIST Release\MerginMaps.exe (echo err_MERGINMAPS_BUILD & exit /b 1) - + - name: Install app shell: cmd run: | - cd build-mm - cmake --install ${{ github.workspace }}\build-mm --config Release --verbose - - mkdir C:\mm-package - mkdir C:\mm-package\stage - robocopy ${{ steps.vars.outputs.WORKSPACE_DIR }}/install-mm C:\mm-package\stage /E /NFL - dir C:\mm-package\stage + cd build-mm + cmake --install ${{ github.workspace }}\build-mm --config Release --verbose + + mkdir C:\mm-package + mkdir C:\mm-package\stage + robocopy ${{ steps.vars.outputs.WORKSPACE_DIR }}/install-mm C:\mm-package\stage /E /NFL + dir C:\mm-package\stage - name: Get TimeStamp id: time uses: josStorer/get-current-time@v2.0.2 with: format: 'YYYYMMDD' - + - name: Create package shell: cmd run: | - makensis.exe mm\scripts\MM_win.nsi - xcopy C:\mm-package\merginmaps-app-win-x86_64.exe mergin-maps-mobile-win64-${{ steps.time.outputs.formattedTime }}-${{ github.run_number }}.exe* /Y + "C:\Program Files (x86)\NSIS\makensis.exe" mm\scripts\MM_win.nsi + xcopy C:\mm-package\merginmaps-app-win-x86_64.exe mergin-maps-mobile-win64-${{ steps.time.outputs.formattedTime }}-${{ github.run_number }}.exe* /Y - name: Upload Sdk in Artifacts uses: actions/upload-artifact@v6 @@ -182,4 +182,3 @@ jobs: path: mergin-maps-mobile-win64-${{ steps.time.outputs.formattedTime }}-${{ github.run_number }}.exe name: Mergin Maps ${{ env.MM_VERSION_CODE }} win64 if-no-files-found: error -