From bc726c101e130071416de40bbbee687aaa7a9d3e Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 18:01:13 +0100 Subject: [PATCH 01/41] Test pyqt6 --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index ce45d4d..d832a08 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -55,7 +55,7 @@ jobs: - name: πŸŒ‹ Build run: | - .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} py-sip + .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} py-pyqt6 - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 From 258d8f7d8767fea2cb4ac5322e952096261bd897 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 19:00:02 +0100 Subject: [PATCH 02/41] Build on C: there is more empty space --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d832a08..1223abf 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -55,7 +55,7 @@ jobs: - name: πŸŒ‹ Build run: | - .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} py-pyqt6 + .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/src py-pyqt6 - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 From 68f02c06ce929b9ba0019395230e05922d789568 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 19:13:05 +0100 Subject: [PATCH 03/41] Fix paths --- .github/workflows/windows.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 1223abf..7dd938a 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -55,11 +55,11 @@ jobs: - name: πŸŒ‹ Build run: | - .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/src py-pyqt6 + .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vpckg-build py-pyqt6 - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 if: failure() with: name: logs-${{ matrix.triplet }} - path: /c/vcpkg/buildtrees/**/*.log + path: C:/vcpkg-build/**/*.log From befc623a7b3e771d2090aff3a4e0c1719ff6ac91 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 19:16:09 +0100 Subject: [PATCH 04/41] debug --- .github/workflows/windows.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7dd938a..8e3984c 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -53,10 +53,16 @@ jobs: echo "PATH=$VCPKG_ROOT;$PATH" >> $GITHUB_ENV echo "VCPKG_ROOT=$VCPKG_ROOT" >> $GITHUB_ENV + - name: πŸŒ‹ Build run: | - .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vpckg-build py-pyqt6 + .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build --debug py-pyqt6 + - name: Debug nuspec + shell: powershell + run: | + Write-Output C:\vcpkg-build\py-packaging\x64-windows.nuspec + - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 if: failure() From ee231b569546c3500b52eed33c9e32fc703420c4 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 19:38:20 +0100 Subject: [PATCH 05/41] debug --- .github/workflows/windows.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 8e3984c..3abfccb 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -59,6 +59,7 @@ jobs: .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build --debug py-pyqt6 - name: Debug nuspec + if: always() shell: powershell run: | Write-Output C:\vcpkg-build\py-packaging\x64-windows.nuspec From 254f6b30b67d6617b6850877f32b438ea760b536 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 20:25:15 +0100 Subject: [PATCH 06/41] Improve debugging --- .github/workflows/windows.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 3abfccb..4fd016f 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -56,13 +56,14 @@ jobs: - name: πŸŒ‹ Build run: | - .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build --debug py-pyqt6 + .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build py-pyqt6 - name: Debug nuspec if: always() shell: powershell run: | - Write-Output C:\vcpkg-build\py-packaging\x64-windows.nuspec + $content = Get-Content -Path "C:\vcpkg-build\py-packaging\x64-windows.nuspec" + Write-Output $content - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 From 4a6a4635eaa4ba43b0b9f5e4abe860b663a62a02 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 20:36:04 +0100 Subject: [PATCH 07/41] Add deps --- ports/py-pyqt6/vcpkg.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ports/py-pyqt6/vcpkg.json b/ports/py-pyqt6/vcpkg.json index fd4362d..1bdff51 100644 --- a/ports/py-pyqt6/vcpkg.json +++ b/ports/py-pyqt6/vcpkg.json @@ -10,7 +10,13 @@ "py-pyqt-builder", "py-ply", "py-packaging", + "qtactiveqt", "qtbase", + "qtmultimedia", + "qtsensors", + "qtsvg", + "qtwebchannel", + "qtwebsockets", { "name": "vcpkg-python-scripts", "host": true From 19da51a440f9d5d351ffb6aead51fb9b5691eaf9 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 12 Feb 2024 21:18:14 +0100 Subject: [PATCH 08/41] debug --- .github/workflows/windows.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 4fd016f..f5e45b3 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -57,6 +57,9 @@ jobs: - name: πŸŒ‹ Build run: | .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build py-pyqt6 + + - uses: m-kuhn/action-tmate@patch-1 + if: failure() - name: Debug nuspec if: always() From 4f7f0f717060c78c06f24c6a7f8a233e9e0346b5 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 19:18:24 +0100 Subject: [PATCH 09/41] Debug2 --- .github/workflows/macos.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 819e030..0d4675b 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -67,7 +67,12 @@ jobs: VCPKG_OPTIONS="--overlay-ports="${{ github.workspace }}/ports" --host-triplet=${{ matrix.triplet }} --triplet=${{ matrix.triplet }} --x-buildtrees-root=${{ env.buildtrees }}" ./vcpkg/vcpkg install $VCPKG_OPTIONS py-pip ./vcpkg/vcpkg install $VCPKG_OPTIONS py-sip + ./vcpkg/vcpkg install $VCPKG_OPTIONS py-pyqt6 + + - uses: m-kuhn/action-tmate@patch-1 + if: failure() + - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 if: failure() From ad3070afec04e1e25d11b786f2dded079def5904 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 19:38:24 +0100 Subject: [PATCH 10/41] activeqt is windows only --- ports/py-pyqt6/vcpkg.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ports/py-pyqt6/vcpkg.json b/ports/py-pyqt6/vcpkg.json index 1bdff51..4ecbefd 100644 --- a/ports/py-pyqt6/vcpkg.json +++ b/ports/py-pyqt6/vcpkg.json @@ -10,7 +10,10 @@ "py-pyqt-builder", "py-ply", "py-packaging", - "qtactiveqt", + { + "name": "qtactiveqt", + "platform": "windows" + }, "qtbase", "qtmultimedia", "qtsensors", From e2e5d0df5bfaa1ac510315e489249da1ae349106 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 19:58:30 +0100 Subject: [PATCH 11/41] Update portfile.cmake --- ports/py-pyqt6/portfile.cmake | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 763e4bc..599d713 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -7,20 +7,6 @@ vcpkg_from_pythonhosted( SHA512 c2ff8c47c9b0e43c009d0c90f565a54344e6f384c67dd30c2d422465d0702c07713acc0095c8b67827d1146675611c07d548ba282a26e41bb60a0a21977a7a64 ) -set(SIPBUILD_ARGS - "--confirm-license" - "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake.exe" #TODO: append .exe only on windows - "--api-dir" "${CURRENT_PACKAGES_DIR}/share/qt6/qsci/api/python" - "--verbose" - "--qt-shared" - "--no-make" - "--disable" "QtDesigner" - "--pep484-pyi" - "--debug" - "--target-dir" "${CURRENT_PACKAGES_DIR}/lib/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/site-packages" - "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" -) - set(SIPBUILD_ARGS "--confirm-license" "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake.exe" #TODO: append .exe only on windows @@ -35,7 +21,11 @@ set(SIPBUILD_ARGS "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" ) +set(path_backup "$ENV{PATH}") + message(STATUS "Running sipbuild... (${PYTHON3})") + +set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") vcpkg_execute_required_process( COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} WORKING_DIRECTORY "${SOURCE_PATH}" @@ -48,7 +38,6 @@ set(MAKEFILE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build/Makefile") vcpkg_list(SET make_opts) vcpkg_list(SET install_opts) -set(path_backup "$ENV{PATH}") if (CMAKE_HOST_WIN32) vcpkg_add_to_path(PREPEND "${SCRIPTS}/buildsystems/make_wrapper") if(NOT DEFINED Z_VCPKG_MAKE) From 173387c42926e18b1c4518210dd52c95abb14eb6 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 20:15:20 +0100 Subject: [PATCH 12/41] Properly initialize vcpkg_root --- .github/workflows/macos.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 0d4675b..a03dc71 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -59,6 +59,7 @@ jobs: mono $NUGET_EXE sources add -Name ghpkg -Source "https://nuget.pkg.github.com/$PKG_SOURCE_USER/index.json" -UserName "$PKG_SOURCE_USER" -Password "${{ secrets.GITHUB_TOKEN }}" -StorePasswordInClearText mono $NUGET_EXE setapikey "${{ secrets.GITHUB_TOKEN }}" -Source "https://nuget.pkg.github.com/$PKG_SOURCE_USER/index.json" echo "VCPKG_BINARY_SOURCES=clear;nuget,https://nuget.pkg.github.com/$PKG_SOURCE_USER/index.json,readwrite" >> $GITHUB_ENV + VCPKG_ROOT=$(pwd)/vcpkg echo "PATH=$VCPKG_ROOT;$PATH" >> $GITHUB_ENV echo "VCPKG_ROOT=$VCPKG_ROOT" >> $GITHUB_ENV From e4bcf4d4d60ef48b04857a66d7cb7f9a1ace0ec6 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 20:19:28 +0100 Subject: [PATCH 13/41] More path --- .github/workflows/windows.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index f5e45b3..8774d4d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -50,6 +50,7 @@ jobs: $NUGET_EXE sources add -Name ghpkg -Source "https://nuget.pkg.github.com/$PKG_SOURCE_USER/index.json" -UserName "$PKG_SOURCE_USER" -Password "${{ secrets.GITHUB_TOKEN }}" -StorePasswordInClearText $NUGET_EXE setapikey "${{ secrets.GITHUB_TOKEN }}" -Source "https://nuget.pkg.github.com/$PKG_SOURCE_USER/index.json" echo "VCPKG_BINARY_SOURCES=clear;nuget,https://nuget.pkg.github.com/$PKG_SOURCE_USER/index.json,readwrite" >> $GITHUB_ENV + VCPKG_ROOT=$(cygpath -w $(pwd)/vcpkg) echo "PATH=$VCPKG_ROOT;$PATH" >> $GITHUB_ENV echo "VCPKG_ROOT=$VCPKG_ROOT" >> $GITHUB_ENV From 2c9eb0eccbb32a235136f920a85f1a76b5a3761a Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 20:23:51 +0100 Subject: [PATCH 14/41] comment hack --- ports/py-pyqt6/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 599d713..c1dd1ad 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -25,7 +25,7 @@ set(path_backup "$ENV{PATH}") message(STATUS "Running sipbuild... (${PYTHON3})") -set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") +# set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") vcpkg_execute_required_process( COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} WORKING_DIRECTORY "${SOURCE_PATH}" From 43c6eb4f65f724fcba40fbf6ae52b352b0afc987 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 20:27:06 +0100 Subject: [PATCH 15/41] Update portfile.cmake --- ports/py-pyqt6/portfile.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index c1dd1ad..008f6d3 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -25,7 +25,9 @@ set(path_backup "$ENV{PATH}") message(STATUS "Running sipbuild... (${PYTHON3})") -# set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") +# Make sure sipbuild can find QtCore.dll +set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") + vcpkg_execute_required_process( COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} WORKING_DIRECTORY "${SOURCE_PATH}" From 4ffab8d5913a3f06250edcd20ebe19952c66479c Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 13 Feb 2024 21:42:38 +0100 Subject: [PATCH 16/41] nmake on windows --- ports/py-pyqt6/portfile.cmake | 46 +++++++++++++++-------------------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 008f6d3..0dbea81 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -35,26 +35,20 @@ vcpkg_execute_required_process( ) message(STATUS "Running sipbuild...finished.") -#Β TODO: Can we use vcpkg_install_make here instead of duplicating code? -set(MAKEFILE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build/Makefile") -vcpkg_list(SET make_opts) -vcpkg_list(SET install_opts) if (CMAKE_HOST_WIN32) - vcpkg_add_to_path(PREPEND "${SCRIPTS}/buildsystems/make_wrapper") - if(NOT DEFINED Z_VCPKG_MAKE) - vcpkg_acquire_msys(MSYS_ROOT) - find_program(Z_VCPKG_MAKE make PATHS "${MSYS_ROOT}/usr/bin" NO_DEFAULT_PATH REQUIRED) - endif() - set(make_command "${Z_VCPKG_MAKE}") - vcpkg_list(SET make_opts -j ${VCPKG_CONCURRENCY} --trace -f ${MAKEFILE}) + vcpkg_build_nmake( + SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" + PROJECT_NAME "Makefile" + ) + +else() + #Β TODO: Can we use vcpkg_install_make here instead of duplicating code? + set(MAKEFILE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build/Makefile") - string(REPLACE " " [[\ ]] vcpkg_package_prefix "${CURRENT_PACKAGES_DIR}") - string(REGEX REPLACE [[([a-zA-Z]):/]] [[/\1/]] vcpkg_package_prefix "${vcpkg_package_prefix}") - vcpkg_list(SET install_opts -j ${VCPKG_CONCURRENCY} --trace -f ${MAKEFILE} DESTDIR=${vcpkg_package_prefix}/lib/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/site-packages) - #TODO: optimize for install-data (release) and install-exec (release/debug) + vcpkg_list(SET make_opts) + vcpkg_list(SET install_opts) -else() if(VCPKG_HOST_IS_OPENBSD) find_program(Z_VCPKG_MAKE gmake REQUIRED) else() @@ -66,23 +60,23 @@ else() # To find sip-distinfo and python3 during install set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/tools:${CURRENT_INSTALLED_DIR}/tools/python3:$ENV{PATH}") -endif() -vcpkg_list(SET make_cmd_line ${make_command} ${make_opts}) -vcpkg_list(SET install_cmd_line ${make_command} install ${install_opts}) + vcpkg_list(SET make_cmd_line ${make_command} ${make_opts}) + vcpkg_list(SET install_cmd_line ${make_command} install ${install_opts}) -message(STATUS "Running build...") -vcpkg_execute_build_process( + message(STATUS "Running build...") + vcpkg_execute_build_process( COMMAND ${make_cmd_line} WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" LOGNAME "build-${TARGET_TRIPLET}${short_buildtype}" -) -message(STATUS "Running build... finished.") -message(STATUS "Running install...") -vcpkg_execute_build_process( + ) + message(STATUS "Running build... finished.") + message(STATUS "Running install...") + vcpkg_execute_build_process( COMMAND ${install_cmd_line} WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" LOGNAME "install-${TARGET_TRIPLET}${short_buildtype}" ) -message(STATUS "Running install... finished.") + message(STATUS "Running install... finished.") +endif() set(ENV{PATH} "${path_backup}") From ae5822d5844e558a074d37e6cebce77d08dbf0b1 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 26 Feb 2024 22:53:01 +0100 Subject: [PATCH 17/41] [py-pyqt-builder] Fix python lib path --- ports/py-pyqt-builder/libpath.patch | 14 ++++++++++++++ ports/py-pyqt-builder/portfile.cmake | 2 ++ ports/py-pyqt-builder/vcpkg.json | 2 +- 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 ports/py-pyqt-builder/libpath.patch diff --git a/ports/py-pyqt-builder/libpath.patch b/ports/py-pyqt-builder/libpath.patch new file mode 100644 index 0000000..2461aab --- /dev/null +++ b/ports/py-pyqt-builder/libpath.patch @@ -0,0 +1,14 @@ +diff --git a/pyqtbuild/project.py b/pyqtbuild/project.py +index 20ab60f..4f4d105 100644 +--- a/pyqtbuild/project.py ++++ b/pyqtbuild/project.py +@@ -73,7 +73,8 @@ class PyQtProject(Project): + # these are actually non-user options but we need the 'link_full_dll' + # user option in order to set them. + if self.py_platform == 'win32': +- pylib_dir = os.path.join(sys.base_prefix, 'libs') ++ # vcpkg install python3.lib into [installed]/lib ++ pylib_dir = os.path.join(sys.base_prefix, '..', '..', 'lib') + + debug_suffix = '_d' if self.py_debug else '' + diff --git a/ports/py-pyqt-builder/portfile.cmake b/ports/py-pyqt-builder/portfile.cmake index 25537c6..c4a2057 100644 --- a/ports/py-pyqt-builder/portfile.cmake +++ b/ports/py-pyqt-builder/portfile.cmake @@ -3,6 +3,8 @@ vcpkg_from_pythonhosted( PACKAGE_NAME PyQt-builder VERSION ${VERSION} SHA512 ec0b9f7784a32af744111615b93f98d73f284bb752fd71359c798d3b093a01925823effea72c866a5f49f77e3dfc5dee4125bbb289f647d84000bf34b5db6931 + PATCHES + libpath.patch ) vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}" OPTIONS -x) diff --git a/ports/py-pyqt-builder/vcpkg.json b/ports/py-pyqt-builder/vcpkg.json index 2aeab58..69ffe02 100644 --- a/ports/py-pyqt-builder/vcpkg.json +++ b/ports/py-pyqt-builder/vcpkg.json @@ -1,7 +1,7 @@ { "name": "py-pyqt-builder", "version": "1.15.4", - "port-version": 2, + "port-version": 3, "description": "PyQt-builder is the PEP 517 compliant build system for PyQt and projects that extend PyQt. It extends the SIP build system and uses Qt’s qmake to perform the actual compilation and installation of extension modules.", "homepage": "https://www.riverbankcomputing.com/software/pyqt-builder", "dependencies": [ From 4589a548ae2769ce57ebbe0f516b1cdff120a885 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 01:14:46 +0100 Subject: [PATCH 18/41] temp --- ports/py-pyqt6/portfile.cmake | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 0dbea81..3be6670 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -1,4 +1,5 @@ set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +set(VCPKG_BUILD_TYPE release) vcpkg_from_pythonhosted( OUT_SOURCE_PATH SOURCE_PATH @@ -7,6 +8,9 @@ vcpkg_from_pythonhosted( SHA512 c2ff8c47c9b0e43c009d0c90f565a54344e6f384c67dd30c2d422465d0702c07713acc0095c8b67827d1146675611c07d548ba282a26e41bb60a0a21977a7a64 ) +vcpkg_cmake_get_vars(cmake_vars_file) +include("${cmake_vars_file}") + set(SIPBUILD_ARGS "--confirm-license" "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake.exe" #TODO: append .exe only on windows @@ -18,15 +22,19 @@ set(SIPBUILD_ARGS "--pep484-pyi" # "--debug" # will create debuggable bindings "--target-dir" "${CURRENT_PACKAGES_DIR}/lib/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/site-packages" - "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" + "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-sipbuild" + # "--qmake-setting" "'QMAKE_LIBS=\"${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES} ${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}\"'" + "--qmake-setting" "'QMAKE_CFLAGS_RELEASE=\"${VCPKG_COMBINED_C_FLAGS_RELEASE}\"'" + "--qmake-setting" "'QMAKE_CXXFLAGS_RELEASE=\"${VCPKG_COMBINED_CXX_FLAGS_RELEASE}\"'" + "--qmake-setting" "'QMAKE_LFLAGS=\"${VCPKG_COMBINED_STATIC_LINKER_FLAGS_RELEASE}\"'" + "--qmake-setting" "'QMAKE_LFLAGS_SHLIB=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}\"'" ) set(path_backup "$ENV{PATH}") message(STATUS "Running sipbuild... (${PYTHON3})") - # Make sure sipbuild can find QtCore.dll -set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") +set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib;${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/;${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") vcpkg_execute_required_process( COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} @@ -35,6 +43,11 @@ vcpkg_execute_required_process( ) message(STATUS "Running sipbuild...finished.") +vcpkg_configure_qmake(SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-sipbuild") +vcpkg_build_qmake() #TODO: just run jom +return() + + if (CMAKE_HOST_WIN32) vcpkg_build_nmake( From 80b884c6fdb4933634d3eba881564953f7a77d5c Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 02:08:42 +0100 Subject: [PATCH 19/41] Use tricks from qmake --- ports/py-pyqt6/portfile.cmake | 91 +++++++++++------------------------ 1 file changed, 28 insertions(+), 63 deletions(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 3be6670..54d8dca 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -8,9 +8,6 @@ vcpkg_from_pythonhosted( SHA512 c2ff8c47c9b0e43c009d0c90f565a54344e6f384c67dd30c2d422465d0702c07713acc0095c8b67827d1146675611c07d548ba282a26e41bb60a0a21977a7a64 ) -vcpkg_cmake_get_vars(cmake_vars_file) -include("${cmake_vars_file}") - set(SIPBUILD_ARGS "--confirm-license" "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake.exe" #TODO: append .exe only on windows @@ -20,76 +17,44 @@ set(SIPBUILD_ARGS "--no-make" "--disable" "QtDesigner" "--pep484-pyi" - # "--debug" # will create debuggable bindings "--target-dir" "${CURRENT_PACKAGES_DIR}/lib/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/site-packages" - "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-sipbuild" - # "--qmake-setting" "'QMAKE_LIBS=\"${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES} ${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}\"'" - "--qmake-setting" "'QMAKE_CFLAGS_RELEASE=\"${VCPKG_COMBINED_C_FLAGS_RELEASE}\"'" - "--qmake-setting" "'QMAKE_CXXFLAGS_RELEASE=\"${VCPKG_COMBINED_CXX_FLAGS_RELEASE}\"'" - "--qmake-setting" "'QMAKE_LFLAGS=\"${VCPKG_COMBINED_STATIC_LINKER_FLAGS_RELEASE}\"'" - "--qmake-setting" "'QMAKE_LFLAGS_SHLIB=\"${VCPKG_COMBINED_SHARED_LINKER_FLAGS_RELEASE}\"'" + "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" ) -set(path_backup "$ENV{PATH}") +message(STATUS "Running sipbuild...") + +vcpkg_backup_env_variables(VARS PATH) -message(STATUS "Running sipbuild... (${PYTHON3})") # Make sure sipbuild can find QtCore.dll -set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/lib;${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/;${CURRENT_INSTALLED_DIR}/bin;$ENV{PATH}") +vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/" "${CURRENT_INSTALLED_DIR}/bin") vcpkg_execute_required_process( - COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} - WORKING_DIRECTORY "${SOURCE_PATH}" - LOGNAME "sipbuild-${TARGET_TRIPLET}-0" - ) + COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} + WORKING_DIRECTORY "${SOURCE_PATH}" + LOGNAME "sipbuild-${TARGET_TRIPLET}" +) message(STATUS "Running sipbuild...finished.") -vcpkg_configure_qmake(SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-sipbuild") -vcpkg_build_qmake() #TODO: just run jom -return() - - - -if (CMAKE_HOST_WIN32) - vcpkg_build_nmake( - SOURCE_PATH "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" - PROJECT_NAME "Makefile" - ) - -else() - #Β TODO: Can we use vcpkg_install_make here instead of duplicating code? - set(MAKEFILE "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build/Makefile") - - vcpkg_list(SET make_opts) - vcpkg_list(SET install_opts) - - if(VCPKG_HOST_IS_OPENBSD) - find_program(Z_VCPKG_MAKE gmake REQUIRED) +if(CMAKE_HOST_WIN32) + if(VCPKG_TARGET_IS_MINGW) + find_program(MINGW32_MAKE mingw32-make REQUIRED) + set(invoke_command "${MINGW32_MAKE}") else() - find_program(Z_VCPKG_MAKE make REQUIRED) + vcpkg_find_acquire_program(JOM) + set(invoke_command "${JOM}") endif() - set(make_command "${Z_VCPKG_MAKE}") - vcpkg_list(SET make_opts V=1 -j ${VCPKG_CONCURRENCY} -f ${MAKEFILE}) - vcpkg_list(SET install_opts -j ${VCPKG_CONCURRENCY} -f ${MAKEFILE} DESTDIR=${CURRENT_PACKAGES_DIR}/lib/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/site-packages) - - # To find sip-distinfo and python3 during install - set(ENV{PATH} "${CURRENT_INSTALLED_DIR}/tools:${CURRENT_INSTALLED_DIR}/tools/python3:$ENV{PATH}") +else() + find_program(MAKE make) + set(invoke_command "${MAKE}") +endif() - vcpkg_list(SET make_cmd_line ${make_command} ${make_opts}) - vcpkg_list(SET install_cmd_line ${make_command} install ${install_opts}) +message(STATUS "Running build...") +vcpkg_execute_build_process( + COMMAND "${invoke_command}" -j ${VCPKG_CONCURRENCY} + NO_PARALLEL_COMMAND "${invoke_command}" -j 1 + WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" + LOGNAME "build-${TARGET_TRIPLET}-rel" +) +message(STATUS "Running build...finished.") - message(STATUS "Running build...") - vcpkg_execute_build_process( - COMMAND ${make_cmd_line} - WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" - LOGNAME "build-${TARGET_TRIPLET}${short_buildtype}" - ) - message(STATUS "Running build... finished.") - message(STATUS "Running install...") - vcpkg_execute_build_process( - COMMAND ${install_cmd_line} - WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel-build" - LOGNAME "install-${TARGET_TRIPLET}${short_buildtype}" - ) - message(STATUS "Running install... finished.") -endif() -set(ENV{PATH} "${path_backup}") +vcpkg_restore_env_variables(VARS PATH) \ No newline at end of file From 7c8557225c8c3d2fba6d64d214ddbcdbf34bd9d1 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 08:10:12 +0100 Subject: [PATCH 20/41] Remove .exe --- .github/workflows/windows.yml | 10 ---------- ports/py-pyqt6/portfile.cmake | 2 +- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 8774d4d..775dc92 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -59,16 +59,6 @@ jobs: run: | .\vcpkg\vcpkg.exe install --overlay-ports="${{ github.workspace }}/ports" --triplet=${{ matrix.triplet }} --x-buildtrees-root=C:/vcpkg-build py-pyqt6 - - uses: m-kuhn/action-tmate@patch-1 - if: failure() - - - name: Debug nuspec - if: always() - shell: powershell - run: | - $content = Get-Content -Path "C:\vcpkg-build\py-packaging\x64-windows.nuspec" - Write-Output $content - - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 if: failure() diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 54d8dca..03a7d95 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -10,7 +10,7 @@ vcpkg_from_pythonhosted( set(SIPBUILD_ARGS "--confirm-license" - "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake.exe" #TODO: append .exe only on windows + "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake" "--api-dir" "${CURRENT_PACKAGES_DIR}/share/qt6/qsci/api/python" "--verbose" "--qt-shared" From 51f74b9b366b6770aff8e8e77b04d95edbd060f8 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 08:28:17 +0100 Subject: [PATCH 21/41] [py-pyqt6] Update port version --- ports/py-pyqt6/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/py-pyqt6/vcpkg.json b/ports/py-pyqt6/vcpkg.json index 4ecbefd..acc4414 100644 --- a/ports/py-pyqt6/vcpkg.json +++ b/ports/py-pyqt6/vcpkg.json @@ -1,7 +1,7 @@ { "name": "py-pyqt6", "version": "6.6.1", - "port-version": 1, + "port-version": 2, "description": "Python bindings for the Qt cross platform application toolkit", "homepage": "https://www.riverbankcomputing.com/software/pyqt/", "dependencies": [ From 9fc2aa32cf03fd5443045e0af4e2ed591b8ea218 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 08:52:58 +0100 Subject: [PATCH 22/41] Install libtool --- .github/workflows/macos.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index a03dc71..916640e 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -39,7 +39,7 @@ jobs: - name: πŸ”¨ Prepare build env run: | - brew install autoconf automake autoconf-archive + brew install autoconf automake autoconf-archive libtool - name: πŸ• Checkout vcpkg uses: actions/checkout@v4 From 0da362cc98bbf53a3d5c58e89f4b6b2e7656a26e Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 09:44:02 +0100 Subject: [PATCH 23/41] exe on windows --- ports/py-pyqt6/portfile.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 03a7d95..6649352 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -8,9 +8,13 @@ vcpkg_from_pythonhosted( SHA512 c2ff8c47c9b0e43c009d0c90f565a54344e6f384c67dd30c2d422465d0702c07713acc0095c8b67827d1146675611c07d548ba282a26e41bb60a0a21977a7a64 ) +if(CMAKE_HOST_WIN32) + set(EXE_SUFFIX ".exe") +endif() + set(SIPBUILD_ARGS "--confirm-license" - "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake" + "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake${EXE_SUFFIX}" "--api-dir" "${CURRENT_PACKAGES_DIR}/share/qt6/qsci/api/python" "--verbose" "--qt-shared" From 48d7dc25dcb34c1835630e84295610a035575477 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 13:01:07 +0100 Subject: [PATCH 24/41] Fix non windows --- ports/py-sip/add_dll_directory.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/py-sip/add_dll_directory.patch b/ports/py-sip/add_dll_directory.patch index 66611a5..25e8345 100644 --- a/ports/py-sip/add_dll_directory.patch +++ b/ports/py-sip/add_dll_directory.patch @@ -7,7 +7,7 @@ index 3a3b094..a551b47 100644 # Publish the public API. +import os -+os.add_dll_directory(os.path.abspath(os.path.join(__file__, "../../../../../../bin"))) ++os.add_dll_directory(os.path.abspath(os.path.join(__file__, "../../../../../../bin"))) if os.name == 'nt' else None from .abstract_builder import AbstractBuilder from .abstract_project import AbstractProject from .bindings import Bindings From d17d00d9ca907f77edc23bb0c276f03986597e0d Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 13:03:33 +0100 Subject: [PATCH 25/41] adjust port version --- ports/py-sip/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/py-sip/vcpkg.json b/ports/py-sip/vcpkg.json index 2f8411a..4128173 100644 --- a/ports/py-sip/vcpkg.json +++ b/ports/py-sip/vcpkg.json @@ -1,7 +1,7 @@ { "name": "py-sip", "version": "6.7.12", - "port-version": 2, + "port-version": 3, "description": "A tool that makes it easy to create Python bindings for C and C++ libraries", "homepage": "https://www.riverbankcomputing.com/software/sip", "dependencies": [ From 20243aedc68557fbd79947ff18b853dbcce0485c Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Tue, 27 Feb 2024 17:22:20 +0100 Subject: [PATCH 26/41] install and test --- ports/py-pyqt6/portfile.cmake | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 6649352..e2cf9f2 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -54,11 +54,13 @@ endif() message(STATUS "Running build...") vcpkg_execute_build_process( - COMMAND "${invoke_command}" -j ${VCPKG_CONCURRENCY} - NO_PARALLEL_COMMAND "${invoke_command}" -j 1 + COMMAND "${invoke_command}" -j ${VCPKG_CONCURRENCY} install + NO_PARALLEL_COMMAND "${invoke_command}" -j 1 install WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" LOGNAME "build-${TARGET_TRIPLET}-rel" ) message(STATUS "Running build...finished.") +vcpkg_python_test_import(MODULE PyQt6) + vcpkg_restore_env_variables(VARS PATH) \ No newline at end of file From ccda10e067aea34b63b15775e5c0a2ebf03236f1 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Wed, 28 Feb 2024 09:18:46 +0100 Subject: [PATCH 27/41] Apply suggestions from code review Use vcpkg native exe suffix Co-authored-by: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> --- ports/py-pyqt6/portfile.cmake | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index e2cf9f2..2c7a7e3 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -8,13 +8,10 @@ vcpkg_from_pythonhosted( SHA512 c2ff8c47c9b0e43c009d0c90f565a54344e6f384c67dd30c2d422465d0702c07713acc0095c8b67827d1146675611c07d548ba282a26e41bb60a0a21977a7a64 ) -if(CMAKE_HOST_WIN32) - set(EXE_SUFFIX ".exe") -endif() set(SIPBUILD_ARGS "--confirm-license" - "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake${EXE_SUFFIX}" + "--qmake" "${CURRENT_HOST_INSTALLED_DIR}/tools/Qt6/bin/qmake${VCPKG_HOST_EXECUTABLE_SUFFIX}" "--api-dir" "${CURRENT_PACKAGES_DIR}/share/qt6/qsci/api/python" "--verbose" "--qt-shared" From 6ef122a4f85204ec5dc7195d25e769af9ba7b852 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Wed, 28 Feb 2024 09:28:28 +0100 Subject: [PATCH 28/41] Add py-pyqt6-sip --- ports/py-pyqt6-sip/portfile.cmake | 16 ++++++++++++++++ ports/py-pyqt6-sip/vcpkg.json | 18 ++++++++++++++++++ ports/py-pyqt6/vcpkg.json | 2 +- ports/vcpkg-python-scripts/vcpkg.json | 2 +- .../vcpkg_python_functions.cmake | 10 +++++++++- 5 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 ports/py-pyqt6-sip/portfile.cmake create mode 100644 ports/py-pyqt6-sip/vcpkg.json diff --git a/ports/py-pyqt6-sip/portfile.cmake b/ports/py-pyqt6-sip/portfile.cmake new file mode 100644 index 0000000..d245fd7 --- /dev/null +++ b/ports/py-pyqt6-sip/portfile.cmake @@ -0,0 +1,16 @@ +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) + +vcpkg_from_pythonhosted( + OUT_SOURCE_PATH SOURCE_PATH + PACKAGE_NAME PyQt6_sip + VERSION ${VERSION} + SHA512 ef363b21899f6d089fbc6d5adf700dc6c8838501343070ed1cf0826e05dd860343eba608d5aee5d8bece39b8ddca1f37866bb56aa07db18384ac0a372ca3532f +) + +vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}") + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") + +vcpkg_python_test_import(MODULE "PyQt6.sip") + +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) \ No newline at end of file diff --git a/ports/py-pyqt6-sip/vcpkg.json b/ports/py-pyqt6-sip/vcpkg.json new file mode 100644 index 0000000..01044de --- /dev/null +++ b/ports/py-pyqt6-sip/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "py-pyqt6-sip", + "version": "13.6.0", + "description": "Python bindings for the Qt cross platform application toolkit", + "homepage": "https://www.riverbankcomputing.com/software/pyqt/", + "dependencies": [ + "python3", + "py-sip", + { + "name": "py-setuptools", + "host": true + }, + { + "name": "vcpkg-python-scripts", + "host": true + } + ] +} diff --git a/ports/py-pyqt6/vcpkg.json b/ports/py-pyqt6/vcpkg.json index acc4414..c498652 100644 --- a/ports/py-pyqt6/vcpkg.json +++ b/ports/py-pyqt6/vcpkg.json @@ -6,7 +6,7 @@ "homepage": "https://www.riverbankcomputing.com/software/pyqt/", "dependencies": [ "python3", - "py-sip", + "py-pyqt6-sip", "py-pyqt-builder", "py-ply", "py-packaging", diff --git a/ports/vcpkg-python-scripts/vcpkg.json b/ports/vcpkg-python-scripts/vcpkg.json index f6bb178..267bca2 100644 --- a/ports/vcpkg-python-scripts/vcpkg.json +++ b/ports/vcpkg-python-scripts/vcpkg.json @@ -1,7 +1,7 @@ { "name": "vcpkg-python-scripts", "version-date": "2023-06-28", - "port-version": 1, + "port-version": 2, "documentation": "https://vcpkg.io/en/docs/README.html", "license": "MIT", "supports": "native", diff --git a/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake b/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake index 66485c9..aedeaec 100644 --- a/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake +++ b/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake @@ -144,7 +144,15 @@ function(vcpkg_python_test_import) ) message(STATUS "Testing package!") - set(ENV{PYTHONPATH} "${CURRENT_PACKAGES_DIR}/lib/python3.11/site-packages") + set(pypath_prefix "${CURRENT_PACKAGES_DIR}") + if(VCPKG_TARGET_IS_WINDOWS) + string(APPEND pypath_prefix "/tools/python3/Lib/site-packages") + else() + string(APPEND pypath_prefix "/lib/site-packages") + endif() + + # todo add_dll_directory / ld_library_path + set(ENV{PYTHONPATH} "${pypath_prefix}") vcpkg_execute_required_process(COMMAND "${PYTHON3}" -c "from ${arg_MODULE} import *" LOGNAME "python-test-import-${TARGET_TRIPLET}" WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}" From 1974a035b648f725256fe4cbc00dbbaa89c48dbd Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Thu, 29 Feb 2024 06:43:45 +0100 Subject: [PATCH 29/41] Update portfile.cmake --- ports/py-pyqt6-sip/portfile.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/py-pyqt6-sip/portfile.cmake b/ports/py-pyqt6-sip/portfile.cmake index d245fd7..d669056 100644 --- a/ports/py-pyqt6-sip/portfile.cmake +++ b/ports/py-pyqt6-sip/portfile.cmake @@ -4,7 +4,7 @@ vcpkg_from_pythonhosted( OUT_SOURCE_PATH SOURCE_PATH PACKAGE_NAME PyQt6_sip VERSION ${VERSION} - SHA512 ef363b21899f6d089fbc6d5adf700dc6c8838501343070ed1cf0826e05dd860343eba608d5aee5d8bece39b8ddca1f37866bb56aa07db18384ac0a372ca3532f + SHA512 bd2fa70d64544d8104d3477cb650a0e6bcefa0008680afcf7d187ba3fb1117871c0237d3a7f047144c8a8a8eeb8da941a3b206f8ee0601cb2cc734243cdb9d46 ) vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}") @@ -13,4 +13,4 @@ vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") vcpkg_python_test_import(MODULE "PyQt6.sip") -set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) \ No newline at end of file +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) From 4465eccd104cdde08d138ed1aa6111c36589dc8b Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Thu, 29 Feb 2024 16:14:47 +0100 Subject: [PATCH 30/41] Add vcpkg-make --- ports/vcpkg-make/portfile.cmake | 34 + ports/vcpkg-make/vcpkg-port-config.cmake | 8 + ports/vcpkg-make/vcpkg.json | 15 + ports/vcpkg-make/vcpkg_make.cmake | 303 +++++++++ ports/vcpkg-make/vcpkg_make_common.cmake | 669 ++++++++++++++++++++ ports/vcpkg-make/vcpkg_make_configure.cmake | 151 +++++ ports/vcpkg-make/vcpkg_make_install.cmake | 150 +++++ ports/vcpkg-make/vcpkg_scripts.cmake | 210 ++++++ ports/vcpkg-make/wrappers/cl_cpp_wrapper | 104 +++ ports/vcpkg-make/wrappers/windres-rc | 133 ++++ 10 files changed, 1777 insertions(+) create mode 100644 ports/vcpkg-make/portfile.cmake create mode 100644 ports/vcpkg-make/vcpkg-port-config.cmake create mode 100644 ports/vcpkg-make/vcpkg.json create mode 100644 ports/vcpkg-make/vcpkg_make.cmake create mode 100644 ports/vcpkg-make/vcpkg_make_common.cmake create mode 100644 ports/vcpkg-make/vcpkg_make_configure.cmake create mode 100644 ports/vcpkg-make/vcpkg_make_install.cmake create mode 100644 ports/vcpkg-make/vcpkg_scripts.cmake create mode 100644 ports/vcpkg-make/wrappers/cl_cpp_wrapper create mode 100644 ports/vcpkg-make/wrappers/windres-rc diff --git a/ports/vcpkg-make/portfile.cmake b/ports/vcpkg-make/portfile.cmake new file mode 100644 index 0000000..620bd27 --- /dev/null +++ b/ports/vcpkg-make/portfile.cmake @@ -0,0 +1,34 @@ +set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) + +vcpkg_download_distfile( + ar_lib_wrapper + URLS https://raw.githubusercontent.com/autotools-mirror/automake/43a53bdf4b76377b5c012b8c8e8f478fb56d1ec0/lib/ar-lib + FILENAME ar-lib + SHA512 6019ffebf4b7b0547aa018c7d19bc915a228825d2acdee953a36919a88c30352e620f61c27a3e6f701af2885c8eb8d4ba3a4a3c2e821c54c03dceeef8eec108f +) +vcpkg_download_distfile( + compile_wrapper + URLS https://raw.githubusercontent.com/autotools-mirror/automake/43a53bdf4b76377b5c012b8c8e8f478fb56d1ec0/lib/compile + FILENAME compile + SHA512 3ef82f486f59be4cae1f1f95a9b70d4404f0333100be84c2e7061bd466201224a2bd1c7d871d97801eb9a441809bb47e7821fca8c85c29cc43ab15e6edda7f8c +) + +file(COPY + "${CMAKE_CURRENT_LIST_DIR}/" + DESTINATION + "${CURRENT_PACKAGES_DIR}/share/${PORT}" +) +file(COPY + "${ar_lib_wrapper}" + "${compile_wrapper}" + DESTINATION + "${CURRENT_PACKAGES_DIR}/share/${PORT}/wrappers" +) + +file(REMOVE + "${CURRENT_PACKAGES_DIR}/share/${PORT}/portfile.cmake" + "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg.json" +) + +vcpkg_install_copyright(FILE_LIST "${VCPKG_ROOT_DIR}/LICENSE.txt") + diff --git a/ports/vcpkg-make/vcpkg-port-config.cmake b/ports/vcpkg-make/vcpkg-port-config.cmake new file mode 100644 index 0000000..b0b4982 --- /dev/null +++ b/ports/vcpkg-make/vcpkg-port-config.cmake @@ -0,0 +1,8 @@ +include("${CMAKE_CURRENT_LIST_DIR}/../vcpkg-cmake-get-vars/vcpkg-port-config.cmake") + +# Or this file should be autogenerated somehow. +file(GLOB cmake_files "${CMAKE_CURRENT_LIST_DIR}/*.cmake") +list(REMOVE_ITEM cmake_files "${CMAKE_CURRENT_LIST_FILE}") +foreach(cmake_file IN LISTS cmake_files) + include("${cmake_file}") +endforeach() diff --git a/ports/vcpkg-make/vcpkg.json b/ports/vcpkg-make/vcpkg.json new file mode 100644 index 0000000..d926b09 --- /dev/null +++ b/ports/vcpkg-make/vcpkg.json @@ -0,0 +1,15 @@ +{ + "name": "vcpkg-make", + "version-date": "2023-05-15", + "documentation": "https://vcpkg.io/en/docs/maintainers/ports/vcpkg-make.html", + "license": "MIT", + "supports": "native", + "dependencies": [ + { + "name": "pkgconf", + "host": true, + "platform": "windows" + }, + "vcpkg-cmake-get-vars" + ] +} diff --git a/ports/vcpkg-make/vcpkg_make.cmake b/ports/vcpkg-make/vcpkg_make.cmake new file mode 100644 index 0000000..e69526e --- /dev/null +++ b/ports/vcpkg-make/vcpkg_make.cmake @@ -0,0 +1,303 @@ +# Be aware of https://github.com/microsoft/vcpkg/pull/31228 +include_guard(GLOBAL) +include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_make_common.cmake") + +function(vcpkg_run_shell) + cmake_parse_arguments(PARSE_ARGV 0 arg + "" + "WORKING_DIRECTORY;LOGNAME" + "SHELL;COMMAND;SAVE_LOG_FILES" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + z_vcpkg_required_args(SHELL WORKING_DIRECTORY COMMAND LOGNAME) + + + set(extra_opts "") + if(arg_SAVE_LOG_FILES) + set(extra_opts SAVE_LOG_FILES ${arg_SAVE_LOG_FILES}) + endif() + + list(JOIN arg_COMMAND " " cmd) + vcpkg_execute_required_process( + COMMAND ${arg_SHELL} -c "${cmd}" + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + LOGNAME "${arg_LOGNAME}" + ${extra_opts} + ) +endfunction() + +function(vcpkg_run_shell_as_build) + cmake_parse_arguments(PARSE_ARGV 0 arg + "" + "WORKING_DIRECTORY;LOGNAME" + "SHELL;COMMAND;NO_PARALLEL_COMMAND;SAVE_LOG_FILES" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + z_vcpkg_required_args(SHELL WORKINK_DIRECTORY COMMAND LOGNAME) + + set(extra_opts "") + if(arg_SAVE_LOG_FILES) + set(extra_opts SAVE_LOG_FILES ${arg_SAVE_LOG_FILES}) + endif() + + list(JOIN arg_COMMAND " " cmd) + list(JOIN arg_NO_PARALLEL_COMMAND " " no_par_cmd) + vcpkg_execute_build_process( + COMMAND ${arg_SHELL} -c "${cmd}" + NO_PARALLEL_COMMAND ${arg_SHELL} -c "${no_par_cmd}" + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + LOGNAME "${arg_LOGNAME}" + ${extra_opts} + ) +endfunction() + +function(vcpkg_run_autoreconf shell_cmd work_dir) +# TODO: +# Check: does it make sense to parse configure.ac ? + find_program(AUTORECONF NAMES autoreconf) # find_file instead ? autoreconf is a perl script. + if(NOT AUTORECONF) + message(FATAL_ERROR "${PORT} requires autoconf from the system package manager (example: \"sudo apt-get install autoconf\")") + endif() + message(STATUS "Generating configure for ${TARGET_TRIPLET}") + vcpkg_run_shell( + SHELL ${shell_cmd} + COMMAND ${AUTORECONF} -vfi + WORKING_DIRECTORY "${work_dir}" + LOGNAME "autoconf-${TARGET_TRIPLET}" + ) + message(STATUS "Finished generating configure for ${TARGET_TRIPLET}") +endfunction() + +function(vcpkg_make_setup_win_msys msys_out) + cmake_parse_arguments(PARSE_ARGV 1 arg + "" + "" + "PACKAGES" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + list(APPEND msys_require_packages autoconf-wrapper automake-wrapper binutils libtool make which) + vcpkg_insert_msys_into_path(msys PACKAGES ${msys_require_packages} ${arg_PACKAGES}) + find_program(PKGCONFIG NAMES pkgconf NAMES_PER_DIR PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/pkgconf" NO_DEFAULT_PATH) + set("${msys_out}" "${msys}" PARENT_SCOPE) +endfunction() + +function(vcpkg_make_get_shell out_var) + cmake_parse_arguments(PARSE_ARGV 1 arg + "" + "MSYS_ROOT" + "PACKAGES" + ) + set(bash_options "") + if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + if(NOT arg_MSYS_ROOT) + vcpkg_make_setup_win_msys(msys_root PACKAGES "${arg_PACKAGES}") + else() + set(msys_root "${arg_MSYS_ROOT}") + endif() + set(bash_options --noprofile --norc --debug) + set(bash_cmd "${msys_root}/usr/bin/bash.exe") + endif() + find_program(bash_cmd NAMES bash sh zsh REQUIRED) + set("${out_var}" "${bash_cmd}" ${bash_options} PARENT_SCOPE) +endfunction() + +function(z_vcpkg_make_get_configure_triplets out) + cmake_parse_arguments(PARSE_ARGV 1 arg + "" + "COMPILER_NAME" + "" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + # --build: the machine you are building on + # --host: the machine you are building for + # --target: the machine that CC will produce binaries for + # https://stackoverflow.com/questions/21990021/how-to-determine-host-value-for-configure-when-using-cross-compiler + # Only for ports using autotools so we can assume that they follow the common conventions for build/target/host + z_vcpkg_make_determine_target_arch(TARGET_ARCH) + z_vcpkg_make_determine_host_arch(BUILD_ARCH) + + set(build_triplet_opt "") + if(CMAKE_HOST_WIN32 AND VCPKG_TARGET_IS_WINDOWS) + # This is required since we are running in a msys + # shell which will be otherwise identified as ${BUILD_ARCH}-pc-msys + set(build_triplet_opt "--build=${BUILD_ARCH}-pc-mingw32") + endif() + + set(host_triplet "") + if(VCPKG_CROSSCOMPILING) + if(VCPKG_TARGET_IS_WINDOWS) + if(NOT TARGET_ARCH MATCHES "${BUILD_ARCH}" OR NOT CMAKE_HOST_WIN32) + set(host_triplet_opt "--host=${TARGET_ARCH}-pc-mingw32") + elseif(VCPKG_TARGET_IS_UWP) + # Needs to be different from --build to enable cross builds. + set(host_triplet_opt "--host=${TARGET_ARCH}-unknown-mingw32") + endif() + elseif(VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_OSX AND NOT "${TARGET_ARCH}" STREQUAL "${BUILD_ARCH}") + set(host_triplet_opt "--host=${TARGET_ARCH}-apple-darwin") + elseif(VCPKG_TARGET_IS_LINUX) + if("${arg_COMPILER_NAME}" MATCHES "([^\/]*)-gcc$" AND CMAKE_MATCH_1 AND NOT CMAKE_MATCH_1 MATCHES "^gcc") + set(host_triplet_opt "--host=${CMAKE_MATCH_1}") # (Host activates crosscompilation; The name given here is just the prefix of the host tools for the target) + endif() + endif() + endif() + + set(output "${build_triplet_opt};${host_triplet_opt}") + string(STRIP "${output}" output) + set("${out}" "${output}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_make_prepare_env config) + cmake_parse_arguments(PARSE_ARGV 1 arg + "ADD_BIN_TO_PATH" + "" + "" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + # Used by CL + vcpkg_host_path_list(PREPEND ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include") + # Used by GCC + vcpkg_host_path_list(PREPEND ENV{C_INCLUDE_PATH} "${CURRENT_INSTALLED_DIR}/include") + vcpkg_host_path_list(PREPEND ENV{CPLUS_INCLUDE_PATH} "${CURRENT_INSTALLED_DIR}/include") + + # Flags should be set in the toolchain instead (Setting this up correctly requires a function named vcpkg_determined_cmake_compiler_flags which can also be used to setup CC and CXX etc.) + if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_backup_env_variables(VARS _CL_ _LINK_) + # TODO: Should be CPP flags instead -> rewrite when vcpkg_determined_cmake_compiler_flags defined + if(VCPKG_TARGET_IS_UWP) + # Be aware that configure thinks it is crosscompiling due to: + # error while loading shared libraries: VCRUNTIME140D_APP.dll: + # cannot open shared object file: No such file or directory + # IMPORTANT: The only way to pass linker flags through libtool AND the compile wrapper + # is to use the CL and LINK environment variables !!! + # (This is due to libtool and compiler wrapper using the same set of options to pass those variables around) + file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}" VCToolsInstallDir) + set(_replacement -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_DEBUG "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_DEBUG}") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_DEBUG "${VCPKG_DETECTED_CMAKE_C_FLAGS_DEBUG}") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_RELEASE "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_RELEASE}") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_RELEASE "${VCPKG_DETECTED_CMAKE_C_FLAGS_RELEASE}") + # Can somebody please check if CMake's compiler flags for UWP are correct? + set(ENV{_CL_} "$ENV{_CL_} -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\"") + set(ENV{_LINK_} "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES} ${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") + endif() + endif() + + # Setup environment + set(ENV{CPPFLAGS} "${CPPFLAGS_${config}}") + set(ENV{CPPFLAGS_FOR_BUILD} "${CPPFLAGS_${config}}") + set(ENV{CFLAGS} "${CFLAGS_${config}}") + set(ENV{CFLAGS_FOR_BUILD} "${CFLAGS_${config}}") + set(ENV{CXXFLAGS} "${CXXFLAGS_${config}}") + #set(ENV{CXXFLAGS_FOR_BUILD} "${CXXFLAGS_${current_buildtype}}") -> doesn't exist officially + set(ENV{RCFLAGS} "${RCFLAGS_${config}}") + set(ENV{LDFLAGS} "${LDFLAGS_${config}}") + set(ENV{LDFLAGS_FOR_BUILD} "${LDFLAGS_${config}}") + if(ARFLAGS_${config} AND NOT (arg_USE_WRAPPERS AND VCPKG_TARGET_IS_WINDOWS)) + # Target windows with wrappers enabled cannot forward ARFLAGS since it breaks the wrapper + set(ENV{ARFLAGS} "${ARFLAGS_${config}}") + endif() + + if(LINK_ENV_${config}) + set(ENV{_LINK_} "${LINK_ENV_${config}}") + endif() + + if(arg_ADD_BIN_TO_PATH AND NOT VCPKG_CROSSCOMPILING) + vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${path_suffix}/bin") + endif() + + vcpkg_list(APPEND lib_env_vars LIB LIBPATH LIBRARY_PATH) # LD_LIBRARY_PATH) + foreach(lib_env_var IN LISTS lib_env_vars) + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib") + vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib") + endif() + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib/manual-link") + vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib/manual-link") + endif() + endforeach() +endfunction() + +function(z_vcpkg_make_restore_env) + # Only variables which are inspected in vcpkg_make_prepare_env need to be restored here. + # Rest is restored add the end of configure. + # TODO: check how vcpkg_restore_env_variables actually works! + vcpkg_restore_env_variables(VARS + LIBRARY_PATH LIB LIBPATH + PATH + ) +endfunction() + +function(vcpkg_make_run_configure) + cmake_parse_arguments(PARSE_ARGV 0 arg + "ADD_BIN_TO_PATH" + "CONFIG;SHELL;WORKING_DIRECTORY;CONFIGURE_PATH;CONFIGURE_ENV" + "OPTIONS" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + z_vcpkg_required_args(SHELL CONFIG WORKING_DIRECTORY CONFIGURE_PATH) + + vcpkg_prepare_pkgconfig("${arg_CONFIG}") + + set(prepare_env_opts "") + if(arg_ADD_BIN_TO_PATH) + set(prepare_env_opts ADD_BIN_TO_PATH) + endif() + z_vcpkg_make_prepare_env("${arg_CONFIG}" ${prepare_env_opts}) + + vcpkg_list(SET tmp) + foreach(element IN LISTS arg_OPTIONS) + string(REPLACE [["]] [[\"]] element "${element}") + vcpkg_list(APPEND tmp "\"${element}\"") + endforeach() + vcpkg_list(JOIN tmp " " "arg_OPTIONS") + + set(command ${arg_CONFIGURE_ENV} ${arg_CONFIGURE_PATH} ${arg_OPTIONS}) + + message(STATUS "Configuring ${TARGET_TRIPLET}-${suffix_${arg_CONFIG}}") + vcpkg_run_shell( + WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" + LOGNAME "config-${TARGET_TRIPLET}-${suffix_${arg_CONFIG}}" + SAVE_LOG_FILES config.log + SHELL ${arg_SHELL} + COMMAND V=1 ${command} + ) + if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) + file(GLOB_RECURSE libtool_files "${arg_WORKING_DIRECTORY}*/libtool") + foreach(lt_file IN LISTS libtool_files) + file(READ "${lt_file}" _contents) + string(REPLACE ".dll.lib" ".lib" _contents "${_contents}") + file(WRITE "${lt_file}" "${_contents}") + endforeach() + endif() + z_vcpkg_make_restore_env() + vcpkg_restore_pkgconfig() +endfunction() + +function(z_vcpkg_make_prepare_configure_cache out_opt) + cmake_parse_arguments(PARSE_ARGV 1 arg + "" + "WORKING_DIRECTORY;CONFIG" + "" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + + set(configure_cache "") + set(current_buildtype "${arg_CONFIG}") + + if(NOT arg_NO_CONFIGURE_CACHE) + set(cache_file "${arg_WORKING_DIRECTORY}/${TARGET_TRIPLET}-${suffix_${current_buildtype}}.cache") + if(DEFINED VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype} AND NOT "${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}" STREQUAL "") + if(NOT EXISTS "${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}") + message(FATAL_ERROR "VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}:'${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}' needs to be a valid and exisiting file path!") + endif() + file(COPY_FILE "${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}" "${cache_file}") + set(configure_cache "--cache-file='${cache_file}'") + elseif(DEFINED VCPKG_MAKE_CONFIGURE_CACHE AND NOT "${VCPKG_MAKE_CONFIGURE_CACHE}" STREQUAL "") + if(NOT EXISTS "${VCPKG_MAKE_CONFIGURE_CACHE}") + message(FATAL_ERROR "VCPKG_MAKE_CONFIGURE_CACHE:'${VCPKG_MAKE_CONFIGURE_CACHE}' needs to be a valid and exisiting file path!") + endif() + file(COPY_FILE "${VCPKG_MAKE_CONFIGURE_CACHE}" "${cache_file}") + set(configure_cache "--cache-file='${cache_file}'") + endif() + endif() + set("${out_opt}" "${configure_cache}") +endfunction() diff --git a/ports/vcpkg-make/vcpkg_make_common.cmake b/ports/vcpkg-make/vcpkg_make_common.cmake new file mode 100644 index 0000000..9e57f1b --- /dev/null +++ b/ports/vcpkg-make/vcpkg_make_common.cmake @@ -0,0 +1,669 @@ +include_guard(GLOBAL) + +### Mapping variables +macro(z_vcpkg_make_set_common_vars) + set(path_suffix_RELEASE "") + set(path_suffix_DEBUG "/debug") + set(suffix_RELEASE "rel") + set(suffix_DEBUG "dbg") + foreach(config IN ITEMS RELEASE DEBUG) + set("workdir_${config}" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${suffix_${config}}") + endforeach() + set(buildtypes release) + if(NOT VCPKG_BUILD_TYPE) + list(APPEND buildtypes debug) + endif() +endmacro() + +### +macro(z_vcpkg_make_get_cmake_vars) + cmake_parse_arguments(vmgcv_arg # Not just arg since macros don't define their own var scope. + "" "" "LANGUAGES" ${ARGN} + ) + z_vcpkg_get_global_property(has_cmake_vars_file "make_cmake_vars_file" SET) + if(NOT has_cmake_vars_file) + if(vmgcv_arg_LANGUAGES) + string(REPLACE ";" "\;" vmgcv_arg_langs "${vmgcv_arg_LANGUAGES}") + list(APPEND VCPKG_CMAKE_CONFIGURE_OPTIONS "-DVCPKG_LANGUAGES=${vmgcv_arg_langs}") + unset(langs) + endif() + list(APPEND VCPKG_CMAKE_CONFIGURE_OPTIONS "-DVCPKG_DEFAULT_VARS_TO_CHECK=CMAKE_LIBRARY_PATH_FLAG") + vcpkg_cmake_get_vars(cmake_vars_file) + z_vcpkg_set_global_property(make_cmake_vars_file "${cmake_vars_file}") + unset(vmgcv_arg_langs) + else() + z_vcpkg_get_global_property(cmake_vars_file "make_cmake_vars_file") + endif() + include("${cmake_vars_file}") +endmacro() + +#### +function(z_vcpkg_make_determine_arch out_var value) + if(${value} MATCHES "^(amd|AMD|x)64$") + set(${out_var} x86_64 PARENT_SCOPE) + elseif(${value} MATCHES "^(x|X)86$") + set(${out_var} i686 PARENT_SCOPE) + elseif(${value} MATCHES "^(ARM|arm)64$") + set(${out_var} aarch64 PARENT_SCOPE) + elseif(${value} MATCHES "^(ARM|arm)$") + set(${out_var} arm PARENT_SCOPE) + elseif(${value} MATCHES "^(x86_64|i686|aarch64|arm)$" OR NOT VCPKG_TARGET_IS_WINDOWS) + # Do nothing an assume valid architectures + set("${out_var}" "${value}" PARENT_SCOPE) + else() + message(FATAL_ERROR "Unsupported architecture '${value}' in '${CMAKE_CURRENT_FUNCTION}'!" ) + endif() +endfunction() + +function(z_vcpkg_make_determine_host_arch out_var) + if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) + set(arch $ENV{PROCESSOR_ARCHITEW6432}) + elseif(DEFINED ENV{PROCESSOR_ARCHITECTURE}) + set(arch $ENV{PROCESSOR_ARCHITECTURE}) + else() + set(arch "${VCPKG_DETECTED_CMAKE_HOST_SYSTEM_PROCESSOR}") + endif() + z_vcpkg_make_determine_arch("${out_var}" "${arch}") + set("${out_var}" "${${out_var}}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_make_determine_target_arch out_var) + list(LENGTH VCPKG_OSX_ARCHITECTURES osx_archs_num) + if(osx_archs_num GREATER_EQUAL 2 AND VCPKG_TARGET_IS_OSX) + set(${out_var} "universal") + else() + z_vcpkg_make_determine_arch(${out_var} "${VCPKG_TARGET_ARCHITECTURE}") + endif() + set("${out_var}" "${${out_var}}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_make_prepare_compile_flags) + cmake_parse_arguments(PARSE_ARGV 0 arg + "NO_CPPFLAGS;NO_FLAG_ESCAPING;USES_WRAPPERS;USE_RESPONSE_FILES" + "COMPILER_FRONTEND;CONFIG;FLAGS_OUT" + "LANGUAGES" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + + if(NOT DEFINED arg_LANGUAGES) + set(arg_LANGUAGES "C;CXX") + endif() + + # TODO: Check params + + set(var_suffix "${arg_CONFIG}") + + set(CFLAGS "") + set(CXXFLAGS "") + + # separate_aruments is needed to remove outer quotes from detected cmake variables. + # (e.g. Android NDK has "--sysroot=...") + foreach(lang IN LISTS arg_LANGUAGES) + if(NOT "${VCPKG_COMBINED_${lang}_FLAGS_${var_suffix}}" STREQUAL "") + separate_arguments(${lang}FLAGS NATIVE_COMMAND "${VCPKG_COMBINED_${lang}_FLAGS_${var_suffix}}") + else() + set(${lang}FLAGS "") + endif() + vcpkg_list(APPEND flags ${lang}FLAGS) + endforeach() + separate_arguments(LDFLAGS NATIVE_COMMAND "${VCPKG_COMBINED_SHARED_LINKER_FLAGS_${var_suffix}}") + separate_arguments(ARFLAGS NATIVE_COMMAND "${VCPKG_COMBINED_STATIC_LINKER_FLAGS_${var_suffix}}") + set(RCFLAGS "${VCPKG_COMBINED_RC_FLAGS_${var_suffix}}") + + foreach(var IN ITEMS ABIFLAGS LDFLAGS ARFLAGS RCFLAGS) + vcpkg_list(APPEND flags ${var}) + endforeach() + + set(ABIFLAGS "") # TODO: Investigate if vcpkg should simply pass all flags in CC/CXX without any filtering and ignore CFLAGS etc. + set(pattern "") + foreach(arg IN LISTS CFLAGS) + if(NOT pattern STREQUAL "") + vcpkg_list(APPEND pattern "${arg}") + elseif(arg MATCHES "^--(sysroot|target)=.") + vcpkg_list(SET pattern "${arg}") + elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") + vcpkg_list(SET pattern "${arg}") + continue() + else() + continue() + endif() + vcpkg_list(APPEND ABIFLAGS "${pattern}") + list(REMOVE_ITEM CFLAGS "${pattern}") + list(REMOVE_ITEM CXXFLAGS "${pattern}") + list(REMOVE_ITEM LDFLAGS "${pattern}") + set(pattern "") + endforeach() + + # Filter common CPPFLAGS out of CFLAGS and CXXFLAGS + if(NOT arg_NO_CPPFLAGS) + set(CPPFLAGS "") + set(pattern "") + foreach(arg IN LISTS CXXFLAGS) + if(NOT pattern STREQUAL "") + vcpkg_list(APPEND pattern "${arg}") + elseif(arg MATCHES "^-(D|isystem).") + vcpkg_list(SET pattern "${arg}") + elseif(arg MATCHES "^-(D|isystem)\$") + vcpkg_list(SET pattern "${arg}") + continue() + else() + continue() + endif() + string(FIND "${CFLAGS}" "${pattern} " index) + if(NOT index STREQUAL "-1") + vcpkg_list(APPEND CPPFLAGS ${pattern}) + list(REMOVE_ITEM CFLAGS "${pattern}") + list(REMOVE_ITEM CXXFLAGS "${pattern}") + list(REMOVE_ITEM LDFLAGS "${pattern}") + endif() + endforeach() + set(pattern "") + foreach(arg IN LISTS CFLAGS) + if(NOT pattern STREQUAL "") + vcpkg_list(APPEND pattern "${arg}") + elseif(arg MATCHES "^-(D|isystem)\$") + vcpkg_list(SET pattern "${arg}") + continue() + elseif(arg MATCHES "^-(D|isystem).") + vcpkg_list(SET pattern "${arg}") + else() + continue() + endif() + string(FIND "${CXXFLAGS}" "${pattern} " index) + if(NOT index STREQUAL "-1") + vcpkg_list(APPEND CPPFLAGS ${pattern}) + list(REMOVE_ITEM CFLAGS "${pattern}") + list(REMOVE_ITEM CXXFLAGS "${pattern}") + list(REMOVE_ITEM LDFLAGS "${pattern}") + endif() + vcpkg_list(SET pattern) + endforeach() + endif() + + # libtool tries to filter CFLAGS passed to the link stage via a allow list. + + # This approach is flawed since it fails to pass flags unknown to libtool + # but required for linking to the link stage (e.g. -fsanitize=). + # libtool has an -R option so we need to guard against -RTC by using -Xcompiler. + # While configuring there might be a lot of unknown compiler option warnings + # due to that; just ignore them. + set(compiler_flag_escape "") + if(arg_COMPILER_FRONTEND STREQUAL "MSVC" AND NOT arg_NO_FLAG_ESCAPING) + set(compiler_flag_escape "-Xcompiler") # TODO: Check why this had a trailing space? We are using lists so it shouldn't be necessary here + endif() + if(compiler_flag_escape) + list(TRANSFORM CFLAGS PREPEND "${compiler_flag_escape};") + list(TRANSFORM CXXFLAGS PREPEND "${compiler_flag_escape};") + endif() + + set(library_path_flag "${VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG}") + + set(linker_flag_escape "") + if(arg_COMPILER_FRONTEND STREQUAL "MSVC" AND NOT arg_NO_FLAG_ESCAPING) + # Removed by libtool + set(linker_flag_escape "-Xlinker ") + if(arg_USES_WRAPPERS) + # 1st and 3rd are removed by libtool, 2nd by wrapper + set(linker_flag_escape "-Xlinker -Xlinker -Xlinker ") + endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + string(STRIP "$ENV{_LINK_} ${VCPKG_COMBINED_STATIC_LINKER_FLAGS_${var_suffix}}" LINK_ENV) + else() + string(STRIP "$ENV{_LINK_} ${VCPKG_COMBINED_SHARED_LINKER_FLAGS_${var_suffix}}" LINK_ENV) + endif() + endif() + if(linker_flag_escape) + string(STRIP "${linker_flag_escape}" linker_flag_escape_stripped) + string(REPLACE " " ";" linker_flag_escape_stripped "${linker_flag_escape_stripped}") + list(TRANSFORM LDFLAGS PREPEND "${linker_flag_escape_stripped};") + endif() + string(REPLACE " " "\\ " current_installed_dir_escaped "${CURRENT_INSTALLED_DIR}") + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") + vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${current_installed_dir_escaped}${path_suffix_${var_suffix}}/lib/manual-link") + endif() + if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") + vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${current_installed_dir_escaped}${path_suffix_${var_suffix}}/lib") + endif() + + if(arg_USE_RESPONSE_FILES) + if(arg_COMPILER_FRONTEND STREQUAL "MSVC") + # If LDFLAGS are passed to cl instead of link they need to be on a single line after -link + list(PREPEND LDFLAGS -link) + list(JOIN LDFLAGS " " LDFLAGS) + endif() + foreach(var IN ITEMS CPPFLAGS CFLAGS CXXFLAGS LDFLAGS) + list(JOIN ${var} "\n" string) + set(rspfile "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${var}-${var_suffix}.rsp") + file(WRITE "${rspfile}" "${string}") + set(${var} "@${rspfile}") + endforeach() + endif() + + if(ARFLAGS AND NOT arg_COMPILER_FRONTEND STREQUAL "MSVC") + # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) + # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? + # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE + vcpkg_list(PREPEND ARFLAGS "cr") + elseif(arg_USES_WRAPPERS AND arg_COMPILER_FRONTEND STREQUAL "MSVC") + # The wrapper needs an action and that action needs to be defined AFTER all flags + vcpkg_list(APPEND ARFLAGS "cr") + endif() + + foreach(var IN LISTS flags) + list(JOIN ${var} " " string) + set("${var}_${var_suffix}" "${string}" PARENT_SCOPE) + list(APPEND flags_out "${var}_${var_suffix}") + endforeach() + set("${arg_FLAGS_OUT}" "${flags_out}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_make_prepare_programs out_env) + cmake_parse_arguments(PARSE_ARGV 1 arg + "NO_CPPFLAGS;DISABLE_MSVC_WRAPPERS" + "CONFIG" + "LANGUAGES" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + + z_vcpkg_make_get_cmake_vars(LANGUAGES "${arg_LANGUAGES}") + + macro(z_vcpkg_append_to_configure_environment inoutlist var defaultval) + # Allows to overwrite settings in custom triplets via the environment + if(DEFINED ENV{${var}}) + list(APPEND "${inoutlist}" "${var}='$ENV{${var}}'") + else() + list(APPEND "${inoutlist}" "${var}='${defaultval}'") + endif() + endmacro() + + set(configure_env "") + # Remove full filepaths due to spaces and prepend filepaths to PATH (cross-compiling tools are unlikely on path by default) + if (VCPKG_TARGET_IS_WINDOWS) + # TODO More languages ? + set(progs C_COMPILER CXX_COMPILER AR + LINKER RANLIB OBJDUMP + STRIP NM DLLTOOL RC_COMPILER) + list(TRANSFORM progs PREPEND "VCPKG_DETECTED_CMAKE_") + foreach(prog IN LISTS progs) + set(filepath "${${prog}}") + if(filepath MATCHES " ") + # CHECK: Uncertain if the compile wrappers work with absolute paths containing C:\\ + cmake_path(GET filepath FILENAME ${prog}) + vcpkg_insert_program_into_path("${filepath}") + endif() + endforeach() + ### + if (NOT arg_DISABLE_MSVC_WRAPPERS) + z_vcpkg_append_to_configure_environment(configure_env CPP "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") + z_vcpkg_append_to_configure_environment(configure_env CC "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER}") + z_vcpkg_append_to_configure_environment(configure_env CXX "compile ${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") + if(NOT arg_BUILD_TRIPLET MATCHES "--host") # TODO: Check if this generates problems with the new triplet approach + z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER}") + z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") + z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "compile ${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") + else() + # Silly trick to make configure accept CC_FOR_BUILD but in reallity CC_FOR_BUILD is deactivated. + z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + endif() + + z_vcpkg_append_to_configure_environment(configure_env RC "windres-rc ${VCPKG_DETECTED_CMAKE_RC_COMPILER}") + z_vcpkg_append_to_configure_environment(configure_env WINDRES "windres-rc ${VCPKG_DETECTED_CMAKE_RC_COMPILER}") + if(VCPKG_DETECTED_CMAKE_AR) + z_vcpkg_append_to_configure_environment(configure_env AR "ar-lib ${VCPKG_DETECTED_CMAKE_AR}") + else() + z_vcpkg_append_to_configure_environment(configure_env AR "ar-lib lib.exe -verbose") + endif() + else() + z_vcpkg_append_to_configure_environment(configure_env CPP "${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") + z_vcpkg_append_to_configure_environment(configure_env CC "${VCPKG_DETECTED_CMAKE_C_COMPILER}") + z_vcpkg_append_to_configure_environment(configure_env CXX "${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") + if(NOT arg_BUILD_TRIPLET MATCHES "--host") + z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "${VCPKG_DETECTED_CMAKE_C_COMPILER}") + z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") + z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") + else() + z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + endif() + z_vcpkg_append_to_configure_environment(configure_env RC "${VCPKG_DETECTED_CMAKE_RC_COMPILER}") + z_vcpkg_append_to_configure_environment(configure_env WINDRES "${VCPKG_DETECTED_CMAKE_RC_COMPILER}") + if(VCPKG_DETECTED_CMAKE_AR) + z_vcpkg_append_to_configure_environment(configure_env AR "${VCPKG_DETECTED_CMAKE_AR}") + else() + z_vcpkg_append_to_configure_environment(configure_env AR "lib.exe -verbose") + endif() + endif() + z_vcpkg_append_to_configure_environment(configure_env LD "${VCPKG_DETECTED_CMAKE_LINKER} -verbose") + if(VCPKG_DETECTED_CMAKE_RANLIB) + z_vcpkg_append_to_configure_environment(configure_env RANLIB "${VCPKG_DETECTED_CMAKE_RANLIB}") # Trick to ignore the RANLIB call + else() + z_vcpkg_append_to_configure_environment(configure_env RANLIB ": RANLIB-disabled") + endif() + if(VCPKG_DETECTED_CMAKE_OBJDUMP) #Objdump is required to make shared libraries. Otherwise define lt_cv_deplibs_check_method=pass_all + z_vcpkg_append_to_configure_environment(configure_env OBJDUMP "${VCPKG_DETECTED_CMAKE_OBJDUMP}") # Trick to ignore the RANLIB call + endif() + if(VCPKG_DETECTED_CMAKE_STRIP) # If required set the ENV variable STRIP in the portfile correctly + z_vcpkg_append_to_configure_environment(configure_env STRIP "${VCPKG_DETECTED_CMAKE_STRIP}") + else() + z_vcpkg_append_to_configure_environment(configure_env STRIP ": STRIP-disabled") + list(APPEND arg_OPTIONS ac_cv_prog_ac_ct_STRIP=:) + endif() + if(VCPKG_DETECTED_CMAKE_NM) # If required set the ENV variable NM in the portfile correctly + z_vcpkg_append_to_configure_environment(configure_env NM "${VCPKG_DETECTED_CMAKE_NM}") + else() + # Would be better to have a true nm here! Some symbols (mainly exported variables) get not properly imported with dumpbin as nm + # and require __declspec(dllimport) for some reason (same problem CMake has with WINDOWS_EXPORT_ALL_SYMBOLS) + z_vcpkg_append_to_configure_environment(configure_env NM "dumpbin.exe -symbols -headers") + endif() + if(VCPKG_DETECTED_CMAKE_DLLTOOL) # If required set the ENV variable DLLTOOL in the portfile correctly + z_vcpkg_append_to_configure_environment(configure_env DLLTOOL "${VCPKG_DETECTED_CMAKE_DLLTOOL}") + else() + z_vcpkg_append_to_configure_environment(configure_env DLLTOOL "link.exe -verbose -dll") + endif() + + if(NOT "ASM" IN_LIST arg_LANGUAGES ) + z_vcpkg_append_to_configure_environment(configure_env CCAS ": CCAS-disabled") # If required set the ENV variable CCAS in the portfile correctly + z_vcpkg_append_to_configure_environment(configure_env AS ": AS-disabled") # If required set the ENV variable AS in the portfile correctly + + else() + set(ccas "${VCPKG_DETECTED_CMAKE_ASM_COMPILER}") + if(VCPKG_DETECTED_CMAKE_ASM_COMPILER_ID STREQUAL "MSVC") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(asmflags "--target=i686-pc-windows-msvc -m32") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(asmflags "--target=x86_64-pc-windows-msvc") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(asmflags "--target=arm64-pc-windows-msvc") + endif() + vcpkg_find_acquire_program(CLANG) + set(ccas "${CLANG}") + if(ccas MATCHES " ") + cmake_path(GET ccas PARENT_PATH ccas_dir) + cmake_path(GET ccas FILENAME ccas_filename) + vcpkg_insert_program_into_path("${ccas_dir}") + set(ccas "${ccas_filename}") + endif() + string(APPEND ccas " ${asmflags}") + endif() + z_vcpkg_append_to_configure_environment(configure_env CCAS "${ccas} -c") + z_vcpkg_append_to_configure_environment(configure_env AS "${ccas} -c") + endif() + + #foreach(_env IN LISTS arg_CONFIGURE_ENVIRONMENT_VARIABLES) + # z_vcpkg_append_to_configure_environment(configure_env ${_env} "${${_env}}") + #endforeach() + else() + # OSX dosn't like CMAKE_C(XX)_COMPILER (cc) in CC/CXX and rather wants to have gcc/g++ + vcpkg_list(SET z_vcm_all_tools) + function(z_vcpkg_make_set_env envvar cmakevar) + set(prog "${VCPKG_DETECTED_CMAKE_${cmakevar}}") + if(NOT DEFINED ENV{${envvar}} AND NOT prog STREQUAL "") + vcpkg_list(APPEND z_vcm_all_tools "${prog}") + if(ARGN) + string(APPEND prog " ${ARGN}") + endif() + set(z_vcm_all_tools "${z_vcm_all_tools}" PARENT_SCOPE) + #set(ENV{${envvar}} "${prog}") + # Should probably create an env string like windows. This would be easier to return to the caller + endif() + z_vcpkg_append_to_configure_environment(configure_env "${envvar}" "${prog}") + set(configure_env "${configure_env}" PARENT_SCOPE) + endfunction() + + z_vcpkg_make_set_env(CC C_COMPILER ${ABIFLAGS_${arg_CONFIG}}) + z_vcpkg_make_set_env(CXX CXX_COMPILER ${ABIFLAGS_${arg_CONFIG}}) + if(NOT arg_BUILD_TRIPLET MATCHES "--host") + z_vcpkg_make_set_env(CC_FOR_BUILD C_COMPILER ${ABIFLAGS_${arg_CONFIG}}) + z_vcpkg_make_set_env(CPP_FOR_BUILD C_COMPILER "-E" ${ABIFLAGS_${arg_CONFIG}}) + z_vcpkg_make_set_env(CXX_FOR_BUILD CXX_COMPILER ${ABIFLAGS_${arg_CONFIG}}) + else() + set(ENV{CC_FOR_BUILD} "umask 0 | touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + set(ENV{CPP_FOR_BUILD} "umask 0 | touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + set(ENV{CXX_FOR_BUILD} "umask 0 | touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") + endif() + if("ASM" IN_LIST arg_LANGUAGES ) + z_vcpkg_make_set_env(CCAS ASM_COMPILER "-c" ${ABIFLAGS_${arg_CONFIG}}) + z_vcpkg_make_set_env(AS ASM_COMPILER "-c" ${ABIFLAGS_${arg_CONFIG}}) + endif() + z_vcpkg_make_set_env(NM NM) + z_vcpkg_make_set_env(RC RC) + z_vcpkg_make_set_env(WINDRES RC) + z_vcpkg_make_set_env(DLLTOOL DLLTOOL) + z_vcpkg_make_set_env(STRIP STRIP) + z_vcpkg_make_set_env(OBJDUMP OBJDUMP) + z_vcpkg_make_set_env(RANLIB RANLIB) + z_vcpkg_make_set_env(AR AR) + z_vcpkg_make_set_env(LD LINKER) + unset(z_vcpkg_make_set_env) + + list(FILTER z_vcm_all_tools INCLUDE REGEX " ") + if(z_vcm_all_tools) + list(REMOVE_DUPLICATES z_vcm_all_tools) + list(JOIN z_vcm_all_tools "\n " tools) + message(STATUS "Warning: Tools with embedded space may be handled incorrectly by configure:\n ${tools}") + endif() + endif() + #list(APPEND configure_env "MSYS2_ARG_CONV_EXCL='-LIBPATH:*;-OPT:*;-machine:*;-D*;LINK;_LINK_;CL;_CL_'") + list(JOIN configure_env " " configure_env) + set("${out_env}" "${configure_env}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_make_prepare_flags) # Hmm change name? + cmake_parse_arguments(PARSE_ARGV 0 arg + "NO_CPPFLAGS;DISABLE_MSVC_WRAPPERS;NO_FLAG_ESCAPING;USE_RESPONSE_FILES" + "LIBS_OUT;FRONTEND_VARIANT_OUT;C_COMPILER_NAME" + "LANGUAGES" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + + z_vcpkg_make_get_cmake_vars(LANGUAGES ${arg_LANGUAGES}) + + # ==== LIBS + # TODO: Figure out what to do with other Languages like Fortran + # Remove outer quotes from cmake variables which will be forwarded via makefile/shell variables + # substituted into makefile commands (e.g. Android NDK has "--sysroot=...") + separate_arguments(c_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES}") + separate_arguments(cxx_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") + list(REMOVE_ITEM cxx_libs_list ${c_libs_list}) + set(all_libs_list ${cxx_libs_list} ${c_libs_list}) + #Do lib list transformation from name.lib to -lname if necessary + set(x_vcpkg_transform_libs ON) + if(VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC" AND (arg_NO_FLAG_ESCAPING)) + set(x_vcpkg_transform_libs OFF) + endif() + if(VCPKG_TARGET_IS_UWP) + set(x_vcpkg_transform_libs OFF) + # Avoid libtool choke: "Warning: linker path does not have real file for library -lWindowsApp." + # The problem with the choke is that libtool always falls back to built a static library even if a dynamic was requested. + # Note: Env LIBPATH;LIB are on the search path for libtool by default on windows. + # It even does unix/dos-short/unix transformation with the path to get rid of spaces. + endif() + if(x_vcpkg_transform_libs) + list(TRANSFORM all_libs_list REPLACE "[.](dll[.]lib|lib|a|so)$" "") + if(VCPKG_TARGET_IS_WINDOWS) + list(REMOVE_ITEM all_libs_list "uuid") + endif() + + list(TRANSFORM all_libs_list REPLACE "^([^-].*)" "-l\\1") + if(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + # libtool must be told explicitly that there is no dynamic linkage for uuid. + # The "-Wl,..." syntax is understood by libtool and gcc, but no by ld. + list(TRANSFORM all_libs_list REPLACE "^-luuid\$" "-Wl,-Bstatic,-luuid,-Bdynamic") + endif() + endif() + if(all_libs_list) + list(JOIN all_libs_list " " all_libs_string) + if(DEFINED ENV{LIBS}) + set(ENV{LIBS} "$ENV{LIBS} ${all_libs_string}") + else() + set(ENV{LIBS} "${all_libs_string}") + endif() + endif() + + set("${arg_LIBS_OUT}" "${all_libs_string}" PARENT_SCOPE) + + # ==== /LIBS + + if(VCPKG_TARGET_IS_WINDOWS) + vcpkg_backup_env_variables(VARS _CL_ _LINK_) + # TODO: Should be CPP flags instead -> rewrite when vcpkg_determined_cmake_compiler_flags defined + if(VCPKG_TARGET_IS_UWP) + # Be aware that configure thinks it is crosscompiling due to: + # error while loading shared libraries: VCRUNTIME140D_APP.dll: + # cannot open shared object file: No such file or directory + # IMPORTANT: The only way to pass linker flags through libtool AND the compile wrapper + # is to use the CL and LINK environment variables !!! + # (This is due to libtool and compiler wrapper using the same set of options to pass those variables around) + file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}" VCToolsInstallDir) + set(_replacement -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_DEBUG "${VCPKG_COMBINED_CXX_FLAGS_DEBUG}") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_DEBUG "${VCPKG_COMBINED_C_FLAGS_DEBUG}") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_RELEASE "${VCPKG_COMBINED_CXX_FLAGS_RELEASE}") + string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_RELEASE "${VCPKG_COMBINED_C_FLAGS_RELEASE}") + # Can somebody please check if CMake's compiler flags for UWP are correct? + set(ENV{_CL_} "$ENV{_CL_} -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\"") + set(ENV{_LINK_} "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES} ${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") + endif() + endif() + + #### + set(flags_opts "") + if(DEFINED arg_LANGUAGES) + set(flags_opts "LANGUAGES;${arg_LANGUAGES}") + endif() + if(arg_NO_CPPFLAGS) + list(APPEND flags_opts NO_CPPFLAGS) + endif() + + if(NOT arg_DISABLE_MSVC_WRAPPERS) + list(APPEND flags_opts USES_WRAPPERS) + endif() + + if(arg_NO_FLAG_ESCAPING) + list(APPEND flags_opts NO_FLAG_ESCAPING) + endif() + + if(arg_USE_RESPONSE_FILES) + list(APPEND flags_opts USE_RESPONSE_FILES) + endif() + + z_vcpkg_make_prepare_compile_flags( + CONFIG RELEASE + COMPILER_FRONTEND "${VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT}" + FLAGS_OUT release_flags_list + ${flags_opts} + ) + if(NOT DEFINED VCPKG_BUILD_TYPE) + list(APPEND all_buildtypes DEBUG) + z_vcpkg_make_prepare_compile_flags( + CONFIG DEBUG + COMPILER_FRONTEND "${VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT}" + FLAGS_OUT debug_flags_list + ${flags_opts} + ) + endif() + + foreach(flag IN LISTS release_flags_list debug_flags_list) + set("${flag}" "${${flag}}" PARENT_SCOPE) + endforeach() + #list(FILTER z_vcm_all_flags INCLUDE REGEX " ") # TODO: Figure out where this warning belongs to. + #if(z_vcm_all_flags) + # list(REMOVE_DUPLICATES z_vcm_all_flags) + # list(JOIN z_vcm_all_flags "\n " flags) + # message(STATUS "Warning: Arguments with embedded space may be handled incorrectly by configure:\n ${flags}") + #endif() + + #TODO: parent scope requiered vars + cmake_path(GET VCPKG_DETECTED_CMAKE_C_COMPILER FILENAME cname) + set("${C_COMPILER_NAME}" "${cname}" PARENT_SCOPE) # needed by z_vcpkg_make_get_configure_triplets + set("${arg_FRONTEND_VARIANT_OUT}" "${VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_make_default_path_and_configure_options out_var) + # THIS IS TODO + cmake_parse_arguments(PARSE_ARGV 1 arg + "AUTOMAKE" + "CONFIG;EXCLUDE_FILTER;INCLUDE_FILTER" + "" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + + set(opts "") + string(TOUPPER "${arg_CONFIG}" arg_CONFIG) + + z_vcpkg_make_set_common_vars() + + list(APPEND opts lt_cv_deplibs_check_method=pass_all) + + # Pre-processing windows configure requirements + if (VCPKG_TARGET_IS_WINDOWS) + # Other maybe interesting variables to control + # COMPILE This is the command used to actually compile a C source file. The file name is appended to form the complete command line. + # LINK This is the command used to actually link a C program. + # CXXCOMPILE The command used to actually compile a C++ source file. The file name is appended to form the complete command line. + # CXXLINK The command used to actually link a C++ program. + + # Variables not correctly detected by configure. In release builds. + list(APPEND opts gl_cv_double_slash_root=yes + ac_cv_func_memmove=yes + ac_cv_func_memset=yes + ) + + if(VCPKG_TARGET_ARCHITECTURE MATCHES "^[Aa][Rr][Mm]64$") + list(APPEND opts gl_cv_host_cpu_c_abi=no) + endif() + endif() + + # Set configure paths + set(current_installed_dir_msys "${CURRENT_INSTALLED_DIR}") + if(CMAKE_HOST_WIN32) + string(REGEX REPLACE "^([a-zA-Z]):/" "/\\1/" current_installed_dir_msys "${current_installed_dir_msys}") + endif() + vcpkg_list(APPEND opts "--prefix=${current_installed_dir_msys}${path_suffix_${arg_CONFIG}}") + + if(arg_CONFIG STREQUAL "RELEASE") + # ${prefix} has an extra backslash to prevent early expansion when calling `bash -c configure "..."`. + vcpkg_list(APPEND opts + # Important: These should all be relative to prefix! + "--bindir=\\\${prefix}/tools/${PORT}/bin" + "--sbindir=\\\${prefix}/tools/${PORT}/sbin" + "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default + #"--includedir='\${prefix}'/include" # already the default! + "--mandir=\\\${prefix}/share/${PORT}" + "--docdir=\\\${prefix}/share/${PORT}" + "--datarootdir=\\\${prefix}/share/${PORT}") + else() + vcpkg_list(APPEND opts + # Important: These should all be relative to prefix! + "--bindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/bin" + "--sbindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/sbin" + "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default + "--includedir=\\\${prefix}/../include" + "--mandir=\\\${prefix}/share/${PORT}" + "--docdir=\\\${prefix}/share/${PORT}" + "--datarootdir=\\\${prefix}/share/${PORT}") + endif() + # Setup common options + if(NOT arg_AUTOMAKE) + vcpkg_list(APPEND opts --disable-silent-rules --verbose) + endif() + + if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + vcpkg_list(APPEND opts --enable-shared --disable-static) + else() + vcpkg_list(APPEND opts --disable-shared --enable-static) + endif() + + if(DEFINED arg_EXCLUDE_FILTER) + list(FILTER opts EXCLUDE REGEX "${arg_EXCLUDE_FILTER}") + endif() + + if(DEFINED arg_INCLUDE_FILTER) + list(FILTER opts INCLUDE REGEX "${arg_INCLUDE_FILTER}") + endif() + + set("${out_var}" ${opts} PARENT_SCOPE) +endfunction() diff --git a/ports/vcpkg-make/vcpkg_make_configure.cmake b/ports/vcpkg-make/vcpkg_make_configure.cmake new file mode 100644 index 0000000..8d1b02a --- /dev/null +++ b/ports/vcpkg-make/vcpkg_make_configure.cmake @@ -0,0 +1,151 @@ +include_guard(GLOBAL) +include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_make.cmake") + +function(vcpkg_make_configure) # +# Replacement for vcpkg_configure_make +# z_vcpkg_is_autoconf +# z_vcpkg_is_automake + cmake_parse_arguments(PARSE_ARGV 0 arg + "AUTOCONFIG;COPY_SOURCE;DISABLE_MSVC_WRAPPERS;NO_CPPFLAGS;ADD_BIN_TO_PATH;NO_DEFAULT_OPTIONS;NO_MSVC_FLAG_ESCAPING;USE_RESPONSE_FILES" + "SOURCE_PATH;SHELL" + "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE;PRE_CONFIGURE_CMAKE_COMMANDS;POST_CONFIGURE_CMAKE_COMMANDS;LANGUAGES" + ) + + z_vcpkg_unparsed_args(FATAL_ERROR) + + # Can be set in the triplet to append options for configure + if(DEFINED VCPKG_MAKE_CONFIGURE_OPTIONS) + list(APPEND arg_OPTIONS ${VCPKG_MAKE_CONFIGURE_OPTIONS}) + endif() + if(DEFINED VCPKG_MAKE_CONFIGURE_OPTIONS_RELEASE) + list(APPEND arg_OPTIONS_RELEASE ${VCPKG_MAKE_CONFIGURE_OPTIONS_RELEASE}) + endif() + if(DEFINED VCPKG_MAKE_CONFIGURE_OPTIONS_DEBUG) + list(APPEND arg_OPTIONS_DEBUG ${VCPKG_MAKE_CONFIGURE_OPTIONS_DEBUG}) + endif() + + set(src_dir "${arg_SOURCE_PATH}") + + z_vcpkg_warn_path_with_spaces() + + set(prepare_flags_opts "") + if(arg_DISABLE_MSVC_WRAPPERS) + list(APPEND prepare_flags_opts "DISABLE_MSVC_WRAPPERS") + else() + + endif() + if(arg_NO_CPPFLAGS) + list(APPEND prepare_flags_opts "NO_CPPFLAGS") + endif() + if(DEFINED arg_LANGUAGES) + list(APPEND prepare_flags_opts "LANGUAGES" "${arg_LANGUAGES}") + endif() + + set(escaping "") + if(arg_NO_MSVC_FLAG_ESCAPING) + set(escaping NO_FLAG_ESCAPING) + endif() + + if(arg_USE_RESPONSE_FILES) + set(escaping USE_RESPONSE_FILES) + endif() + + z_vcpkg_set_global_property(make_prepare_flags_opts "${prepare_flags_opts}") + z_vcpkg_make_prepare_flags(${prepare_flags_opts} ${escaping} C_COMPILER_NAME ccname FRONTEND_VARIANT_OUT frontend) + + if(DEFINED VCPKG_MAKE_BUILD_TRIPLET) + set(arg_BUILD_TRIPLET "${VCPKG_MAKE_BUILD_TRIPLET}") + endif() + if(NOT DEFINED arg_BUILD_TRIPLET) + z_vcpkg_make_get_configure_triplets(arg_BUILD_TRIPLET COMPILER_NAME ccname) + endif() + + if(NOT arg_DISABLE_MSVC_WRAPPERS AND "${frontend}" STREQUAL "MSVC" ) + # Lets assume that wrappers are only required for MSVC like frontends. + vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-make/wrappers") + endif() + + if(NOT arg_SHELL) + vcpkg_make_get_shell(arg_SHELL) + endif() + set(shell_cmd "${arg_SHELL}") + + if(arg_AUTOCONFIG) + vcpkg_run_autoreconf("${shell_cmd}" "${src_dir}") + endif() + + # Backup environment variables + # CCAS CC C CPP CXX FC FF GC LD LF LIBTOOL OBJC OBJCXX R UPC Y + set(cm_FLAGS AR AS CCAS CC C CPP CXX FC FF GC LD LF LIBTOOL OBJC OBJXX R UPC Y RC) + list(TRANSFORM cm_FLAGS APPEND "FLAGS") + vcpkg_backup_env_variables(VARS + ${cm_FLAGS} + # General backup + PATH + # Used by gcc/linux + C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH LD_LIBRARY_PATH + # Used by cl + INCLUDE LIB LIBPATH _CL_ _LINK_ + ) + z_vcpkg_make_set_common_vars() + + foreach(config IN LISTS buildtypes) + string(TOUPPER "${config}" configup) + set(target_dir "${workdir_${configup}}") + file(REMOVE_RECURSE "${target_dir}") + file(MAKE_DIRECTORY "${target_dir}") + file(RELATIVE_PATH relative_build_path "${target_dir}" "${src_dir}") + if(arg_COPY_SOURCE) + file(COPY "${src_dir}/" DESTINATION "${target_dir}") + set(relative_build_path ".") + endif() + + z_vcpkg_make_prepare_programs(configure_env ${prepare_flags_opts} CONFIG "${configup}") + + set(opts "") + set(opts_cache "") + if(NOT arg_NO_DEFAULT_OPTIONS) + z_vcpkg_make_default_path_and_configure_options(opts AUTOMAKE CONFIG "${configup}") # TODO: figure out outmake + z_vcpkg_make_prepare_configure_cache(opts_cache CONFIG "${configup}" WORKING_DIRECTORY "${target_dir}") + vcpkg_list(APPEND arg_OPTIONS ${opts}) + endif() + + set(configure_path_from_wd "./${relative_build_path}/configure") + if(arg_ADD_BIN_TO_PATH) + set(extra_configure_opts ADD_BIN_TO_PATH) + endif() + foreach(cmd IN LISTS arg_PRE_CONFIGURE_CMAKE_COMMANDS) + cmake_language(CALL ${cmd} ${configup}) + endforeach() + + vcpkg_make_run_configure(SHELL + "${shell_cmd}" + CONFIG #configure_env + "${configup}" + CONFIGURE_ENV + "${configure_env}" + CONFIGURE_PATH + "${configure_path_from_wd}" + OPTIONS + ${opts_cache} + ${arg_BUILD_TRIPLET} + ${arg_OPTIONS} + ${arg_OPTIONS_${configup}} + WORKING_DIRECTORY + "${target_dir}" + ${extra_configure_opts} + ) + foreach(cmd IN LISTS arg_POST_CONFIGURE_CMAKE_COMMANDS) + cmake_language(CALL ${cmd} ${configup}) + endforeach() + endforeach() + + # Restore environment + vcpkg_restore_env_variables(VARS + ${cm_FLAGS} + C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH LD_LIBRARY_PATH + INCLUDE LIB LIBPATH _CL_ _LINK_ + ) + + find_program(Z_VCPKG_MAKE NAMES make gmake NAMES_PER_DIR REQUIRED) +endfunction() \ No newline at end of file diff --git a/ports/vcpkg-make/vcpkg_make_install.cmake b/ports/vcpkg-make/vcpkg_make_install.cmake new file mode 100644 index 0000000..aad1222 --- /dev/null +++ b/ports/vcpkg-make/vcpkg_make_install.cmake @@ -0,0 +1,150 @@ +include_guard(GLOBAL) +include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_make.cmake") + +function(vcpkg_make_install) +# Replacement for vcpkg_(install|build)_make + cmake_parse_arguments(PARSE_ARGV 0 arg + "ADD_BIN_TO_PATH;DISABLE_PARALLEL;NO_DESTDIR;NO_MSVC_FLAG_ESCAPING;USE_RESPONSE_FILES" + "LOGFILE_ROOT;SUBPATH;MAKEFILE;TARGETS;SHELL" + "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + + if(NOT DEFINED arg_LOGFILE_ROOT) + set(arg_LOGFILE_ROOT "make") + endif() + + if(NOT DEFINED arg_TARGETS) + set(arg_TARGETS "all;install") + endif() + + if (NOT DEFINED arg_MAKEFILE) + set(arg_MAKEFILE Makefile) + endif() + + # Can be set in the triplet to append options for configure + if(DEFINED VCPKG_MAKE_OPTIONS) + list(APPEND arg_OPTIONS ${VCPKG_MAKE_OPTIONS}) + endif() + if(DEFINED VCPKG_MAKE_OPTIONS_RELEASE) + list(APPEND arg_OPTIONS_RELEASE ${VCPKG_MAKE_OPTIONS_RELEASE}) + endif() + if(DEFINED VCPKG_MAKE_OPTIONS_DEBUG) + list(APPEND arg_OPTIONS_DEBUG ${VCPKG_MAKE_OPTIONS_DEBUG}) + endif() + + if(WIN32) + set(Z_VCPKG_INSTALLED "${CURRENT_INSTALLED_DIR}") + else() + string(REPLACE " " "\ " Z_VCPKG_INSTALLED "${CURRENT_INSTALLED_DIR}") + endif() + + if(NOT arg_SHELL) + vcpkg_make_get_shell(arg_SHELL) + endif() + set(shell_cmd "${arg_SHELL}") + + find_program(Z_VCPKG_MAKE NAMES make gmake NAMES_PER_DIR REQUIRED) + set(make_command "${Z_VCPKG_MAKE}") + + set(destdir "${CURRENT_PACKAGES_DIR}") + if (CMAKE_HOST_WIN32) + set(path_backup "$ENV{PATH}") + vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-make/wrappers") # This probably doesn't hurt but should it be guarded? + string(REPLACE " " [[\ ]] vcpkg_package_prefix "${CURRENT_PACKAGES_DIR}") + string(REGEX REPLACE [[([a-zA-Z]):/]] [[/\1/]] destdir "${vcpkg_package_prefix}") + endif() + + vcpkg_backup_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH CPPFLAGS CFLAGS CXXFLAGS RCFLAGS PATH) + + z_vcpkg_make_set_common_vars() + z_vcpkg_get_global_property(prepare_flags_opts "make_prepare_flags_opts") + if(arg_NO_MSVC_FLAG_ESCAPING) + list(APPEND prepare_flags_opts NO_FLAG_ESCAPING) + endif() + if(arg_USE_RESPONSE_FILES) + set(escaping USE_RESPONSE_FILES) + endif() + z_vcpkg_make_prepare_flags(${prepare_flags_opts}) + + set(prepare_env_opts "") + if(arg_ADD_BIN_TO_PATH) + set(prepare_env_opts ADD_BIN_TO_PATH) + endif() + + foreach(buildtype IN LISTS buildtypes) + string(TOUPPER "${buildtype}" cmake_buildtype) + set(short_buildtype "${suffix_${cmake_buildtype}}") + set(path_suffix "${path_suffix_${cmake_buildtype}}") + + set(working_directory "${workdir_${cmake_buildtype}}/${arg_SUBPATH}") + message(STATUS "Building/Installing ${TARGET_TRIPLET}-${short_buildtype} in ${workdir_${cmake_buildtype}}/${arg_SUBPATH}") + + # Setup environment + z_vcpkg_make_prepare_env("${cmake_buildtype}" ${prepare_env_opts}) + z_vcpkg_make_prepare_programs(configure_env ${prepare_flags_opts} CONFIG "${cmake_buildtype}") + + set(destdir_opt "") + if(NOT arg_NO_DESTDIR) + set(destdir_opt "DESTDIR=${destdir}") + endif() + + set(extra_opts "") # Use --environment-overrides as default? + if(NOT VCPKG_TARGET_IS_OSX) + set(extra_opts --trace) + # TODO: Introspect the found make for available options? + endif() + + foreach(target IN LISTS arg_TARGETS) + vcpkg_list(SET make_cmd_line ${make_command} ${arg_OPTIONS} ${arg_OPTIONS_${cmake_buildtype}} V=1 -j ${VCPKG_CONCURRENCY} ${extra_opts} -f ${arg_MAKEFILE} ${target} ${destdir_opt}) + vcpkg_list(SET no_parallel_make_cmd_line ${make_command} ${arg_OPTIONS} ${arg_OPTIONS_${cmake_buildtype}} V=1 -j 1 ${extra_opts} -f ${arg_MAKEFILE} ${target} ${destdir_opt}) + message(STATUS "Making target '${target}' for ${TARGET_TRIPLET}-${short_buildtype}") + if (arg_DISABLE_PARALLEL) + vcpkg_run_shell_as_build( + WORKING_DIRECTORY "${working_directory}" + LOGNAME "${arg_LOGFILE_ROOT}-${target}-${TARGET_TRIPLET}-${short_buildtype}" + SHELL ${shell_cmd} + #COMMAND ${configure_env} ${no_parallel_make_cmd_line} + NO_PARALLEL_COMMAND ${configure_env} ${no_parallel_make_cmd_line} + ) + else() + vcpkg_run_shell_as_build( + WORKING_DIRECTORY "${working_directory}" + LOGNAME "${arg_LOGFILE_ROOT}-${target}-${TARGET_TRIPLET}-${short_buildtype}" + SHELL ${shell_cmd} + COMMAND ${configure_env} ${no_parallel_make_cmd_line} + NO_PARALLEL_COMMAND ${configure_env} ${no_parallel_make_cmd_line} + ) + endif() + file(READ "${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_ROOT}-${target}-${TARGET_TRIPLET}-${short_buildtype}-out.log" logdata) + if(logdata MATCHES "Warning: linker path does not have real file for library") + message(FATAL_ERROR "libtool could not find a file being linked against!") + endif() + endforeach() + + z_vcpkg_make_restore_env() + + vcpkg_restore_env_variables(VARS LIB LIBPATH LIBRARY_PATH) + endforeach() + + ## Cleanup + string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" destdir_suffix "${CURRENT_INSTALLED_DIR}") + if (EXISTS "${CURRENT_PACKAGES_DIR}${destdir_suffix}") # <- Means DESTDIR was correctly used; need to move files. + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}_tmp") + file(RENAME "${CURRENT_PACKAGES_DIR}" "${CURRENT_PACKAGES_DIR}_tmp") + file(RENAME "${CURRENT_PACKAGES_DIR}_tmp${destdir_suffix}" "${CURRENT_PACKAGES_DIR}") + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}_tmp") + endif() + + # Remove libtool files since they contain absolute paths and are not necessary. + file(GLOB_RECURSE libtool_files "${CURRENT_PACKAGES_DIR}/**/*.la") + if(libtool_files) + file(REMOVE ${libtool_files}) + endif() + + if (CMAKE_HOST_WIN32) + set(ENV{PATH} "${path_backup}") + endif() + + vcpkg_restore_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH CPPFLAGS CFLAGS CXXFLAGS RCFLAGS) +endfunction() \ No newline at end of file diff --git a/ports/vcpkg-make/vcpkg_scripts.cmake b/ports/vcpkg-make/vcpkg_scripts.cmake new file mode 100644 index 0000000..673df47 --- /dev/null +++ b/ports/vcpkg-make/vcpkg_scripts.cmake @@ -0,0 +1,210 @@ +include_guard(GLOBAL) +function(vcpkg_insert_into_path) + cmake_parse_arguments(PARSE_ARGV 0 arg + "" + "PATH_OUT;APPENDED_OUT" + "BEFORE;INSERT" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + cmake_path(CONVERT "$ENV{PATH}" TO_CMAKE_PATH_LIST path_list NORMALIZE) + + string(TOUPPER "${arg_BEFORE}" before_upper) + + set(index 0) + set(appending TRUE) + foreach(item IN LISTS path_list) + string(TOUPPER "${item}" item_upper) + if(item IN_LIST arg_BEFORE OR item_upper IN_LIST before_upper) + set(appending FALSE) + break() + endif() + math(EXPR index "${index} + 1") + endforeach() + + vcpkg_list(INSERT path_list "${index}" ${arg_INSERT}) + + cmake_path(CONVERT "${path_list}" TO_NATIVE_PATH_LIST native_path_list) + set(ENV{PATH} "${native_path_list}") + if(DEFINED arg_PATH_OUT) + set("${arg_PATH_OUT}" "${path_list}" PARENT_SCOPE) + endif() + if(appending) + set("${arg_APPENDED_OUT}" "TRUE" PARENT_SCOPE) + else() + set("${arg_APPENDED_OUT}" "FALSE" PARENT_SCOPE) + endif() +endfunction() + +function(vcpkg_insert_program_into_path prog) + set(filepath "${prog}") + cmake_path(GET filepath FILENAME ${prog}) + find_program(z_vcm_prog_found NAMES "${${prog}}" PATHS ENV PATH NO_DEFAULT_PATH NO_CACHE) + if(NOT z_vcm_prog_found STREQUAL filepath) + cmake_path(GET z_vcm_prog_found PARENT_PATH before_dir) + cmake_path(GET filepath PARENT_PATH dir) + vcpkg_insert_into_path( + INSERT "${dir}" + BEFORE "${before_dir}" + ) + endif() +endfunction() + +function(vcpkg_insert_msys_into_path msys_out) + cmake_parse_arguments(PARSE_ARGV 1 arg + "" + "PATH_OUT" + "PACKAGES" + ) + z_vcpkg_unparsed_args(FATAL_ERROR) + vcpkg_acquire_msys(MSYS_ROOT PACKAGES ${arg_PACKAGES}) + cmake_path(CONVERT "$ENV{SystemRoot}" TO_CMAKE_PATH_LIST system_root NORMALIZE) + cmake_path(CONVERT "$ENV{LOCALAPPDATA}" TO_CMAKE_PATH_LIST local_app_data NORMALIZE) + file(REAL_PATH "${system_root}" system_root) + + vcpkg_list(SET find_system_dirs + "${system_root}/system32" + "${system_root}/System32" + "${system_root}/system32/" + "${system_root}/System32/" + "${local_app_data}/Microsoft/WindowsApps" + "${local_app_data}/Microsoft/WindowsApps/" + ) + + vcpkg_insert_into_path( + INSERT "${MSYS_ROOT}/usr/bin" + BEFORE ${find_system_dirs} + PATH_OUT path_out + APPENDED_OUT appending + ) + + if(appending) + message(WARNING "Unable to find system dir in the PATH variable! Appending required msys paths!") + endif() + + if(DEFINED arg_PATH_OUT) + set("${arg_PATH_OUT}" "${path_out}" PARENT_SCOPE) + endif() + + set("${msys_out}" "${MSYS_ROOT}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_convert_to_msys_path outvar invar) + if(CMAKE_HOST_WIN32) + string(REGEX REPLACE "^([a-zA-Z]):/" "/\\1/" current_installed_dir_msys "${invar}") + endif() + set("${outvar}" "${current_installed_dir_msys}" PARENT_SCOPE) +endfunction() + +### Helper macros for argument checking +macro(z_vcpkg_unparsed_args warning_level) + if(DEFINED arg_UNPARSED_ARGUMENTS) + message("${warning_level}" "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") + endif() +endmacro() + +macro(z_vcpkg_conflicting_args) + set(conflicting_args_set "") + foreach(z_vcpkg_conflicting_args_index RANGE 0 "${ARGC}") + if(${ARGV${z_vcpkg_conflicting_args_index}}) + list(APPEND conflicting_args_set "${ARGV${z_vcpkg_conflicting_args_index}}") + endif() + endforeach() + list(LENGTH conflicting_args_set conflicting_args_set_length) + if(conflicting_args_set_length GREATER 1) + message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed conflicting arguments:'${conflicting_args_set}'. Only one of those arguments can be passed") + endif() + unset(conflicting_args_set_length) + unset(conflicting_args_set) + unset(z_vcpkg_conflicting_args_index) +endmacro() + +macro(z_vcpkg_required_args arg) + foreach(arg IN ITEMS ${ARGN}) + if(NOT DEFINED arg_${arg}) + message("FATAL_ERROR" "${CMAKE_CURRENT_FUNCTION} requires argument: ${arg}") + endif() + endforeach() +endmacro() + +function(z_vcpkg_set_global_property property value) + if(NOT ARGN STREQUAL "" AND NOT ARGN MATCHES "^APPEND(_STRING)?$") + message(FATAL_ERROR "'${CMAKE_CURRENT_FUNCTION}' called with invalid arguments '${ARGN}'") + endif() + set_property(GLOBAL ${ARGN} PROPERTY "z_vcpkg_global_property_${property}" ${value}) +endfunction() + +function(z_vcpkg_get_global_property outvar property) + if(NOT ARGN STREQUAL "" AND NOT ARGN STREQUAL "SET") + message(FATAL_ERROR "'${CMAKE_CURRENT_FUNCTION}' called with invalid arguments '${ARGN}'") + endif() + get_property(outprop GLOBAL PROPERTY "z_vcpkg_global_property_${property}" ${ARGN}) + set(${outvar} "${outprop}" PARENT_SCOPE) +endfunction() + +function(vcpkg_prepare_pkgconfig config) + set(subdir "") + if(config MATCHES "(DEBUG|debug)") + set(subdir "/debug") + endif() + + z_vcpkg_get_global_property(has_backup "make-pkg-config-backup-${envvar}" SET) + if(has_backup) + message(FATAL_ERROR "'${CMAKE_CURRENT_FUNCTION}' does not (yet) support recursive backups. Need to restore previous state first!") + endif() + + foreach(envvar IN ITEMS PKG_CONFIG PKG_CONFIG_PATH) + if(DEFINED ENV{${envvar}}) + z_vcpkg_set_global_property("make-pkg-config-backup-${envvar}" "$ENV{${envvar}}") + else() + z_vcpkg_set_global_property("make-pkg-config-backup-${envvar}" "") + endif() + endforeach() + + vcpkg_find_acquire_program(PKGCONFIG) + get_filename_component(pkgconfig_path "${PKGCONFIG}" DIRECTORY) + set(ENV{PKG_CONFIG} "${PKGCONFIG}") + + vcpkg_host_path_list(PREPEND ENV{PKG_CONFIG_PATH} + "${CURRENT_INSTALLED_DIR}/share/pkgconfig/" + "${CURRENT_INSTALLED_DIR}${subdir}/lib/pkgconfig/" + "${CURRENT_PACKAGES_DIR}/share/pkgconfig/" + "${CURRENT_PACKAGES_DIR}${subdir}/lib/pkgconfig/" + ) +endfunction() + +function(vcpkg_restore_pkgconfig) + foreach(envvar IN ITEMS PKG_CONFIG PKG_CONFIG_PATH) + z_vcpkg_get_global_property(has_backup "make-pkg-config-backup-${envvar}" SET) + if(has_backup) + z_vcpkg_get_global_property(backup "make-pkg-config-backup-${envvar}") + set("ENV{${envvar}}" "${backup}") + z_vcpkg_set_global_property("make-pkg-config-backup-${envvar}") + else() + unset("ENV{${envvar}}") + endif() + endforeach() +endfunction() + +function(z_vcpkg_escape_spaces_in_path outvar invar) + string(REPLACE " " "\\ " current_installed_dir_escaped "${invar}") + set("${outvar}" "${current_installed_dir_escaped}" PARENT_SCOPE) +endfunction() + +function(z_vcpkg_warn_path_with_spaces) + vcpkg_list(SET z_vcm_paths_with_spaces) + if(CURRENT_BUILDTREES_DIR MATCHES " ") + vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_BUILDTREES_DIR}") + endif() + if(CURRENT_PACKAGES_DIR MATCHES " ") + vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_PACKAGES_DIR}") + endif() + if(CURRENT_INSTALLED_DIR MATCHES " ") + vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_INSTALLED_DIR}") + endif() + if(z_vcm_paths_with_spaces) + # Don't bother with whitespace. The tools will probably fail and I tried very hard trying to make it work (no success so far)! + vcpkg_list(APPEND z_vcm_paths_with_spaces "Please move the path to one without whitespaces!") + list(JOIN z_vcm_paths_with_spaces "\n " z_vcm_paths_with_spaces) + message(STATUS "Warning: Paths with embedded space may be handled incorrectly by configure:\n ${z_vcm_paths_with_spaces}") + endif() +endfunction() diff --git a/ports/vcpkg-make/wrappers/cl_cpp_wrapper b/ports/vcpkg-make/wrappers/cl_cpp_wrapper new file mode 100644 index 0000000..32fde51 --- /dev/null +++ b/ports/vcpkg-make/wrappers/cl_cpp_wrapper @@ -0,0 +1,104 @@ +#!/usr/bin/bash +# cl_cpp_wrapper +# Wrapper around MS's cl.exe to make it act more like Unix cpp + +PATH="$PATH:/usr/bin" + +case $MACHTYPE in + *-msys) + slash="-" + ;; + *) + slash="/" + ;; +esac + +# prog specifies the program that should be run cl.exe +prog=cl.exe +debug= +cppopt=("${slash}nologo") +cppopt+=("${slash}E") +verbose= +shared_index=-1 + +processargs() +{ +### Run through every option and convert it to the proper MS one +while test $# -gt 0; do + case "$1" in + -D*) optarg= ;; + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + gotparam=1 + case "$1" in + --help) + usage + exit 0 + ;; + --verbose) + verbose=1 + ;; + -*) + # Remaining '-' options are passed to the compiler + if test x$optarg != x ; then + cppopt+=("${slash}${1:1}=$optarg") + else + cppopt+=("${slash}${1:1}") + fi + ;; + + /*) + # All '/' options are assumed to be for cpp and are passed through + cppopt+=("${slash}${1:1}") + ;; + + *) + file=$1 + #cppopt+=("$1") + ;; + esac + shift +done +} + +# Whitespace in paths is dealt with by setting IFS and using bash arrays + +# processargs $CPP_FLAGS +IFS="" +processargs $@ + +if test x$V = x1 ; then + verbose=1 +fi + +if test -n "$verbose" ; then + echo -n "$prog" + for opt in "${cppopt[@]}" ; do + echo -n " \"$opt\"" + done + echo "" +fi + +[ $# -ge 1 -a -f "$1" ] && input="$file" || input="-" + +input_file="${file:-/proc/self/fd/0}" +if [ "$input_file" == "/proc/self/fd/0" ]; then + #echo "STDIN" + # CL does not support reading from STDIN so it is wrapped here. + tmpout=cpp_wrapper_$RANDOM.h + /usr/bin/cp $input_file $tmpout + # from https://stackoverflow.com/questions/36313562/how-to-redirect-stdin-to-file-in-bash + #exec 3> cppstdtmp.h + #while IFS= read -r line; do + # printf '%s' "$line" + #done + #exec 3<&- + #echo "$( cppstdtmp.h + exec $prog ${cppopt[@]} $tmpout + rm -f $tmpout +else + #echo "FILE" + exec $prog ${cppopt[@]} $input_file +fi + diff --git a/ports/vcpkg-make/wrappers/windres-rc b/ports/vcpkg-make/wrappers/windres-rc new file mode 100644 index 0000000..9d20158 --- /dev/null +++ b/ports/vcpkg-make/wrappers/windres-rc @@ -0,0 +1,133 @@ +#! /bin/sh +# Wrapper for windres to rc which do not understand '-i -o --output-format'. +# cvtres is invoked by the linker +scriptversion=2022-08-24.12; # UTC + + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/* | msys/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_windres_wrapper rc args... +# Adjust compile command to suit rc instead of windres +func_windres_wrapper () +{ + # Assume a capable shell + bin= + in= + out= + + for arg + do + if test -z "$bin"; then + bin=$1 + elif test -n "$eat"; then + eat= + else + case $1 in + --output-format=*) + ;; + --define*) + eat=1 + set -- "$@" "-d $2" + ;; + --include-dir*) + eat=1 + func_file_conv "$2" + set -- "$@" "-I $file" + ;; + -o) + eat=1 + func_file_conv "$2" + out="$file" + echo "OUTPUT:$file" + ;; + *.obj) + func_file_conv "$1" + out="$file" + echo "OUTPUT:$file" + ;; + -i) + eat=1 + func_file_conv "$2" mingw + in="$file" + echo "INPUT:$file" + ;; + -*) + set -- "$@" "${1//\\\"/\"}" + ;; + *) + # libtool reorders arguments; save unqualified one as input + func_file_conv "$1" + in="$file" + echo "INPUT:$file" + ;; + esac + fi + shift + done + echo "$bin" "$@" -fo "$out" "$in" + exec "$bin" "$@" -fo "$out" "$in" + exit 1 +} + +eat= + +func_windres_wrapper "$@" + + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: From 49c60e0765e23127ab24f9460e7b2b78d9258524 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Thu, 29 Feb 2024 23:17:09 +0100 Subject: [PATCH 31/41] some updates --- ports/py-pyqt6/portfile.cmake | 39 +- ports/py-pyqt6/vcpkg.json | 2 +- ports/vcpkg-make/portfile.cmake | 34 - ports/vcpkg-make/vcpkg-port-config.cmake | 8 - ports/vcpkg-make/vcpkg.json | 15 - ports/vcpkg-make/vcpkg_make.cmake | 303 -------- ports/vcpkg-make/vcpkg_make_common.cmake | 669 ------------------ ports/vcpkg-make/vcpkg_make_configure.cmake | 151 ---- ports/vcpkg-make/vcpkg_make_install.cmake | 150 ---- ports/vcpkg-make/vcpkg_scripts.cmake | 210 ------ ports/vcpkg-make/wrappers/cl_cpp_wrapper | 104 --- ports/vcpkg-make/wrappers/windres-rc | 133 ---- ports/vcpkg-python-scripts/import_test.py.in | 4 + ports/vcpkg-python-scripts/portfile.cmake | 1 + .../vcpkg_python_functions.cmake | 16 +- 15 files changed, 20 insertions(+), 1819 deletions(-) delete mode 100644 ports/vcpkg-make/portfile.cmake delete mode 100644 ports/vcpkg-make/vcpkg-port-config.cmake delete mode 100644 ports/vcpkg-make/vcpkg.json delete mode 100644 ports/vcpkg-make/vcpkg_make.cmake delete mode 100644 ports/vcpkg-make/vcpkg_make_common.cmake delete mode 100644 ports/vcpkg-make/vcpkg_make_configure.cmake delete mode 100644 ports/vcpkg-make/vcpkg_make_install.cmake delete mode 100644 ports/vcpkg-make/vcpkg_scripts.cmake delete mode 100644 ports/vcpkg-make/wrappers/cl_cpp_wrapper delete mode 100644 ports/vcpkg-make/wrappers/windres-rc create mode 100644 ports/vcpkg-python-scripts/import_test.py.in diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 2c7a7e3..fb5ee40 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -8,27 +8,24 @@ vcpkg_from_pythonhosted( SHA512 c2ff8c47c9b0e43c009d0c90f565a54344e6f384c67dd30c2d422465d0702c07713acc0095c8b67827d1146675611c07d548ba282a26e41bb60a0a21977a7a64 ) - +# https://www.riverbankcomputing.com/static/Docs/PyQt6/installation.html set(SIPBUILD_ARGS "--confirm-license" - "--qmake" "${CURRENT_HOST_INSTALLED_DIR}/tools/Qt6/bin/qmake${VCPKG_HOST_EXECUTABLE_SUFFIX}" - "--api-dir" "${CURRENT_PACKAGES_DIR}/share/qt6/qsci/api/python" + "--qmake" "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/qmake${VCPKG_HOST_EXECUTABLE_SUFFIX}" + "--api-dir" "${CURRENT_PACKAGES_DIR}/share/Qt6/qsci/api/python" "--verbose" "--qt-shared" "--no-make" "--disable" "QtDesigner" "--pep484-pyi" - "--target-dir" "${CURRENT_PACKAGES_DIR}/lib/python${PYTHON3_VERSION_MAJOR}.${PYTHON3_VERSION_MINOR}/site-packages" "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" ) -message(STATUS "Running sipbuild...") - vcpkg_backup_env_variables(VARS PATH) -# Make sure sipbuild can find QtCore.dll -vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}/tools/Qt6/bin/" "${CURRENT_INSTALLED_DIR}/bin") +vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/tools/python3/Scripts/" "${CURRENT_HOST_INSTALLED_DIR}/tools/Qt6/bin/" "${CURRENT_HOST_INSTALLED_DIR}/bin") +message(STATUS "Running sipbuild...") vcpkg_execute_required_process( COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} WORKING_DIRECTORY "${SOURCE_PATH}" @@ -36,28 +33,6 @@ vcpkg_execute_required_process( ) message(STATUS "Running sipbuild...finished.") -if(CMAKE_HOST_WIN32) - if(VCPKG_TARGET_IS_MINGW) - find_program(MINGW32_MAKE mingw32-make REQUIRED) - set(invoke_command "${MINGW32_MAKE}") - else() - vcpkg_find_acquire_program(JOM) - set(invoke_command "${JOM}") - endif() -else() - find_program(MAKE make) - set(invoke_command "${MAKE}") -endif() - -message(STATUS "Running build...") -vcpkg_execute_build_process( - COMMAND "${invoke_command}" -j ${VCPKG_CONCURRENCY} install - NO_PARALLEL_COMMAND "${invoke_command}" -j 1 install - WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" - LOGNAME "build-${TARGET_TRIPLET}-rel" -) -message(STATUS "Running build...finished.") - -vcpkg_python_test_import(MODULE PyQt6) +vcpkg_qmake_build(BUILD_LOGNAME "install" TARGETS "install") -vcpkg_restore_env_variables(VARS PATH) \ No newline at end of file +vcpkg_python_test_import(MODULE "PyQt6.QtCore") diff --git a/ports/py-pyqt6/vcpkg.json b/ports/py-pyqt6/vcpkg.json index c498652..37e93f0 100644 --- a/ports/py-pyqt6/vcpkg.json +++ b/ports/py-pyqt6/vcpkg.json @@ -25,7 +25,7 @@ "host": true }, { - "name": "vcpkg-cmake-get-vars", + "name": "vcpkg-qmake", "host": true } ] diff --git a/ports/vcpkg-make/portfile.cmake b/ports/vcpkg-make/portfile.cmake deleted file mode 100644 index 620bd27..0000000 --- a/ports/vcpkg-make/portfile.cmake +++ /dev/null @@ -1,34 +0,0 @@ -set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) - -vcpkg_download_distfile( - ar_lib_wrapper - URLS https://raw.githubusercontent.com/autotools-mirror/automake/43a53bdf4b76377b5c012b8c8e8f478fb56d1ec0/lib/ar-lib - FILENAME ar-lib - SHA512 6019ffebf4b7b0547aa018c7d19bc915a228825d2acdee953a36919a88c30352e620f61c27a3e6f701af2885c8eb8d4ba3a4a3c2e821c54c03dceeef8eec108f -) -vcpkg_download_distfile( - compile_wrapper - URLS https://raw.githubusercontent.com/autotools-mirror/automake/43a53bdf4b76377b5c012b8c8e8f478fb56d1ec0/lib/compile - FILENAME compile - SHA512 3ef82f486f59be4cae1f1f95a9b70d4404f0333100be84c2e7061bd466201224a2bd1c7d871d97801eb9a441809bb47e7821fca8c85c29cc43ab15e6edda7f8c -) - -file(COPY - "${CMAKE_CURRENT_LIST_DIR}/" - DESTINATION - "${CURRENT_PACKAGES_DIR}/share/${PORT}" -) -file(COPY - "${ar_lib_wrapper}" - "${compile_wrapper}" - DESTINATION - "${CURRENT_PACKAGES_DIR}/share/${PORT}/wrappers" -) - -file(REMOVE - "${CURRENT_PACKAGES_DIR}/share/${PORT}/portfile.cmake" - "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg.json" -) - -vcpkg_install_copyright(FILE_LIST "${VCPKG_ROOT_DIR}/LICENSE.txt") - diff --git a/ports/vcpkg-make/vcpkg-port-config.cmake b/ports/vcpkg-make/vcpkg-port-config.cmake deleted file mode 100644 index b0b4982..0000000 --- a/ports/vcpkg-make/vcpkg-port-config.cmake +++ /dev/null @@ -1,8 +0,0 @@ -include("${CMAKE_CURRENT_LIST_DIR}/../vcpkg-cmake-get-vars/vcpkg-port-config.cmake") - -# Or this file should be autogenerated somehow. -file(GLOB cmake_files "${CMAKE_CURRENT_LIST_DIR}/*.cmake") -list(REMOVE_ITEM cmake_files "${CMAKE_CURRENT_LIST_FILE}") -foreach(cmake_file IN LISTS cmake_files) - include("${cmake_file}") -endforeach() diff --git a/ports/vcpkg-make/vcpkg.json b/ports/vcpkg-make/vcpkg.json deleted file mode 100644 index d926b09..0000000 --- a/ports/vcpkg-make/vcpkg.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "vcpkg-make", - "version-date": "2023-05-15", - "documentation": "https://vcpkg.io/en/docs/maintainers/ports/vcpkg-make.html", - "license": "MIT", - "supports": "native", - "dependencies": [ - { - "name": "pkgconf", - "host": true, - "platform": "windows" - }, - "vcpkg-cmake-get-vars" - ] -} diff --git a/ports/vcpkg-make/vcpkg_make.cmake b/ports/vcpkg-make/vcpkg_make.cmake deleted file mode 100644 index e69526e..0000000 --- a/ports/vcpkg-make/vcpkg_make.cmake +++ /dev/null @@ -1,303 +0,0 @@ -# Be aware of https://github.com/microsoft/vcpkg/pull/31228 -include_guard(GLOBAL) -include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_make_common.cmake") - -function(vcpkg_run_shell) - cmake_parse_arguments(PARSE_ARGV 0 arg - "" - "WORKING_DIRECTORY;LOGNAME" - "SHELL;COMMAND;SAVE_LOG_FILES" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - z_vcpkg_required_args(SHELL WORKING_DIRECTORY COMMAND LOGNAME) - - - set(extra_opts "") - if(arg_SAVE_LOG_FILES) - set(extra_opts SAVE_LOG_FILES ${arg_SAVE_LOG_FILES}) - endif() - - list(JOIN arg_COMMAND " " cmd) - vcpkg_execute_required_process( - COMMAND ${arg_SHELL} -c "${cmd}" - WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" - LOGNAME "${arg_LOGNAME}" - ${extra_opts} - ) -endfunction() - -function(vcpkg_run_shell_as_build) - cmake_parse_arguments(PARSE_ARGV 0 arg - "" - "WORKING_DIRECTORY;LOGNAME" - "SHELL;COMMAND;NO_PARALLEL_COMMAND;SAVE_LOG_FILES" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - z_vcpkg_required_args(SHELL WORKINK_DIRECTORY COMMAND LOGNAME) - - set(extra_opts "") - if(arg_SAVE_LOG_FILES) - set(extra_opts SAVE_LOG_FILES ${arg_SAVE_LOG_FILES}) - endif() - - list(JOIN arg_COMMAND " " cmd) - list(JOIN arg_NO_PARALLEL_COMMAND " " no_par_cmd) - vcpkg_execute_build_process( - COMMAND ${arg_SHELL} -c "${cmd}" - NO_PARALLEL_COMMAND ${arg_SHELL} -c "${no_par_cmd}" - WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" - LOGNAME "${arg_LOGNAME}" - ${extra_opts} - ) -endfunction() - -function(vcpkg_run_autoreconf shell_cmd work_dir) -# TODO: -# Check: does it make sense to parse configure.ac ? - find_program(AUTORECONF NAMES autoreconf) # find_file instead ? autoreconf is a perl script. - if(NOT AUTORECONF) - message(FATAL_ERROR "${PORT} requires autoconf from the system package manager (example: \"sudo apt-get install autoconf\")") - endif() - message(STATUS "Generating configure for ${TARGET_TRIPLET}") - vcpkg_run_shell( - SHELL ${shell_cmd} - COMMAND ${AUTORECONF} -vfi - WORKING_DIRECTORY "${work_dir}" - LOGNAME "autoconf-${TARGET_TRIPLET}" - ) - message(STATUS "Finished generating configure for ${TARGET_TRIPLET}") -endfunction() - -function(vcpkg_make_setup_win_msys msys_out) - cmake_parse_arguments(PARSE_ARGV 1 arg - "" - "" - "PACKAGES" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - list(APPEND msys_require_packages autoconf-wrapper automake-wrapper binutils libtool make which) - vcpkg_insert_msys_into_path(msys PACKAGES ${msys_require_packages} ${arg_PACKAGES}) - find_program(PKGCONFIG NAMES pkgconf NAMES_PER_DIR PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/pkgconf" NO_DEFAULT_PATH) - set("${msys_out}" "${msys}" PARENT_SCOPE) -endfunction() - -function(vcpkg_make_get_shell out_var) - cmake_parse_arguments(PARSE_ARGV 1 arg - "" - "MSYS_ROOT" - "PACKAGES" - ) - set(bash_options "") - if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - if(NOT arg_MSYS_ROOT) - vcpkg_make_setup_win_msys(msys_root PACKAGES "${arg_PACKAGES}") - else() - set(msys_root "${arg_MSYS_ROOT}") - endif() - set(bash_options --noprofile --norc --debug) - set(bash_cmd "${msys_root}/usr/bin/bash.exe") - endif() - find_program(bash_cmd NAMES bash sh zsh REQUIRED) - set("${out_var}" "${bash_cmd}" ${bash_options} PARENT_SCOPE) -endfunction() - -function(z_vcpkg_make_get_configure_triplets out) - cmake_parse_arguments(PARSE_ARGV 1 arg - "" - "COMPILER_NAME" - "" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - # --build: the machine you are building on - # --host: the machine you are building for - # --target: the machine that CC will produce binaries for - # https://stackoverflow.com/questions/21990021/how-to-determine-host-value-for-configure-when-using-cross-compiler - # Only for ports using autotools so we can assume that they follow the common conventions for build/target/host - z_vcpkg_make_determine_target_arch(TARGET_ARCH) - z_vcpkg_make_determine_host_arch(BUILD_ARCH) - - set(build_triplet_opt "") - if(CMAKE_HOST_WIN32 AND VCPKG_TARGET_IS_WINDOWS) - # This is required since we are running in a msys - # shell which will be otherwise identified as ${BUILD_ARCH}-pc-msys - set(build_triplet_opt "--build=${BUILD_ARCH}-pc-mingw32") - endif() - - set(host_triplet "") - if(VCPKG_CROSSCOMPILING) - if(VCPKG_TARGET_IS_WINDOWS) - if(NOT TARGET_ARCH MATCHES "${BUILD_ARCH}" OR NOT CMAKE_HOST_WIN32) - set(host_triplet_opt "--host=${TARGET_ARCH}-pc-mingw32") - elseif(VCPKG_TARGET_IS_UWP) - # Needs to be different from --build to enable cross builds. - set(host_triplet_opt "--host=${TARGET_ARCH}-unknown-mingw32") - endif() - elseif(VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_OSX AND NOT "${TARGET_ARCH}" STREQUAL "${BUILD_ARCH}") - set(host_triplet_opt "--host=${TARGET_ARCH}-apple-darwin") - elseif(VCPKG_TARGET_IS_LINUX) - if("${arg_COMPILER_NAME}" MATCHES "([^\/]*)-gcc$" AND CMAKE_MATCH_1 AND NOT CMAKE_MATCH_1 MATCHES "^gcc") - set(host_triplet_opt "--host=${CMAKE_MATCH_1}") # (Host activates crosscompilation; The name given here is just the prefix of the host tools for the target) - endif() - endif() - endif() - - set(output "${build_triplet_opt};${host_triplet_opt}") - string(STRIP "${output}" output) - set("${out}" "${output}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_make_prepare_env config) - cmake_parse_arguments(PARSE_ARGV 1 arg - "ADD_BIN_TO_PATH" - "" - "" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - # Used by CL - vcpkg_host_path_list(PREPEND ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include") - # Used by GCC - vcpkg_host_path_list(PREPEND ENV{C_INCLUDE_PATH} "${CURRENT_INSTALLED_DIR}/include") - vcpkg_host_path_list(PREPEND ENV{CPLUS_INCLUDE_PATH} "${CURRENT_INSTALLED_DIR}/include") - - # Flags should be set in the toolchain instead (Setting this up correctly requires a function named vcpkg_determined_cmake_compiler_flags which can also be used to setup CC and CXX etc.) - if(VCPKG_TARGET_IS_WINDOWS) - vcpkg_backup_env_variables(VARS _CL_ _LINK_) - # TODO: Should be CPP flags instead -> rewrite when vcpkg_determined_cmake_compiler_flags defined - if(VCPKG_TARGET_IS_UWP) - # Be aware that configure thinks it is crosscompiling due to: - # error while loading shared libraries: VCRUNTIME140D_APP.dll: - # cannot open shared object file: No such file or directory - # IMPORTANT: The only way to pass linker flags through libtool AND the compile wrapper - # is to use the CL and LINK environment variables !!! - # (This is due to libtool and compiler wrapper using the same set of options to pass those variables around) - file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}" VCToolsInstallDir) - set(_replacement -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_DEBUG "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_DEBUG}") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_DEBUG "${VCPKG_DETECTED_CMAKE_C_FLAGS_DEBUG}") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_RELEASE "${VCPKG_DETECTED_CMAKE_CXX_FLAGS_RELEASE}") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_RELEASE "${VCPKG_DETECTED_CMAKE_C_FLAGS_RELEASE}") - # Can somebody please check if CMake's compiler flags for UWP are correct? - set(ENV{_CL_} "$ENV{_CL_} -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\"") - set(ENV{_LINK_} "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES} ${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") - endif() - endif() - - # Setup environment - set(ENV{CPPFLAGS} "${CPPFLAGS_${config}}") - set(ENV{CPPFLAGS_FOR_BUILD} "${CPPFLAGS_${config}}") - set(ENV{CFLAGS} "${CFLAGS_${config}}") - set(ENV{CFLAGS_FOR_BUILD} "${CFLAGS_${config}}") - set(ENV{CXXFLAGS} "${CXXFLAGS_${config}}") - #set(ENV{CXXFLAGS_FOR_BUILD} "${CXXFLAGS_${current_buildtype}}") -> doesn't exist officially - set(ENV{RCFLAGS} "${RCFLAGS_${config}}") - set(ENV{LDFLAGS} "${LDFLAGS_${config}}") - set(ENV{LDFLAGS_FOR_BUILD} "${LDFLAGS_${config}}") - if(ARFLAGS_${config} AND NOT (arg_USE_WRAPPERS AND VCPKG_TARGET_IS_WINDOWS)) - # Target windows with wrappers enabled cannot forward ARFLAGS since it breaks the wrapper - set(ENV{ARFLAGS} "${ARFLAGS_${config}}") - endif() - - if(LINK_ENV_${config}) - set(ENV{_LINK_} "${LINK_ENV_${config}}") - endif() - - if(arg_ADD_BIN_TO_PATH AND NOT VCPKG_CROSSCOMPILING) - vcpkg_add_to_path(PREPEND "${CURRENT_INSTALLED_DIR}${path_suffix}/bin") - endif() - - vcpkg_list(APPEND lib_env_vars LIB LIBPATH LIBRARY_PATH) # LD_LIBRARY_PATH) - foreach(lib_env_var IN LISTS lib_env_vars) - if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib") - vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib") - endif() - if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib/manual-link") - vcpkg_host_path_list(PREPEND ENV{${lib_env_var}} "${CURRENT_INSTALLED_DIR}${path_suffix_${config}}/lib/manual-link") - endif() - endforeach() -endfunction() - -function(z_vcpkg_make_restore_env) - # Only variables which are inspected in vcpkg_make_prepare_env need to be restored here. - # Rest is restored add the end of configure. - # TODO: check how vcpkg_restore_env_variables actually works! - vcpkg_restore_env_variables(VARS - LIBRARY_PATH LIB LIBPATH - PATH - ) -endfunction() - -function(vcpkg_make_run_configure) - cmake_parse_arguments(PARSE_ARGV 0 arg - "ADD_BIN_TO_PATH" - "CONFIG;SHELL;WORKING_DIRECTORY;CONFIGURE_PATH;CONFIGURE_ENV" - "OPTIONS" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - z_vcpkg_required_args(SHELL CONFIG WORKING_DIRECTORY CONFIGURE_PATH) - - vcpkg_prepare_pkgconfig("${arg_CONFIG}") - - set(prepare_env_opts "") - if(arg_ADD_BIN_TO_PATH) - set(prepare_env_opts ADD_BIN_TO_PATH) - endif() - z_vcpkg_make_prepare_env("${arg_CONFIG}" ${prepare_env_opts}) - - vcpkg_list(SET tmp) - foreach(element IN LISTS arg_OPTIONS) - string(REPLACE [["]] [[\"]] element "${element}") - vcpkg_list(APPEND tmp "\"${element}\"") - endforeach() - vcpkg_list(JOIN tmp " " "arg_OPTIONS") - - set(command ${arg_CONFIGURE_ENV} ${arg_CONFIGURE_PATH} ${arg_OPTIONS}) - - message(STATUS "Configuring ${TARGET_TRIPLET}-${suffix_${arg_CONFIG}}") - vcpkg_run_shell( - WORKING_DIRECTORY "${arg_WORKING_DIRECTORY}" - LOGNAME "config-${TARGET_TRIPLET}-${suffix_${arg_CONFIG}}" - SAVE_LOG_FILES config.log - SHELL ${arg_SHELL} - COMMAND V=1 ${command} - ) - if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL dynamic) - file(GLOB_RECURSE libtool_files "${arg_WORKING_DIRECTORY}*/libtool") - foreach(lt_file IN LISTS libtool_files) - file(READ "${lt_file}" _contents) - string(REPLACE ".dll.lib" ".lib" _contents "${_contents}") - file(WRITE "${lt_file}" "${_contents}") - endforeach() - endif() - z_vcpkg_make_restore_env() - vcpkg_restore_pkgconfig() -endfunction() - -function(z_vcpkg_make_prepare_configure_cache out_opt) - cmake_parse_arguments(PARSE_ARGV 1 arg - "" - "WORKING_DIRECTORY;CONFIG" - "" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - - set(configure_cache "") - set(current_buildtype "${arg_CONFIG}") - - if(NOT arg_NO_CONFIGURE_CACHE) - set(cache_file "${arg_WORKING_DIRECTORY}/${TARGET_TRIPLET}-${suffix_${current_buildtype}}.cache") - if(DEFINED VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype} AND NOT "${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}" STREQUAL "") - if(NOT EXISTS "${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}") - message(FATAL_ERROR "VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}:'${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}' needs to be a valid and exisiting file path!") - endif() - file(COPY_FILE "${VCPKG_MAKE_CONFIGURE_CACHE_${current_buildtype}}" "${cache_file}") - set(configure_cache "--cache-file='${cache_file}'") - elseif(DEFINED VCPKG_MAKE_CONFIGURE_CACHE AND NOT "${VCPKG_MAKE_CONFIGURE_CACHE}" STREQUAL "") - if(NOT EXISTS "${VCPKG_MAKE_CONFIGURE_CACHE}") - message(FATAL_ERROR "VCPKG_MAKE_CONFIGURE_CACHE:'${VCPKG_MAKE_CONFIGURE_CACHE}' needs to be a valid and exisiting file path!") - endif() - file(COPY_FILE "${VCPKG_MAKE_CONFIGURE_CACHE}" "${cache_file}") - set(configure_cache "--cache-file='${cache_file}'") - endif() - endif() - set("${out_opt}" "${configure_cache}") -endfunction() diff --git a/ports/vcpkg-make/vcpkg_make_common.cmake b/ports/vcpkg-make/vcpkg_make_common.cmake deleted file mode 100644 index 9e57f1b..0000000 --- a/ports/vcpkg-make/vcpkg_make_common.cmake +++ /dev/null @@ -1,669 +0,0 @@ -include_guard(GLOBAL) - -### Mapping variables -macro(z_vcpkg_make_set_common_vars) - set(path_suffix_RELEASE "") - set(path_suffix_DEBUG "/debug") - set(suffix_RELEASE "rel") - set(suffix_DEBUG "dbg") - foreach(config IN ITEMS RELEASE DEBUG) - set("workdir_${config}" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${suffix_${config}}") - endforeach() - set(buildtypes release) - if(NOT VCPKG_BUILD_TYPE) - list(APPEND buildtypes debug) - endif() -endmacro() - -### -macro(z_vcpkg_make_get_cmake_vars) - cmake_parse_arguments(vmgcv_arg # Not just arg since macros don't define their own var scope. - "" "" "LANGUAGES" ${ARGN} - ) - z_vcpkg_get_global_property(has_cmake_vars_file "make_cmake_vars_file" SET) - if(NOT has_cmake_vars_file) - if(vmgcv_arg_LANGUAGES) - string(REPLACE ";" "\;" vmgcv_arg_langs "${vmgcv_arg_LANGUAGES}") - list(APPEND VCPKG_CMAKE_CONFIGURE_OPTIONS "-DVCPKG_LANGUAGES=${vmgcv_arg_langs}") - unset(langs) - endif() - list(APPEND VCPKG_CMAKE_CONFIGURE_OPTIONS "-DVCPKG_DEFAULT_VARS_TO_CHECK=CMAKE_LIBRARY_PATH_FLAG") - vcpkg_cmake_get_vars(cmake_vars_file) - z_vcpkg_set_global_property(make_cmake_vars_file "${cmake_vars_file}") - unset(vmgcv_arg_langs) - else() - z_vcpkg_get_global_property(cmake_vars_file "make_cmake_vars_file") - endif() - include("${cmake_vars_file}") -endmacro() - -#### -function(z_vcpkg_make_determine_arch out_var value) - if(${value} MATCHES "^(amd|AMD|x)64$") - set(${out_var} x86_64 PARENT_SCOPE) - elseif(${value} MATCHES "^(x|X)86$") - set(${out_var} i686 PARENT_SCOPE) - elseif(${value} MATCHES "^(ARM|arm)64$") - set(${out_var} aarch64 PARENT_SCOPE) - elseif(${value} MATCHES "^(ARM|arm)$") - set(${out_var} arm PARENT_SCOPE) - elseif(${value} MATCHES "^(x86_64|i686|aarch64|arm)$" OR NOT VCPKG_TARGET_IS_WINDOWS) - # Do nothing an assume valid architectures - set("${out_var}" "${value}" PARENT_SCOPE) - else() - message(FATAL_ERROR "Unsupported architecture '${value}' in '${CMAKE_CURRENT_FUNCTION}'!" ) - endif() -endfunction() - -function(z_vcpkg_make_determine_host_arch out_var) - if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) - set(arch $ENV{PROCESSOR_ARCHITEW6432}) - elseif(DEFINED ENV{PROCESSOR_ARCHITECTURE}) - set(arch $ENV{PROCESSOR_ARCHITECTURE}) - else() - set(arch "${VCPKG_DETECTED_CMAKE_HOST_SYSTEM_PROCESSOR}") - endif() - z_vcpkg_make_determine_arch("${out_var}" "${arch}") - set("${out_var}" "${${out_var}}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_make_determine_target_arch out_var) - list(LENGTH VCPKG_OSX_ARCHITECTURES osx_archs_num) - if(osx_archs_num GREATER_EQUAL 2 AND VCPKG_TARGET_IS_OSX) - set(${out_var} "universal") - else() - z_vcpkg_make_determine_arch(${out_var} "${VCPKG_TARGET_ARCHITECTURE}") - endif() - set("${out_var}" "${${out_var}}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_make_prepare_compile_flags) - cmake_parse_arguments(PARSE_ARGV 0 arg - "NO_CPPFLAGS;NO_FLAG_ESCAPING;USES_WRAPPERS;USE_RESPONSE_FILES" - "COMPILER_FRONTEND;CONFIG;FLAGS_OUT" - "LANGUAGES" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - - if(NOT DEFINED arg_LANGUAGES) - set(arg_LANGUAGES "C;CXX") - endif() - - # TODO: Check params - - set(var_suffix "${arg_CONFIG}") - - set(CFLAGS "") - set(CXXFLAGS "") - - # separate_aruments is needed to remove outer quotes from detected cmake variables. - # (e.g. Android NDK has "--sysroot=...") - foreach(lang IN LISTS arg_LANGUAGES) - if(NOT "${VCPKG_COMBINED_${lang}_FLAGS_${var_suffix}}" STREQUAL "") - separate_arguments(${lang}FLAGS NATIVE_COMMAND "${VCPKG_COMBINED_${lang}_FLAGS_${var_suffix}}") - else() - set(${lang}FLAGS "") - endif() - vcpkg_list(APPEND flags ${lang}FLAGS) - endforeach() - separate_arguments(LDFLAGS NATIVE_COMMAND "${VCPKG_COMBINED_SHARED_LINKER_FLAGS_${var_suffix}}") - separate_arguments(ARFLAGS NATIVE_COMMAND "${VCPKG_COMBINED_STATIC_LINKER_FLAGS_${var_suffix}}") - set(RCFLAGS "${VCPKG_COMBINED_RC_FLAGS_${var_suffix}}") - - foreach(var IN ITEMS ABIFLAGS LDFLAGS ARFLAGS RCFLAGS) - vcpkg_list(APPEND flags ${var}) - endforeach() - - set(ABIFLAGS "") # TODO: Investigate if vcpkg should simply pass all flags in CC/CXX without any filtering and ignore CFLAGS etc. - set(pattern "") - foreach(arg IN LISTS CFLAGS) - if(NOT pattern STREQUAL "") - vcpkg_list(APPEND pattern "${arg}") - elseif(arg MATCHES "^--(sysroot|target)=.") - vcpkg_list(SET pattern "${arg}") - elseif(arg MATCHES "^-(isysroot|m32|m64|m?[Aa][Rr][Cc][Hh]|target)\$") - vcpkg_list(SET pattern "${arg}") - continue() - else() - continue() - endif() - vcpkg_list(APPEND ABIFLAGS "${pattern}") - list(REMOVE_ITEM CFLAGS "${pattern}") - list(REMOVE_ITEM CXXFLAGS "${pattern}") - list(REMOVE_ITEM LDFLAGS "${pattern}") - set(pattern "") - endforeach() - - # Filter common CPPFLAGS out of CFLAGS and CXXFLAGS - if(NOT arg_NO_CPPFLAGS) - set(CPPFLAGS "") - set(pattern "") - foreach(arg IN LISTS CXXFLAGS) - if(NOT pattern STREQUAL "") - vcpkg_list(APPEND pattern "${arg}") - elseif(arg MATCHES "^-(D|isystem).") - vcpkg_list(SET pattern "${arg}") - elseif(arg MATCHES "^-(D|isystem)\$") - vcpkg_list(SET pattern "${arg}") - continue() - else() - continue() - endif() - string(FIND "${CFLAGS}" "${pattern} " index) - if(NOT index STREQUAL "-1") - vcpkg_list(APPEND CPPFLAGS ${pattern}) - list(REMOVE_ITEM CFLAGS "${pattern}") - list(REMOVE_ITEM CXXFLAGS "${pattern}") - list(REMOVE_ITEM LDFLAGS "${pattern}") - endif() - endforeach() - set(pattern "") - foreach(arg IN LISTS CFLAGS) - if(NOT pattern STREQUAL "") - vcpkg_list(APPEND pattern "${arg}") - elseif(arg MATCHES "^-(D|isystem)\$") - vcpkg_list(SET pattern "${arg}") - continue() - elseif(arg MATCHES "^-(D|isystem).") - vcpkg_list(SET pattern "${arg}") - else() - continue() - endif() - string(FIND "${CXXFLAGS}" "${pattern} " index) - if(NOT index STREQUAL "-1") - vcpkg_list(APPEND CPPFLAGS ${pattern}) - list(REMOVE_ITEM CFLAGS "${pattern}") - list(REMOVE_ITEM CXXFLAGS "${pattern}") - list(REMOVE_ITEM LDFLAGS "${pattern}") - endif() - vcpkg_list(SET pattern) - endforeach() - endif() - - # libtool tries to filter CFLAGS passed to the link stage via a allow list. - - # This approach is flawed since it fails to pass flags unknown to libtool - # but required for linking to the link stage (e.g. -fsanitize=). - # libtool has an -R option so we need to guard against -RTC by using -Xcompiler. - # While configuring there might be a lot of unknown compiler option warnings - # due to that; just ignore them. - set(compiler_flag_escape "") - if(arg_COMPILER_FRONTEND STREQUAL "MSVC" AND NOT arg_NO_FLAG_ESCAPING) - set(compiler_flag_escape "-Xcompiler") # TODO: Check why this had a trailing space? We are using lists so it shouldn't be necessary here - endif() - if(compiler_flag_escape) - list(TRANSFORM CFLAGS PREPEND "${compiler_flag_escape};") - list(TRANSFORM CXXFLAGS PREPEND "${compiler_flag_escape};") - endif() - - set(library_path_flag "${VCPKG_DETECTED_CMAKE_LIBRARY_PATH_FLAG}") - - set(linker_flag_escape "") - if(arg_COMPILER_FRONTEND STREQUAL "MSVC" AND NOT arg_NO_FLAG_ESCAPING) - # Removed by libtool - set(linker_flag_escape "-Xlinker ") - if(arg_USES_WRAPPERS) - # 1st and 3rd are removed by libtool, 2nd by wrapper - set(linker_flag_escape "-Xlinker -Xlinker -Xlinker ") - endif() - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - string(STRIP "$ENV{_LINK_} ${VCPKG_COMBINED_STATIC_LINKER_FLAGS_${var_suffix}}" LINK_ENV) - else() - string(STRIP "$ENV{_LINK_} ${VCPKG_COMBINED_SHARED_LINKER_FLAGS_${var_suffix}}" LINK_ENV) - endif() - endif() - if(linker_flag_escape) - string(STRIP "${linker_flag_escape}" linker_flag_escape_stripped) - string(REPLACE " " ";" linker_flag_escape_stripped "${linker_flag_escape_stripped}") - list(TRANSFORM LDFLAGS PREPEND "${linker_flag_escape_stripped};") - endif() - string(REPLACE " " "\\ " current_installed_dir_escaped "${CURRENT_INSTALLED_DIR}") - if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib/manual-link") - vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${current_installed_dir_escaped}${path_suffix_${var_suffix}}/lib/manual-link") - endif() - if(EXISTS "${CURRENT_INSTALLED_DIR}${path_suffix_${var_suffix}}/lib") - vcpkg_list(PREPEND LDFLAGS "${linker_flag_escape}${library_path_flag}${current_installed_dir_escaped}${path_suffix_${var_suffix}}/lib") - endif() - - if(arg_USE_RESPONSE_FILES) - if(arg_COMPILER_FRONTEND STREQUAL "MSVC") - # If LDFLAGS are passed to cl instead of link they need to be on a single line after -link - list(PREPEND LDFLAGS -link) - list(JOIN LDFLAGS " " LDFLAGS) - endif() - foreach(var IN ITEMS CPPFLAGS CFLAGS CXXFLAGS LDFLAGS) - list(JOIN ${var} "\n" string) - set(rspfile "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-${var}-${var_suffix}.rsp") - file(WRITE "${rspfile}" "${string}") - set(${var} "@${rspfile}") - endforeach() - endif() - - if(ARFLAGS AND NOT arg_COMPILER_FRONTEND STREQUAL "MSVC") - # ARFLAGS need to know the command for creating an archive (Maybe needs user customization?) - # or extract it from CMake via CMAKE_${lang}_ARCHIVE_CREATE ? - # or from CMAKE_${lang}_${rule} with rule being one of CREATE_SHARED_MODULE CREATE_SHARED_LIBRARY LINK_EXECUTABLE - vcpkg_list(PREPEND ARFLAGS "cr") - elseif(arg_USES_WRAPPERS AND arg_COMPILER_FRONTEND STREQUAL "MSVC") - # The wrapper needs an action and that action needs to be defined AFTER all flags - vcpkg_list(APPEND ARFLAGS "cr") - endif() - - foreach(var IN LISTS flags) - list(JOIN ${var} " " string) - set("${var}_${var_suffix}" "${string}" PARENT_SCOPE) - list(APPEND flags_out "${var}_${var_suffix}") - endforeach() - set("${arg_FLAGS_OUT}" "${flags_out}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_make_prepare_programs out_env) - cmake_parse_arguments(PARSE_ARGV 1 arg - "NO_CPPFLAGS;DISABLE_MSVC_WRAPPERS" - "CONFIG" - "LANGUAGES" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - - z_vcpkg_make_get_cmake_vars(LANGUAGES "${arg_LANGUAGES}") - - macro(z_vcpkg_append_to_configure_environment inoutlist var defaultval) - # Allows to overwrite settings in custom triplets via the environment - if(DEFINED ENV{${var}}) - list(APPEND "${inoutlist}" "${var}='$ENV{${var}}'") - else() - list(APPEND "${inoutlist}" "${var}='${defaultval}'") - endif() - endmacro() - - set(configure_env "") - # Remove full filepaths due to spaces and prepend filepaths to PATH (cross-compiling tools are unlikely on path by default) - if (VCPKG_TARGET_IS_WINDOWS) - # TODO More languages ? - set(progs C_COMPILER CXX_COMPILER AR - LINKER RANLIB OBJDUMP - STRIP NM DLLTOOL RC_COMPILER) - list(TRANSFORM progs PREPEND "VCPKG_DETECTED_CMAKE_") - foreach(prog IN LISTS progs) - set(filepath "${${prog}}") - if(filepath MATCHES " ") - # CHECK: Uncertain if the compile wrappers work with absolute paths containing C:\\ - cmake_path(GET filepath FILENAME ${prog}) - vcpkg_insert_program_into_path("${filepath}") - endif() - endforeach() - ### - if (NOT arg_DISABLE_MSVC_WRAPPERS) - z_vcpkg_append_to_configure_environment(configure_env CPP "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") - z_vcpkg_append_to_configure_environment(configure_env CC "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER}") - z_vcpkg_append_to_configure_environment(configure_env CXX "compile ${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") - if(NOT arg_BUILD_TRIPLET MATCHES "--host") # TODO: Check if this generates problems with the new triplet approach - z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER}") - z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "compile ${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") - z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "compile ${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") - else() - # Silly trick to make configure accept CC_FOR_BUILD but in reallity CC_FOR_BUILD is deactivated. - z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - endif() - - z_vcpkg_append_to_configure_environment(configure_env RC "windres-rc ${VCPKG_DETECTED_CMAKE_RC_COMPILER}") - z_vcpkg_append_to_configure_environment(configure_env WINDRES "windres-rc ${VCPKG_DETECTED_CMAKE_RC_COMPILER}") - if(VCPKG_DETECTED_CMAKE_AR) - z_vcpkg_append_to_configure_environment(configure_env AR "ar-lib ${VCPKG_DETECTED_CMAKE_AR}") - else() - z_vcpkg_append_to_configure_environment(configure_env AR "ar-lib lib.exe -verbose") - endif() - else() - z_vcpkg_append_to_configure_environment(configure_env CPP "${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") - z_vcpkg_append_to_configure_environment(configure_env CC "${VCPKG_DETECTED_CMAKE_C_COMPILER}") - z_vcpkg_append_to_configure_environment(configure_env CXX "${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") - if(NOT arg_BUILD_TRIPLET MATCHES "--host") - z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "${VCPKG_DETECTED_CMAKE_C_COMPILER}") - z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "${VCPKG_DETECTED_CMAKE_C_COMPILER} -E") - z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "${VCPKG_DETECTED_CMAKE_CXX_COMPILER}") - else() - z_vcpkg_append_to_configure_environment(configure_env CC_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - z_vcpkg_append_to_configure_environment(configure_env CPP_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - z_vcpkg_append_to_configure_environment(configure_env CXX_FOR_BUILD "touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - endif() - z_vcpkg_append_to_configure_environment(configure_env RC "${VCPKG_DETECTED_CMAKE_RC_COMPILER}") - z_vcpkg_append_to_configure_environment(configure_env WINDRES "${VCPKG_DETECTED_CMAKE_RC_COMPILER}") - if(VCPKG_DETECTED_CMAKE_AR) - z_vcpkg_append_to_configure_environment(configure_env AR "${VCPKG_DETECTED_CMAKE_AR}") - else() - z_vcpkg_append_to_configure_environment(configure_env AR "lib.exe -verbose") - endif() - endif() - z_vcpkg_append_to_configure_environment(configure_env LD "${VCPKG_DETECTED_CMAKE_LINKER} -verbose") - if(VCPKG_DETECTED_CMAKE_RANLIB) - z_vcpkg_append_to_configure_environment(configure_env RANLIB "${VCPKG_DETECTED_CMAKE_RANLIB}") # Trick to ignore the RANLIB call - else() - z_vcpkg_append_to_configure_environment(configure_env RANLIB ": RANLIB-disabled") - endif() - if(VCPKG_DETECTED_CMAKE_OBJDUMP) #Objdump is required to make shared libraries. Otherwise define lt_cv_deplibs_check_method=pass_all - z_vcpkg_append_to_configure_environment(configure_env OBJDUMP "${VCPKG_DETECTED_CMAKE_OBJDUMP}") # Trick to ignore the RANLIB call - endif() - if(VCPKG_DETECTED_CMAKE_STRIP) # If required set the ENV variable STRIP in the portfile correctly - z_vcpkg_append_to_configure_environment(configure_env STRIP "${VCPKG_DETECTED_CMAKE_STRIP}") - else() - z_vcpkg_append_to_configure_environment(configure_env STRIP ": STRIP-disabled") - list(APPEND arg_OPTIONS ac_cv_prog_ac_ct_STRIP=:) - endif() - if(VCPKG_DETECTED_CMAKE_NM) # If required set the ENV variable NM in the portfile correctly - z_vcpkg_append_to_configure_environment(configure_env NM "${VCPKG_DETECTED_CMAKE_NM}") - else() - # Would be better to have a true nm here! Some symbols (mainly exported variables) get not properly imported with dumpbin as nm - # and require __declspec(dllimport) for some reason (same problem CMake has with WINDOWS_EXPORT_ALL_SYMBOLS) - z_vcpkg_append_to_configure_environment(configure_env NM "dumpbin.exe -symbols -headers") - endif() - if(VCPKG_DETECTED_CMAKE_DLLTOOL) # If required set the ENV variable DLLTOOL in the portfile correctly - z_vcpkg_append_to_configure_environment(configure_env DLLTOOL "${VCPKG_DETECTED_CMAKE_DLLTOOL}") - else() - z_vcpkg_append_to_configure_environment(configure_env DLLTOOL "link.exe -verbose -dll") - endif() - - if(NOT "ASM" IN_LIST arg_LANGUAGES ) - z_vcpkg_append_to_configure_environment(configure_env CCAS ": CCAS-disabled") # If required set the ENV variable CCAS in the portfile correctly - z_vcpkg_append_to_configure_environment(configure_env AS ": AS-disabled") # If required set the ENV variable AS in the portfile correctly - - else() - set(ccas "${VCPKG_DETECTED_CMAKE_ASM_COMPILER}") - if(VCPKG_DETECTED_CMAKE_ASM_COMPILER_ID STREQUAL "MSVC") - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(asmflags "--target=i686-pc-windows-msvc -m32") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(asmflags "--target=x86_64-pc-windows-msvc") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(asmflags "--target=arm64-pc-windows-msvc") - endif() - vcpkg_find_acquire_program(CLANG) - set(ccas "${CLANG}") - if(ccas MATCHES " ") - cmake_path(GET ccas PARENT_PATH ccas_dir) - cmake_path(GET ccas FILENAME ccas_filename) - vcpkg_insert_program_into_path("${ccas_dir}") - set(ccas "${ccas_filename}") - endif() - string(APPEND ccas " ${asmflags}") - endif() - z_vcpkg_append_to_configure_environment(configure_env CCAS "${ccas} -c") - z_vcpkg_append_to_configure_environment(configure_env AS "${ccas} -c") - endif() - - #foreach(_env IN LISTS arg_CONFIGURE_ENVIRONMENT_VARIABLES) - # z_vcpkg_append_to_configure_environment(configure_env ${_env} "${${_env}}") - #endforeach() - else() - # OSX dosn't like CMAKE_C(XX)_COMPILER (cc) in CC/CXX and rather wants to have gcc/g++ - vcpkg_list(SET z_vcm_all_tools) - function(z_vcpkg_make_set_env envvar cmakevar) - set(prog "${VCPKG_DETECTED_CMAKE_${cmakevar}}") - if(NOT DEFINED ENV{${envvar}} AND NOT prog STREQUAL "") - vcpkg_list(APPEND z_vcm_all_tools "${prog}") - if(ARGN) - string(APPEND prog " ${ARGN}") - endif() - set(z_vcm_all_tools "${z_vcm_all_tools}" PARENT_SCOPE) - #set(ENV{${envvar}} "${prog}") - # Should probably create an env string like windows. This would be easier to return to the caller - endif() - z_vcpkg_append_to_configure_environment(configure_env "${envvar}" "${prog}") - set(configure_env "${configure_env}" PARENT_SCOPE) - endfunction() - - z_vcpkg_make_set_env(CC C_COMPILER ${ABIFLAGS_${arg_CONFIG}}) - z_vcpkg_make_set_env(CXX CXX_COMPILER ${ABIFLAGS_${arg_CONFIG}}) - if(NOT arg_BUILD_TRIPLET MATCHES "--host") - z_vcpkg_make_set_env(CC_FOR_BUILD C_COMPILER ${ABIFLAGS_${arg_CONFIG}}) - z_vcpkg_make_set_env(CPP_FOR_BUILD C_COMPILER "-E" ${ABIFLAGS_${arg_CONFIG}}) - z_vcpkg_make_set_env(CXX_FOR_BUILD CXX_COMPILER ${ABIFLAGS_${arg_CONFIG}}) - else() - set(ENV{CC_FOR_BUILD} "umask 0 | touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - set(ENV{CPP_FOR_BUILD} "umask 0 | touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - set(ENV{CXX_FOR_BUILD} "umask 0 | touch a.out | touch conftest${VCPKG_HOST_EXECUTABLE_SUFFIX} | true") - endif() - if("ASM" IN_LIST arg_LANGUAGES ) - z_vcpkg_make_set_env(CCAS ASM_COMPILER "-c" ${ABIFLAGS_${arg_CONFIG}}) - z_vcpkg_make_set_env(AS ASM_COMPILER "-c" ${ABIFLAGS_${arg_CONFIG}}) - endif() - z_vcpkg_make_set_env(NM NM) - z_vcpkg_make_set_env(RC RC) - z_vcpkg_make_set_env(WINDRES RC) - z_vcpkg_make_set_env(DLLTOOL DLLTOOL) - z_vcpkg_make_set_env(STRIP STRIP) - z_vcpkg_make_set_env(OBJDUMP OBJDUMP) - z_vcpkg_make_set_env(RANLIB RANLIB) - z_vcpkg_make_set_env(AR AR) - z_vcpkg_make_set_env(LD LINKER) - unset(z_vcpkg_make_set_env) - - list(FILTER z_vcm_all_tools INCLUDE REGEX " ") - if(z_vcm_all_tools) - list(REMOVE_DUPLICATES z_vcm_all_tools) - list(JOIN z_vcm_all_tools "\n " tools) - message(STATUS "Warning: Tools with embedded space may be handled incorrectly by configure:\n ${tools}") - endif() - endif() - #list(APPEND configure_env "MSYS2_ARG_CONV_EXCL='-LIBPATH:*;-OPT:*;-machine:*;-D*;LINK;_LINK_;CL;_CL_'") - list(JOIN configure_env " " configure_env) - set("${out_env}" "${configure_env}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_make_prepare_flags) # Hmm change name? - cmake_parse_arguments(PARSE_ARGV 0 arg - "NO_CPPFLAGS;DISABLE_MSVC_WRAPPERS;NO_FLAG_ESCAPING;USE_RESPONSE_FILES" - "LIBS_OUT;FRONTEND_VARIANT_OUT;C_COMPILER_NAME" - "LANGUAGES" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - - z_vcpkg_make_get_cmake_vars(LANGUAGES ${arg_LANGUAGES}) - - # ==== LIBS - # TODO: Figure out what to do with other Languages like Fortran - # Remove outer quotes from cmake variables which will be forwarded via makefile/shell variables - # substituted into makefile commands (e.g. Android NDK has "--sysroot=...") - separate_arguments(c_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES}") - separate_arguments(cxx_libs_list NATIVE_COMMAND "${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") - list(REMOVE_ITEM cxx_libs_list ${c_libs_list}) - set(all_libs_list ${cxx_libs_list} ${c_libs_list}) - #Do lib list transformation from name.lib to -lname if necessary - set(x_vcpkg_transform_libs ON) - if(VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC" AND (arg_NO_FLAG_ESCAPING)) - set(x_vcpkg_transform_libs OFF) - endif() - if(VCPKG_TARGET_IS_UWP) - set(x_vcpkg_transform_libs OFF) - # Avoid libtool choke: "Warning: linker path does not have real file for library -lWindowsApp." - # The problem with the choke is that libtool always falls back to built a static library even if a dynamic was requested. - # Note: Env LIBPATH;LIB are on the search path for libtool by default on windows. - # It even does unix/dos-short/unix transformation with the path to get rid of spaces. - endif() - if(x_vcpkg_transform_libs) - list(TRANSFORM all_libs_list REPLACE "[.](dll[.]lib|lib|a|so)$" "") - if(VCPKG_TARGET_IS_WINDOWS) - list(REMOVE_ITEM all_libs_list "uuid") - endif() - - list(TRANSFORM all_libs_list REPLACE "^([^-].*)" "-l\\1") - if(VCPKG_TARGET_IS_MINGW AND VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - # libtool must be told explicitly that there is no dynamic linkage for uuid. - # The "-Wl,..." syntax is understood by libtool and gcc, but no by ld. - list(TRANSFORM all_libs_list REPLACE "^-luuid\$" "-Wl,-Bstatic,-luuid,-Bdynamic") - endif() - endif() - if(all_libs_list) - list(JOIN all_libs_list " " all_libs_string) - if(DEFINED ENV{LIBS}) - set(ENV{LIBS} "$ENV{LIBS} ${all_libs_string}") - else() - set(ENV{LIBS} "${all_libs_string}") - endif() - endif() - - set("${arg_LIBS_OUT}" "${all_libs_string}" PARENT_SCOPE) - - # ==== /LIBS - - if(VCPKG_TARGET_IS_WINDOWS) - vcpkg_backup_env_variables(VARS _CL_ _LINK_) - # TODO: Should be CPP flags instead -> rewrite when vcpkg_determined_cmake_compiler_flags defined - if(VCPKG_TARGET_IS_UWP) - # Be aware that configure thinks it is crosscompiling due to: - # error while loading shared libraries: VCRUNTIME140D_APP.dll: - # cannot open shared object file: No such file or directory - # IMPORTANT: The only way to pass linker flags through libtool AND the compile wrapper - # is to use the CL and LINK environment variables !!! - # (This is due to libtool and compiler wrapper using the same set of options to pass those variables around) - file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}" VCToolsInstallDir) - set(_replacement -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_DEBUG "${VCPKG_COMBINED_CXX_FLAGS_DEBUG}") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_DEBUG "${VCPKG_COMBINED_C_FLAGS_DEBUG}") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_CXX_FLAGS_RELEASE "${VCPKG_COMBINED_CXX_FLAGS_RELEASE}") - string(REPLACE "${_replacement}" "" VCPKG_DETECTED_CMAKE_C_FLAGS_RELEASE "${VCPKG_COMBINED_C_FLAGS_RELEASE}") - # Can somebody please check if CMake's compiler flags for UWP are correct? - set(ENV{_CL_} "$ENV{_CL_} -FU\"${VCToolsInstallDir}/lib/x86/store/references/platform.winmd\"") - set(ENV{_LINK_} "$ENV{_LINK_} ${VCPKG_DETECTED_CMAKE_C_STANDARD_LIBRARIES} ${VCPKG_DETECTED_CMAKE_CXX_STANDARD_LIBRARIES}") - endif() - endif() - - #### - set(flags_opts "") - if(DEFINED arg_LANGUAGES) - set(flags_opts "LANGUAGES;${arg_LANGUAGES}") - endif() - if(arg_NO_CPPFLAGS) - list(APPEND flags_opts NO_CPPFLAGS) - endif() - - if(NOT arg_DISABLE_MSVC_WRAPPERS) - list(APPEND flags_opts USES_WRAPPERS) - endif() - - if(arg_NO_FLAG_ESCAPING) - list(APPEND flags_opts NO_FLAG_ESCAPING) - endif() - - if(arg_USE_RESPONSE_FILES) - list(APPEND flags_opts USE_RESPONSE_FILES) - endif() - - z_vcpkg_make_prepare_compile_flags( - CONFIG RELEASE - COMPILER_FRONTEND "${VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT}" - FLAGS_OUT release_flags_list - ${flags_opts} - ) - if(NOT DEFINED VCPKG_BUILD_TYPE) - list(APPEND all_buildtypes DEBUG) - z_vcpkg_make_prepare_compile_flags( - CONFIG DEBUG - COMPILER_FRONTEND "${VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT}" - FLAGS_OUT debug_flags_list - ${flags_opts} - ) - endif() - - foreach(flag IN LISTS release_flags_list debug_flags_list) - set("${flag}" "${${flag}}" PARENT_SCOPE) - endforeach() - #list(FILTER z_vcm_all_flags INCLUDE REGEX " ") # TODO: Figure out where this warning belongs to. - #if(z_vcm_all_flags) - # list(REMOVE_DUPLICATES z_vcm_all_flags) - # list(JOIN z_vcm_all_flags "\n " flags) - # message(STATUS "Warning: Arguments with embedded space may be handled incorrectly by configure:\n ${flags}") - #endif() - - #TODO: parent scope requiered vars - cmake_path(GET VCPKG_DETECTED_CMAKE_C_COMPILER FILENAME cname) - set("${C_COMPILER_NAME}" "${cname}" PARENT_SCOPE) # needed by z_vcpkg_make_get_configure_triplets - set("${arg_FRONTEND_VARIANT_OUT}" "${VCPKG_DETECTED_CMAKE_C_COMPILER_FRONTEND_VARIANT}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_make_default_path_and_configure_options out_var) - # THIS IS TODO - cmake_parse_arguments(PARSE_ARGV 1 arg - "AUTOMAKE" - "CONFIG;EXCLUDE_FILTER;INCLUDE_FILTER" - "" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - - set(opts "") - string(TOUPPER "${arg_CONFIG}" arg_CONFIG) - - z_vcpkg_make_set_common_vars() - - list(APPEND opts lt_cv_deplibs_check_method=pass_all) - - # Pre-processing windows configure requirements - if (VCPKG_TARGET_IS_WINDOWS) - # Other maybe interesting variables to control - # COMPILE This is the command used to actually compile a C source file. The file name is appended to form the complete command line. - # LINK This is the command used to actually link a C program. - # CXXCOMPILE The command used to actually compile a C++ source file. The file name is appended to form the complete command line. - # CXXLINK The command used to actually link a C++ program. - - # Variables not correctly detected by configure. In release builds. - list(APPEND opts gl_cv_double_slash_root=yes - ac_cv_func_memmove=yes - ac_cv_func_memset=yes - ) - - if(VCPKG_TARGET_ARCHITECTURE MATCHES "^[Aa][Rr][Mm]64$") - list(APPEND opts gl_cv_host_cpu_c_abi=no) - endif() - endif() - - # Set configure paths - set(current_installed_dir_msys "${CURRENT_INSTALLED_DIR}") - if(CMAKE_HOST_WIN32) - string(REGEX REPLACE "^([a-zA-Z]):/" "/\\1/" current_installed_dir_msys "${current_installed_dir_msys}") - endif() - vcpkg_list(APPEND opts "--prefix=${current_installed_dir_msys}${path_suffix_${arg_CONFIG}}") - - if(arg_CONFIG STREQUAL "RELEASE") - # ${prefix} has an extra backslash to prevent early expansion when calling `bash -c configure "..."`. - vcpkg_list(APPEND opts - # Important: These should all be relative to prefix! - "--bindir=\\\${prefix}/tools/${PORT}/bin" - "--sbindir=\\\${prefix}/tools/${PORT}/sbin" - "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default - #"--includedir='\${prefix}'/include" # already the default! - "--mandir=\\\${prefix}/share/${PORT}" - "--docdir=\\\${prefix}/share/${PORT}" - "--datarootdir=\\\${prefix}/share/${PORT}") - else() - vcpkg_list(APPEND opts - # Important: These should all be relative to prefix! - "--bindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/bin" - "--sbindir=\\\${prefix}/../tools/${PORT}${path_suffix_DEBUG}/sbin" - "--libdir=\\\${prefix}/lib" # On some Linux distributions lib64 is the default - "--includedir=\\\${prefix}/../include" - "--mandir=\\\${prefix}/share/${PORT}" - "--docdir=\\\${prefix}/share/${PORT}" - "--datarootdir=\\\${prefix}/share/${PORT}") - endif() - # Setup common options - if(NOT arg_AUTOMAKE) - vcpkg_list(APPEND opts --disable-silent-rules --verbose) - endif() - - if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") - vcpkg_list(APPEND opts --enable-shared --disable-static) - else() - vcpkg_list(APPEND opts --disable-shared --enable-static) - endif() - - if(DEFINED arg_EXCLUDE_FILTER) - list(FILTER opts EXCLUDE REGEX "${arg_EXCLUDE_FILTER}") - endif() - - if(DEFINED arg_INCLUDE_FILTER) - list(FILTER opts INCLUDE REGEX "${arg_INCLUDE_FILTER}") - endif() - - set("${out_var}" ${opts} PARENT_SCOPE) -endfunction() diff --git a/ports/vcpkg-make/vcpkg_make_configure.cmake b/ports/vcpkg-make/vcpkg_make_configure.cmake deleted file mode 100644 index 8d1b02a..0000000 --- a/ports/vcpkg-make/vcpkg_make_configure.cmake +++ /dev/null @@ -1,151 +0,0 @@ -include_guard(GLOBAL) -include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_make.cmake") - -function(vcpkg_make_configure) # -# Replacement for vcpkg_configure_make -# z_vcpkg_is_autoconf -# z_vcpkg_is_automake - cmake_parse_arguments(PARSE_ARGV 0 arg - "AUTOCONFIG;COPY_SOURCE;DISABLE_MSVC_WRAPPERS;NO_CPPFLAGS;ADD_BIN_TO_PATH;NO_DEFAULT_OPTIONS;NO_MSVC_FLAG_ESCAPING;USE_RESPONSE_FILES" - "SOURCE_PATH;SHELL" - "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE;PRE_CONFIGURE_CMAKE_COMMANDS;POST_CONFIGURE_CMAKE_COMMANDS;LANGUAGES" - ) - - z_vcpkg_unparsed_args(FATAL_ERROR) - - # Can be set in the triplet to append options for configure - if(DEFINED VCPKG_MAKE_CONFIGURE_OPTIONS) - list(APPEND arg_OPTIONS ${VCPKG_MAKE_CONFIGURE_OPTIONS}) - endif() - if(DEFINED VCPKG_MAKE_CONFIGURE_OPTIONS_RELEASE) - list(APPEND arg_OPTIONS_RELEASE ${VCPKG_MAKE_CONFIGURE_OPTIONS_RELEASE}) - endif() - if(DEFINED VCPKG_MAKE_CONFIGURE_OPTIONS_DEBUG) - list(APPEND arg_OPTIONS_DEBUG ${VCPKG_MAKE_CONFIGURE_OPTIONS_DEBUG}) - endif() - - set(src_dir "${arg_SOURCE_PATH}") - - z_vcpkg_warn_path_with_spaces() - - set(prepare_flags_opts "") - if(arg_DISABLE_MSVC_WRAPPERS) - list(APPEND prepare_flags_opts "DISABLE_MSVC_WRAPPERS") - else() - - endif() - if(arg_NO_CPPFLAGS) - list(APPEND prepare_flags_opts "NO_CPPFLAGS") - endif() - if(DEFINED arg_LANGUAGES) - list(APPEND prepare_flags_opts "LANGUAGES" "${arg_LANGUAGES}") - endif() - - set(escaping "") - if(arg_NO_MSVC_FLAG_ESCAPING) - set(escaping NO_FLAG_ESCAPING) - endif() - - if(arg_USE_RESPONSE_FILES) - set(escaping USE_RESPONSE_FILES) - endif() - - z_vcpkg_set_global_property(make_prepare_flags_opts "${prepare_flags_opts}") - z_vcpkg_make_prepare_flags(${prepare_flags_opts} ${escaping} C_COMPILER_NAME ccname FRONTEND_VARIANT_OUT frontend) - - if(DEFINED VCPKG_MAKE_BUILD_TRIPLET) - set(arg_BUILD_TRIPLET "${VCPKG_MAKE_BUILD_TRIPLET}") - endif() - if(NOT DEFINED arg_BUILD_TRIPLET) - z_vcpkg_make_get_configure_triplets(arg_BUILD_TRIPLET COMPILER_NAME ccname) - endif() - - if(NOT arg_DISABLE_MSVC_WRAPPERS AND "${frontend}" STREQUAL "MSVC" ) - # Lets assume that wrappers are only required for MSVC like frontends. - vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-make/wrappers") - endif() - - if(NOT arg_SHELL) - vcpkg_make_get_shell(arg_SHELL) - endif() - set(shell_cmd "${arg_SHELL}") - - if(arg_AUTOCONFIG) - vcpkg_run_autoreconf("${shell_cmd}" "${src_dir}") - endif() - - # Backup environment variables - # CCAS CC C CPP CXX FC FF GC LD LF LIBTOOL OBJC OBJCXX R UPC Y - set(cm_FLAGS AR AS CCAS CC C CPP CXX FC FF GC LD LF LIBTOOL OBJC OBJXX R UPC Y RC) - list(TRANSFORM cm_FLAGS APPEND "FLAGS") - vcpkg_backup_env_variables(VARS - ${cm_FLAGS} - # General backup - PATH - # Used by gcc/linux - C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH LD_LIBRARY_PATH - # Used by cl - INCLUDE LIB LIBPATH _CL_ _LINK_ - ) - z_vcpkg_make_set_common_vars() - - foreach(config IN LISTS buildtypes) - string(TOUPPER "${config}" configup) - set(target_dir "${workdir_${configup}}") - file(REMOVE_RECURSE "${target_dir}") - file(MAKE_DIRECTORY "${target_dir}") - file(RELATIVE_PATH relative_build_path "${target_dir}" "${src_dir}") - if(arg_COPY_SOURCE) - file(COPY "${src_dir}/" DESTINATION "${target_dir}") - set(relative_build_path ".") - endif() - - z_vcpkg_make_prepare_programs(configure_env ${prepare_flags_opts} CONFIG "${configup}") - - set(opts "") - set(opts_cache "") - if(NOT arg_NO_DEFAULT_OPTIONS) - z_vcpkg_make_default_path_and_configure_options(opts AUTOMAKE CONFIG "${configup}") # TODO: figure out outmake - z_vcpkg_make_prepare_configure_cache(opts_cache CONFIG "${configup}" WORKING_DIRECTORY "${target_dir}") - vcpkg_list(APPEND arg_OPTIONS ${opts}) - endif() - - set(configure_path_from_wd "./${relative_build_path}/configure") - if(arg_ADD_BIN_TO_PATH) - set(extra_configure_opts ADD_BIN_TO_PATH) - endif() - foreach(cmd IN LISTS arg_PRE_CONFIGURE_CMAKE_COMMANDS) - cmake_language(CALL ${cmd} ${configup}) - endforeach() - - vcpkg_make_run_configure(SHELL - "${shell_cmd}" - CONFIG #configure_env - "${configup}" - CONFIGURE_ENV - "${configure_env}" - CONFIGURE_PATH - "${configure_path_from_wd}" - OPTIONS - ${opts_cache} - ${arg_BUILD_TRIPLET} - ${arg_OPTIONS} - ${arg_OPTIONS_${configup}} - WORKING_DIRECTORY - "${target_dir}" - ${extra_configure_opts} - ) - foreach(cmd IN LISTS arg_POST_CONFIGURE_CMAKE_COMMANDS) - cmake_language(CALL ${cmd} ${configup}) - endforeach() - endforeach() - - # Restore environment - vcpkg_restore_env_variables(VARS - ${cm_FLAGS} - C_INCLUDE_PATH CPLUS_INCLUDE_PATH LIBRARY_PATH LD_LIBRARY_PATH - INCLUDE LIB LIBPATH _CL_ _LINK_ - ) - - find_program(Z_VCPKG_MAKE NAMES make gmake NAMES_PER_DIR REQUIRED) -endfunction() \ No newline at end of file diff --git a/ports/vcpkg-make/vcpkg_make_install.cmake b/ports/vcpkg-make/vcpkg_make_install.cmake deleted file mode 100644 index aad1222..0000000 --- a/ports/vcpkg-make/vcpkg_make_install.cmake +++ /dev/null @@ -1,150 +0,0 @@ -include_guard(GLOBAL) -include("${CMAKE_CURRENT_LIST_DIR}/vcpkg_make.cmake") - -function(vcpkg_make_install) -# Replacement for vcpkg_(install|build)_make - cmake_parse_arguments(PARSE_ARGV 0 arg - "ADD_BIN_TO_PATH;DISABLE_PARALLEL;NO_DESTDIR;NO_MSVC_FLAG_ESCAPING;USE_RESPONSE_FILES" - "LOGFILE_ROOT;SUBPATH;MAKEFILE;TARGETS;SHELL" - "OPTIONS;OPTIONS_DEBUG;OPTIONS_RELEASE" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - - if(NOT DEFINED arg_LOGFILE_ROOT) - set(arg_LOGFILE_ROOT "make") - endif() - - if(NOT DEFINED arg_TARGETS) - set(arg_TARGETS "all;install") - endif() - - if (NOT DEFINED arg_MAKEFILE) - set(arg_MAKEFILE Makefile) - endif() - - # Can be set in the triplet to append options for configure - if(DEFINED VCPKG_MAKE_OPTIONS) - list(APPEND arg_OPTIONS ${VCPKG_MAKE_OPTIONS}) - endif() - if(DEFINED VCPKG_MAKE_OPTIONS_RELEASE) - list(APPEND arg_OPTIONS_RELEASE ${VCPKG_MAKE_OPTIONS_RELEASE}) - endif() - if(DEFINED VCPKG_MAKE_OPTIONS_DEBUG) - list(APPEND arg_OPTIONS_DEBUG ${VCPKG_MAKE_OPTIONS_DEBUG}) - endif() - - if(WIN32) - set(Z_VCPKG_INSTALLED "${CURRENT_INSTALLED_DIR}") - else() - string(REPLACE " " "\ " Z_VCPKG_INSTALLED "${CURRENT_INSTALLED_DIR}") - endif() - - if(NOT arg_SHELL) - vcpkg_make_get_shell(arg_SHELL) - endif() - set(shell_cmd "${arg_SHELL}") - - find_program(Z_VCPKG_MAKE NAMES make gmake NAMES_PER_DIR REQUIRED) - set(make_command "${Z_VCPKG_MAKE}") - - set(destdir "${CURRENT_PACKAGES_DIR}") - if (CMAKE_HOST_WIN32) - set(path_backup "$ENV{PATH}") - vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-make/wrappers") # This probably doesn't hurt but should it be guarded? - string(REPLACE " " [[\ ]] vcpkg_package_prefix "${CURRENT_PACKAGES_DIR}") - string(REGEX REPLACE [[([a-zA-Z]):/]] [[/\1/]] destdir "${vcpkg_package_prefix}") - endif() - - vcpkg_backup_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH CPPFLAGS CFLAGS CXXFLAGS RCFLAGS PATH) - - z_vcpkg_make_set_common_vars() - z_vcpkg_get_global_property(prepare_flags_opts "make_prepare_flags_opts") - if(arg_NO_MSVC_FLAG_ESCAPING) - list(APPEND prepare_flags_opts NO_FLAG_ESCAPING) - endif() - if(arg_USE_RESPONSE_FILES) - set(escaping USE_RESPONSE_FILES) - endif() - z_vcpkg_make_prepare_flags(${prepare_flags_opts}) - - set(prepare_env_opts "") - if(arg_ADD_BIN_TO_PATH) - set(prepare_env_opts ADD_BIN_TO_PATH) - endif() - - foreach(buildtype IN LISTS buildtypes) - string(TOUPPER "${buildtype}" cmake_buildtype) - set(short_buildtype "${suffix_${cmake_buildtype}}") - set(path_suffix "${path_suffix_${cmake_buildtype}}") - - set(working_directory "${workdir_${cmake_buildtype}}/${arg_SUBPATH}") - message(STATUS "Building/Installing ${TARGET_TRIPLET}-${short_buildtype} in ${workdir_${cmake_buildtype}}/${arg_SUBPATH}") - - # Setup environment - z_vcpkg_make_prepare_env("${cmake_buildtype}" ${prepare_env_opts}) - z_vcpkg_make_prepare_programs(configure_env ${prepare_flags_opts} CONFIG "${cmake_buildtype}") - - set(destdir_opt "") - if(NOT arg_NO_DESTDIR) - set(destdir_opt "DESTDIR=${destdir}") - endif() - - set(extra_opts "") # Use --environment-overrides as default? - if(NOT VCPKG_TARGET_IS_OSX) - set(extra_opts --trace) - # TODO: Introspect the found make for available options? - endif() - - foreach(target IN LISTS arg_TARGETS) - vcpkg_list(SET make_cmd_line ${make_command} ${arg_OPTIONS} ${arg_OPTIONS_${cmake_buildtype}} V=1 -j ${VCPKG_CONCURRENCY} ${extra_opts} -f ${arg_MAKEFILE} ${target} ${destdir_opt}) - vcpkg_list(SET no_parallel_make_cmd_line ${make_command} ${arg_OPTIONS} ${arg_OPTIONS_${cmake_buildtype}} V=1 -j 1 ${extra_opts} -f ${arg_MAKEFILE} ${target} ${destdir_opt}) - message(STATUS "Making target '${target}' for ${TARGET_TRIPLET}-${short_buildtype}") - if (arg_DISABLE_PARALLEL) - vcpkg_run_shell_as_build( - WORKING_DIRECTORY "${working_directory}" - LOGNAME "${arg_LOGFILE_ROOT}-${target}-${TARGET_TRIPLET}-${short_buildtype}" - SHELL ${shell_cmd} - #COMMAND ${configure_env} ${no_parallel_make_cmd_line} - NO_PARALLEL_COMMAND ${configure_env} ${no_parallel_make_cmd_line} - ) - else() - vcpkg_run_shell_as_build( - WORKING_DIRECTORY "${working_directory}" - LOGNAME "${arg_LOGFILE_ROOT}-${target}-${TARGET_TRIPLET}-${short_buildtype}" - SHELL ${shell_cmd} - COMMAND ${configure_env} ${no_parallel_make_cmd_line} - NO_PARALLEL_COMMAND ${configure_env} ${no_parallel_make_cmd_line} - ) - endif() - file(READ "${CURRENT_BUILDTREES_DIR}/${arg_LOGFILE_ROOT}-${target}-${TARGET_TRIPLET}-${short_buildtype}-out.log" logdata) - if(logdata MATCHES "Warning: linker path does not have real file for library") - message(FATAL_ERROR "libtool could not find a file being linked against!") - endif() - endforeach() - - z_vcpkg_make_restore_env() - - vcpkg_restore_env_variables(VARS LIB LIBPATH LIBRARY_PATH) - endforeach() - - ## Cleanup - string(REGEX REPLACE "([a-zA-Z]):/" "/\\1/" destdir_suffix "${CURRENT_INSTALLED_DIR}") - if (EXISTS "${CURRENT_PACKAGES_DIR}${destdir_suffix}") # <- Means DESTDIR was correctly used; need to move files. - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}_tmp") - file(RENAME "${CURRENT_PACKAGES_DIR}" "${CURRENT_PACKAGES_DIR}_tmp") - file(RENAME "${CURRENT_PACKAGES_DIR}_tmp${destdir_suffix}" "${CURRENT_PACKAGES_DIR}") - file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}_tmp") - endif() - - # Remove libtool files since they contain absolute paths and are not necessary. - file(GLOB_RECURSE libtool_files "${CURRENT_PACKAGES_DIR}/**/*.la") - if(libtool_files) - file(REMOVE ${libtool_files}) - endif() - - if (CMAKE_HOST_WIN32) - set(ENV{PATH} "${path_backup}") - endif() - - vcpkg_restore_env_variables(VARS LIB LIBPATH LIBRARY_PATH LD_LIBRARY_PATH CPPFLAGS CFLAGS CXXFLAGS RCFLAGS) -endfunction() \ No newline at end of file diff --git a/ports/vcpkg-make/vcpkg_scripts.cmake b/ports/vcpkg-make/vcpkg_scripts.cmake deleted file mode 100644 index 673df47..0000000 --- a/ports/vcpkg-make/vcpkg_scripts.cmake +++ /dev/null @@ -1,210 +0,0 @@ -include_guard(GLOBAL) -function(vcpkg_insert_into_path) - cmake_parse_arguments(PARSE_ARGV 0 arg - "" - "PATH_OUT;APPENDED_OUT" - "BEFORE;INSERT" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - cmake_path(CONVERT "$ENV{PATH}" TO_CMAKE_PATH_LIST path_list NORMALIZE) - - string(TOUPPER "${arg_BEFORE}" before_upper) - - set(index 0) - set(appending TRUE) - foreach(item IN LISTS path_list) - string(TOUPPER "${item}" item_upper) - if(item IN_LIST arg_BEFORE OR item_upper IN_LIST before_upper) - set(appending FALSE) - break() - endif() - math(EXPR index "${index} + 1") - endforeach() - - vcpkg_list(INSERT path_list "${index}" ${arg_INSERT}) - - cmake_path(CONVERT "${path_list}" TO_NATIVE_PATH_LIST native_path_list) - set(ENV{PATH} "${native_path_list}") - if(DEFINED arg_PATH_OUT) - set("${arg_PATH_OUT}" "${path_list}" PARENT_SCOPE) - endif() - if(appending) - set("${arg_APPENDED_OUT}" "TRUE" PARENT_SCOPE) - else() - set("${arg_APPENDED_OUT}" "FALSE" PARENT_SCOPE) - endif() -endfunction() - -function(vcpkg_insert_program_into_path prog) - set(filepath "${prog}") - cmake_path(GET filepath FILENAME ${prog}) - find_program(z_vcm_prog_found NAMES "${${prog}}" PATHS ENV PATH NO_DEFAULT_PATH NO_CACHE) - if(NOT z_vcm_prog_found STREQUAL filepath) - cmake_path(GET z_vcm_prog_found PARENT_PATH before_dir) - cmake_path(GET filepath PARENT_PATH dir) - vcpkg_insert_into_path( - INSERT "${dir}" - BEFORE "${before_dir}" - ) - endif() -endfunction() - -function(vcpkg_insert_msys_into_path msys_out) - cmake_parse_arguments(PARSE_ARGV 1 arg - "" - "PATH_OUT" - "PACKAGES" - ) - z_vcpkg_unparsed_args(FATAL_ERROR) - vcpkg_acquire_msys(MSYS_ROOT PACKAGES ${arg_PACKAGES}) - cmake_path(CONVERT "$ENV{SystemRoot}" TO_CMAKE_PATH_LIST system_root NORMALIZE) - cmake_path(CONVERT "$ENV{LOCALAPPDATA}" TO_CMAKE_PATH_LIST local_app_data NORMALIZE) - file(REAL_PATH "${system_root}" system_root) - - vcpkg_list(SET find_system_dirs - "${system_root}/system32" - "${system_root}/System32" - "${system_root}/system32/" - "${system_root}/System32/" - "${local_app_data}/Microsoft/WindowsApps" - "${local_app_data}/Microsoft/WindowsApps/" - ) - - vcpkg_insert_into_path( - INSERT "${MSYS_ROOT}/usr/bin" - BEFORE ${find_system_dirs} - PATH_OUT path_out - APPENDED_OUT appending - ) - - if(appending) - message(WARNING "Unable to find system dir in the PATH variable! Appending required msys paths!") - endif() - - if(DEFINED arg_PATH_OUT) - set("${arg_PATH_OUT}" "${path_out}" PARENT_SCOPE) - endif() - - set("${msys_out}" "${MSYS_ROOT}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_convert_to_msys_path outvar invar) - if(CMAKE_HOST_WIN32) - string(REGEX REPLACE "^([a-zA-Z]):/" "/\\1/" current_installed_dir_msys "${invar}") - endif() - set("${outvar}" "${current_installed_dir_msys}" PARENT_SCOPE) -endfunction() - -### Helper macros for argument checking -macro(z_vcpkg_unparsed_args warning_level) - if(DEFINED arg_UNPARSED_ARGUMENTS) - message("${warning_level}" "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") - endif() -endmacro() - -macro(z_vcpkg_conflicting_args) - set(conflicting_args_set "") - foreach(z_vcpkg_conflicting_args_index RANGE 0 "${ARGC}") - if(${ARGV${z_vcpkg_conflicting_args_index}}) - list(APPEND conflicting_args_set "${ARGV${z_vcpkg_conflicting_args_index}}") - endif() - endforeach() - list(LENGTH conflicting_args_set conflicting_args_set_length) - if(conflicting_args_set_length GREATER 1) - message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed conflicting arguments:'${conflicting_args_set}'. Only one of those arguments can be passed") - endif() - unset(conflicting_args_set_length) - unset(conflicting_args_set) - unset(z_vcpkg_conflicting_args_index) -endmacro() - -macro(z_vcpkg_required_args arg) - foreach(arg IN ITEMS ${ARGN}) - if(NOT DEFINED arg_${arg}) - message("FATAL_ERROR" "${CMAKE_CURRENT_FUNCTION} requires argument: ${arg}") - endif() - endforeach() -endmacro() - -function(z_vcpkg_set_global_property property value) - if(NOT ARGN STREQUAL "" AND NOT ARGN MATCHES "^APPEND(_STRING)?$") - message(FATAL_ERROR "'${CMAKE_CURRENT_FUNCTION}' called with invalid arguments '${ARGN}'") - endif() - set_property(GLOBAL ${ARGN} PROPERTY "z_vcpkg_global_property_${property}" ${value}) -endfunction() - -function(z_vcpkg_get_global_property outvar property) - if(NOT ARGN STREQUAL "" AND NOT ARGN STREQUAL "SET") - message(FATAL_ERROR "'${CMAKE_CURRENT_FUNCTION}' called with invalid arguments '${ARGN}'") - endif() - get_property(outprop GLOBAL PROPERTY "z_vcpkg_global_property_${property}" ${ARGN}) - set(${outvar} "${outprop}" PARENT_SCOPE) -endfunction() - -function(vcpkg_prepare_pkgconfig config) - set(subdir "") - if(config MATCHES "(DEBUG|debug)") - set(subdir "/debug") - endif() - - z_vcpkg_get_global_property(has_backup "make-pkg-config-backup-${envvar}" SET) - if(has_backup) - message(FATAL_ERROR "'${CMAKE_CURRENT_FUNCTION}' does not (yet) support recursive backups. Need to restore previous state first!") - endif() - - foreach(envvar IN ITEMS PKG_CONFIG PKG_CONFIG_PATH) - if(DEFINED ENV{${envvar}}) - z_vcpkg_set_global_property("make-pkg-config-backup-${envvar}" "$ENV{${envvar}}") - else() - z_vcpkg_set_global_property("make-pkg-config-backup-${envvar}" "") - endif() - endforeach() - - vcpkg_find_acquire_program(PKGCONFIG) - get_filename_component(pkgconfig_path "${PKGCONFIG}" DIRECTORY) - set(ENV{PKG_CONFIG} "${PKGCONFIG}") - - vcpkg_host_path_list(PREPEND ENV{PKG_CONFIG_PATH} - "${CURRENT_INSTALLED_DIR}/share/pkgconfig/" - "${CURRENT_INSTALLED_DIR}${subdir}/lib/pkgconfig/" - "${CURRENT_PACKAGES_DIR}/share/pkgconfig/" - "${CURRENT_PACKAGES_DIR}${subdir}/lib/pkgconfig/" - ) -endfunction() - -function(vcpkg_restore_pkgconfig) - foreach(envvar IN ITEMS PKG_CONFIG PKG_CONFIG_PATH) - z_vcpkg_get_global_property(has_backup "make-pkg-config-backup-${envvar}" SET) - if(has_backup) - z_vcpkg_get_global_property(backup "make-pkg-config-backup-${envvar}") - set("ENV{${envvar}}" "${backup}") - z_vcpkg_set_global_property("make-pkg-config-backup-${envvar}") - else() - unset("ENV{${envvar}}") - endif() - endforeach() -endfunction() - -function(z_vcpkg_escape_spaces_in_path outvar invar) - string(REPLACE " " "\\ " current_installed_dir_escaped "${invar}") - set("${outvar}" "${current_installed_dir_escaped}" PARENT_SCOPE) -endfunction() - -function(z_vcpkg_warn_path_with_spaces) - vcpkg_list(SET z_vcm_paths_with_spaces) - if(CURRENT_BUILDTREES_DIR MATCHES " ") - vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_BUILDTREES_DIR}") - endif() - if(CURRENT_PACKAGES_DIR MATCHES " ") - vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_PACKAGES_DIR}") - endif() - if(CURRENT_INSTALLED_DIR MATCHES " ") - vcpkg_list(APPEND z_vcm_paths_with_spaces "${CURRENT_INSTALLED_DIR}") - endif() - if(z_vcm_paths_with_spaces) - # Don't bother with whitespace. The tools will probably fail and I tried very hard trying to make it work (no success so far)! - vcpkg_list(APPEND z_vcm_paths_with_spaces "Please move the path to one without whitespaces!") - list(JOIN z_vcm_paths_with_spaces "\n " z_vcm_paths_with_spaces) - message(STATUS "Warning: Paths with embedded space may be handled incorrectly by configure:\n ${z_vcm_paths_with_spaces}") - endif() -endfunction() diff --git a/ports/vcpkg-make/wrappers/cl_cpp_wrapper b/ports/vcpkg-make/wrappers/cl_cpp_wrapper deleted file mode 100644 index 32fde51..0000000 --- a/ports/vcpkg-make/wrappers/cl_cpp_wrapper +++ /dev/null @@ -1,104 +0,0 @@ -#!/usr/bin/bash -# cl_cpp_wrapper -# Wrapper around MS's cl.exe to make it act more like Unix cpp - -PATH="$PATH:/usr/bin" - -case $MACHTYPE in - *-msys) - slash="-" - ;; - *) - slash="/" - ;; -esac - -# prog specifies the program that should be run cl.exe -prog=cl.exe -debug= -cppopt=("${slash}nologo") -cppopt+=("${slash}E") -verbose= -shared_index=-1 - -processargs() -{ -### Run through every option and convert it to the proper MS one -while test $# -gt 0; do - case "$1" in - -D*) optarg= ;; - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - gotparam=1 - case "$1" in - --help) - usage - exit 0 - ;; - --verbose) - verbose=1 - ;; - -*) - # Remaining '-' options are passed to the compiler - if test x$optarg != x ; then - cppopt+=("${slash}${1:1}=$optarg") - else - cppopt+=("${slash}${1:1}") - fi - ;; - - /*) - # All '/' options are assumed to be for cpp and are passed through - cppopt+=("${slash}${1:1}") - ;; - - *) - file=$1 - #cppopt+=("$1") - ;; - esac - shift -done -} - -# Whitespace in paths is dealt with by setting IFS and using bash arrays - -# processargs $CPP_FLAGS -IFS="" -processargs $@ - -if test x$V = x1 ; then - verbose=1 -fi - -if test -n "$verbose" ; then - echo -n "$prog" - for opt in "${cppopt[@]}" ; do - echo -n " \"$opt\"" - done - echo "" -fi - -[ $# -ge 1 -a -f "$1" ] && input="$file" || input="-" - -input_file="${file:-/proc/self/fd/0}" -if [ "$input_file" == "/proc/self/fd/0" ]; then - #echo "STDIN" - # CL does not support reading from STDIN so it is wrapped here. - tmpout=cpp_wrapper_$RANDOM.h - /usr/bin/cp $input_file $tmpout - # from https://stackoverflow.com/questions/36313562/how-to-redirect-stdin-to-file-in-bash - #exec 3> cppstdtmp.h - #while IFS= read -r line; do - # printf '%s' "$line" - #done - #exec 3<&- - #echo "$( cppstdtmp.h - exec $prog ${cppopt[@]} $tmpout - rm -f $tmpout -else - #echo "FILE" - exec $prog ${cppopt[@]} $input_file -fi - diff --git a/ports/vcpkg-make/wrappers/windres-rc b/ports/vcpkg-make/wrappers/windres-rc deleted file mode 100644 index 9d20158..0000000 --- a/ports/vcpkg-make/wrappers/windres-rc +++ /dev/null @@ -1,133 +0,0 @@ -#! /bin/sh -# Wrapper for windres to rc which do not understand '-i -o --output-format'. -# cvtres is invoked by the linker -scriptversion=2022-08-24.12; # UTC - - -nl=' -' - -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent tools from complaining about whitespace usage. -IFS=" "" $nl" - -file_conv= - -# func_file_conv build_file lazy -# Convert a $build file to $host form and store it in $file -# Currently only supports Windows hosts. If the determined conversion -# type is listed in (the comma separated) LAZY, no conversion will -# take place. -func_file_conv () -{ - file=$1 - case $file in - / | /[!/]*) # absolute file, and not a UNC file - if test -z "$file_conv"; then - # lazily determine how to convert abs files - case `uname -s` in - MINGW*) - file_conv=mingw - ;; - CYGWIN* | MSYS*) - file_conv=cygwin - ;; - *) - file_conv=wine - ;; - esac - fi - case $file_conv/,$2, in - *,$file_conv,*) - ;; - mingw/*) - file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` - ;; - cygwin/* | msys/*) - file=`cygpath -m "$file" || echo "$file"` - ;; - wine/*) - file=`winepath -w "$file" || echo "$file"` - ;; - esac - ;; - esac -} - -# func_windres_wrapper rc args... -# Adjust compile command to suit rc instead of windres -func_windres_wrapper () -{ - # Assume a capable shell - bin= - in= - out= - - for arg - do - if test -z "$bin"; then - bin=$1 - elif test -n "$eat"; then - eat= - else - case $1 in - --output-format=*) - ;; - --define*) - eat=1 - set -- "$@" "-d $2" - ;; - --include-dir*) - eat=1 - func_file_conv "$2" - set -- "$@" "-I $file" - ;; - -o) - eat=1 - func_file_conv "$2" - out="$file" - echo "OUTPUT:$file" - ;; - *.obj) - func_file_conv "$1" - out="$file" - echo "OUTPUT:$file" - ;; - -i) - eat=1 - func_file_conv "$2" mingw - in="$file" - echo "INPUT:$file" - ;; - -*) - set -- "$@" "${1//\\\"/\"}" - ;; - *) - # libtool reorders arguments; save unqualified one as input - func_file_conv "$1" - in="$file" - echo "INPUT:$file" - ;; - esac - fi - shift - done - echo "$bin" "$@" -fo "$out" "$in" - exec "$bin" "$@" -fo "$out" "$in" - exit 1 -} - -eat= - -func_windres_wrapper "$@" - - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'before-save-hook 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC0" -# time-stamp-end: "; # UTC" -# End: diff --git a/ports/vcpkg-python-scripts/import_test.py.in b/ports/vcpkg-python-scripts/import_test.py.in new file mode 100644 index 0000000..4cb4b34 --- /dev/null +++ b/ports/vcpkg-python-scripts/import_test.py.in @@ -0,0 +1,4 @@ +import os +os.add_dll_directory('@DLL_DIR@') if os.name == 'nt' else None + +from @arg_MODULE@ import * \ No newline at end of file diff --git a/ports/vcpkg-python-scripts/portfile.cmake b/ports/vcpkg-python-scripts/portfile.cmake index 83b44ca..1e945e2 100644 --- a/ports/vcpkg-python-scripts/portfile.cmake +++ b/ports/vcpkg-python-scripts/portfile.cmake @@ -1,6 +1,7 @@ file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg_python_functions.cmake" "${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" + "${CMAKE_CURRENT_LIST_DIR}/import_test.py.in" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") file(INSTALL "${VCPKG_ROOT_DIR}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake b/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake index aedeaec..7b798d4 100644 --- a/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake +++ b/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake @@ -144,16 +144,14 @@ function(vcpkg_python_test_import) ) message(STATUS "Testing package!") - set(pypath_prefix "${CURRENT_PACKAGES_DIR}") - if(VCPKG_TARGET_IS_WINDOWS) - string(APPEND pypath_prefix "/tools/python3/Lib/site-packages") - else() - string(APPEND pypath_prefix "/lib/site-packages") - endif() + + set(DLL_DIR "${CURRENT_INSTALLED_DIR}/bin") + configure_file("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-python-scripts/import_test.py.in" "${CURRENT_BUILDTREES_DIR}/import_test.py" @ONLY) + + message(STATUS "Site packages: ${PYTHON3_SITEPACKAGES}") + set(ENV{PYTHONPATH} "${CURRENT_PACKAGES_DIR}/lib/python3.11/site-packages") - # todo add_dll_directory / ld_library_path - set(ENV{PYTHONPATH} "${pypath_prefix}") - vcpkg_execute_required_process(COMMAND "${PYTHON3}" -c "from ${arg_MODULE} import *" + vcpkg_execute_required_process(COMMAND "${PYTHON3}" "${CURRENT_BUILDTREES_DIR}/import_test.py" LOGNAME "python-test-import-${TARGET_TRIPLET}" WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}" ) From 1b5827da243e11d329f2bea38d9bdbcd2e3111ee Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Fri, 1 Mar 2024 08:52:56 +0100 Subject: [PATCH 32/41] Fix staging dir --- ports/vcpkg-python-scripts/vcpkg_python_functions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake b/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake index 7b798d4..8c37cf6 100644 --- a/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake +++ b/ports/vcpkg-python-scripts/vcpkg_python_functions.cmake @@ -149,7 +149,7 @@ function(vcpkg_python_test_import) configure_file("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-python-scripts/import_test.py.in" "${CURRENT_BUILDTREES_DIR}/import_test.py" @ONLY) message(STATUS "Site packages: ${PYTHON3_SITEPACKAGES}") - set(ENV{PYTHONPATH} "${CURRENT_PACKAGES_DIR}/lib/python3.11/site-packages") + set(ENV{PYTHONPATH} "${PYTHON3_SITEPACKAGES}") vcpkg_execute_required_process(COMMAND "${PYTHON3}" "${CURRENT_BUILDTREES_DIR}/import_test.py" LOGNAME "python-test-import-${TARGET_TRIPLET}" From a2d025203deeeeb4b9a3cdbd17bdc6e149b97eab Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 2 Mar 2024 08:10:05 +0100 Subject: [PATCH 33/41] Add target dir --- ports/py-pyqt6/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index fb5ee40..f260b59 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -19,6 +19,7 @@ set(SIPBUILD_ARGS "--disable" "QtDesigner" "--pep484-pyi" "--build-dir" "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" + "--target-dir" "${PYTHON3_SITEPACKAGES}" ) vcpkg_backup_env_variables(VARS PATH) From 52db76b6792aceb22abbc4818ce19428e4de710c Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 2 Mar 2024 09:30:12 +0100 Subject: [PATCH 34/41] Fixup inventory --- ports/py-pyqt6/portfile.cmake | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index f260b59..e712921 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -34,6 +34,16 @@ vcpkg_execute_required_process( ) message(STATUS "Running sipbuild...finished.") + +# inventory.txt is consumed by the distinfo tool which is run during make and should be run against the package directory +file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR) +vcpkg_replace_string("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/inventory.txt" + "${CURRENT_INSTALLED_DIR}" + "${CURRENT_PACKAGES_DIR}") + vcpkg_replace_string("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/inventory.txt" + "${NATIVE_INSTALLED_DIR}" + "${CURRENT_PACKAGES_DIR}") + vcpkg_qmake_build(BUILD_LOGNAME "install" TARGETS "install") vcpkg_python_test_import(MODULE "PyQt6.QtCore") From 08bb2b5e9f52f667561cb4d1eac0874484f77e7a Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 2 Mar 2024 20:18:28 +0100 Subject: [PATCH 35/41] Set osx deployment target --- ports/py-pyqt6/portfile.cmake | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index e712921..13d4063 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -22,6 +22,15 @@ set(SIPBUILD_ARGS "--target-dir" "${PYTHON3_SITEPACKAGES}" ) +if(VCPKG_TARGET_IS_OSX) + if(DEFINED VCPKG_OSX_DEPLOYMENT_TARGET) + vcpkg_list(APPEND arg_QMAKE_OPTIONS "QMAKE_MACOSX_DEPLOYMENT_TARGET=${VCPKG_OSX_DEPLOYMENT_TARGET}") + else() + # https://doc.qt.io/qt-6/macos.html + vcpkg_list(APPEND arg_QMAKE_OPTIONS "QMAKE_MACOSX_DEPLOYMENT_TARGET=10.15") + endif() +endif() + vcpkg_backup_env_variables(VARS PATH) vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/tools/python3/Scripts/" "${CURRENT_HOST_INSTALLED_DIR}/tools/Qt6/bin/" "${CURRENT_HOST_INSTALLED_DIR}/bin") From c38149fb3cb6e05012bcca479e39df8d69618983 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 2 Mar 2024 21:07:11 +0100 Subject: [PATCH 36/41] Add vcpkg search path --- ports/python3/add-vcpkg-search-path.patch | 126 ++++++++++++++++++++++ ports/python3/portfile.cmake | 3 +- ports/python3/vcpkg.json | 2 +- 3 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 ports/python3/add-vcpkg-search-path.patch diff --git a/ports/python3/add-vcpkg-search-path.patch b/ports/python3/add-vcpkg-search-path.patch new file mode 100644 index 0000000..5236c4c --- /dev/null +++ b/ports/python3/add-vcpkg-search-path.patch @@ -0,0 +1,126 @@ +diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c +index eeaf20b46..13bb1fe7b 100644 +--- a/Python/pylifecycle.c ++++ b/Python/pylifecycle.c +@@ -32,7 +32,10 @@ + #ifdef MS_WINDOWS + # undef BYTE + # include "windows.h" +- ++# include ++# include ++# include ++# include + extern PyTypeObject PyWindowsConsoleIO_Type; + # define PyWindowsConsoleIO_Check(op) \ + (PyObject_TypeCheck((op), &PyWindowsConsoleIO_Type)) +@@ -88,8 +91,97 @@ __attribute__ ((section (".PyRuntime"))) + = _PyRuntimeState_INIT; + _Py_COMP_DIAG_POP + + static int runtime_initialized = 0; + ++#if defined(MS_WINDOWS) ++ ++typedef void (WINAPI *ADD)(PCWSTR NewDirectory); ++ ++static int* is_vcpkg_search_path_added(void) { ++ static int is_search_path_added = 0; ++ return &is_search_path_added; ++} ++ ++static ADD getAddDllDirectory(void) { ++ static ADD pAddDllDirectory = NULL; ++ if(pAddDllDirectory == NULL) { ++ pAddDllDirectory = (ADD)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "AddDllDirectory"); ++ } ++ return pAddDllDirectory; ++} ++ ++PyStatus Init_vcpkg_DllSearchPath(void) { ++ HMODULE dll_handle = NULL; ++ static wchar_t *module_dirname = NULL; ++ ++ if (GetModuleHandleExW((GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT), ++ (LPCWSTR) &Init_vcpkg_DllSearchPath, &dll_handle) == 0) { ++ // Getting the pythonxx.dll path failed ++ } ++ ++ int buffer_size = 1024; ++ module_dirname = (wchar_t*)malloc(buffer_size*sizeof(wchar_t)); ++ if( module_dirname == NULL) ++ return PyStatus_NoMemory(); ++ if(GetModuleFileNameW(dll_handle, module_dirname, buffer_size - 1) == 0) { ++ // Call Failed! ++ return PyStatus_Error("vcpkg: Unable to retrieve module file name!"); ++ } ++ ++ wchar_t *old_module_dirname; ++ while( GetLastError() == ERROR_INSUFFICIENT_BUFFER) ++ { ++ buffer_size += buffer_size/2; ++ old_module_dirname = module_dirname; ++ module_dirname = (wchar_t*)realloc(module_dirname,buffer_size*sizeof(wchar_t)); ++ if( module_dirname == NULL) { ++ // No memory? ++ free(old_module_dirname); ++ return PyStatus_NoMemory(); ++ } ++ if(GetModuleFileNameW(dll_handle, &module_dirname[0], buffer_size - 1) == 0) { ++ return PyStatus_Error("vcpkg: Unable to retrieve module file name!"); ++ } ++ } ++ ++ wchar_t* last_path_seperator = wcsrchr(module_dirname, L'\\'); ++ ++ if(last_path_seperator) { ++ last_path_seperator[0] = L'\0'; // Remove file name from module_dirname ++ } ++ ++ const wchar_t python_path[] = L"\\tools\\python3"; ++ const size_t python_path_len = wcslen(python_path); ++ const size_t module_dirname_len = wcslen(module_dirname); ++ wchar_t* prefix_path_sep = wcsstr(module_dirname, python_path); ++ ++ const size_t remaining_len = (size_t)(prefix_path_sep - module_dirname) - (module_dirname_len-python_path_len); ++ ++ if(prefix_path_sep == NULL || remaining_len != 0) { ++ free(module_dirname); ++ return PyStatus_Ok(); // We are somewhere then vcpkg -> do nothing ++ } ++ ++ prefix_path_sep[1] = L'b'; // module_dirname is now vcpkg_bin_dir ++ prefix_path_sep[2] = L'i'; ++ prefix_path_sep[3] = L'n'; ++ prefix_path_sep[4] = L'\0'; ++ ++ DWORD fileattr = GetFileAttributesW(module_dirname); ++ ++ if( fileattr & FILE_ATTRIBUTE_DIRECTORY && !*is_vcpkg_search_path_added()) { ++ ADD pAddDllDirectory = getAddDllDirectory(); ++ pAddDllDirectory(module_dirname); ++ fwprintf(stderr, L"Added vcpkg bin path to search for dlls. Path added: %ls \n", module_dirname); ++ *is_vcpkg_search_path_added() = 1; ++ } ++ ++ free(module_dirname); ++ return PyStatus_Ok(); ++}; ++ ++#endif ++ + PyStatus + _PyRuntime_Initialize(void) + { +@@ -102,6 +193,11 @@ _PyRuntime_Initialize(void) + } + runtime_initialized = 1; + ++#ifdef MS_WINDOWS ++ PyStatus err = Init_vcpkg_DllSearchPath(); ++ if(PyStatus_IsError(err)) ++ return err; ++#endif + return _PyRuntimeState_Init(&_PyRuntime); + } + diff --git a/ports/python3/portfile.cmake b/ports/python3/portfile.cmake index a018ff0..eba8c7f 100644 --- a/ports/python3/portfile.cmake +++ b/ports/python3/portfile.cmake @@ -34,6 +34,7 @@ set(PATCHES 0014-fix-get-python-inc-output.patch 0015-dont-use-WINDOWS-def.patch 0018-fix-sysconfig-include.patch + add-vcpkg-search-path.patch ) if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") @@ -376,4 +377,4 @@ if (NOT VCPKG_TARGET_IS_WINDOWS) endif() endif() -configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/python3/vcpkg-port-config.cmake" @ONLY) \ No newline at end of file +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/python3/vcpkg-port-config.cmake" @ONLY) diff --git a/ports/python3/vcpkg.json b/ports/python3/vcpkg.json index 4f32a58..98052df 100644 --- a/ports/python3/vcpkg.json +++ b/ports/python3/vcpkg.json @@ -1,7 +1,7 @@ { "name": "python3", "version": "3.11.5", - "port-version": 3, + "port-version": 4, "description": "The Python programming language", "homepage": "https://github.com/python/cpython", "license": "Python-2.0", From ebd850e64c53bfcdad92cd86531bb8a5d57ec02c Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 2 Mar 2024 22:04:00 +0100 Subject: [PATCH 37/41] Remove add_dll_directory patch --- ports/py-sip/add_dll_directory.patch | 13 ------------- ports/py-sip/portfile.cmake | 2 -- 2 files changed, 15 deletions(-) delete mode 100644 ports/py-sip/add_dll_directory.patch diff --git a/ports/py-sip/add_dll_directory.patch b/ports/py-sip/add_dll_directory.patch deleted file mode 100644 index 25e8345..0000000 --- a/ports/py-sip/add_dll_directory.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/sipbuild/__init__.py b/sipbuild/__init__.py -index 3a3b094..a551b47 100644 ---- a/sipbuild/__init__.py -+++ b/sipbuild/__init__.py -@@ -22,6 +22,8 @@ - - - # Publish the public API. -+import os -+os.add_dll_directory(os.path.abspath(os.path.join(__file__, "../../../../../../bin"))) if os.name == 'nt' else None - from .abstract_builder import AbstractBuilder - from .abstract_project import AbstractProject - from .bindings import Bindings diff --git a/ports/py-sip/portfile.cmake b/ports/py-sip/portfile.cmake index 2ed5efe..def8d8e 100644 --- a/ports/py-sip/portfile.cmake +++ b/ports/py-sip/portfile.cmake @@ -3,8 +3,6 @@ vcpkg_from_pythonhosted( PACKAGE_NAME sip VERSION ${VERSION} SHA512 885c32a051e882b82b59bf1365050933f8fc1c619b19f4bc03235edc5741a5e14aae8edf90479ad0283f74ba5c5233a2589c151ec865b130199a6db9800a2294 - PATCHES - add_dll_directory.patch ) vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}" OPTIONS -x) From 89bf29dd17fa060d897d7c8364e679ffbcafc2fc Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 2 Mar 2024 22:31:38 +0100 Subject: [PATCH 38/41] Fixups --- .github/workflows/macos.yml | 6 +----- ports/py-pyqt6/portfile.cmake | 10 +++------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 916640e..d14d9cc 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -68,11 +68,7 @@ jobs: VCPKG_OPTIONS="--overlay-ports="${{ github.workspace }}/ports" --host-triplet=${{ matrix.triplet }} --triplet=${{ matrix.triplet }} --x-buildtrees-root=${{ env.buildtrees }}" ./vcpkg/vcpkg install $VCPKG_OPTIONS py-pip ./vcpkg/vcpkg install $VCPKG_OPTIONS py-sip - ./vcpkg/vcpkg install $VCPKG_OPTIONS py-pyqt6 - - - uses: m-kuhn/action-tmate@patch-1 - if: failure() - + # ./vcpkg/vcpkg install $VCPKG_OPTIONS py-pyqt6 - name: πŸ“‘ Upload logs uses: actions/upload-artifact@v4 diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 13d4063..0af7420 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -24,17 +24,14 @@ set(SIPBUILD_ARGS if(VCPKG_TARGET_IS_OSX) if(DEFINED VCPKG_OSX_DEPLOYMENT_TARGET) - vcpkg_list(APPEND arg_QMAKE_OPTIONS "QMAKE_MACOSX_DEPLOYMENT_TARGET=${VCPKG_OSX_DEPLOYMENT_TARGET}") + vcpkg_list(APPEND SIPBUILD_ARGS "--qmake-setting" "QMAKE_MACOSX_DEPLOYMENT_TARGET=${VCPKG_OSX_DEPLOYMENT_TARGET}") else() # https://doc.qt.io/qt-6/macos.html - vcpkg_list(APPEND arg_QMAKE_OPTIONS "QMAKE_MACOSX_DEPLOYMENT_TARGET=10.15") + vcpkg_list(APPEND SIPBUILD_ARGS "--qmake-setting" "QMAKE_MACOSX_DEPLOYMENT_TARGET=10.15") endif() + vcpkg_list(APPEND SIPBUILD_ARGS "--no-dbus-python") endif() -vcpkg_backup_env_variables(VARS PATH) - -vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/tools/python3/Scripts/" "${CURRENT_HOST_INSTALLED_DIR}/tools/Qt6/bin/" "${CURRENT_HOST_INSTALLED_DIR}/bin") - message(STATUS "Running sipbuild...") vcpkg_execute_required_process( COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} @@ -43,7 +40,6 @@ vcpkg_execute_required_process( ) message(STATUS "Running sipbuild...finished.") - # inventory.txt is consumed by the distinfo tool which is run during make and should be run against the package directory file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR) vcpkg_replace_string("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/inventory.txt" From e7cced1a72ff8a6661541de3d2ae96c6cdf44b80 Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sat, 2 Mar 2024 22:42:55 +0100 Subject: [PATCH 39/41] Readd paths --- ports/py-pyqt6/portfile.cmake | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 0af7420..7971105 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -32,6 +32,11 @@ if(VCPKG_TARGET_IS_OSX) vcpkg_list(APPEND SIPBUILD_ARGS "--no-dbus-python") endif() + +vcpkg_backup_env_variables(VARS PATH) + +vcpkg_add_to_path(PREPEND "${CURRENT_HOST_INSTALLED_DIR}/tools/python3/Scripts/" "${CURRENT_HOST_INSTALLED_DIR}/tools/Qt6/bin/" "${CURRENT_HOST_INSTALLED_DIR}/bin") + message(STATUS "Running sipbuild...") vcpkg_execute_required_process( COMMAND "${PYTHON3}" "-m" "sipbuild.tools.build" ${SIPBUILD_ARGS} @@ -40,6 +45,8 @@ vcpkg_execute_required_process( ) message(STATUS "Running sipbuild...finished.") +vcpkg_restore_env_variables(VARS PATH) + # inventory.txt is consumed by the distinfo tool which is run during make and should be run against the package directory file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR) vcpkg_replace_string("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/inventory.txt" From f6fc755efb7669b59ed3fcf0c8da39098a54a28c Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Sun, 3 Mar 2024 07:09:51 +0100 Subject: [PATCH 40/41] Fixups --- ports/py-pyqt6/portfile.cmake | 4 ++-- ports/python3/vcpkg.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/py-pyqt6/portfile.cmake b/ports/py-pyqt6/portfile.cmake index 7971105..3f700a0 100644 --- a/ports/py-pyqt6/portfile.cmake +++ b/ports/py-pyqt6/portfile.cmake @@ -45,8 +45,6 @@ vcpkg_execute_required_process( ) message(STATUS "Running sipbuild...finished.") -vcpkg_restore_env_variables(VARS PATH) - # inventory.txt is consumed by the distinfo tool which is run during make and should be run against the package directory file(TO_NATIVE_PATH "${CURRENT_INSTALLED_DIR}" NATIVE_INSTALLED_DIR) vcpkg_replace_string("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/inventory.txt" @@ -58,4 +56,6 @@ vcpkg_replace_string("${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/inventory. vcpkg_qmake_build(BUILD_LOGNAME "install" TARGETS "install") +vcpkg_restore_env_variables(VARS PATH) + vcpkg_python_test_import(MODULE "PyQt6.QtCore") diff --git a/ports/python3/vcpkg.json b/ports/python3/vcpkg.json index 98052df..5a85db2 100644 --- a/ports/python3/vcpkg.json +++ b/ports/python3/vcpkg.json @@ -1,7 +1,7 @@ { "name": "python3", "version": "3.11.5", - "port-version": 4, + "port-version": 5, "description": "The Python programming language", "homepage": "https://github.com/python/cpython", "license": "Python-2.0", From 8a48ae52fd22b8806b1b0e78392b5e077121be2d Mon Sep 17 00:00:00 2001 From: Matthias Kuhn Date: Mon, 4 Mar 2024 07:43:19 +0100 Subject: [PATCH 41/41] version db --- ports/py-packaging/vcpkg.json | 2 +- ports/py-pip/vcpkg.json | 2 +- ports/py-ply/vcpkg.json | 2 +- ports/py-pyparsing/vcpkg.json | 2 +- ports/py-pyqt-builder/vcpkg.json | 2 +- ports/py-pyqt6-sip/vcpkg.json | 4 ++-- ports/py-pyqt6/vcpkg.json | 8 ++++---- versions/baseline.json | 14 +++++++++----- versions/p-/py-packaging.json | 2 +- versions/p-/py-pip.json | 2 +- versions/p-/py-ply.json | 2 +- versions/p-/py-pyparsing.json | 2 +- versions/p-/py-pyqt-builder.json | 5 +++++ versions/p-/py-pyqt6-sip.json | 9 +++++++++ versions/p-/py-pyqt6.json | 5 +++++ versions/p-/py-sip.json | 5 +++++ versions/p-/python3.json | 7 ++++++- versions/v-/vcpkg-python-scripts.json | 5 +++++ 18 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 versions/p-/py-pyqt6-sip.json diff --git a/ports/py-packaging/vcpkg.json b/ports/py-packaging/vcpkg.json index 29574e5..461092d 100644 --- a/ports/py-packaging/vcpkg.json +++ b/ports/py-packaging/vcpkg.json @@ -5,9 +5,9 @@ "homepage": "packaging.pypa.io/", "license": "MIT", "dependencies": [ - "python3", "py-flit-core", "py-gpep517", + "python3", { "name": "vcpkg-python-scripts", "host": true diff --git a/ports/py-pip/vcpkg.json b/ports/py-pip/vcpkg.json index 59f74d7..8deed5b 100644 --- a/ports/py-pip/vcpkg.json +++ b/ports/py-pip/vcpkg.json @@ -5,11 +5,11 @@ "description": "Tool for installing and managing Python packages", "homepage": "https://pypi.org/project/setuptools", "dependencies": [ - "python3", { "name": "py-setuptools", "host": true }, + "python3", { "name": "vcpkg-python-scripts", "host": true diff --git a/ports/py-ply/vcpkg.json b/ports/py-ply/vcpkg.json index 671ba50..521bad9 100644 --- a/ports/py-ply/vcpkg.json +++ b/ports/py-ply/vcpkg.json @@ -5,11 +5,11 @@ "description": "Python Lex & Yacc", "homepage": "https://www.dabeaz.com/ply/", "dependencies": [ - "python3", { "name": "py-setuptools", "host": true }, + "python3", { "name": "vcpkg-python-scripts", "host": true diff --git a/ports/py-pyparsing/vcpkg.json b/ports/py-pyparsing/vcpkg.json index f2b8021..738e23f 100644 --- a/ports/py-pyparsing/vcpkg.json +++ b/ports/py-pyparsing/vcpkg.json @@ -6,11 +6,11 @@ "homepage": "https://github.com/pyparsing/pyparsing", "license": "MIT", "dependencies": [ - "python3", { "name": "py-setuptools", "host": true }, + "python3", { "name": "vcpkg-python-scripts", "host": true diff --git a/ports/py-pyqt-builder/vcpkg.json b/ports/py-pyqt-builder/vcpkg.json index 69ffe02..4ddd987 100644 --- a/ports/py-pyqt-builder/vcpkg.json +++ b/ports/py-pyqt-builder/vcpkg.json @@ -5,11 +5,11 @@ "description": "PyQt-builder is the PEP 517 compliant build system for PyQt and projects that extend PyQt. It extends the SIP build system and uses Qt’s qmake to perform the actual compilation and installation of extension modules.", "homepage": "https://www.riverbankcomputing.com/software/pyqt-builder", "dependencies": [ - "python3", { "name": "py-setuptools", "host": true }, + "python3", { "name": "vcpkg-python-scripts", "host": true diff --git a/ports/py-pyqt6-sip/vcpkg.json b/ports/py-pyqt6-sip/vcpkg.json index 01044de..7308f19 100644 --- a/ports/py-pyqt6-sip/vcpkg.json +++ b/ports/py-pyqt6-sip/vcpkg.json @@ -4,12 +4,12 @@ "description": "Python bindings for the Qt cross platform application toolkit", "homepage": "https://www.riverbankcomputing.com/software/pyqt/", "dependencies": [ - "python3", - "py-sip", { "name": "py-setuptools", "host": true }, + "py-sip", + "python3", { "name": "vcpkg-python-scripts", "host": true diff --git a/ports/py-pyqt6/vcpkg.json b/ports/py-pyqt6/vcpkg.json index 37e93f0..f80df70 100644 --- a/ports/py-pyqt6/vcpkg.json +++ b/ports/py-pyqt6/vcpkg.json @@ -5,11 +5,11 @@ "description": "Python bindings for the Qt cross platform application toolkit", "homepage": "https://www.riverbankcomputing.com/software/pyqt/", "dependencies": [ - "python3", - "py-pyqt6-sip", - "py-pyqt-builder", - "py-ply", "py-packaging", + "py-ply", + "py-pyqt-builder", + "py-pyqt6-sip", + "python3", { "name": "qtactiveqt", "platform": "windows" diff --git a/versions/baseline.json b/versions/baseline.json index bbedd98..6f1b90d 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -38,11 +38,15 @@ }, "py-pyqt-builder": { "baseline": "1.15.4", - "port-version": 2 + "port-version": 3 }, "py-pyqt6": { "baseline": "6.6.1", - "port-version": 1 + "port-version": 2 + }, + "py-pyqt6-sip": { + "baseline": "13.6.0", + "port-version": 0 }, "py-setuptools": { "baseline": "69.0.3", @@ -50,7 +54,7 @@ }, "py-sip": { "baseline": "6.7.12", - "port-version": 2 + "port-version": 3 }, "py-wheel": { "baseline": "0.41.3", @@ -58,11 +62,11 @@ }, "python3": { "baseline": "3.11.5", - "port-version": 3 + "port-version": 5 }, "vcpkg-python-scripts": { "baseline": "2023-06-28", - "port-version": 1 + "port-version": 2 } } } diff --git a/versions/p-/py-packaging.json b/versions/p-/py-packaging.json index e7bedef..5f916a8 100644 --- a/versions/p-/py-packaging.json +++ b/versions/p-/py-packaging.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "10f84ce4d2a64797e68a4446795a9dcfe74102f3", + "git-tree": "67b8795eb16ec593d1b47c7661c8df7f10d32dda", "version": "23.1", "port-version": 0 } diff --git a/versions/p-/py-pip.json b/versions/p-/py-pip.json index 2068358..b2fea93 100644 --- a/versions/p-/py-pip.json +++ b/versions/p-/py-pip.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "35a90705af0ab28f29b1ead0235f62796f51ad1c", + "git-tree": "588ce55dc845965037534a398d7699518f3617ec", "version": "23.3.2", "port-version": 1 }, diff --git a/versions/p-/py-ply.json b/versions/p-/py-ply.json index 9dee8bd..8e368d6 100644 --- a/versions/p-/py-ply.json +++ b/versions/p-/py-ply.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "86d7c418d4b0348e920438241c16321320732e02", + "git-tree": "7079844274bd5b57b0f2a2a5abbb57a3e482d256", "version": "3.11", "port-version": 1 }, diff --git a/versions/p-/py-pyparsing.json b/versions/p-/py-pyparsing.json index 3035164..b31fbaf 100644 --- a/versions/p-/py-pyparsing.json +++ b/versions/p-/py-pyparsing.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "9044d6affe0f89ef858bb1ade9873310accd515e", + "git-tree": "a10f0cf1a74b441f424b31211f6860b759fb9066", "version": "3.1.1", "port-version": 2 }, diff --git a/versions/p-/py-pyqt-builder.json b/versions/p-/py-pyqt-builder.json index e3bc468..2d1cab5 100644 --- a/versions/p-/py-pyqt-builder.json +++ b/versions/p-/py-pyqt-builder.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "6c399a96d52870d45bdffb015f756b903cce4a0c", + "version": "1.15.4", + "port-version": 3 + }, { "git-tree": "0f57e5765b676b7df252b162f3416b7cf5f3ae41", "version": "1.15.4", diff --git a/versions/p-/py-pyqt6-sip.json b/versions/p-/py-pyqt6-sip.json new file mode 100644 index 0000000..e65a2e6 --- /dev/null +++ b/versions/p-/py-pyqt6-sip.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "33763906fd54d30b85cb451638d9e112098e62b8", + "version": "13.6.0", + "port-version": 0 + } + ] +} diff --git a/versions/p-/py-pyqt6.json b/versions/p-/py-pyqt6.json index 0a58d3f..ce4d3b6 100644 --- a/versions/p-/py-pyqt6.json +++ b/versions/p-/py-pyqt6.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "77f0c67035084e86141a37b7baaab335cc6979ae", + "version": "6.6.1", + "port-version": 2 + }, { "git-tree": "13bc2a6dbc9198aa3978bb3f060026eca5707f81", "version": "6.6.1", diff --git a/versions/p-/py-sip.json b/versions/p-/py-sip.json index c0ed796..4dce631 100644 --- a/versions/p-/py-sip.json +++ b/versions/p-/py-sip.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "3df0a8a0fb5d32457b4b8bba4df08889ac2b659a", + "version": "6.7.12", + "port-version": 3 + }, { "git-tree": "46a9d13e2a167dceac8c43eb54509cb02eb7c4cf", "version": "6.7.12", diff --git a/versions/p-/python3.json b/versions/p-/python3.json index bdefb65..848c9c5 100644 --- a/versions/p-/python3.json +++ b/versions/p-/python3.json @@ -1,12 +1,17 @@ { "versions": [ + { + "git-tree": "cf3e1b8d5b92a0315a4499c5bdd332199055ad9a", + "version": "3.11.5", + "port-version": 5 + }, { "git-tree": "303b939126fb15aad8a1478cad42c1d5b31ec3c1", "version": "3.11.5", "port-version": 3 }, { - "git-tree": "9e1cbfe815376b12f915e25a1c84a3f1d7890b66", + "git-tree": "f9b00812e74d786b53c8b8df5e4428957108bfce", "version": "3.11.5", "port-version": 4 } diff --git a/versions/v-/vcpkg-python-scripts.json b/versions/v-/vcpkg-python-scripts.json index bdf03d3..5f5e43b 100644 --- a/versions/v-/vcpkg-python-scripts.json +++ b/versions/v-/vcpkg-python-scripts.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "5beddc1fe845dc192e7c1c6a069885c6b3ccc15a", + "version-date": "2023-06-28", + "port-version": 2 + }, { "git-tree": "73801f37b978d9b796c70ec1f4895f0c0126a260", "version-date": "2023-06-28",