From c983902e32d721f5ac5a404d3d743a4726d2c965 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 18 May 2025 13:56:43 +0200 Subject: [PATCH 01/12] [qtbase] Add android support --- ports/qtbase/cmake/qt_install_submodule.cmake | 28 +++++++++++++++++-- ports/qtbase/portfile.cmake | 17 +++++++++-- ports/qtbase/vcpkg.json | 22 +++++++++++---- scripts/ci.baseline.txt | 3 ++ versions/baseline.json | 2 +- versions/q-/qtbase.json | 5 ++++ 6 files changed, 66 insertions(+), 11 deletions(-) diff --git a/ports/qtbase/cmake/qt_install_submodule.cmake b/ports/qtbase/cmake/qt_install_submodule.cmake index 2f05a8b6f2f55b..0456a9653aba65 100644 --- a/ports/qtbase/cmake/qt_install_submodule.cmake +++ b/ports/qtbase/cmake/qt_install_submodule.cmake @@ -8,8 +8,15 @@ 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." ) +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) @@ -210,7 +217,14 @@ function(qt_cmake_configure) INPUT_xcb INPUT_xkbcommon ) - set(Z_VCPKG_CMAKE_GENERATOR "${Z_VCPKG_CMAKE_GENERATOR}" PARENT_SCOPE) + 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) @@ -341,6 +355,14 @@ function(qt_install_submodule) 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() diff --git a/ports/qtbase/portfile.cmake b/ports/qtbase/portfile.cmake index 132563cfdd250b..fa3b3f089cfb30 100644 --- a/ports/qtbase/portfile.cmake +++ b/ports/qtbase/portfile.cmake @@ -158,7 +158,7 @@ else() list(APPEND FEATURE_NET_OPTIONS -DINPUT_openssl=no) endif() -if ("dnslookup" IN_LIST FEATURES AND NOT VCPKG_TARGET_IS_WINDOWS) +if ("dnslookup" IN_LIST FEATURES AND NOT VCPKG_TARGET_IS_ANDROID AND NOT VCPKG_TARGET_IS_WINDOWS) list(APPEND FEATURE_NET_OPTIONS -DFEATURE_libresolv:BOOL=ON) endif() @@ -332,11 +332,13 @@ qt_install_submodule(PATCHES ${${PORT}_PATCHES} -DINPUT_bundled_xcb_xinput:STRING=no -DFEATURE_force_debug_info:BOOL=ON -DFEATURE_relocatable:BOOL=ON + -DQT_AUTODETECT_ANDROID:BOOL=ON # Use vcpkg toolchain as is CONFIGURE_OPTIONS_RELEASE CONFIGURE_OPTIONS_DEBUG -DFEATURE_debug:BOOL=ON CONFIGURE_OPTIONS_MAYBE_UNUSED FEATURE_appstore_compliant # only used for android/ios + QT_AUTODETECT_ANDROID ) # Install CMake helper scripts @@ -411,6 +413,11 @@ foreach(_config debug release) endif() endforeach() endforeach() +if(VCPKG_CROSSCOMPILING AND NOT CMAKE_HOST_WIN32) + foreach(name IN ITEMS qmake qmake6 qtpaths qtpaths6) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/Qt6/bin/${name}" "${CURRENT_HOST_INSTALLED_DIR}/" "\"\$script_dir_path\"/../../../../${HOST_TRIPLET}/") + endforeach() +endif() # Fixup qt.toolchain.cmake set(qttoolchain "${CURRENT_PACKAGES_DIR}/share/Qt6/qt.toolchain.cmake") @@ -489,11 +496,17 @@ if(EXISTS "${target_qt_conf}") endif() endif() +if(VCPKG_TARGET_IS_ANDROID) + vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/Qt6Core/Qt6AndroidMacros.cmake" + [[ set(cmake_dir "${prefix_path}/${${export_namespace_upper}_INSTALL_LIBS}/cmake")]] + [[ set(cmake_dir "${prefix_path}/share")]] + ) +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 "") diff --git a/ports/qtbase/vcpkg.json b/ports/qtbase/vcpkg.json index 51b5cd00b1fef4..f52fbf626f0a52 100644 --- a/ports/qtbase/vcpkg.json +++ b/ports/qtbase/vcpkg.json @@ -1,7 +1,7 @@ { "name": "qtbase", "version": "6.8.3", - "port-version": 1, + "port-version": 2, "description": "Qt Base (Core, Gui, Widgets, Network, ...)", "homepage": "https://www.qt.io/", "license": null, @@ -31,7 +31,8 @@ "name": "qtbase", "default-features": false, "features": [ - "cups" + "cups", + "thread" ], "platform": "osx" }, @@ -39,9 +40,10 @@ "name": "qtbase", "default-features": false, "features": [ + "concurrent", "thread" ], - "platform": "osx" + "platform": "android" }, { "name": "qtbase", @@ -70,7 +72,7 @@ "concurrent", { "name": "dbus", - "platform": "!(static & windows)" + "platform": "!(static & windows) & !android" }, "dnslookup", "doubleconversion", @@ -208,7 +210,7 @@ }, "egl": { "description": "EGL", - "supports": "linux", + "supports": "android | linux", "dependencies": [ "egl" ] @@ -307,6 +309,16 @@ ], "platform": "osx" }, + { + "name": "qtbase", + "default-features": false, + "features": [ + "egl", + "gles2", + "opengl" + ], + "platform": "android" + }, { "name": "qtbase", "default-features": false, diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 40dbbe9766193a..1380d32be08ee0 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -1110,6 +1110,9 @@ qt:x64-windows-release=pass qt:x64-windows-static-md=pass qt:x64-windows-static=pass qt:x64-windows=pass +qtbase:arm-neon-android=pass +qtbase:arm64-android=pass +qtbase:x64-android=pass vcpkg-ci-arrow:x64-linux=pass vcpkg-ci-arrow:x64-osx=pass vcpkg-ci-arrow:x64-windows-release=pass diff --git a/versions/baseline.json b/versions/baseline.json index d79bb2f43b8dee..a5bb0efb5eb07f 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -7814,7 +7814,7 @@ }, "qtbase": { "baseline": "6.8.3", - "port-version": 1 + "port-version": 2 }, "qtcharts": { "baseline": "6.8.3", diff --git a/versions/q-/qtbase.json b/versions/q-/qtbase.json index 6375098db9cf87..968e7e91710f55 100644 --- a/versions/q-/qtbase.json +++ b/versions/q-/qtbase.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "71fb45f49c5c30c223aa1aaa0ac6e19f1c4ffa77", + "version": "6.8.3", + "port-version": 2 + }, { "git-tree": "8fadd1802001862cb8fba5b579469c2cb8bb8b30", "version": "6.8.3", From 1ab85c3b6c9e7dd3d0426598121d348a9828186c Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 18 May 2025 13:58:27 +0200 Subject: [PATCH 02/12] [vcpkg-qmake] Pass programs with absolute path --- ports/vcpkg-qmake/vcpkg.json | 5 ++--- ports/vcpkg-qmake/vcpkg_qmake_configure.cmake | 9 +-------- versions/baseline.json | 4 ++-- versions/v-/vcpkg-qmake.json | 5 +++++ 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/ports/vcpkg-qmake/vcpkg.json b/ports/vcpkg-qmake/vcpkg.json index 77d1a9407becd9..65782aa3ef4b62 100644 --- a/ports/vcpkg-qmake/vcpkg.json +++ b/ports/vcpkg-qmake/vcpkg.json @@ -1,8 +1,7 @@ { "name": "vcpkg-qmake", - "version-date": "2023-03-22", - "port-version": 3, - "documentation": "https://vcpkg.io/en/docs/README.html", + "version-date": "2024-11-17", + "documentation": "https://learn.microsoft.com/vcpkg/maintainers/functions/vcpkg_qmake_configure", "license": "MIT", "supports": "native", "dependencies": [ diff --git a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake index c6458bf231ef5b..e6d135864a07f9 100644 --- a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake +++ b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake @@ -37,14 +37,7 @@ function(vcpkg_qmake_configure) endif() function(qmake_append_program var qmake_var value) - get_filename_component(prog "${value}" NAME) - # QMake assumes everything is on PATH? - vcpkg_list(APPEND ${var} "${qmake_var}=${prog}") - find_program(${qmake_var} NAMES "${prog}") - cmake_path(COMPARE "${${qmake_var}}" EQUAL "${value}" correct_prog_on_path) - if(NOT correct_prog_on_path AND NOT "${value}" MATCHES "|:") - message(FATAL_ERROR "Detect path mismatch for '${qmake_var}'. '${value}' is not the same as '${${qmake_var}}'. Please correct your PATH!") - endif() + vcpkg_list(APPEND ${var} "${qmake_var}=\"${value}\"") unset(${qmake_var}) unset(${qmake_var} CACHE) set(${var} "${${var}}" PARENT_SCOPE) # Is this correct? Or is there a vcpkg_list command for that? diff --git a/versions/baseline.json b/versions/baseline.json index a5bb0efb5eb07f..dfe40655f4563a 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -9777,8 +9777,8 @@ "port-version": 0 }, "vcpkg-qmake": { - "baseline": "2023-03-22", - "port-version": 3 + "baseline": "2024-11-17", + "port-version": 0 }, "vcpkg-tool-bazel": { "baseline": "5.2.0", diff --git a/versions/v-/vcpkg-qmake.json b/versions/v-/vcpkg-qmake.json index 346e6b3d7fe30f..b28e9884ab557a 100644 --- a/versions/v-/vcpkg-qmake.json +++ b/versions/v-/vcpkg-qmake.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "e2e76b7ef7091cd8519c37638b551b93d06b86a6", + "version-date": "2024-11-17", + "port-version": 0 + }, { "git-tree": "6679e34e75a78732fb13cd74a39dbd358b3fd5d7", "version-date": "2023-03-22", From fbe61ca630e0a9013a6df0f4c51e9c51dd0e7c61 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 18 May 2025 13:59:37 +0200 Subject: [PATCH 03/12] [libqglviewer] No android support --- ports/libqglviewer/vcpkg.json | 11 +++++++---- versions/baseline.json | 2 +- versions/l-/libqglviewer.json | 5 +++++ 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ports/libqglviewer/vcpkg.json b/ports/libqglviewer/vcpkg.json index fffe694442cff4..324bb761db711e 100644 --- a/ports/libqglviewer/vcpkg.json +++ b/ports/libqglviewer/vcpkg.json @@ -1,11 +1,14 @@ { "name": "libqglviewer", "version": "2.9.1", - "port-version": 3, - "description": "libQGLViewer is an open source C++ library based on Qt that eases the creation of OpenGL 3D viewers.", - "homepage": "http://libqglviewer.com/", + "port-version": 4, + "description": [ + "libQGLViewer is an open source C++ library based on Qt that eases the creation of OpenGL 3D viewers.", + "Attention: Last upstream activity in December 2022." + ], + "homepage": "https://github.com/GillesDebunne/libQGLViewer", "license": "GPL-2.0-or-later", - "supports": "!xbox", + "supports": "!android & !xbox", "dependencies": [ "opengl", { diff --git a/versions/baseline.json b/versions/baseline.json index dfe40655f4563a..23df9d6273ec57 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5178,7 +5178,7 @@ }, "libqglviewer": { "baseline": "2.9.1", - "port-version": 3 + "port-version": 4 }, "libqrencode": { "baseline": "4.1.1", diff --git a/versions/l-/libqglviewer.json b/versions/l-/libqglviewer.json index 226bf5051ba9c8..e8ec94851fb78e 100644 --- a/versions/l-/libqglviewer.json +++ b/versions/l-/libqglviewer.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "77d916643b470d51a8ce95780de9b8f06e41d1f6", + "version": "2.9.1", + "port-version": 4 + }, { "git-tree": "e394ba82a89f2e5faa8207b21df07c9cba84645a", "version": "2.9.1", From b283b4f5eb982640a892715c1728bb7c8ac82fa7 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 18 May 2025 19:03:38 +0200 Subject: [PATCH 04/12] Baseline --- scripts/ci.baseline.txt | 13 +++++++++++++ scripts/ci.feature.baseline.txt | 9 +++++++-- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 1380d32be08ee0..cc1c48aae09f8d 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -806,6 +806,9 @@ python3:x64-android=fail qpid-proton:arm64-uwp=fail qpid-proton:x64-uwp=fail qpid-proton:x64-windows-static=fail +qt-advanced-docking-system:arm-neon-android=fail +qt-advanced-docking-system:arm64-android=fail +qt-advanced-docking-system:x64-android=fail qt5-base:arm-neon-android=fail qt5-base:arm64-android=fail qt5-base:arm64-windows-static-md=fail @@ -829,6 +832,15 @@ qt5-webengine:x86-windows=skip # Missing system libraries qt5-x11extras:arm64-osx=skip qt5-x11extras:x64-osx=skip +qtmultimedia:arm-neon-android=fail +qtmultimedia:arm64-android=fail +qtmultimedia:x64-android=fail +qtquick3d:arm-neon-android=fail +qtquick3d:arm64-android=fail +qtquick3d:x64-android=fail +qtwayland:arm-neon-android=fail +qtwayland:arm64-android=fail +qtwayland:x64-android=fail # Missing system libraries qtwayland:arm64-osx=skip qtwayland:x64-osx=skip @@ -1110,6 +1122,7 @@ qt:x64-windows-release=pass qt:x64-windows-static-md=pass qt:x64-windows-static=pass qt:x64-windows=pass +# qt:*-android=pass : qtmultimedia, qtquick3d, qtwayland fail qtbase:arm-neon-android=pass qtbase:arm64-android=pass qtbase:x64-android=pass diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index b44a805eaaffbc..416de08998ac4f 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -416,14 +416,17 @@ qbittorrent:x64-osx=fail # Not yet ready for these platforms. qpid-proton:arm-uwp=fail qpid-proton:x64-uwp=fail qpid-proton:x64-windows-static=fail +qt-advanced-docking-system(android)=fail qt5-base:arm64-windows=fail qt5-canvas3d=skip # Skip deprecated Qt module (remove after 1 year or longer due to vcpkg upgrade not handling removed ports correctly) qt5-wayland:x64-osx=fail # Missing system libraries qt5-webengine = fail # Missing prerequisites for CI success qt5-x11extras(osx)=fail # Missing system libraries qt5-x11extras(windows)=fail # Missing libraries +qtmultimedia(android)=fail +qtquick3d(android)=fail qtvirtualkeyboard[t9write] = skip # depends on the port 't9write' that does not exists -qtwayland(osx)=fail # Missing system libraries +qtwayland(android | osx)=fail # Missing system libraries qwt-qt6:x64-osx=fail rapidstring:arm-uwp=fail rapidstring:arm64-windows=fail @@ -1836,7 +1839,9 @@ qtactiveqt:x64-uwp = cascade qtapplicationmanager:arm64-osx = cascade qtapplicationmanager:arm64-uwp = cascade qtapplicationmanager:x64-uwp = cascade +qtbase[dbus](android) = cascade qtbase[sql-mysql]:x86-windows = cascade +qtbase[sql-mysql](android) = cascade qtcharts:arm64-uwp = cascade qtcharts:x64-uwp = cascade qtcoap:arm64-uwp = cascade @@ -2255,7 +2260,7 @@ poco[core,mariadb,mysql] = options # You can not install mariadb and mysql at th qt3d[animation] = options # is a requirement, see https://github.com/microsoft/vcpkg/issues/31336 qt3d[extras] = options # is a requirement, see https://github.com/microsoft/vcpkg/issues/31336 qt5compat[iconv](!uwp) = feature-fails # requires qtbase without icu -qtbase[fontconfig] = feature-fails # see https://github.com/microsoft/vcpkg/issues/31247 +qtbase[gles3](android) = feature-fails qtbase[sql-oci](!(arm & windows)) = feature-fails # see https://github.com/microsoft/vcpkg/issues/32052 qtmultimedia[core,ffmpeg,gstreamer,qml,widgets](osx) = combination-fails # Error: Qt will by default autolink both plugin backends in static builds leading to symbol collisions and a build failure in dependent ports! As such in static builds only one backend is allowed by default. qtopcua[uacpp](!uwp) = feature-fails # Unified Automation C++ SDK is not installed From 490c9650be0094d40e2c11c9ed2714db1eb024f0 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 18 May 2025 19:03:54 +0200 Subject: [PATCH 05/12] [qtbase] Fixup --- ports/qtbase/portfile.cmake | 4 ++++ ports/qtbase/vcpkg.json | 2 ++ versions/q-/qtbase.json | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/ports/qtbase/portfile.cmake b/ports/qtbase/portfile.cmake index fa3b3f089cfb30..b4e6dd79a1da83 100644 --- a/ports/qtbase/portfile.cmake +++ b/ports/qtbase/portfile.cmake @@ -41,6 +41,10 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT "doubleconversion" IN_LIST FEATURES) message(FATAL_ERROR "${PORT} requires feature doubleconversion on windows!" ) endif() +# Feature like glib depend on pkg-config +vcpkg_find_acquire_program(PKGCONFIG) +set(ENV{PKG_CONFIG} "${PKGCONFIG}") + 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 " diff --git a/ports/qtbase/vcpkg.json b/ports/qtbase/vcpkg.json index f52fbf626f0a52..269f085571fbd3 100644 --- a/ports/qtbase/vcpkg.json +++ b/ports/qtbase/vcpkg.json @@ -217,12 +217,14 @@ }, "fontconfig": { "description": "Use fontconfig", + "supports": "!osx & !windows", "dependencies": [ "fontconfig", { "name": "qtbase", "default-features": false, "features": [ + "freetype", "gui" ] } diff --git a/versions/q-/qtbase.json b/versions/q-/qtbase.json index 968e7e91710f55..2290b452b9e64a 100644 --- a/versions/q-/qtbase.json +++ b/versions/q-/qtbase.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "71fb45f49c5c30c223aa1aaa0ac6e19f1c4ffa77", + "git-tree": "7609c094667f6c801689c8c1dd97b63474a06b07", "version": "6.8.3", "port-version": 2 }, From c450f432e07d3c400163cec7782e26fbbcff921b Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 18 May 2025 19:03:54 +0200 Subject: [PATCH 06/12] [qtbase] Fixup --- ports/qtbase/portfile.cmake | 1 + versions/q-/qtbase.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/qtbase/portfile.cmake b/ports/qtbase/portfile.cmake index b4e6dd79a1da83..d5c3c7df555a20 100644 --- a/ports/qtbase/portfile.cmake +++ b/ports/qtbase/portfile.cmake @@ -337,6 +337,7 @@ qt_install_submodule(PATCHES ${${PORT}_PATCHES} -DFEATURE_force_debug_info:BOOL=ON -DFEATURE_relocatable:BOOL=ON -DQT_AUTODETECT_ANDROID:BOOL=ON # Use vcpkg toolchain as is + -DQT_NO_OVERRIDE_PKG_CONFIG_LIBDIR:BOOL=ON CONFIGURE_OPTIONS_RELEASE CONFIGURE_OPTIONS_DEBUG -DFEATURE_debug:BOOL=ON diff --git a/versions/q-/qtbase.json b/versions/q-/qtbase.json index 2290b452b9e64a..9a564c721155c8 100644 --- a/versions/q-/qtbase.json +++ b/versions/q-/qtbase.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "7609c094667f6c801689c8c1dd97b63474a06b07", + "git-tree": "369123fafa5ee1639cc67333d41b9c421e458780", "version": "6.8.3", "port-version": 2 }, From 25ea53897232039272af4a9d5294f3733345eb18 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Sun, 18 May 2025 22:07:13 +0200 Subject: [PATCH 07/12] Revert "[vcpkg-qmake] Pass programs with absolute path" This reverts commit 1ab85c3b6c9e7dd3d0426598121d348a9828186c. --- ports/vcpkg-qmake/vcpkg.json | 5 +++-- ports/vcpkg-qmake/vcpkg_qmake_configure.cmake | 9 ++++++++- versions/baseline.json | 4 ++-- versions/v-/vcpkg-qmake.json | 5 ----- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/ports/vcpkg-qmake/vcpkg.json b/ports/vcpkg-qmake/vcpkg.json index 65782aa3ef4b62..77d1a9407becd9 100644 --- a/ports/vcpkg-qmake/vcpkg.json +++ b/ports/vcpkg-qmake/vcpkg.json @@ -1,7 +1,8 @@ { "name": "vcpkg-qmake", - "version-date": "2024-11-17", - "documentation": "https://learn.microsoft.com/vcpkg/maintainers/functions/vcpkg_qmake_configure", + "version-date": "2023-03-22", + "port-version": 3, + "documentation": "https://vcpkg.io/en/docs/README.html", "license": "MIT", "supports": "native", "dependencies": [ diff --git a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake index e6d135864a07f9..c6458bf231ef5b 100644 --- a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake +++ b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake @@ -37,7 +37,14 @@ function(vcpkg_qmake_configure) endif() function(qmake_append_program var qmake_var value) - vcpkg_list(APPEND ${var} "${qmake_var}=\"${value}\"") + get_filename_component(prog "${value}" NAME) + # QMake assumes everything is on PATH? + vcpkg_list(APPEND ${var} "${qmake_var}=${prog}") + find_program(${qmake_var} NAMES "${prog}") + cmake_path(COMPARE "${${qmake_var}}" EQUAL "${value}" correct_prog_on_path) + if(NOT correct_prog_on_path AND NOT "${value}" MATCHES "|:") + message(FATAL_ERROR "Detect path mismatch for '${qmake_var}'. '${value}' is not the same as '${${qmake_var}}'. Please correct your PATH!") + endif() unset(${qmake_var}) unset(${qmake_var} CACHE) set(${var} "${${var}}" PARENT_SCOPE) # Is this correct? Or is there a vcpkg_list command for that? diff --git a/versions/baseline.json b/versions/baseline.json index 23df9d6273ec57..bf36fc5d4e8925 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -9777,8 +9777,8 @@ "port-version": 0 }, "vcpkg-qmake": { - "baseline": "2024-11-17", - "port-version": 0 + "baseline": "2023-03-22", + "port-version": 3 }, "vcpkg-tool-bazel": { "baseline": "5.2.0", diff --git a/versions/v-/vcpkg-qmake.json b/versions/v-/vcpkg-qmake.json index b28e9884ab557a..346e6b3d7fe30f 100644 --- a/versions/v-/vcpkg-qmake.json +++ b/versions/v-/vcpkg-qmake.json @@ -1,10 +1,5 @@ { "versions": [ - { - "git-tree": "e2e76b7ef7091cd8519c37638b551b93d06b86a6", - "version-date": "2024-11-17", - "port-version": 0 - }, { "git-tree": "6679e34e75a78732fb13cd74a39dbd358b3fd5d7", "version-date": "2023-03-22", From 094c13a67e71add954a3e1472296cdfd9247f76f Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 19 May 2025 05:54:52 +0200 Subject: [PATCH 08/12] WIP --- ports/qtbase/portfile.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ports/qtbase/portfile.cmake b/ports/qtbase/portfile.cmake index d5c3c7df555a20..f3548a4f24aff7 100644 --- a/ports/qtbase/portfile.cmake +++ b/ports/qtbase/portfile.cmake @@ -125,7 +125,7 @@ FEATURES "icu" FEATURE_icu "pcre2" FEATURE_pcre2 #"icu" CMAKE_REQUIRE_FIND_PACKAGE_ICU - "glib" CMAKE_REQUIRE_FIND_PACKAGE_GLIB2 + #"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 @@ -337,7 +337,6 @@ qt_install_submodule(PATCHES ${${PORT}_PATCHES} -DFEATURE_force_debug_info:BOOL=ON -DFEATURE_relocatable:BOOL=ON -DQT_AUTODETECT_ANDROID:BOOL=ON # Use vcpkg toolchain as is - -DQT_NO_OVERRIDE_PKG_CONFIG_LIBDIR:BOOL=ON CONFIGURE_OPTIONS_RELEASE CONFIGURE_OPTIONS_DEBUG -DFEATURE_debug:BOOL=ON From 0477d9a6e9536e24d6977e06a42e06e0a5a011f7 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 19 May 2025 05:54:52 +0200 Subject: [PATCH 09/12] [vcpkg-qmake] Pass programs with absolute path --- ports/vcpkg-qmake/vcpkg.json | 5 ++--- ports/vcpkg-qmake/vcpkg_qmake_configure.cmake | 9 +-------- versions/baseline.json | 4 ++-- versions/v-/vcpkg-qmake.json | 5 +++++ 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/ports/vcpkg-qmake/vcpkg.json b/ports/vcpkg-qmake/vcpkg.json index 77d1a9407becd9..65782aa3ef4b62 100644 --- a/ports/vcpkg-qmake/vcpkg.json +++ b/ports/vcpkg-qmake/vcpkg.json @@ -1,8 +1,7 @@ { "name": "vcpkg-qmake", - "version-date": "2023-03-22", - "port-version": 3, - "documentation": "https://vcpkg.io/en/docs/README.html", + "version-date": "2024-11-17", + "documentation": "https://learn.microsoft.com/vcpkg/maintainers/functions/vcpkg_qmake_configure", "license": "MIT", "supports": "native", "dependencies": [ diff --git a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake index c6458bf231ef5b..e6d135864a07f9 100644 --- a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake +++ b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake @@ -37,14 +37,7 @@ function(vcpkg_qmake_configure) endif() function(qmake_append_program var qmake_var value) - get_filename_component(prog "${value}" NAME) - # QMake assumes everything is on PATH? - vcpkg_list(APPEND ${var} "${qmake_var}=${prog}") - find_program(${qmake_var} NAMES "${prog}") - cmake_path(COMPARE "${${qmake_var}}" EQUAL "${value}" correct_prog_on_path) - if(NOT correct_prog_on_path AND NOT "${value}" MATCHES "|:") - message(FATAL_ERROR "Detect path mismatch for '${qmake_var}'. '${value}' is not the same as '${${qmake_var}}'. Please correct your PATH!") - endif() + vcpkg_list(APPEND ${var} "${qmake_var}=\"${value}\"") unset(${qmake_var}) unset(${qmake_var} CACHE) set(${var} "${${var}}" PARENT_SCOPE) # Is this correct? Or is there a vcpkg_list command for that? diff --git a/versions/baseline.json b/versions/baseline.json index bf36fc5d4e8925..23df9d6273ec57 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -9777,8 +9777,8 @@ "port-version": 0 }, "vcpkg-qmake": { - "baseline": "2023-03-22", - "port-version": 3 + "baseline": "2024-11-17", + "port-version": 0 }, "vcpkg-tool-bazel": { "baseline": "5.2.0", diff --git a/versions/v-/vcpkg-qmake.json b/versions/v-/vcpkg-qmake.json index 346e6b3d7fe30f..b28e9884ab557a 100644 --- a/versions/v-/vcpkg-qmake.json +++ b/versions/v-/vcpkg-qmake.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "e2e76b7ef7091cd8519c37638b551b93d06b86a6", + "version-date": "2024-11-17", + "port-version": 0 + }, { "git-tree": "6679e34e75a78732fb13cd74a39dbd358b3fd5d7", "version-date": "2023-03-22", From 004fb0425984e2cdd9b025c934faeb6a915f5e20 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 19 May 2025 05:54:52 +0200 Subject: [PATCH 10/12] Quote cxx for windows shell --- ports/qtbase/msvc-moc.diff | 13 +++++++++++++ ports/qtbase/portfile.cmake | 1 + versions/q-/qtbase.json | 2 +- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 ports/qtbase/msvc-moc.diff diff --git a/ports/qtbase/msvc-moc.diff b/ports/qtbase/msvc-moc.diff new file mode 100644 index 00000000000000..7ba7c4abcd2900 --- /dev/null +++ b/ports/qtbase/msvc-moc.diff @@ -0,0 +1,13 @@ +diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf +index c5504b21..3e4eaa75 100644 +--- a/mkspecs/features/moc.prf ++++ b/mkspecs/features/moc.prf +@@ -33,7 +33,7 @@ if(gcc|intel_icl|msvc):!rim_qcc:!uikit:!no_moc_predefs:if(!macos|count(QMAKE_APP + gcc: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -dM -E -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} + else:msvc { +- moc_predefs.commands += $$QMAKE_CXX -Bx$$shell_quote($$shell_path($$QMAKE_QMAKE)) $$QMAKE_CXXFLAGS \ ++ moc_predefs.commands += $$shell_quote($$QMAKE_CXX) -Bx$$shell_quote($$shell_path($$QMAKE_QMAKE)) $$QMAKE_CXXFLAGS \ + -E ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT} + } else: error("Oops, I messed up") + moc_predefs.output = $$MOC_DIR/moc_predefs.h diff --git a/ports/qtbase/portfile.cmake b/ports/qtbase/portfile.cmake index f3548a4f24aff7..0afe0a53fe6418 100644 --- a/ports/qtbase/portfile.cmake +++ b/ports/qtbase/portfile.cmake @@ -23,6 +23,7 @@ set(${PORT}_PATCHES fix_deploy_windows.patch fix-link-lib-discovery.patch macdeployqt-symlinks.patch + msvc-moc.diff ) if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) diff --git a/versions/q-/qtbase.json b/versions/q-/qtbase.json index 9a564c721155c8..374727e676e88d 100644 --- a/versions/q-/qtbase.json +++ b/versions/q-/qtbase.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "369123fafa5ee1639cc67333d41b9c421e458780", + "git-tree": "65def1eff9724f8ccbb97d7587c78d52390cea24", "version": "6.8.3", "port-version": 2 }, From 4e5264fd2a8d4f6710118620a5e0f8f9f7863dad Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 19 May 2025 21:44:55 +0200 Subject: [PATCH 11/12] [vcpkg-qmake] Accept full command path w/o space --- ports/vcpkg-qmake/vcpkg.json | 2 +- ports/vcpkg-qmake/vcpkg_qmake_configure.cmake | 23 +++++++++++++++---- versions/baseline.json | 2 +- versions/v-/vcpkg-qmake.json | 4 ++-- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/ports/vcpkg-qmake/vcpkg.json b/ports/vcpkg-qmake/vcpkg.json index 65782aa3ef4b62..390f655d89976a 100644 --- a/ports/vcpkg-qmake/vcpkg.json +++ b/ports/vcpkg-qmake/vcpkg.json @@ -1,6 +1,6 @@ { "name": "vcpkg-qmake", - "version-date": "2024-11-17", + "version-date": "2025-05-19", "documentation": "https://learn.microsoft.com/vcpkg/maintainers/functions/vcpkg_qmake_configure", "license": "MIT", "supports": "native", diff --git a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake index e6d135864a07f9..cd7eae6c707423 100644 --- a/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake +++ b/ports/vcpkg-qmake/vcpkg_qmake_configure.cmake @@ -37,10 +37,25 @@ function(vcpkg_qmake_configure) endif() function(qmake_append_program var qmake_var value) - vcpkg_list(APPEND ${var} "${qmake_var}=\"${value}\"") - unset(${qmake_var}) - unset(${qmake_var} CACHE) - set(${var} "${${var}}" PARENT_SCOPE) # Is this correct? Or is there a vcpkg_list command for that? + # Danger zone: qmake poorly handles tools in C:/Program Files etc. + # IOW for MSVC it expects short command names, found via PATH. + if(value MATCHES " ") + get_filename_component(prog "${value}" NAME) + find_program("z_vcpkg_qmake_${qmake_var}" NAMES "${prog}" PATHS ENV PATH NO_DEFAULT_PATH NO_CACHE) + cmake_path(COMPARE "${z_vcpkg_qmake_${qmake_var}}" EQUAL "${value}" expected_program_in_path) + if(NOT expected_program_in_path) + message(FATAL_ERROR + "Detected path mismatch for '${qmake_var}=${prog}'.\n" + " Actual: ${z_vcpkg_qmake_${qmake_var}}\n" + " Expected: ${value}\n" + "Please correct environment variable PATH!" + ) + endif() + else() + set(prog "${value}") + endif() + vcpkg_list(APPEND "${var}" "${qmake_var}=${prog}") + set("${var}" "${${var}}" PARENT_SCOPE) endfunction() # Setup Build tools if(NOT VCPKG_QMAKE_COMMAND) # For users using outside Qt6 diff --git a/versions/baseline.json b/versions/baseline.json index 23df9d6273ec57..9a28f9786debb1 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -9777,7 +9777,7 @@ "port-version": 0 }, "vcpkg-qmake": { - "baseline": "2024-11-17", + "baseline": "2025-05-19", "port-version": 0 }, "vcpkg-tool-bazel": { diff --git a/versions/v-/vcpkg-qmake.json b/versions/v-/vcpkg-qmake.json index b28e9884ab557a..9133504ebe343b 100644 --- a/versions/v-/vcpkg-qmake.json +++ b/versions/v-/vcpkg-qmake.json @@ -1,8 +1,8 @@ { "versions": [ { - "git-tree": "e2e76b7ef7091cd8519c37638b551b93d06b86a6", - "version-date": "2024-11-17", + "git-tree": "abf9488c79bf3a34c38aa3260e9b3c4778a47d82", + "version-date": "2025-05-19", "port-version": 0 }, { From f3d0972eefd4e95ed108beb7b67288b46155de85 Mon Sep 17 00:00:00 2001 From: Kai Pastor Date: Mon, 19 May 2025 22:05:25 +0200 Subject: [PATCH 12/12] Revert "Quote cxx for windows shell" This reverts commit 004fb0425984e2cdd9b025c934faeb6a915f5e20. --- ports/qtbase/msvc-moc.diff | 13 ------------- ports/qtbase/portfile.cmake | 1 - versions/q-/qtbase.json | 2 +- 3 files changed, 1 insertion(+), 15 deletions(-) delete mode 100644 ports/qtbase/msvc-moc.diff diff --git a/ports/qtbase/msvc-moc.diff b/ports/qtbase/msvc-moc.diff deleted file mode 100644 index 7ba7c4abcd2900..00000000000000 --- a/ports/qtbase/msvc-moc.diff +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/mkspecs/features/moc.prf b/mkspecs/features/moc.prf -index c5504b21..3e4eaa75 100644 ---- a/mkspecs/features/moc.prf -+++ b/mkspecs/features/moc.prf -@@ -33,7 +33,7 @@ if(gcc|intel_icl|msvc):!rim_qcc:!uikit:!no_moc_predefs:if(!macos|count(QMAKE_APP - gcc: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -dM -E -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} - else:intel_icl: moc_predefs.commands = $$QMAKE_CXX $$QMAKE_CXXFLAGS -QdM -P -Fi${QMAKE_FILE_OUT} ${QMAKE_FILE_IN} - else:msvc { -- moc_predefs.commands += $$QMAKE_CXX -Bx$$shell_quote($$shell_path($$QMAKE_QMAKE)) $$QMAKE_CXXFLAGS \ -+ moc_predefs.commands += $$shell_quote($$QMAKE_CXX) -Bx$$shell_quote($$shell_path($$QMAKE_QMAKE)) $$QMAKE_CXXFLAGS \ - -E ${QMAKE_FILE_IN} 2>NUL >${QMAKE_FILE_OUT} - } else: error("Oops, I messed up") - moc_predefs.output = $$MOC_DIR/moc_predefs.h diff --git a/ports/qtbase/portfile.cmake b/ports/qtbase/portfile.cmake index 0afe0a53fe6418..f3548a4f24aff7 100644 --- a/ports/qtbase/portfile.cmake +++ b/ports/qtbase/portfile.cmake @@ -23,7 +23,6 @@ set(${PORT}_PATCHES fix_deploy_windows.patch fix-link-lib-discovery.patch macdeployqt-symlinks.patch - msvc-moc.diff ) if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) diff --git a/versions/q-/qtbase.json b/versions/q-/qtbase.json index 374727e676e88d..346e8931cb1fc3 100644 --- a/versions/q-/qtbase.json +++ b/versions/q-/qtbase.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "65def1eff9724f8ccbb97d7587c78d52390cea24", + "git-tree": "c6fb64e484a6762f3ea271a486044c6fb0bca96f", "version": "6.8.3", "port-version": 2 },