From ac1f57e7cda116c39d07959c2026154abc1845b2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 11 Jan 2021 09:55:28 +0100 Subject: [PATCH 001/141] force bla vendor in blas --- ports/blas/CONTROL | 1 + ports/blas/portfile.cmake | 31 ++++++++++++++++++++++++- ports/blas/vcpkg-cmake-wrapper.cmake.in | 5 ++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 ports/blas/vcpkg-cmake-wrapper.cmake.in diff --git a/ports/blas/CONTROL b/ports/blas/CONTROL index 6f660d228e5580..e9e1a785b347c2 100644 --- a/ports/blas/CONTROL +++ b/ports/blas/CONTROL @@ -1,4 +1,5 @@ Source: blas Version: 1 +Port-Version: 1 Description: Metapackage for packages which provide BLAS Build-Depends: openblas diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index f70aa46eabd3fb..a37948d649c1ec 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -1,5 +1,34 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) +# OpenBLAS +set(BLA_VENDOR OpenBLAS) + +# For possible overlays: + +#NETLIB reference implementation (contained in lapack-reference) +#set(BLA_VENDOR Generic) + +# Intel MKL +#if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) +# set(BLA_VENDOR Intel10_64lp) +#elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) +# set(BLA_VENDOR Intel10_32) +#else() +# message(FATAL_ERROR "Unsupported target architecture for Intel MKL!") +#endif() + +# Apple Accelerate Framework +# set(BLA_VENDOR Apple) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) +else() + set(BLA_STATIC OFF) +endif() + +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) # Make sure BLAS can be found vcpkg_configure_cmake(SOURCE_PATH ${CURRENT_PORT_DIR} - OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}") + OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" + -DBLA_VENDOR=${BLA_VENDOR} + -DBLA_STATIC=${BLA_STATIC}) diff --git a/ports/blas/vcpkg-cmake-wrapper.cmake.in b/ports/blas/vcpkg-cmake-wrapper.cmake.in new file mode 100644 index 00000000000000..bda7ab98d8f5ff --- /dev/null +++ b/ports/blas/vcpkg-cmake-wrapper.cmake.in @@ -0,0 +1,5 @@ +set(BLA_VENDOR @BLA_VENDOR@) +set(BLA_STATIC @BLA_STATIC@) +_find_package(${ARGS}) +unset(BLA_VENDOR) +unset(BLA_STATIC) \ No newline at end of file From f2df1fa681544ca19fa1741ff4e908e3d792c0e2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 11 Jan 2021 09:57:54 +0100 Subject: [PATCH 002/141] force BLA_VENDOR for lapack. --- ports/lapack/CONTROL | 2 +- ports/lapack/portfile.cmake | 14 +++++++++++++- ports/lapack/vcpkg-cmake-wrapper.cmake.in | 5 +++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 ports/lapack/vcpkg-cmake-wrapper.cmake.in diff --git a/ports/lapack/CONTROL b/ports/lapack/CONTROL index 6147ef3a807f8f..b040b6ddff36a0 100644 --- a/ports/lapack/CONTROL +++ b/ports/lapack/CONTROL @@ -1,5 +1,5 @@ Source: lapack Version: 3 -Port-Version: 1 +Port-Version: 2 Description: Metapackage for packages which provide LAPACK Build-Depends: clapack(arm&windows), lapack-reference(!arm|!windows) diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 2a59fa7267d7c2..a9b34d2279985f 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -1,5 +1,17 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) +set(BLA_VENDOR Generic) +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) +else() + set(BLA_STATIC OFF) +endif() + # Make sure LAPACK can be found vcpkg_configure_cmake(SOURCE_PATH ${CURRENT_PORT_DIR} - OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}") + OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" + -DBLA_VENDOR=${BLA_VENDOR} + -DBLA_STATIC=${BLA_STATIC}) + diff --git a/ports/lapack/vcpkg-cmake-wrapper.cmake.in b/ports/lapack/vcpkg-cmake-wrapper.cmake.in new file mode 100644 index 00000000000000..bda7ab98d8f5ff --- /dev/null +++ b/ports/lapack/vcpkg-cmake-wrapper.cmake.in @@ -0,0 +1,5 @@ +set(BLA_VENDOR @BLA_VENDOR@) +set(BLA_STATIC @BLA_STATIC@) +_find_package(${ARGS}) +unset(BLA_VENDOR) +unset(BLA_STATIC) \ No newline at end of file From f14cac729cc416428b44c52e03ae835fcb4a23c5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 19 Jan 2021 13:37:58 +0100 Subject: [PATCH 003/141] fix wrapper install --- ports/lapack-reference/CONTROL | 2 +- ports/lapack-reference/portfile.cmake | 10 ++++++++-- ports/lapack-reference/vcpkg-cmake-wrapper.cmake | 2 ++ ports/lapack/portfile.cmake | 8 ++++---- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ports/lapack-reference/CONTROL b/ports/lapack-reference/CONTROL index 701e48b7d3b2f1..3e18ebd2b3db1c 100644 --- a/ports/lapack-reference/CONTROL +++ b/ports/lapack-reference/CONTROL @@ -1,6 +1,6 @@ Source: lapack-reference Version: 3.8.0 -Port-Version: 4 +Port-Version: 5 Description: LAPACK — Linear Algebra PACKage http://www.netlib.org/lapack/ Default-Features: blas-select Build-Depends: vcpkg-gfortran (windows) diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 11655858c9d384..deaa1c4959b3ed 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -138,6 +138,12 @@ if(VCPKG_TARGET_IS_WINDOWS) endif() if(NOT VCPKG_TARGET_IS_WINDOWS) - file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/lapack) - file(COPY ${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/lapack) + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) + else() + set(BLA_STATIC OFF) + endif() + set(BLA_VENDOR Generic) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) + file(COPY "${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/lapack") endif() diff --git a/ports/lapack-reference/vcpkg-cmake-wrapper.cmake b/ports/lapack-reference/vcpkg-cmake-wrapper.cmake index b3a7128fff0150..d945ec8d9e6b29 100644 --- a/ports/lapack-reference/vcpkg-cmake-wrapper.cmake +++ b/ports/lapack-reference/vcpkg-cmake-wrapper.cmake @@ -6,6 +6,8 @@ list(REMOVE_ITEM ARGS "NO_MODULE") list(REMOVE_ITEM ARGS "CONFIG") list(REMOVE_ITEM ARGS "MODULE") +set(BLA_VENDOR @BLA_VENDOR@) +set(BLA_STATIC @BLA_STATIC@) _find_package(${ARGS}) set(CMAKE_MODULE_PATH ${LAPACK_PREV_MODULE_PATH}) diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index a9b34d2279985f..6610dc604d04fd 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -1,14 +1,14 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -set(BLA_VENDOR Generic) -configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) - if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") set(BLA_STATIC ON) else() set(BLA_STATIC OFF) endif() - +set(BLA_VENDOR Generic) +if(VCPKG_TARGET_IS_WINDOWS) # The other wrapper is in lapack-reference + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) +endif() # Make sure LAPACK can be found vcpkg_configure_cmake(SOURCE_PATH ${CURRENT_PORT_DIR} OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" From 995f5b2cb172bc82f7540f1c025e5330b2c2fe91 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 19 Jan 2021 13:39:10 +0100 Subject: [PATCH 004/141] add version info --- versions/b-/blas.json | 5 +++++ versions/baseline.json | 6 +++--- versions/l-/lapack-reference.json | 5 +++++ versions/l-/lapack.json | 5 +++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/versions/b-/blas.json b/versions/b-/blas.json index 7fb01927b6b3e0..e766feae419fc8 100644 --- a/versions/b-/blas.json +++ b/versions/b-/blas.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "e9b2b37537892de237c078a3d12963654c7dbbe1", + "version-string": "1", + "port-version": 1 + }, { "git-tree": "2877c1693c63195d4edacfb42156c9d8874ad046", "version-string": "1", diff --git a/versions/baseline.json b/versions/baseline.json index f45c801d233d49..0cbeb92b6b2047 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -350,7 +350,7 @@ }, "blas": { "baseline": "1", - "port-version": 0 + "port-version": 1 }, "blaze": { "baseline": "3.8", @@ -2762,11 +2762,11 @@ }, "lapack": { "baseline": "3", - "port-version": 1 + "port-version": 2 }, "lapack-reference": { "baseline": "3.8.0", - "port-version": 4 + "port-version": 5 }, "lastools": { "baseline": "2020-05-09", diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index 0fd9ba4d7e79f5..1f5cca68611a6b 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "b517efd51168209fcdc218bd43bb487656fb0dba", + "version-string": "3.8.0", + "port-version": 5 + }, { "git-tree": "34971ac86a76f6bffefe5962980c3991abf87a58", "version-string": "3.8.0", diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index 5d618ffb530d51..c5c7d817e20aaa 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "459d9d4feb9b3dd3820651e696a38f7bd278e2ea", + "version-string": "3", + "port-version": 2 + }, { "git-tree": "e3e10603a14f3b981ce689ba768d42a1a2ec07d4", "version-string": "3", From b17956094f921110efc147b8f5c3ab9c8aad93b2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 19 Mar 2022 23:05:40 +0100 Subject: [PATCH 005/141] make 7zip and llvm tool ports. --- ports/vcpkg-tool-7zip/portfile.cmake | 47 ++++++++++++++ ports/vcpkg-tool-7zip/vcpkg.json | 14 ++++ ports/vcpkg-tool-llvm/portfile.cmake | 31 +++++++++ ports/vcpkg-tool-llvm/vcpkg.json | 15 +++++ .../cmake/vcpkg_find_acquire_program.cmake | 65 +++++++++++-------- 5 files changed, 144 insertions(+), 28 deletions(-) create mode 100644 ports/vcpkg-tool-7zip/portfile.cmake create mode 100644 ports/vcpkg-tool-7zip/vcpkg.json create mode 100644 ports/vcpkg-tool-llvm/portfile.cmake create mode 100644 ports/vcpkg-tool-llvm/vcpkg.json diff --git a/ports/vcpkg-tool-7zip/portfile.cmake b/ports/vcpkg-tool-7zip/portfile.cmake new file mode 100644 index 00000000000000..e52b3ee0708615 --- /dev/null +++ b/ports/vcpkg-tool-7zip/portfile.cmake @@ -0,0 +1,47 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +file(READ "${CURRENT_PORT_DIR}/vcpkg.json" manifest_contents) +string(JSON version GET "${manifest_contents}" "version-string") +string(REPLACE "." "" versionraw "${version}") +if(VCPKG_TARGET_IS_WINDOWS) + set(name_msg 7z) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(arch_suffix "") + set(hash 103210153e60b4234015796bb5f12483f99b5909df8c2fe5c9d3a823d4bdc721602a5261ad794e5280ff9f0d5f79add4e2a732dfb087fe8b4844d789acb8ea42) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(arch_suffix "-x64") + set(hash d55b44f1255d1b0e629719383a600a7e83dc6378d470096337b886ce24684d26bcc2b04f9cea39ad888179edce23ad2bd0e8e1863ddc40106c176adece8c012d) + endif() + set(name_folder "${name_msg}${versionraw}${arch_suffix}") + set(name_msi "${name_folder}.msi") + set(url "https://www.7-zip.org/a/${name_msi}") + + vcpkg_download_distfile(archive_path + URLS "${url}" + SHA512 "${hash}" + FILENAME "${name_msi}" + ) + + set(output_path "${CURRENT_PACKAGES_DIR}/manual-tools") # vcpkg.cmake adds everything in /tools to CMAKE_PROGRAM_PATH. That is not desired for Python2 + file(MAKE_DIRECTORY "${output_path}") + cmake_path(NATIVE_PATH archive_path archive_path_native) # lessmsi is a bit picky about path formats. + message(STATUS "Extracting ${name_msg} ...") + vcpkg_execute_in_download_mode( + COMMAND "${CURRENT_HOST_INSTALLED_DIR}/tools/vcpkg-tool-lessmsi/lessmsi.exe" x "${archive_path_native}" # Using output_path here does not work in bash + WORKING_DIRECTORY "${output_path}" + OUTPUT_FILE "${CURRENT_BUILDTREES_DIR}/lessmsi-${TARGET_TRIPLET}-out.log" + ERROR_FILE "${CURRENT_BUILDTREES_DIR}/lessmsi-${TARGET_TRIPLET}-err.log" + RESULT_VARIABLE error_code + ) + if(error_code) + message(FATAL_ERROR "Couldn't extract ${name_msg} with lessmsi!") + endif() + message(STATUS "Extracting ${name_msg} ... finished!") + file(RENAME "${output_path}/7z2107-x64/SourceDir/Files/7-Zip" "${output_path}/${PORT}/") + + set(details "set(program_version \"${program_version}\")\n") + string(APPEND details "set(paths_to_search \"\${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}\")\n") + file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/details.cmake" "${details}") +endif() + + diff --git a/ports/vcpkg-tool-7zip/vcpkg.json b/ports/vcpkg-tool-7zip/vcpkg.json new file mode 100644 index 00000000000000..7461b10b5fd598 --- /dev/null +++ b/ports/vcpkg-tool-7zip/vcpkg.json @@ -0,0 +1,14 @@ +{ + "name": "vcpkg-tool-7zip", + "version-string": "21.07", + "description": "7-Zip is a file archiver with a high compression ratio.", + "homepage": "https://www.7-zip.org/", + "license": null, + "supports": "native & windows & (x64 | x86)", + "dependencies" : [ + { + "name": "vcpkg-tool-lessmsi", + "host": true + } + ] +} diff --git a/ports/vcpkg-tool-llvm/portfile.cmake b/ports/vcpkg-tool-llvm/portfile.cmake new file mode 100644 index 00000000000000..5ee1ba9fcbd6fe --- /dev/null +++ b/ports/vcpkg-tool-llvm/portfile.cmake @@ -0,0 +1,31 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +file(READ "${CURRENT_PORT_DIR}/vcpkg.json" manifest_contents) +string(JSON version GET "${manifest_contents}" version) + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(name LLVM-${version}-win32.exe) + set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/${name}") + set(hash 6df7b992d4c382c3e1c71ff30e43b9fa0311c33adfebc9feaa4ea7e2f50fdb836b04dbad529aac1a6f7bf0135b98ecf3291d0386152afbcaf5ac7cb4592a94fa) +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(name LLVM-${version}-win64.exe) + set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/${name}") + set(hash 56e8871898fc2d62383b76b75ce7852a0179d70a1d327e95e73a115f1e09db5ceec1ae950279ddb0779de417eca9cdf7517d9c6a5498c7c17de6550aef16073d) +endif() +vcpkg_download_distfile(archive_path + URLS "${url}" + FILENAME "${name}" + SHA512 "${hash}" +) + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") +vcpkg_find_acquire_program(7Z) +vcpkg_execute_in_download_mode( + COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" "-y" "-bso0" "-bsp0" + WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" + ) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/$PLUGINSDIR") + +set(details "set(program_version \"${program_version}\")\n") +string(APPEND details "set(paths_to_search \"\${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/bin\")\n") +file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/details.cmake" "${details}") \ No newline at end of file diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json new file mode 100644 index 00000000000000..41856ce96181dc --- /dev/null +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -0,0 +1,15 @@ +{ + "name": "vcpkg-tool-llvm", + "version": "13.0.1", + "description": "The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Note: the repository does not accept github pull requests at this moment. Please submit your patches at http://reviews.llvm.org. ", + "homepage": "https://github.com/llvm/llvm-project", + "license": null, + "supports": "windows & (x64 | x86)", + "dependencies" : +[ +{ + "name": "vcpkg-tool-7zip", + "host": true +} +] +} diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index c85932dc7c92e0..eea1e36cca1db4 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -313,10 +313,15 @@ function(vcpkg_find_acquire_program program) set(download_sha512 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) elseif(program STREQUAL "7Z") set(program_name 7z) - set(paths_to_search "${DOWNLOADS}/tools/7z/Files/7-Zip") - set(download_urls "https://7-zip.org/a/7z1900.msi") - set(download_filename "7z1900.msi") - set(download_sha512 f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) + set(version 21.07) + if(EXISTS "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-7zip/details.cmake") + include("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-7zip/details.cmake") + else() + set(paths_to_search "${DOWNLOADS}/tools/7z/Files/7-Zip") + set(download_urls "https://www.7-zip.org/a/7z2107.msi") + set(download_filename "7z2107.msi") + set(download_sha512 103210153e60b4234015796bb5f12483f99b5909df8c2fe5c9d3a823d4bdc721602a5261ad794e5280ff9f0d5f79add4e2a732dfb087fe8b4844d789acb8ea42) + endif() elseif(program STREQUAL "NINJA") set(program_name ninja) set(program_version 1.10.2) @@ -403,32 +408,36 @@ function(vcpkg_find_acquire_program program) endif() elseif(program STREQUAL "CLANG") set(program_name clang) - set(tool_subdirectory "clang-12.0.0") - set(program_version 12.0.0) - if(CMAKE_HOST_WIN32) - set(paths_to_search - # Support LLVM in Visual Studio 2019 - "$ENV{LLVMInstallDir}/x64/bin" - "$ENV{LLVMInstallDir}/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" - "${DOWNLOADS}/tools/${tool_subdirectory}-windows/bin" - "${DOWNLOADS}/tools/clang/${tool_subdirectory}/bin") + set(tool_subdirectory "clang-13.0.1") + set(program_version 13.0.1) + if(EXISTS "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-llvm/details.cmake") + include("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-llvm/details.cmake") + else() + if(CMAKE_HOST_WIN32) + set(paths_to_search + # Support LLVM in Visual Studio 2019 + "$ENV{LLVMInstallDir}/x64/bin" + "$ENV{LLVMInstallDir}/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" + "${DOWNLOADS}/tools/${tool_subdirectory}-windows/bin" + "${DOWNLOADS}/tools/clang/${tool_subdirectory}/bin") - if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) - set(host_arch "$ENV{PROCESSOR_ARCHITEW6432}") - else() - set(host_arch "$ENV{PROCESSOR_ARCHITECTURE}") - endif() + if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) + set(host_arch "$ENV{PROCESSOR_ARCHITEW6432}") + else() + set(host_arch "$ENV{PROCESSOR_ARCHITECTURE}") + endif() - if(host_arch MATCHES "64") - set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") - set(download_filename "LLVM-${program_version}-win64.7z.exe") - set(download_sha512 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) - else() - set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win32.exe") - set(download_filename "LLVM-${program_version}-win32.7z.exe") - set(download_sha512 92fa5252fd08c1414ee6d71e2544cd2c44872124c47225f8d98b3af711d20e699f2888bc30642dfd00e005013da1607a593674fb4878951cc434694f9a119199) + if(host_arch MATCHES "64") + set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") + set(download_filename "LLVM-${program_version}-win64.7z.exe") + set(download_sha512 56e8871898fc2d62383b76b75ce7852a0179d70a1d327e95e73a115f1e09db5ceec1ae950279ddb0779de417eca9cdf7517d9c6a5498c7c17de6550aef16073d) + else() + set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win32.exe") + set(download_filename "LLVM-${program_version}-win32.7z.exe") + set(download_sha512 6df7b992d4c382c3e1c71ff30e43b9fa0311c33adfebc9feaa4ea7e2f50fdb836b04dbad529aac1a6f7bf0135b98ecf3291d0386152afbcaf5ac7cb4592a94fa) + endif() endif() endif() set(brew_package_name "llvm") From 19d4fe14ec5a9912a94f383ffee01ccd2da3387f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 19 Mar 2022 23:06:10 +0100 Subject: [PATCH 006/141] manifest format. --- ports/vcpkg-tool-7zip/vcpkg.json | 10 +++++----- ports/vcpkg-tool-llvm/vcpkg.json | 13 ++++++------- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/ports/vcpkg-tool-7zip/vcpkg.json b/ports/vcpkg-tool-7zip/vcpkg.json index 7461b10b5fd598..a264ffbc293bda 100644 --- a/ports/vcpkg-tool-7zip/vcpkg.json +++ b/ports/vcpkg-tool-7zip/vcpkg.json @@ -5,10 +5,10 @@ "homepage": "https://www.7-zip.org/", "license": null, "supports": "native & windows & (x64 | x86)", - "dependencies" : [ - { - "name": "vcpkg-tool-lessmsi", - "host": true - } + "dependencies": [ + { + "name": "vcpkg-tool-lessmsi", + "host": true + } ] } diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json index 41856ce96181dc..a38d2640dbfeeb 100644 --- a/ports/vcpkg-tool-llvm/vcpkg.json +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -5,11 +5,10 @@ "homepage": "https://github.com/llvm/llvm-project", "license": null, "supports": "windows & (x64 | x86)", - "dependencies" : -[ -{ - "name": "vcpkg-tool-7zip", - "host": true -} -] + "dependencies": [ + { + "name": "vcpkg-tool-7zip", + "host": true + } + ] } From c0f033befedc7a52b04f292fc2b8932a5170e81d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 19 Mar 2022 23:06:39 +0100 Subject: [PATCH 007/141] version stuff --- versions/baseline.json | 8 ++++++++ versions/v-/vcpkg-tool-7zip.json | 9 +++++++++ versions/v-/vcpkg-tool-llvm.json | 9 +++++++++ 3 files changed, 26 insertions(+) create mode 100644 versions/v-/vcpkg-tool-7zip.json create mode 100644 versions/v-/vcpkg-tool-llvm.json diff --git a/versions/baseline.json b/versions/baseline.json index 8c6e5c62c010c7..dd51695a5c5273 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -7272,10 +7272,18 @@ "baseline": "2021-10-23", "port-version": 0 }, + "vcpkg-tool-7zip": { + "baseline": "21.07", + "port-version": 0 + }, "vcpkg-tool-lessmsi": { "baseline": "1.10.0", "port-version": 0 }, + "vcpkg-tool-llvm": { + "baseline": "13.0.1", + "port-version": 0 + }, "vcpkg-tool-meson": { "baseline": "0.60.2", "port-version": 2 diff --git a/versions/v-/vcpkg-tool-7zip.json b/versions/v-/vcpkg-tool-7zip.json new file mode 100644 index 00000000000000..ababbffc81c2ef --- /dev/null +++ b/versions/v-/vcpkg-tool-7zip.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "4f835111b322eb0d5598e14831f46be49b4e444a", + "version-string": "21.07", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-tool-llvm.json b/versions/v-/vcpkg-tool-llvm.json new file mode 100644 index 00000000000000..1e3843f4b96a8b --- /dev/null +++ b/versions/v-/vcpkg-tool-llvm.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "33809fddf62b7af8f188a82ad8a2121d51207757", + "version": "13.0.1", + "port-version": 0 + } + ] +} From 160fa4170f56bff8864c6d3f00efd426a06d0faa Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 24 Mar 2022 20:35:04 +0100 Subject: [PATCH 008/141] Apply suggestions from code review --- ports/vcpkg-tool-7zip/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vcpkg-tool-7zip/portfile.cmake b/ports/vcpkg-tool-7zip/portfile.cmake index e52b3ee0708615..a4234fcd639d7b 100644 --- a/ports/vcpkg-tool-7zip/portfile.cmake +++ b/ports/vcpkg-tool-7zip/portfile.cmake @@ -37,7 +37,7 @@ if(VCPKG_TARGET_IS_WINDOWS) message(FATAL_ERROR "Couldn't extract ${name_msg} with lessmsi!") endif() message(STATUS "Extracting ${name_msg} ... finished!") - file(RENAME "${output_path}/7z2107-x64/SourceDir/Files/7-Zip" "${output_path}/${PORT}/") + file(RENAME "${output_path}/${name_folder}/SourceDir/Files/7-Zip" "${output_path}/${PORT}/") set(details "set(program_version \"${program_version}\")\n") string(APPEND details "set(paths_to_search \"\${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}\")\n") From e7932ef14c399ee1ee4c8d72d2cb128ec564266c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 24 Mar 2022 20:35:32 +0100 Subject: [PATCH 009/141] version stuff --- versions/v-/vcpkg-tool-7zip.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-tool-7zip.json b/versions/v-/vcpkg-tool-7zip.json index ababbffc81c2ef..4954849ac3d750 100644 --- a/versions/v-/vcpkg-tool-7zip.json +++ b/versions/v-/vcpkg-tool-7zip.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "4f835111b322eb0d5598e14831f46be49b4e444a", + "git-tree": "6e1fbe6afd45c46403ba4fd80c6b4f23589b481f", "version-string": "21.07", "port-version": 0 } From 7febb6b0ef964eb349f8a641924ae61e526bba92 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 31 Mar 2022 22:18:03 +0200 Subject: [PATCH 010/141] [vcpkg-tool-ninja] add ninja tool as a port --- ports/vcpkg-tool-ninja/PR2056.diff | 1062 +++++++++++++++++ ports/vcpkg-tool-ninja/portfile.cmake | 81 ++ .../vcpkg-tool-ninja/vcpkg-port-config.cmake | 1 + ports/vcpkg-tool-ninja/vcpkg.json | 8 + 4 files changed, 1152 insertions(+) create mode 100644 ports/vcpkg-tool-ninja/PR2056.diff create mode 100644 ports/vcpkg-tool-ninja/portfile.cmake create mode 100644 ports/vcpkg-tool-ninja/vcpkg-port-config.cmake create mode 100644 ports/vcpkg-tool-ninja/vcpkg.json diff --git a/ports/vcpkg-tool-ninja/PR2056.diff b/ports/vcpkg-tool-ninja/PR2056.diff new file mode 100644 index 00000000000000..110cfa0e43d4ba --- /dev/null +++ b/ports/vcpkg-tool-ninja/PR2056.diff @@ -0,0 +1,1062 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 57ae548f5b..3fdde943cc 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -17,10 +17,16 @@ endif() + + # --- compiler flags + if(MSVC) ++ option(BUILD_UNICODE "Build with Unicode support. This enables long path support on windows." ON) ++ + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + string(REPLACE "/GR" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) + add_compile_options(/W4 /wd4100 /wd4267 /wd4706 /wd4702 /wd4244 /GR- /Zc:__cplusplus) + add_compile_definitions(_CRT_SECURE_NO_WARNINGS) ++ ++ if(BUILD_UNICODE) ++ add_compile_definitions(UNICODE _UNICODE) ++ endif() + else() + include(CheckCXXCompilerFlag) + check_cxx_compiler_flag(-Wno-deprecated flag_no_deprecated) +diff --git a/src/build_log.cc b/src/build_log.cc +index 4dcd6cee53..b069bfaa5a 100644 +--- a/src/build_log.cc ++++ b/src/build_log.cc +@@ -186,7 +186,7 @@ bool BuildLog::OpenForWriteIfNeeded() { + if (log_file_ || log_file_path_.empty()) { + return true; + } +- log_file_ = fopen(log_file_path_.c_str(), "ab"); ++ log_file_ = fopen(ToPathWidth(log_file_path_).c_str(), "ab"); + if (!log_file_) { + return false; + } +@@ -260,7 +260,7 @@ struct LineReader { + + LoadStatus BuildLog::Load(const string& path, string* err) { + METRIC_RECORD(".ninja_log load"); +- FILE* file = fopen(path.c_str(), "r"); ++ FILE* file = fopen(ToPathWidth(path).c_str(), "r"); + if (!file) { + if (errno == ENOENT) + return LOAD_NOT_FOUND; +@@ -283,7 +283,7 @@ LoadStatus BuildLog::Load(const string& path, string* err) { + *err = ("build log version invalid, perhaps due to being too old; " + "starting over"); + fclose(file); +- unlink(path.c_str()); ++ unlink(ToPathWidth(path).c_str()); + // Don't report this as a failure. An empty build log will cause + // us to rebuild the outputs anyway. + return LOAD_SUCCESS; +@@ -393,7 +393,7 @@ bool BuildLog::Recompact(const string& path, const BuildLogUser& user, + + Close(); + string temp_path = path + ".recompact"; +- FILE* f = fopen(temp_path.c_str(), "wb"); ++ FILE* f = fopen(ToPathWidth(temp_path).c_str(), "wb"); + if (!f) { + *err = strerror(errno); + return false; +@@ -423,7 +423,7 @@ bool BuildLog::Recompact(const string& path, const BuildLogUser& user, + entries_.erase(dead_outputs[i]); + + fclose(f); +- if (unlink(path.c_str()) < 0) { ++ if (unlink(ToPathWidth(path).c_str()) < 0) { + *err = strerror(errno); + return false; + } +@@ -444,7 +444,7 @@ bool BuildLog::Restat(const StringPiece path, + + Close(); + std::string temp_path = path.AsString() + ".restat"; +- FILE* f = fopen(temp_path.c_str(), "wb"); ++ FILE* f = fopen(ToPathWidth(temp_path).c_str(), "wb"); + if (!f) { + *err = strerror(errno); + return false; +@@ -480,7 +480,7 @@ bool BuildLog::Restat(const StringPiece path, + } + + fclose(f); +- if (unlink(path.str_) < 0) { ++ if (unlink(ToPathWidth(path.str_).c_str()) < 0) { + *err = strerror(errno); + return false; + } +diff --git a/src/build_log_perftest.cc b/src/build_log_perftest.cc +index 5a936198fb..2547cabac1 100644 +--- a/src/build_log_perftest.cc ++++ b/src/build_log_perftest.cc +@@ -144,7 +144,7 @@ int main() { + printf("min %dms max %dms avg %.1fms\n", + min, max, total / times.size()); + +- unlink(kTestFilename); ++ unlink(ToPathWidth(kTestFilename).c_str()); + + return 0; + } +diff --git a/src/build_log_test.cc b/src/build_log_test.cc +index 37182994d2..010ea3921a 100644 +--- a/src/build_log_test.cc ++++ b/src/build_log_test.cc +@@ -31,15 +31,15 @@ using namespace std; + + namespace { + +-const char kTestFilename[] = "BuildLogTest-tempfile"; ++const file_string kTestFilename(TEXT("BuildLogTest-tempfile")); + + struct BuildLogTest : public StateTestWithBuiltinRules, public BuildLogUser { + virtual void SetUp() { + // In case a crashing test left a stale file behind. +- unlink(kTestFilename); ++ unlink(kTestFilename.c_str()); + } + virtual void TearDown() { +- unlink(kTestFilename); ++ unlink(kTestFilename.c_str()); + } + virtual bool IsPathDead(StringPiece s) const { return false; } + }; +@@ -135,7 +135,7 @@ TEST_F(BuildLogTest, Truncate) { + } + + struct stat statbuf; +- ASSERT_EQ(0, stat(kTestFilename, &statbuf)); ++ ASSERT_EQ(0, stat(NarrowPath(kTestFilename).c_str(), &statbuf)); + ASSERT_GT(statbuf.st_size, 0); + + // For all possible truncations of the input file, assert that we don't +@@ -256,12 +256,13 @@ TEST_F(BuildLogTest, Restat) { + TestDiskInterface testDiskInterface; + char out2[] = { 'o', 'u', 't', '2', 0 }; + char* filter2[] = { out2 }; +- EXPECT_TRUE(log.Restat(kTestFilename, testDiskInterface, 1, filter2, &err)); ++ EXPECT_TRUE(log.Restat(NarrowPath(kTestFilename), testDiskInterface, 1, filter2, &err)); + ASSERT_EQ("", err); + e = log.LookupByOutput("out"); + ASSERT_EQ(3, e->mtime); // unchanged, since the filter doesn't match + +- EXPECT_TRUE(log.Restat(kTestFilename, testDiskInterface, 0, NULL, &err)); ++ EXPECT_TRUE( ++ log.Restat(NarrowPath(kTestFilename), testDiskInterface, 0, NULL, &err)); + ASSERT_EQ("", err); + e = log.LookupByOutput("out"); + ASSERT_EQ(4, e->mtime); +diff --git a/src/clean_test.cc b/src/clean_test.cc +index e99909c0d0..e1de421a6b 100644 +--- a/src/clean_test.cc ++++ b/src/clean_test.cc +@@ -469,11 +469,11 @@ TEST_F(CleanTest, CleanDepFileAndRspFileWithSpaces) { + struct CleanDeadTest : public CleanTest, public BuildLogUser{ + virtual void SetUp() { + // In case a crashing test left a stale file behind. +- unlink(kTestFilename); ++ unlink(ToPathWidth(kTestFilename).c_str()); + CleanTest::SetUp(); + } + virtual void TearDown() { +- unlink(kTestFilename); ++ unlink(ToPathWidth(kTestFilename).c_str()); + } + virtual bool IsPathDead(StringPiece) const { return false; } + }; +diff --git a/src/deps_log.cc b/src/deps_log.cc +index 7e48b38513..e194c42e12 100644 +--- a/src/deps_log.cc ++++ b/src/deps_log.cc +@@ -152,7 +152,7 @@ void DepsLog::Close() { + LoadStatus DepsLog::Load(const string& path, State* state, string* err) { + METRIC_RECORD(".ninja_deps load"); + char buf[kMaxRecordSize + 1]; +- FILE* f = fopen(path.c_str(), "rb"); ++ FILE* f = fopen(ToPathWidth(path).c_str(), "rb"); + if (!f) { + if (errno == ENOENT) + return LOAD_NOT_FOUND; +@@ -175,7 +175,7 @@ LoadStatus DepsLog::Load(const string& path, State* state, string* err) { + else + *err = "bad deps log signature or version; starting over"; + fclose(f); +- unlink(path.c_str()); ++ unlink(ToPathWidth(path).c_str()); + // Don't report this as a failure. An empty deps log will cause + // us to rebuild the outputs anyway. + return LOAD_SUCCESS; +@@ -316,7 +316,7 @@ bool DepsLog::Recompact(const string& path, string* err) { + + // OpenForWrite() opens for append. Make sure it's not appending to a + // left-over file from a previous recompaction attempt that crashed somehow. +- unlink(temp_path.c_str()); ++ unlink(ToPathWidth(temp_path).c_str()); + + DepsLog new_log; + if (!new_log.OpenForWrite(temp_path, err)) +@@ -348,7 +348,7 @@ bool DepsLog::Recompact(const string& path, string* err) { + deps_.swap(new_log.deps_); + nodes_.swap(new_log.nodes_); + +- if (unlink(path.c_str()) < 0) { ++ if (unlink(ToPathWidth(path).c_str()) < 0) { + *err = strerror(errno); + return false; + } +@@ -420,7 +420,7 @@ bool DepsLog::OpenForWriteIfNeeded() { + if (file_path_.empty()) { + return true; + } +- file_ = fopen(file_path_.c_str(), "ab"); ++ file_ = fopen(ToPathWidth(file_path_).c_str(), "ab"); + if (!file_) { + return false; + } +diff --git a/src/deps_log_test.cc b/src/deps_log_test.cc +index 13fcc788b6..e8d9ca2be9 100644 +--- a/src/deps_log_test.cc ++++ b/src/deps_log_test.cc +@@ -32,10 +32,10 @@ const char kTestFilename[] = "DepsLogTest-tempfile"; + struct DepsLogTest : public testing::Test { + virtual void SetUp() { + // In case a crashing test left a stale file behind. +- unlink(kTestFilename); ++ unlink(ToPathWidth(kTestFilename).c_str()); + } + virtual void TearDown() { +- unlink(kTestFilename); ++ unlink(ToPathWidth(kTestFilename).c_str()); + } + }; + +@@ -335,7 +335,7 @@ TEST_F(DepsLogTest, InvalidHeader) { + }; + for (size_t i = 0; i < sizeof(kInvalidHeaders) / sizeof(kInvalidHeaders[0]); + ++i) { +- FILE* deps_log = fopen(kTestFilename, "wb"); ++ FILE* deps_log = fopen(ToPathWidth(kTestFilename).c_str(), "wb"); + ASSERT_TRUE(deps_log != NULL); + ASSERT_EQ( + strlen(kInvalidHeaders[i]), +diff --git a/src/disk_interface.cc b/src/disk_interface.cc +index a37c5703ba..4c87b19ea5 100644 +--- a/src/disk_interface.cc ++++ b/src/disk_interface.cc +@@ -56,7 +56,7 @@ string DirName(const string& path) { + + int MakeDir(const string& path) { + #ifdef _WIN32 +- return _mkdir(path.c_str()); ++ return mkdir(ToPathWidth(path).c_str()); + #else + return mkdir(path.c_str(), 0777); + #endif +@@ -75,7 +75,7 @@ TimeStamp TimeStampFromFileTime(const FILETIME& filetime) { + + TimeStamp StatSingleFile(const string& path, string* err) { + WIN32_FILE_ATTRIBUTE_DATA attrs; +- if (!GetFileAttributesExA(path.c_str(), GetFileExInfoStandard, &attrs)) { ++ if (!GetFileAttributesEx(ToPathWidth(path).c_str(), GetFileExInfoStandard, &attrs)) { + DWORD win_err = GetLastError(); + if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) + return 0; +@@ -104,28 +104,28 @@ bool StatAllFilesInDir(const string& dir, map* stamps, + static_cast(1); + FINDEX_INFO_LEVELS level = + can_use_basic_info ? kFindExInfoBasic : FindExInfoStandard; +- WIN32_FIND_DATAA ffd; +- HANDLE find_handle = FindFirstFileExA((dir + "\\*").c_str(), level, &ffd, ++ WIN32_FIND_DATA ffd; ++ HANDLE find_handle = FindFirstFileEx(ToPathWidth((dir + "\\*")).c_str(), level, &ffd, + FindExSearchNameMatch, NULL, 0); + + if (find_handle == INVALID_HANDLE_VALUE) { + DWORD win_err = GetLastError(); + if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) + return true; +- *err = "FindFirstFileExA(" + dir + "): " + GetLastErrorString(); ++ *err = "FindFirstFileExW(" + dir + "): " + GetLastErrorString(); + return false; + } + do { +- string lowername = ffd.cFileName; ++ file_string lowername = ffd.cFileName; + if (lowername == "..") { + // Seems to just copy the timestamp for ".." from ".", which is wrong. + // This is the case at least on NTFS under Windows 7. + continue; + } + transform(lowername.begin(), lowername.end(), lowername.begin(), ::tolower); +- stamps->insert(make_pair(lowername, ++ stamps->insert(make_pair(NarrowPath(lowername), + TimeStampFromFileTime(ffd.ftLastWriteTime))); +- } while (FindNextFileA(find_handle, &ffd)); ++ } while (FindNextFile(find_handle, &ffd)); + FindClose(find_handle); + return true; + } +@@ -162,9 +162,9 @@ TimeStamp RealDiskInterface::Stat(const string& path, string* err) const { + #ifdef _WIN32 + // MSDN: "Naming Files, Paths, and Namespaces" + // http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx +- if (!path.empty() && path[0] != '\\' && path.size() > MAX_PATH) { ++ if (!path.empty() && path[0] != '\\' && path.size() > PATH_MAX) { + ostringstream err_stream; +- err_stream << "Stat(" << path << "): Filename longer than " << MAX_PATH ++ err_stream << "Stat(" << path << "): Filename longer than " << PATH_MAX + << " characters"; + *err = err_stream.str(); + return -1; +@@ -220,7 +220,7 @@ TimeStamp RealDiskInterface::Stat(const string& path, string* err) const { + } + + bool RealDiskInterface::WriteFile(const string& path, const string& contents) { +- FILE* fp = fopen(path.c_str(), "w"); ++ FILE* fp = fopen(ToPathWidth(path).c_str(), "w"); + if (fp == NULL) { + Error("WriteFile(%s): Unable to create file. %s", + path.c_str(), strerror(errno)); +@@ -266,7 +266,8 @@ FileReader::Status RealDiskInterface::ReadFile(const string& path, + + int RealDiskInterface::RemoveFile(const string& path) { + #ifdef _WIN32 +- DWORD attributes = GetFileAttributes(path.c_str()); ++ const file_string pathT = ToPathWidth(path); ++ DWORD attributes = GetFileAttributes(pathT.c_str()); + if (attributes == INVALID_FILE_ATTRIBUTES) { + DWORD win_err = GetLastError(); + if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) { +@@ -277,7 +278,7 @@ int RealDiskInterface::RemoveFile(const string& path) { + // On Windows Ninja should behave the same: + // https://github.com/ninja-build/ninja/issues/1886 + // Skip error checking. If this fails, accept whatever happens below. +- SetFileAttributes(path.c_str(), attributes & ~FILE_ATTRIBUTE_READONLY); ++ SetFileAttributes(pathT.c_str(), attributes & ~FILE_ATTRIBUTE_READONLY); + } + if (attributes & FILE_ATTRIBUTE_DIRECTORY) { + // remove() deletes both files and directories. On Windows we have to +@@ -285,7 +286,7 @@ int RealDiskInterface::RemoveFile(const string& path) { + // used on a directory) + // This fixes the behavior of ninja -t clean in some cases + // https://github.com/ninja-build/ninja/issues/828 +- if (!RemoveDirectory(path.c_str())) { ++ if (!RemoveDirectory(pathT.c_str())) { + DWORD win_err = GetLastError(); + if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) { + return 1; +@@ -295,7 +296,7 @@ int RealDiskInterface::RemoveFile(const string& path) { + return -1; + } + } else { +- if (!DeleteFile(path.c_str())) { ++ if (!DeleteFile(pathT.c_str())) { + DWORD win_err = GetLastError(); + if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) { + return 1; +diff --git a/src/disk_interface_test.cc b/src/disk_interface_test.cc +index 5e952edde5..575204f1b8 100644 +--- a/src/disk_interface_test.cc ++++ b/src/disk_interface_test.cc +@@ -38,7 +38,7 @@ struct DiskInterfaceTest : public testing::Test { + } + + bool Touch(const char* path) { +- FILE *f = fopen(path, "w"); ++ FILE *f = fopen(ToPathWidth(path).c_str(), "w"); + if (!f) + return false; + return fclose(f) == 0; +@@ -178,7 +178,7 @@ TEST_F(DiskInterfaceTest, ReadFile) { + err.clear(); + + const char* kTestFile = "testfile"; +- FILE* f = fopen(kTestFile, "wb"); ++ FILE* f = fopen(ToPathWidth(kTestFile).c_str(), "wb"); + ASSERT_TRUE(f); + const char* kTestContent = "test content\nok"; + fprintf(f, "%s", kTestContent); +@@ -193,13 +193,13 @@ TEST_F(DiskInterfaceTest, ReadFile) { + TEST_F(DiskInterfaceTest, MakeDirs) { + string path = "path/with/double//slash/"; + EXPECT_TRUE(disk_.MakeDirs(path)); +- FILE* f = fopen((path + "a_file").c_str(), "w"); ++ FILE* f = fopen(ToPathWidth((path + "a_file")).c_str(), "w"); + EXPECT_TRUE(f); + EXPECT_EQ(0, fclose(f)); + #ifdef _WIN32 + string path2 = "another\\with\\back\\\\slashes\\"; + EXPECT_TRUE(disk_.MakeDirs(path2.c_str())); +- FILE* f2 = fopen((path2 + "a_file").c_str(), "w"); ++ FILE* f2 = fopen(ToPathWidth((path2 + "a_file")).c_str(), "w"); + EXPECT_TRUE(f2); + EXPECT_EQ(0, fclose(f2)); + #endif +diff --git a/src/file_path.h b/src/file_path.h +new file mode 100644 +index 0000000000..c11ab9d94d +--- /dev/null ++++ b/src/file_path.h +@@ -0,0 +1,123 @@ ++// Copyright 2021 Google Inc. All Rights Reserved. ++// ++// Licensed under the Apache License, Version 2.0 (the "License"); ++// you may not use this file except in compliance with the License. ++// You may obtain a copy of the License at ++// ++// http://www.apache.org/licenses/LICENSE-2.0 ++// ++// Unless required by applicable law or agreed to in writing, software ++// distributed under the License is distributed on an "AS IS" BASIS, ++// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. ++// See the License for the specific language governing permissions and ++// limitations under the License. ++ ++#ifndef NINJA_FILE_PATH_H_ ++#define NINJA_FILE_PATH_H_ ++ ++#include ++ ++#ifndef TEXT ++#ifdef UNICODE ++#define __TEXT(quote) L##quote ++#else /* UNICODE */ ++#define __TEXT(quote) quote ++#endif /* UNICODE */ ++#define TEXT(quote) __TEXT(quote) ++#endif ++ ++#ifndef _TCHAR_DEFINED ++#ifdef UNICODE ++typedef wchar_t TCHAR, *PTCHAR; ++#else ++typedef char TCHAR, *PTCHAR; ++#endif ++#define _TCHAR_DEFINED ++#endif /* !_TCHAR_DEFINED */ ++ ++#ifdef UNICODE ++typedef std::wstring file_string_t; ++#else ++typedef std::string file_string_t; ++#endif ++ ++inline std::string NarrowPath(const std::wstring& path) { ++ return std::string(path.begin(), path.end()); ++} ++ ++inline std::string NarrowPath(const std::string& path) { ++ return path; ++} ++ ++inline std::wstring WidenPath(const std::string& path) { ++ return std::wstring(path.begin(), path.end()); ++} ++ ++inline std::wstring WidenPath(const std::wstring& path) { ++ return path; ++} ++ ++#ifdef UNICODE ++inline std::wstring ToPathWidth(const std::string& path) { ++ return WidenPath(path); ++} ++ ++inline std::wstring ToPathWidth(const std::wstring& path) { ++ return path; ++} ++#else ++inline std::string ToPathWidth(const std::string& path) { ++ return path; ++} ++ ++inline std::string ToPathWidth(const std::wstring& path) { ++ return NarrowPath(path); ++} ++#endif ++ ++struct file_string : public file_string_t { ++ file_string() : file_string_t() {} ++ file_string(const std::string& path) : file_string_t(ToPathWidth(path)) {} ++ file_string(const std::wstring& path) : file_string_t(ToPathWidth(path)) {} ++ file_string(const char* path) : file_string_t(ToPathWidth(path)) {} ++ file_string(const wchar_t* path) : file_string_t(ToPathWidth(path)) {} ++ ++ operator const TCHAR*() const { return c_str(); } ++ ++#ifdef UNICODE ++ operator std::string() const { return NarrowPath(*this); } ++#endif ++ file_string operator+(const std::string& r) { ++ return this->append(ToPathWidth(r)); ++ } ++ ++ file_string operator+(const std::wstring& r) { ++ return this->append(ToPathWidth(r)); ++ } ++ ++ file_string operator+(const char* r) { ++ return this->append(ToPathWidth(r)); ++ } ++ ++ file_string operator+(const wchar_t* r) { ++ return this->append(ToPathWidth(r)); ++ } ++ ++ bool operator==(const std::string& r) { ++ return this->compare(ToPathWidth(r)) == 0; ++ } ++ ++ bool operator==(const std::wstring& r) { ++ return this->compare(ToPathWidth(r)) == 0; ++ } ++ ++ bool operator==(const char* r) { ++ return this->compare(ToPathWidth(r)) == 0; ++ } ++ ++ bool operator==(const wchar_t* r) { ++ return this->compare(ToPathWidth(r)) == 0; ++ } ++}; ++ ++#endif // NINJA_FILE_PATH_H_ +diff --git a/src/includes_normalize-win32.cc b/src/includes_normalize-win32.cc +index 081e364ac3..ba5031fed6 100644 +--- a/src/includes_normalize-win32.cc ++++ b/src/includes_normalize-win32.cc +@@ -28,12 +28,12 @@ using namespace std; + + namespace { + +-bool InternalGetFullPathName(const StringPiece& file_name, char* buffer, ++bool InternalGetFullPathName(const StringPiece& file_name, TCHAR* buffer, + size_t buffer_length, string *err) { +- DWORD result_size = GetFullPathNameA(file_name.AsString().c_str(), ++ DWORD result_size = GetFullPathName(ToPathWidth(file_name.AsString()).c_str(), + buffer_length, buffer, NULL); + if (result_size == 0) { +- *err = "GetFullPathNameA(" + file_name.AsString() + "): " + ++ *err = "GetFullPathName(" + file_name.AsString() + "): " + + GetLastErrorString(); + return false; + } else if (result_size > buffer_length) { +@@ -76,19 +76,19 @@ bool SameDrive(StringPiece a, StringPiece b, string* err) { + return true; + } + +- char a_absolute[_MAX_PATH]; +- char b_absolute[_MAX_PATH]; +- if (!InternalGetFullPathName(a, a_absolute, sizeof(a_absolute), err)) { ++ TCHAR a_absolute[PATH_MAX]; ++ TCHAR b_absolute[PATH_MAX]; ++ if (!InternalGetFullPathName(a, a_absolute, _countof(a_absolute), err)) { + return false; + } +- if (!InternalGetFullPathName(b, b_absolute, sizeof(b_absolute), err)) { ++ if (!InternalGetFullPathName(b, b_absolute, _countof(b_absolute), err)) { + return false; + } +- char a_drive[_MAX_DIR]; +- char b_drive[_MAX_DIR]; +- _splitpath(a_absolute, a_drive, NULL, NULL, NULL); +- _splitpath(b_absolute, b_drive, NULL, NULL, NULL); +- return _stricmp(a_drive, b_drive) == 0; ++ TCHAR a_drive[_MAX_DIR]; ++ TCHAR b_drive[_MAX_DIR]; ++ t_splitpath(a_absolute, a_drive, NULL, NULL, NULL); ++ t_splitpath(b_absolute, b_drive, NULL, NULL, NULL); ++ return t_stricmp(a_drive, b_drive) == 0; + } + + // Check path |s| is FullPath style returned by GetFullPathName. +@@ -146,14 +146,14 @@ string IncludesNormalize::AbsPath(StringPiece s, string* err) { + return result; + } + +- char result[_MAX_PATH]; +- if (!InternalGetFullPathName(s, result, sizeof(result), err)) { ++ TCHAR result[PATH_MAX]; ++ if (!InternalGetFullPathName(s, result, _countof(result), err)) { + return ""; + } +- for (char* c = result; *c; ++c) +- if (*c == '\\') +- *c = '/'; +- return result; ++ for (TCHAR* c = result; *c; ++c) ++ if (*c == TEXT('\\')) ++ *c = TEXT('/'); ++ return NarrowPath(result); + } + + string IncludesNormalize::Relativize( +@@ -183,9 +183,9 @@ string IncludesNormalize::Relativize( + + bool IncludesNormalize::Normalize(const string& input, + string* result, string* err) const { +- char copy[_MAX_PATH + 1]; ++ char copy[PATH_MAX + 1]; + size_t len = input.size(); +- if (len > _MAX_PATH) { ++ if (len > PATH_MAX) { + *err = "path too long"; + return false; + } +diff --git a/src/includes_normalize_test.cc b/src/includes_normalize_test.cc +index 9214f53495..d0e2efb03c 100644 +--- a/src/includes_normalize_test.cc ++++ b/src/includes_normalize_test.cc +@@ -27,9 +27,10 @@ using namespace std; + namespace { + + string GetCurDir() { +- char buf[_MAX_PATH]; +- _getcwd(buf, sizeof(buf)); +- vector parts = SplitStringPiece(buf, '\\'); ++ TCHAR buf[PATH_MAX]; ++ getcwd(buf, _countof(buf)); ++ string narrowPath = NarrowPath(buf); ++ vector parts = SplitStringPiece(narrowPath, '\\'); + return parts[parts.size() - 1].AsString(); + } + +@@ -106,42 +107,47 @@ TEST(IncludesNormalize, LongInvalidPath) { + "pdb (for example, mspdb110.dll) could not be found on your path. This " + "is usually a configuration error. Compilation will continue using /Z7 " + "instead of /Zi, but expect a similar error when you link your program."; ++ ++ string longInputString(kLongInputString); ++ while (longInputString.size() <= PATH_MAX) { ++ longInputString += kLongInputString; ++ } ++ + // Too long, won't be canonicalized. Ensure doesn't crash. + string result, err; + IncludesNormalize normalizer("."); +- EXPECT_FALSE( +- normalizer.Normalize(kLongInputString, &result, &err)); ++ EXPECT_FALSE(normalizer.Normalize(longInputString, &result, &err)); + EXPECT_EQ("path too long", err); + + + // Construct max size path having cwd prefix. + // kExactlyMaxPath = "$cwd\\a\\aaaa...aaaa\0"; +- char kExactlyMaxPath[_MAX_PATH + 1]; +- ASSERT_NE(_getcwd(kExactlyMaxPath, sizeof kExactlyMaxPath), NULL); ++ TCHAR kExactlyMaxPath[PATH_MAX + 1]; ++ ASSERT_NE(getcwd(kExactlyMaxPath, _countof(kExactlyMaxPath)), NULL); + +- int cwd_len = strlen(kExactlyMaxPath); +- ASSERT_LE(cwd_len + 3 + 1, _MAX_PATH) ++ int cwd_len = t_strlen(kExactlyMaxPath); ++ ASSERT_LE(cwd_len + 3 + 1, PATH_MAX) + kExactlyMaxPath[cwd_len] = '\\'; + kExactlyMaxPath[cwd_len + 1] = 'a'; + kExactlyMaxPath[cwd_len + 2] = '\\'; + + kExactlyMaxPath[cwd_len + 3] = 'a'; + +- for (int i = cwd_len + 4; i < _MAX_PATH; ++i) { +- if (i > cwd_len + 4 && i < _MAX_PATH - 1 && i % 10 == 0) ++ for (int i = cwd_len + 4; i < PATH_MAX; ++i) { ++ if (i > cwd_len + 4 && i < PATH_MAX - 1 && i % 10 == 0) + kExactlyMaxPath[i] = '\\'; + else + kExactlyMaxPath[i] = 'a'; + } + +- kExactlyMaxPath[_MAX_PATH] = '\0'; +- EXPECT_EQ(strlen(kExactlyMaxPath), _MAX_PATH); ++ kExactlyMaxPath[PATH_MAX] = '\0'; ++ EXPECT_EQ(t_strlen(kExactlyMaxPath), PATH_MAX); + +- string forward_slashes(kExactlyMaxPath); ++ file_string forward_slashes(kExactlyMaxPath); + replace(forward_slashes.begin(), forward_slashes.end(), '\\', '/'); +- // Make sure a path that's exactly _MAX_PATH long is canonicalized. +- EXPECT_EQ(forward_slashes.substr(cwd_len + 1), +- NormalizeAndCheckNoError(kExactlyMaxPath)); ++ // Make sure a path that's exactly PATH_MAX long is canonicalized. ++ EXPECT_EQ(NarrowPath(forward_slashes.substr(cwd_len + 1)), ++ NormalizeAndCheckNoError(NarrowPath(kExactlyMaxPath))); + } + + TEST(IncludesNormalize, ShortRelativeButTooLongAbsolutePath) { +@@ -153,17 +159,22 @@ TEST(IncludesNormalize, ShortRelativeButTooLongAbsolutePath) { + + // Construct max size path having cwd prefix. + // kExactlyMaxPath = "aaaa\\aaaa...aaaa\0"; +- char kExactlyMaxPath[_MAX_PATH + 1]; +- for (int i = 0; i < _MAX_PATH; ++i) { +- if (i < _MAX_PATH - 1 && i % 10 == 4) ++ char kExactlyMaxPath[PATH_MAX + 1]; ++ for (int i = 0; i < PATH_MAX; ++i) { ++ if (i < PATH_MAX - 1 && i % 10 == 4) + kExactlyMaxPath[i] = '\\'; + else + kExactlyMaxPath[i] = 'a'; + } +- kExactlyMaxPath[_MAX_PATH] = '\0'; +- EXPECT_EQ(strlen(kExactlyMaxPath), _MAX_PATH); ++ kExactlyMaxPath[PATH_MAX] = '\0'; ++ EXPECT_EQ(strlen(kExactlyMaxPath), PATH_MAX); + +- // Make sure a path that's exactly _MAX_PATH long fails with a proper error. ++ // Make sure a path that's exactly PATH_MAX long fails with a proper error. + EXPECT_FALSE(normalizer.Normalize(kExactlyMaxPath, &result, &err)); ++ ++#ifdef UNICODE ++ EXPECT_TRUE(err.find("path too long") != string::npos); ++#else + EXPECT_TRUE(err.find("GetFullPathName") != string::npos); ++#endif + } +diff --git a/src/manifest_parser_perftest.cc b/src/manifest_parser_perftest.cc +index 853d8e0d5d..98952632c9 100644 +--- a/src/manifest_parser_perftest.cc ++++ b/src/manifest_parser_perftest.cc +@@ -103,7 +103,7 @@ int main(int argc, char* argv[]) { + return 1; + } + +- if (chdir(kManifestDir) < 0) ++ if (chdir(ToPathWidth(kManifestDir).c_str()) < 0) + Fatal("chdir: %s", strerror(errno)); + + const int kNumRepetitions = 5; +diff --git a/src/minidump-win32.cc b/src/minidump-win32.cc +index 9aea7678b9..6c59088520 100644 +--- a/src/minidump-win32.cc ++++ b/src/minidump-win32.cc +@@ -62,7 +62,7 @@ void CreateWin32MiniDump(_EXCEPTION_POINTERS* pep) { + HANDLE hFile = CreateFileA(temp_file, GENERIC_READ | GENERIC_WRITE, 0, NULL, + CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); + if (hFile == NULL) { +- Error("failed to create minidump: CreateFileA(%s): %s", ++ Error("failed to create minidump: CreateFile(%s): %s", + temp_file, GetLastErrorString().c_str()); + return; + } +diff --git a/src/msvc_helper-win32.cc b/src/msvc_helper-win32.cc +index 1148ae52a5..be9db63653 100644 +--- a/src/msvc_helper-win32.cc ++++ b/src/msvc_helper-win32.cc +@@ -46,7 +46,7 @@ int CLWrapper::Run(const string& command, string* output) { + + // Must be inheritable so subprocesses can dup to children. + HANDLE nul = +- CreateFileA("NUL", GENERIC_READ, ++ CreateFile(TEXT("NUL"), GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + &security_attributes, OPEN_EXISTING, 0, NULL); + if (nul == INVALID_HANDLE_VALUE) +@@ -60,14 +60,14 @@ int CLWrapper::Run(const string& command, string* output) { + Win32Fatal("SetHandleInformation"); + + PROCESS_INFORMATION process_info = {}; +- STARTUPINFOA startup_info = {}; +- startup_info.cb = sizeof(STARTUPINFOA); ++ STARTUPINFO startup_info = {}; ++ startup_info.cb = sizeof(STARTUPINFO); + startup_info.hStdInput = nul; + startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE); + startup_info.hStdOutput = stdout_write; + startup_info.dwFlags |= STARTF_USESTDHANDLES; + +- if (!CreateProcessA(NULL, (char*)command.c_str(), NULL, NULL, ++ if (!CreateProcess(NULL, (TCHAR*)ToPathWidth(command).c_str(), NULL, NULL, + /* inherit handles */ TRUE, 0, + env_block_, NULL, + &startup_info, &process_info)) { +diff --git a/src/msvc_helper_main-win32.cc b/src/msvc_helper_main-win32.cc +index 7d593071f9..b295f34fa6 100644 +--- a/src/msvc_helper_main-win32.cc ++++ b/src/msvc_helper_main-win32.cc +@@ -50,9 +50,9 @@ void PushPathIntoEnvironment(const string& env_block) { + } + } + +-void WriteDepFileOrDie(const char* object_path, const CLParser& parse) { +- string depfile_path = string(object_path) + ".d"; +- FILE* depfile = fopen(depfile_path.c_str(), "w"); ++void WriteDepFileOrDie(const TCHAR* object_path, const CLParser& parse) { ++ file_string depfile_path = file_string(object_path) + TEXT(".d"); ++ FILE* depfile = fopen(ToPathWidth(depfile_path).c_str(), "w"); + if (!depfile) { + unlink(object_path); + Fatal("opening %s: %s", depfile_path.c_str(), +@@ -133,7 +133,7 @@ int MSVCHelperMain(int argc, char** argv) { + string err; + if (!parser.Parse(output, deps_prefix, &output, &err)) + Fatal("%s\n", err.c_str()); +- WriteDepFileOrDie(output_filename, parser); ++ WriteDepFileOrDie(ToPathWidth(output_filename).c_str(), parser); + } + + if (output.empty()) +diff --git a/src/ninja.cc b/src/ninja.cc +index 89580ae94f..a93fa06238 100644 +--- a/src/ninja.cc ++++ b/src/ninja.cc +@@ -871,11 +871,11 @@ int NinjaMain::ToolCompilationDatabase(const Options* options, int argc, + argc -= optind; + + bool first = true; +- vector cwd; +- char* success = NULL; ++ vector cwd; ++ TCHAR* success = NULL; + + do { +- cwd.resize(cwd.size() + 1024); ++ cwd.resize(cwd.size() + PATH_MAX); + errno = 0; + success = getcwd(&cwd[0], cwd.size()); + } while (!success && errno == ERANGE); +@@ -893,7 +893,7 @@ int NinjaMain::ToolCompilationDatabase(const Options* options, int argc, + if (!first) { + putchar(','); + } +- printCompdb(&cwd[0], *e, eval_mode); ++ printCompdb(NarrowPath(&cwd[0]).c_str(), *e, eval_mode); + first = false; + } else { + for (int i = 0; i != argc; ++i) { +@@ -901,7 +901,7 @@ int NinjaMain::ToolCompilationDatabase(const Options* options, int argc, + if (!first) { + putchar(','); + } +- printCompdb(&cwd[0], *e, eval_mode); ++ printCompdb(NarrowPath(&cwd[0]).c_str(), *e, eval_mode); + first = false; + } + } +@@ -1442,7 +1442,7 @@ NORETURN void real_main(int argc, char** argv) { + // can be piped into a file without this string showing up. + if (!options.tool && config.verbosity != BuildConfig::NO_STATUS_UPDATE) + status->Info("Entering directory `%s'", options.working_dir); +- if (chdir(options.working_dir) < 0) { ++ if (chdir(ToPathWidth(options.working_dir).c_str()) < 0) { + Fatal("chdir to '%s' - %s", options.working_dir, strerror(errno)); + } + } +diff --git a/src/subprocess-win32.cc b/src/subprocess-win32.cc +index ff3baaca7f..8f5faccdac 100644 +--- a/src/subprocess-win32.cc ++++ b/src/subprocess-win32.cc +@@ -39,11 +39,11 @@ Subprocess::~Subprocess() { + } + + HANDLE Subprocess::SetupPipe(HANDLE ioport) { +- char pipe_name[100]; +- snprintf(pipe_name, sizeof(pipe_name), +- "\\\\.\\pipe\\ninja_pid%lu_sp%p", GetCurrentProcessId(), this); ++ TCHAR pipe_name[100]; ++ t_snprintf(pipe_name, sizeof(pipe_name), ++ TEXT("\\\\.\\pipe\\ninja_pid%lu_sp%p"), GetCurrentProcessId(), this); + +- pipe_ = ::CreateNamedPipeA(pipe_name, ++ pipe_ = ::CreateNamedPipe(pipe_name, + PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED, + PIPE_TYPE_BYTE, + PIPE_UNLIMITED_INSTANCES, +@@ -62,7 +62,7 @@ HANDLE Subprocess::SetupPipe(HANDLE ioport) { + + // Get the write end of the pipe as a handle inheritable across processes. + HANDLE output_write_handle = +- CreateFileA(pipe_name, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); ++ CreateFile(pipe_name, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); + HANDLE output_write_child; + if (!DuplicateHandle(GetCurrentProcess(), output_write_handle, + GetCurrentProcess(), &output_write_child, +@@ -83,13 +83,13 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { + security_attributes.bInheritHandle = TRUE; + // Must be inheritable so subprocesses can dup to children. + HANDLE nul = +- CreateFileA("NUL", GENERIC_READ, ++ CreateFile(TEXT("NUL"), GENERIC_READ, + FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, + &security_attributes, OPEN_EXISTING, 0, NULL); + if (nul == INVALID_HANDLE_VALUE) + Fatal("couldn't open nul"); + +- STARTUPINFOA startup_info; ++ STARTUPINFO startup_info; + memset(&startup_info, 0, sizeof(startup_info)); + startup_info.cb = sizeof(STARTUPINFO); + if (!use_console_) { +@@ -109,7 +109,7 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { + + // Do not prepend 'cmd /c' on Windows, this breaks command + // lines greater than 8,191 chars. +- if (!CreateProcessA(NULL, (char*)command.c_str(), NULL, NULL, ++ if (!CreateProcess(NULL, (TCHAR*)ToPathWidth(command).c_str(), NULL, NULL, + /* inherit handles */ TRUE, process_flags, + NULL, NULL, + &startup_info, &process_info)) { +diff --git a/src/test.cc b/src/test.cc +index 11b1c9ebf0..ec3e522797 100644 +--- a/src/test.cc ++++ b/src/test.cc +@@ -56,7 +56,7 @@ char* mkdtemp(char* name_template) { + return NULL; + } + +- err = _mkdir(name_template); ++ err = mkdir(ToPathWidth(name_template).c_str()); + if (err < 0) { + perror("mkdir"); + return NULL; +@@ -68,8 +68,8 @@ char* mkdtemp(char* name_template) { + + string GetSystemTempDir() { + #ifdef _WIN32 +- char buf[1024]; +- if (!GetTempPath(sizeof(buf), buf)) ++ char buf[MAX_PATH + 1]; ++ if (!GetTempPathA(sizeof(buf), buf)) + return ""; + return buf; + #else +@@ -200,7 +200,7 @@ void ScopedTempDir::CreateAndEnter(const string& name) { + start_dir_ = GetSystemTempDir(); + if (start_dir_.empty()) + Fatal("couldn't get system temp dir"); +- if (chdir(start_dir_.c_str()) < 0) ++ if (chdir(ToPathWidth(start_dir_).c_str()) < 0) + Fatal("chdir: %s", strerror(errno)); + + // Create a temporary subdirectory of that. +@@ -213,7 +213,7 @@ void ScopedTempDir::CreateAndEnter(const string& name) { + temp_dir_name_ = tempname; + + // chdir into the new temporary directory. +- if (chdir(temp_dir_name_.c_str()) < 0) ++ if (chdir(ToPathWidth(temp_dir_name_).c_str()) < 0) + Fatal("chdir: %s", strerror(errno)); + } + +@@ -222,7 +222,7 @@ void ScopedTempDir::Cleanup() { + return; // Something went wrong earlier. + + // Move out of the directory we're about to clobber. +- if (chdir(start_dir_.c_str()) < 0) ++ if (chdir(ToPathWidth(start_dir_).c_str()) < 0) + Fatal("chdir: %s", strerror(errno)); + + #ifdef _WIN32 +diff --git a/src/util.cc b/src/util.cc +index 080883e066..c92dcfe3de 100644 +--- a/src/util.cc ++++ b/src/util.cc +@@ -140,7 +140,7 @@ void CanonicalizePath(char* path, size_t* len, uint64_t* slash_bits) { + return; + } + +- const int kMaxPathComponents = 60; ++ const int kMaxPathComponents = _MAX_DIR; + char* components[kMaxPathComponents]; + int component_count = 0; + +@@ -332,12 +332,12 @@ void GetWin32EscapedString(const string& input, string* result) { + result->push_back(kQuote); + } + +-int ReadFile(const string& path, string* contents, string* err) { ++int ReadFile(const std::string& path, string* contents, string* err) { + #ifdef _WIN32 + // This makes a ninja run on a set of 1500 manifest files about 4% faster + // than using the generic fopen code below. + err->clear(); +- HANDLE f = ::CreateFileA(path.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, ++ HANDLE f = ::CreateFile(ToPathWidth(path).c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, + OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); + if (f == INVALID_HANDLE_VALUE) { + err->assign(GetLastErrorString()); +diff --git a/src/util.h b/src/util.h +index 4a7fea2258..4d110b4a8e 100644 +--- a/src/util.h ++++ b/src/util.h +@@ -17,6 +17,7 @@ + + #ifdef _WIN32 + #include "win32port.h" ++#include + #else + #include + #endif +@@ -26,6 +27,8 @@ + #include + #include + ++#include "file_path.h" ++ + #ifdef _MSC_VER + #define NORETURN __declspec(noreturn) + #else +@@ -113,13 +116,50 @@ bool Truncate(const std::string& path, size_t size, std::string* err); + #ifdef _MSC_VER + #define snprintf _snprintf + #define fileno _fileno ++#define strtoull _strtoui64 ++ ++#ifdef UNICODE ++#define unlink _wunlink ++#define fopen(path, mode) _wfopen(path, TEXT(mode)) ++#define chdir _wchdir ++#define getcwd _wgetcwd ++#define mkdir _wmkdir ++ ++#define t_snprintf _snwprintf ++#define t_splitpath _wsplitpath ++#define t_stricmp _wcsicmp ++#define t_strlen wcslen ++ ++#define PATH_MAX 2048 ++#else // !UNICODE + #define unlink _unlink ++#define fopen(path, mode) fopen(path, TEXT(mode)) + #define chdir _chdir +-#define strtoull _strtoui64 + #define getcwd _getcwd ++#define mkdir _mkdir ++ ++#define t_snprintf snprintf ++#define t_splitpath _splitpath ++#define t_stricmp _stricmp ++#define t_strlen strlen ++ ++#define PATH_MAX _MAX_PATH ++#endif // !UNICODE ++#else // !_MSC_VER ++#define t_snprintf snprintf ++#define t_splitpath _splitpath ++#define t_stricmp _stricmp ++#define t_strlen strlen ++ ++#ifndef PATH_MAX + #define PATH_MAX _MAX_PATH + #endif + ++#ifndef _MAX_DIR ++#define _MAX_DIR 256 ++#endif ++#endif // !_MSC_VER ++ + #ifdef _WIN32 + /// Convert the value returned by GetLastError() into a string. + std::string GetLastErrorString(); +diff --git a/windows/ninja.manifest b/windows/ninja.manifest +index dab929e151..aaa0bd362e 100644 +--- a/windows/ninja.manifest ++++ b/windows/ninja.manifest +@@ -3,6 +3,7 @@ + + + UTF-8 ++ true + + + diff --git a/ports/vcpkg-tool-ninja/portfile.cmake b/ports/vcpkg-tool-ninja/portfile.cmake new file mode 100644 index 00000000000000..cc615bdbfd2c9c --- /dev/null +++ b/ports/vcpkg-tool-ninja/portfile.cmake @@ -0,0 +1,81 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +set(program NINJA) +set(program_version 1.10.2) +set(program_name "ninja") +set(search_names "ninja") +set(apt_package_name "ninja-build") +set(brew_package_name "ninja-build") +set(paths_to_search "${CURRENT_PACKAGES_DIR}/tools/ninja") +set(supported_on_unix ON) +set(version_command --version) +set(extra_search_args EXACT_VERSION_MATCH) + +if(NOT "${program}") + vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO ninja-build/ninja + REF 170c387a7461d476523ae29c115a58f16e4d3430 + SHA512 75c0f263ad325d14c99c9a1d85e571832407b481271a2733e78183a478f7ecd22d84451fc8d7ce16ab20d641ce040761d7ab266695d66bbac5b2b9a3a29aa521 + HEAD_REF master + PATCHES PR2056.diff # Long path support windows +) + # This copied from vcpkg_configure_cmake to find a generator which is not ninja! + set(generator_arch "") + if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + if("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v120" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64") + set(generator "Visual Studio 12 2013") + elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v140" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64") + set(generator "Visual Studio 14 2015") + elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v141") + set(generator "Visual Studio 15 2017") + elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v142") + set(generator "Visual Studio 16 2019") + elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v143") + set(generator "Visual Studio 17 2022") + endif() + + if("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x86") + set(generator_arch "Win32") + elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x64") + set(generator_arch "x64") + elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm") + set(generator_arch "ARM") + elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64") + set(generator_arch "ARM64") + endif() + if("${generator}" STREQUAL "" OR "${generator_arch}" STREQUAL "") + message(FATAL_ERROR + "Unable to determine appropriate generator for triplet ${TARGET_TRIPLET}: + platform toolset: ${VCPKG_PLATFORM_TOOLSET} + architecture : ${VCPKG_TARGET_ARCHITECTURE}") + endif() + vcpkg_list(APPEND cmake_options "-DBUILD_UNICODE:BOOL=ON") + else() + set(generator "Unix Makefiles") + endif() + if(NOT "${generator_arch}" STREQUAL "") + vcpkg_list(APPEND cmake_options "-A${generator_arch}") + endif() + + set(VCPKG_BUILD_TYPE release) #we only need release here! + vcpkg_configure_cmake( + DISABLE_PARALLEL_CONFIGURE + SOURCE_PATH "${SOURCE_PATH}" + GENERATOR "${generator}" + OPTIONS ${cmake_options} + ) + vcpkg_install_cmake() + set(PORT ninja) # to trick vcpkg_copy_tools + vcpkg_copy_tools(TOOL_NAMES ninja AUTO_CLEAN) + set(PORT vcpkg-tool-ninja) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) +endif() + +z_vcpkg_find_acquire_program_find_internal("${program}" + INTERPRETER "${interpreter}" + PATHS ${paths_to_search} + NAMES ${search_names} +) +message(STATUS "Using ninja: ${NINJA}") + diff --git a/ports/vcpkg-tool-ninja/vcpkg-port-config.cmake b/ports/vcpkg-tool-ninja/vcpkg-port-config.cmake new file mode 100644 index 00000000000000..333cf3fe0f433b --- /dev/null +++ b/ports/vcpkg-tool-ninja/vcpkg-port-config.cmake @@ -0,0 +1 @@ +set(NINJA "${CURRENT_HOST_INSTALLED_DIR}/tools/ninja@VCPKG_TARGET_EXECUTABLE_SUFFIX@") \ No newline at end of file diff --git a/ports/vcpkg-tool-ninja/vcpkg.json b/ports/vcpkg-tool-ninja/vcpkg.json new file mode 100644 index 00000000000000..d9d00e1fdb5b1c --- /dev/null +++ b/ports/vcpkg-tool-ninja/vcpkg.json @@ -0,0 +1,8 @@ +{ + "name": "vcpkg-tool-ninja", + "version-date": "2022-03-31", + "description": "Ninja is a small build system with a focus on speed.", + "homepage": "https://ninja-build.org/", + "license": "Apache-2.0", + "supports": "native" +} From be1b0f85310f3f050653dfac301e581c590f76cc Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 31 Mar 2022 22:18:59 +0200 Subject: [PATCH 011/141] version stuff --- versions/baseline.json | 4 ++++ versions/v-/vcpkg-tool-ninja.json | 9 +++++++++ 2 files changed, 13 insertions(+) create mode 100644 versions/v-/vcpkg-tool-ninja.json diff --git a/versions/baseline.json b/versions/baseline.json index a095414ad645f7..a71bc9b390f2bd 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -7300,6 +7300,10 @@ "baseline": "3.3", "port-version": 0 }, + "vcpkg-tool-ninja": { + "baseline": "2022-03-31", + "port-version": 0 + }, "vcpkg-tool-nodejs": { "baseline": "14.17.4", "port-version": 0 diff --git a/versions/v-/vcpkg-tool-ninja.json b/versions/v-/vcpkg-tool-ninja.json new file mode 100644 index 00000000000000..3299e7f767f8bd --- /dev/null +++ b/versions/v-/vcpkg-tool-ninja.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "f68e5b1ee9a97b2d0b414e767a37ed7a2a63a133", + "version-date": "2022-03-31", + "port-version": 0 + } + ] +} From 1e15675c8a8217d01015fb7420d19310ca103ed9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 31 Mar 2022 22:28:00 +0200 Subject: [PATCH 012/141] add Unix Makefiles to list of valid generators for bootstraping ninja --- scripts/cmake/vcpkg_build_cmake.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/cmake/vcpkg_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake index b3015ae29e8865..48689b1d87662f 100644 --- a/scripts/cmake/vcpkg_build_cmake.cmake +++ b/scripts/cmake/vcpkg_build_cmake.cmake @@ -64,8 +64,12 @@ function(vcpkg_build_cmake) vcpkg_list(SET parallel_param "/m") elseif("${Z_VCPKG_CMAKE_GENERATOR}" STREQUAL "NMake Makefiles") # No options are currently added for nmake builds + elseif("${Z_VCPKG_CMAKE_GENERATOR}" STREQUAL "Unix Makefiles") + vcpkg_list(SET build_param "VERBOSE=1") + vcpkg_list(SET parallel_param "-j${VCPKG_CONCURRENCY}") + vcpkg_list(SET no_parallel_param "-j1") else() - message(FATAL_ERROR "Unrecognized GENERATOR setting from vcpkg_configure_cmake(). Valid generators are: Ninja, Visual Studio, and NMake Makefiles") + message(FATAL_ERROR "Unrecognized GENERATOR setting from vcpkg_configure_cmake(). Valid generators are: 'Ninja', 'Visual Studio', 'Unix Makefiles' and 'NMake Makefiles'") endif() vcpkg_list(SET target_param) From f1bd9859618f088f9bde10794bedd0b9f7a2b84f Mon Sep 17 00:00:00 2001 From: nicole mazzuca Date: Tue, 5 Apr 2022 15:16:46 -0700 Subject: [PATCH 013/141] nicole CRs --- ports/vcpkg-tool-ninja/portfile.cmake | 82 +++---------------- .../vcpkg-tool-ninja/vcpkg-port-config.cmake | 2 +- ports/vcpkg-tool-ninja/vcpkg.json | 6 +- scripts/build_info.cmake | 3 + 4 files changed, 20 insertions(+), 73 deletions(-) diff --git a/ports/vcpkg-tool-ninja/portfile.cmake b/ports/vcpkg-tool-ninja/portfile.cmake index cc615bdbfd2c9c..bcf08dc8d39f61 100644 --- a/ports/vcpkg-tool-ninja/portfile.cmake +++ b/ports/vcpkg-tool-ninja/portfile.cmake @@ -1,18 +1,6 @@ -set(VCPKG_POLICY_EMPTY_PACKAGE enabled) +set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) -set(program NINJA) -set(program_version 1.10.2) -set(program_name "ninja") -set(search_names "ninja") -set(apt_package_name "ninja-build") -set(brew_package_name "ninja-build") -set(paths_to_search "${CURRENT_PACKAGES_DIR}/tools/ninja") -set(supported_on_unix ON) -set(version_command --version) -set(extra_search_args EXACT_VERSION_MATCH) - -if(NOT "${program}") - vcpkg_from_github( +vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ninja-build/ninja REF 170c387a7461d476523ae29c115a58f16e4d3430 @@ -20,62 +8,14 @@ if(NOT "${program}") HEAD_REF master PATCHES PR2056.diff # Long path support windows ) - # This copied from vcpkg_configure_cmake to find a generator which is not ninja! - set(generator_arch "") - if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - if("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v120" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64") - set(generator "Visual Studio 12 2013") - elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v140" AND NOT "${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64") - set(generator "Visual Studio 14 2015") - elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v141") - set(generator "Visual Studio 15 2017") - elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v142") - set(generator "Visual Studio 16 2019") - elseif("${VCPKG_PLATFORM_TOOLSET}" STREQUAL "v143") - set(generator "Visual Studio 17 2022") - endif() - - if("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x86") - set(generator_arch "Win32") - elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "x64") - set(generator_arch "x64") - elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm") - set(generator_arch "ARM") - elseif("${VCPKG_TARGET_ARCHITECTURE}" STREQUAL "arm64") - set(generator_arch "ARM64") - endif() - if("${generator}" STREQUAL "" OR "${generator_arch}" STREQUAL "") - message(FATAL_ERROR - "Unable to determine appropriate generator for triplet ${TARGET_TRIPLET}: - platform toolset: ${VCPKG_PLATFORM_TOOLSET} - architecture : ${VCPKG_TARGET_ARCHITECTURE}") - endif() - vcpkg_list(APPEND cmake_options "-DBUILD_UNICODE:BOOL=ON") - else() - set(generator "Unix Makefiles") - endif() - if(NOT "${generator_arch}" STREQUAL "") - vcpkg_list(APPEND cmake_options "-A${generator_arch}") - endif() - - set(VCPKG_BUILD_TYPE release) #we only need release here! - vcpkg_configure_cmake( - DISABLE_PARALLEL_CONFIGURE - SOURCE_PATH "${SOURCE_PATH}" - GENERATOR "${generator}" - OPTIONS ${cmake_options} - ) - vcpkg_install_cmake() - set(PORT ninja) # to trick vcpkg_copy_tools - vcpkg_copy_tools(TOOL_NAMES ninja AUTO_CLEAN) - set(PORT vcpkg-tool-ninja) - configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) -endif() - -z_vcpkg_find_acquire_program_find_internal("${program}" - INTERPRETER "${interpreter}" - PATHS ${paths_to_search} - NAMES ${search_names} +set(VCPKG_BUILD_TYPE release) #we only need release here! +vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}") +vcpkg_cmake_install() +vcpkg_copy_tools( + TOOL_NAMES ninja + DESTINATION "${CURRENT_PACKAGES_DIR}/tools/ninja" + AUTO_CLEAN ) -message(STATUS "Using ninja: ${NINJA}") +file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) diff --git a/ports/vcpkg-tool-ninja/vcpkg-port-config.cmake b/ports/vcpkg-tool-ninja/vcpkg-port-config.cmake index 333cf3fe0f433b..8bf42e9f6a28f4 100644 --- a/ports/vcpkg-tool-ninja/vcpkg-port-config.cmake +++ b/ports/vcpkg-tool-ninja/vcpkg-port-config.cmake @@ -1 +1 @@ -set(NINJA "${CURRENT_HOST_INSTALLED_DIR}/tools/ninja@VCPKG_TARGET_EXECUTABLE_SUFFIX@") \ No newline at end of file +set(NINJA "${CMAKE_CURRENT_LIST_DIR}/../../tools/ninja/ninja@VCPKG_TARGET_EXECUTABLE_SUFFIX@") diff --git a/ports/vcpkg-tool-ninja/vcpkg.json b/ports/vcpkg-tool-ninja/vcpkg.json index d9d00e1fdb5b1c..434990e25f0353 100644 --- a/ports/vcpkg-tool-ninja/vcpkg.json +++ b/ports/vcpkg-tool-ninja/vcpkg.json @@ -4,5 +4,9 @@ "description": "Ninja is a small build system with a focus on speed.", "homepage": "https://ninja-build.org/", "license": "Apache-2.0", - "supports": "native" + "supports": "native", + "dependencies": [ + "vcpkg-cmake", + "vcpkg-cmake-config" + ] } diff --git a/scripts/build_info.cmake b/scripts/build_info.cmake index a6208016ae522b..112e074654f818 100644 --- a/scripts/build_info.cmake +++ b/scripts/build_info.cmake @@ -35,6 +35,9 @@ endif() if (DEFINED VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK) file(APPEND ${BUILD_INFO_FILE_PATH} "PolicySkipArchitectureCheck: ${VCPKG_POLICY_SKIP_ARCHITECTURE_CHECK}\n") endif() +if (DEFINED VCPKG_POLICY_CMAKE_HELPER_PORT) + file(APPEND ${BUILD_INFO_FILE_PATH} "PolicyCmakeHelperPort: ${VCPKG_POLICY_CMAKE_HELPER_PORT}\n") +endif() if (DEFINED VCPKG_HEAD_VERSION) file(APPEND ${BUILD_INFO_FILE_PATH} "Version: ${VCPKG_HEAD_VERSION}\n") endif() From 77d319ed67b541c8c4302bb1bf3e9423ec5f0e15 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 Apr 2022 08:50:51 +0200 Subject: [PATCH 014/141] update version db --- versions/v-/vcpkg-tool-ninja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-tool-ninja.json b/versions/v-/vcpkg-tool-ninja.json index 3299e7f767f8bd..51d0cfdfab10d1 100644 --- a/versions/v-/vcpkg-tool-ninja.json +++ b/versions/v-/vcpkg-tool-ninja.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "f68e5b1ee9a97b2d0b414e767a37ed7a2a63a133", + "git-tree": "0a9071fd10711b762bfa1e50f7314f3dd23d41d9", "version-date": "2022-03-31", "port-version": 0 } From 538ae94f75a33c57c46f7eca211d0cfc50426ea5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 Apr 2022 08:51:56 +0200 Subject: [PATCH 015/141] revert vcpkg_build_cmake changes --- scripts/cmake/vcpkg_build_cmake.cmake | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/scripts/cmake/vcpkg_build_cmake.cmake b/scripts/cmake/vcpkg_build_cmake.cmake index 48689b1d87662f..b3015ae29e8865 100644 --- a/scripts/cmake/vcpkg_build_cmake.cmake +++ b/scripts/cmake/vcpkg_build_cmake.cmake @@ -64,12 +64,8 @@ function(vcpkg_build_cmake) vcpkg_list(SET parallel_param "/m") elseif("${Z_VCPKG_CMAKE_GENERATOR}" STREQUAL "NMake Makefiles") # No options are currently added for nmake builds - elseif("${Z_VCPKG_CMAKE_GENERATOR}" STREQUAL "Unix Makefiles") - vcpkg_list(SET build_param "VERBOSE=1") - vcpkg_list(SET parallel_param "-j${VCPKG_CONCURRENCY}") - vcpkg_list(SET no_parallel_param "-j1") else() - message(FATAL_ERROR "Unrecognized GENERATOR setting from vcpkg_configure_cmake(). Valid generators are: 'Ninja', 'Visual Studio', 'Unix Makefiles' and 'NMake Makefiles'") + message(FATAL_ERROR "Unrecognized GENERATOR setting from vcpkg_configure_cmake(). Valid generators are: Ninja, Visual Studio, and NMake Makefiles") endif() vcpkg_list(SET target_param) From 67cc98c3cd67d4e181cffd80ef6dd46eacc9259e Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 6 Apr 2022 10:06:50 +0200 Subject: [PATCH 016/141] retrigger ci From 81945b97fc468b88be6d9cc8baf527b28a1c4056 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 Apr 2022 19:17:04 +0200 Subject: [PATCH 017/141] revert find_acquire_program changes --- .../cmake/vcpkg_find_acquire_program.cmake | 65 ++++++++----------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/scripts/cmake/vcpkg_find_acquire_program.cmake b/scripts/cmake/vcpkg_find_acquire_program.cmake index eea1e36cca1db4..c85932dc7c92e0 100644 --- a/scripts/cmake/vcpkg_find_acquire_program.cmake +++ b/scripts/cmake/vcpkg_find_acquire_program.cmake @@ -313,15 +313,10 @@ function(vcpkg_find_acquire_program program) set(download_sha512 5b158ead86be4eb3a6780928d9163f8562372f30bde051d8c281d81027b766119a6e9241166b91de0aa6146836cea77e5121290e62e31b7a959407840fc57b33) elseif(program STREQUAL "7Z") set(program_name 7z) - set(version 21.07) - if(EXISTS "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-7zip/details.cmake") - include("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-7zip/details.cmake") - else() - set(paths_to_search "${DOWNLOADS}/tools/7z/Files/7-Zip") - set(download_urls "https://www.7-zip.org/a/7z2107.msi") - set(download_filename "7z2107.msi") - set(download_sha512 103210153e60b4234015796bb5f12483f99b5909df8c2fe5c9d3a823d4bdc721602a5261ad794e5280ff9f0d5f79add4e2a732dfb087fe8b4844d789acb8ea42) - endif() + set(paths_to_search "${DOWNLOADS}/tools/7z/Files/7-Zip") + set(download_urls "https://7-zip.org/a/7z1900.msi") + set(download_filename "7z1900.msi") + set(download_sha512 f73b04e2d9f29d4393fde572dcf3c3f0f6fa27e747e5df292294ab7536ae24c239bf917689d71eb10cc49f6b9a4ace26d7c122ee887d93cc935f268c404e9067) elseif(program STREQUAL "NINJA") set(program_name ninja) set(program_version 1.10.2) @@ -408,36 +403,32 @@ function(vcpkg_find_acquire_program program) endif() elseif(program STREQUAL "CLANG") set(program_name clang) - set(tool_subdirectory "clang-13.0.1") - set(program_version 13.0.1) - if(EXISTS "${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-llvm/details.cmake") - include("${CURRENT_HOST_INSTALLED_DIR}/share/vcpkg-tool-llvm/details.cmake") - else() - if(CMAKE_HOST_WIN32) - set(paths_to_search - # Support LLVM in Visual Studio 2019 - "$ENV{LLVMInstallDir}/x64/bin" - "$ENV{LLVMInstallDir}/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" - "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" - "${DOWNLOADS}/tools/${tool_subdirectory}-windows/bin" - "${DOWNLOADS}/tools/clang/${tool_subdirectory}/bin") + set(tool_subdirectory "clang-12.0.0") + set(program_version 12.0.0) + if(CMAKE_HOST_WIN32) + set(paths_to_search + # Support LLVM in Visual Studio 2019 + "$ENV{LLVMInstallDir}/x64/bin" + "$ENV{LLVMInstallDir}/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/x64/bin" + "$ENV{VCINSTALLDIR}/Tools/Llvm/bin" + "${DOWNLOADS}/tools/${tool_subdirectory}-windows/bin" + "${DOWNLOADS}/tools/clang/${tool_subdirectory}/bin") - if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) - set(host_arch "$ENV{PROCESSOR_ARCHITEW6432}") - else() - set(host_arch "$ENV{PROCESSOR_ARCHITECTURE}") - endif() + if(DEFINED ENV{PROCESSOR_ARCHITEW6432}) + set(host_arch "$ENV{PROCESSOR_ARCHITEW6432}") + else() + set(host_arch "$ENV{PROCESSOR_ARCHITECTURE}") + endif() - if(host_arch MATCHES "64") - set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") - set(download_filename "LLVM-${program_version}-win64.7z.exe") - set(download_sha512 56e8871898fc2d62383b76b75ce7852a0179d70a1d327e95e73a115f1e09db5ceec1ae950279ddb0779de417eca9cdf7517d9c6a5498c7c17de6550aef16073d) - else() - set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win32.exe") - set(download_filename "LLVM-${program_version}-win32.7z.exe") - set(download_sha512 6df7b992d4c382c3e1c71ff30e43b9fa0311c33adfebc9feaa4ea7e2f50fdb836b04dbad529aac1a6f7bf0135b98ecf3291d0386152afbcaf5ac7cb4592a94fa) - endif() + if(host_arch MATCHES "64") + set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win64.exe") + set(download_filename "LLVM-${program_version}-win64.7z.exe") + set(download_sha512 67a9b54abad5143fa5f79f0cfc184be1394c9fc894fa9cee709943cb6ccbde8f0ea6003d8fcc20eccf035631abe4009cc0f694ac84e7879331cebba8125e4c7f) + else() + set(download_urls "https://github.com/llvm/llvm-project/releases/download/llvmorg-${program_version}/LLVM-${program_version}-win32.exe") + set(download_filename "LLVM-${program_version}-win32.7z.exe") + set(download_sha512 92fa5252fd08c1414ee6d71e2544cd2c44872124c47225f8d98b3af711d20e699f2888bc30642dfd00e005013da1607a593674fb4878951cc434694f9a119199) endif() endif() set(brew_package_name "llvm") From 6726020d383069c17ca6c24de408032503d6959f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 Apr 2022 19:22:04 +0200 Subject: [PATCH 018/141] hardcoding paths --- ports/vcpkg-tool-7zip/portfile.cmake | 2 +- ports/vcpkg-tool-llvm/portfile.cmake | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-tool-7zip/portfile.cmake b/ports/vcpkg-tool-7zip/portfile.cmake index a4234fcd639d7b..8c0c4fca54d555 100644 --- a/ports/vcpkg-tool-7zip/portfile.cmake +++ b/ports/vcpkg-tool-7zip/portfile.cmake @@ -38,7 +38,7 @@ if(VCPKG_TARGET_IS_WINDOWS) endif() message(STATUS "Extracting ${name_msg} ... finished!") file(RENAME "${output_path}/${name_folder}/SourceDir/Files/7-Zip" "${output_path}/${PORT}/") - + file(REMOVE_RECURSE "${output_path}/${name_folder}") set(details "set(program_version \"${program_version}\")\n") string(APPEND details "set(paths_to_search \"\${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}\")\n") file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/details.cmake" "${details}") diff --git a/ports/vcpkg-tool-llvm/portfile.cmake b/ports/vcpkg-tool-llvm/portfile.cmake index 5ee1ba9fcbd6fe..b8c54e54f18a16 100644 --- a/ports/vcpkg-tool-llvm/portfile.cmake +++ b/ports/vcpkg-tool-llvm/portfile.cmake @@ -14,12 +14,12 @@ elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") endif() vcpkg_download_distfile(archive_path URLS "${url}" - FILENAME "${name}" + FILENAME "${name}" SHA512 "${hash}" ) file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") -vcpkg_find_acquire_program(7Z) +set(7Z "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-7zip/7z.exe") vcpkg_execute_in_download_mode( COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" "-y" "-bso0" "-bsp0" WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" From 6efda72e60eda71b93be62cce752ac0e8c2d9a63 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 7 Apr 2022 19:22:36 +0200 Subject: [PATCH 019/141] version stuff --- versions/v-/vcpkg-tool-7zip.json | 2 +- versions/v-/vcpkg-tool-llvm.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/versions/v-/vcpkg-tool-7zip.json b/versions/v-/vcpkg-tool-7zip.json index 4954849ac3d750..2f8d1633760a4d 100644 --- a/versions/v-/vcpkg-tool-7zip.json +++ b/versions/v-/vcpkg-tool-7zip.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "6e1fbe6afd45c46403ba4fd80c6b4f23589b481f", + "git-tree": "086568db163aef0bee77c7d0e183289e2c2631be", "version-string": "21.07", "port-version": 0 } diff --git a/versions/v-/vcpkg-tool-llvm.json b/versions/v-/vcpkg-tool-llvm.json index 1e3843f4b96a8b..218b2489baeea3 100644 --- a/versions/v-/vcpkg-tool-llvm.json +++ b/versions/v-/vcpkg-tool-llvm.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "33809fddf62b7af8f188a82ad8a2121d51207757", + "git-tree": "933c41d9ae6be3930aadbb5f7f361d7aad1510a4", "version": "13.0.1", "port-version": 0 } From ef5943711425d1787f7cb6a0ac5fbe0558e062b4 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 09:10:05 +0200 Subject: [PATCH 020/141] install wrapper if not exist. --- ports/lapack/portfile.cmake | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 6610dc604d04fd..1f2ebbfabbecb7 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -7,7 +7,9 @@ else() endif() set(BLA_VENDOR Generic) if(VCPKG_TARGET_IS_WINDOWS) # The other wrapper is in lapack-reference - configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) + if(NOT EXISTS "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) + endif() endif() # Make sure LAPACK can be found vcpkg_configure_cmake(SOURCE_PATH ${CURRENT_PORT_DIR} From d8870619e8715cccd355a9d09f4d4a7ade011b71 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 11:13:18 +0200 Subject: [PATCH 021/141] cleanup stuff --- ports/blas/portfile.cmake | 8 ++++++-- ports/blas/vcpkg.json | 11 ++++++++++- ports/clapack/FindLAPACK.cmake | 13 +++++++------ ports/clapack/portfile.cmake | 19 +++++++++---------- ports/clapack/vcpkg.json | 12 ++++++++++-- ports/lapack-reference/portfile.cmake | 5 ++--- ports/lapack/portfile.cmake | 21 ++++++++++++++------- ports/lapack/vcpkg-cmake-wrapper.cmake.in | 1 + ports/lapack/vcpkg.json | 5 +++++ 9 files changed, 64 insertions(+), 31 deletions(-) diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index a37948d649c1ec..73999abc2ea60a 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -1,7 +1,11 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) # OpenBLAS -set(BLA_VENDOR OpenBLAS) +if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) +else() + set(BLA_VENDOR OpenBLAS) +endif() # For possible overlays: @@ -28,7 +32,7 @@ endif() configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) # Make sure BLAS can be found -vcpkg_configure_cmake(SOURCE_PATH ${CURRENT_PORT_DIR} +vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" -DBLA_VENDOR=${BLA_VENDOR} -DBLA_STATIC=${BLA_STATIC}) diff --git a/ports/blas/vcpkg.json b/ports/blas/vcpkg.json index 6591fb2d7d0784..40861e063fb8a2 100644 --- a/ports/blas/vcpkg.json +++ b/ports/blas/vcpkg.json @@ -1,8 +1,17 @@ { + "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", "name": "blas", "version-date": "2022-04-22", "description": "Metapackage for packages which provide BLAS", + "license": null, "dependencies": [ - "openblas" + { + "name": "openblas", + "platform": "!osx" + }, + { + "name": "vcpkg-cmake", + "host": true + } ] } diff --git a/ports/clapack/FindLAPACK.cmake b/ports/clapack/FindLAPACK.cmake index aa546e672be054..428a1e8dcc2a08 100644 --- a/ports/clapack/FindLAPACK.cmake +++ b/ports/clapack/FindLAPACK.cmake @@ -103,15 +103,15 @@ if(NOT LAPACK_LIBRARY) list(APPEND LAPACK_LIBRARY_RELEASE ${F2C_LIBRARY_RELEASE}) list(APPEND LAPACK_LIBRARY_DEBUG ${F2C_LIBRARY_DEBUG}) - find_dependency(OpenBLAS) - get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY IMPORTED_IMPLIB_RELEASE) + find_dependency(BLAS) + get_property(_loc TARGET BLAS::BLAS PROPERTY IMPORTED_IMPLIB_RELEASE) if(NOT _loc) - get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY LOCATION_RELEASE) + get_property(_loc TARGET BLAS::BLAS PROPERTY LOCATION_RELEASE) endif() set(LAPACK_BLAS_LIBRARY_RELEASE ${_loc}) - get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY IMPORTED_IMPLIB_DEBUG) + get_property(_loc TARGET BLAS::BLAS PROPERTY IMPORTED_IMPLIB_DEBUG) if(NOT _loc) - get_property(_loc TARGET OpenBLAS::OpenBLAS PROPERTY LOCATION_DEBUG) + get_property(_loc TARGET BLAS::BLAS PROPERTY LOCATION_DEBUG) endif() set(LAPACK_BLAS_LIBRARY_DEBUG ${_loc}) select_library_configurations(LAPACK_BLAS) @@ -235,5 +235,6 @@ endif() # Preserve backwards compatibility and also register the 'lapack' target if(CLAPACK_FOUND AND NOT TARGET lapack) - add_library(lapack ALIAS LAPACK::LAPACK) + add_library(lapack INTERFACE IMPORTED) + target_link_libraries(lapack INTERFACE LAPACK::LAPACK) endif() diff --git a/ports/clapack/portfile.cmake b/ports/clapack/portfile.cmake index d84c864e207ee6..fd14d04a69bec4 100644 --- a/ports/clapack/portfile.cmake +++ b/ports/clapack/portfile.cmake @@ -12,7 +12,7 @@ vcpkg_download_distfile(ARCHIVE vcpkg_extract_source_archive_ex( OUT_SOURCE_PATH SOURCE_PATH - ARCHIVE ${ARCHIVE} + ARCHIVE "${ARCHIVE}" PATCHES remove_internal_blas.patch fix-ConfigFile.patch @@ -44,24 +44,23 @@ Continuing with trying to run arithchk anyway.") endif() endif() -vcpkg_configure_cmake( - SOURCE_PATH ${SOURCE_PATH} - PREFER_NINJA +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" OPTIONS -DCMAKE_DEBUG_POSTFIX=d ${ARITH_PATH} ) -vcpkg_install_cmake() +vcpkg_cmake_install() vcpkg_copy_pdbs() #TODO: fix the official exported targets, since they are broken (luckily it seems that no-one uses them for now) -vcpkg_fixup_cmake_targets(CONFIG_PATH share/clapack) +vcpkg_cmake_config_fixup() -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") # Install clapack wrappers. -file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/lapack) -file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/lapack) +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") # Handle copyright -file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) +file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/clapack/vcpkg.json b/ports/clapack/vcpkg.json index 78b840f56495cd..b3d28c2965c9e3 100644 --- a/ports/clapack/vcpkg.json +++ b/ports/clapack/vcpkg.json @@ -1,10 +1,18 @@ { "name": "clapack", "version": "3.2.1", - "port-version": 20, + "port-version": 21, "description": "CLAPACK (f2c'ed version of LAPACK)", "homepage": "https://www.netlib.org/clapack", "dependencies": [ - "blas" + "blas", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } ] } diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 7ff7e64fa5b369..b1995d95a5246d 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -145,6 +145,5 @@ else() endif() set(BLA_VENDOR Generic) - -file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/lapack") -file(COPY "${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/lapack") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(COPY "${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 1f2ebbfabbecb7..4e4c5fc6f2c988 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -5,15 +5,22 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") else() set(BLA_STATIC OFF) endif() + set(BLA_VENDOR Generic) -if(VCPKG_TARGET_IS_WINDOWS) # The other wrapper is in lapack-reference - if(NOT EXISTS "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") - configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) - endif() +if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) +elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) +else() + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) endif() + # Make sure LAPACK can be found -vcpkg_configure_cmake(SOURCE_PATH ${CURRENT_PORT_DIR} +vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" - -DBLA_VENDOR=${BLA_VENDOR} - -DBLA_STATIC=${BLA_STATIC}) + -DBLA_VENDOR="${BLA_VENDOR}" + -DBLA_STATIC="${BLA_STATIC}") diff --git a/ports/lapack/vcpkg-cmake-wrapper.cmake.in b/ports/lapack/vcpkg-cmake-wrapper.cmake.in index bda7ab98d8f5ff..22f4fc07732d70 100644 --- a/ports/lapack/vcpkg-cmake-wrapper.cmake.in +++ b/ports/lapack/vcpkg-cmake-wrapper.cmake.in @@ -1,3 +1,4 @@ +_find_package(BLAS) # Find BLAS before setting BLA_VENDOR (Will set/unset BLA_VENDOR itself) set(BLA_VENDOR @BLA_VENDOR@) set(BLA_STATIC @BLA_STATIC@) _find_package(${ARGS}) diff --git a/ports/lapack/vcpkg.json b/ports/lapack/vcpkg.json index 70a2aabec304fe..8a26a743e98a27 100644 --- a/ports/lapack/vcpkg.json +++ b/ports/lapack/vcpkg.json @@ -1,4 +1,5 @@ { + "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", "name": "lapack", "version-date": "2022-02-22", "description": "Metapackage for packages which provide LAPACK", @@ -11,6 +12,10 @@ { "name": "lapack-reference", "platform": "!((arm & windows) | uwp)" + }, + { + "name": "vcpkg-cmake", + "host": true } ] } From c12bad7d5762a5a2384706c4763dfb02960b9e34 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 11:23:00 +0200 Subject: [PATCH 022/141] rename to cmake.in --- .../{vcpkg-cmake-wrapper.cmake => vcpkg-cmake-wrapper.cmake.in} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ports/lapack-reference/{vcpkg-cmake-wrapper.cmake => vcpkg-cmake-wrapper.cmake.in} (100%) diff --git a/ports/lapack-reference/vcpkg-cmake-wrapper.cmake b/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in similarity index 100% rename from ports/lapack-reference/vcpkg-cmake-wrapper.cmake rename to ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in From c50945d3e16e4eb1dda63d163ceeea6ef42fb26f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 11:25:57 +0200 Subject: [PATCH 023/141] details --- ports/lapack-reference/portfile.cmake | 2 +- ports/lapack/portfile.cmake | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index b1995d95a5246d..abbadcdae9b341 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -145,5 +145,5 @@ else() endif() set(BLA_VENDOR Generic) -file(COPY "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake") file(COPY "${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 4e4c5fc6f2c988..c3af28b697cf69 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -21,6 +21,7 @@ endif() # Make sure LAPACK can be found vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" + -DCMAKE_MODULE_PATH="${CURRENT_PACKAGES_DIR}/share/lapack" -DBLA_VENDOR="${BLA_VENDOR}" -DBLA_STATIC="${BLA_STATIC}") From 16373d0fa3613c1aa7281ac6b5d2b902c1063188 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 12:48:43 +0200 Subject: [PATCH 024/141] drastically simplify FindLAPACK by clapack --- ports/clapack/FindLAPACK.cmake | 245 ++++----------------------------- 1 file changed, 26 insertions(+), 219 deletions(-) diff --git a/ports/clapack/FindLAPACK.cmake b/ports/clapack/FindLAPACK.cmake index 428a1e8dcc2a08..b98847adf83660 100644 --- a/ports/clapack/FindLAPACK.cmake +++ b/ports/clapack/FindLAPACK.cmake @@ -2,239 +2,46 @@ # clapack config for vcpkg # ------------ # -# Find the clapack includes and library. +# Find clapack as a valid LAPACK implementation. # -# Result Variables -# ^^^^^^^^^^^^^^^^ -# -# This script defines the following variables: -# -# ``CLAPACK_FOUND`` -# True if clapack library found -# -# ``CLAPACK_VERSION`` -# Containing the clapack version tag (manually defined) -# -# ``CLAPACK_INCLUDE_DIR`` -# Location of clapack headers -# -# ``CLAPACK_LIBRARY`` -# List of libraries to link with when using clapack -# -# Result Targets -# ^^^^^^^^^^^^^^ -# -# This script defines the following targets: -# -# ``clapack::clapack`` -# Target to use clapack -# -# Compatibility Variables -# ^^^^^^^^^^^^^^^^^^^^^^^ -# -# This script defines the following variables for compatibility reasons: -# -# ``F2C_FOUND`` -# True if f2c (fortran-to-c wrap layer) library found -# -# ``F2C_INCLUDE_DIR`` -# Location of clapack headers -# -# ``F2C_LIBRARY`` -# Library containing the fortran-to-c wrap layer, necessary for clapack and automatically included when used -# -# ``LAPACK_FOUND`` -# True if clapack library found -# -# ``LAPACK_VERSION`` -# Containing the clapack version tag (manually defined) -# -# ``LAPACK_INCLUDE_DIR`` -# Location of clapack headers -# -# ``LAPACK_LIBRARY`` -# List of libraries to link with when using clapack -# -# Compatibility Targets -# ^^^^^^^^^^^^^^ -# -# This script defines the following targets for compatibility reasons: -# -# ``lapack`` -# Target to use lapack +# The module defines the same outputs as FindLAPACK by cmake include(${CMAKE_ROOT}/Modules/SelectLibraryConfigurations.cmake) -include(${CMAKE_ROOT}/Modules/CheckSymbolExists.cmake) include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) -include(${CMAKE_ROOT}/Modules/CMakeFindDependencyMacro.cmake) set(CLAPACK_VERSION "3.2.1") - -set(CMAKE_THREAD_PREFER_PTHREAD TRUE) +set(LAPACK_VERSION "${CLAPACK_VERSION}") +#set(CMAKE_THREAD_PREFER_PTHREAD TRUE) find_dependency(Threads) -if(UNIX) - find_library(ADDITIONAL_LAPACK_LIBRARY m) - set(PTHREAD_LINK_NAME "-pthread") -endif() - -if(NOT F2C_LIBRARY) - find_library(F2C_LIBRARY_RELEASE NAMES f2c libf2c) - find_library(F2C_LIBRARY_DEBUG NAMES f2cd libf2cd) - select_library_configurations(F2C) - - #keep a list of "pure" f2c libs, without dependencies - set(oF2C_LIBRARY_RELEASE ${F2C_LIBRARY_RELEASE}) - set(oF2C_LIBRARY_DEBUG ${F2C_LIBRARY_DEBUG}) - set(oF2C_LIBRARY ${F2C_LIBRARY}) - - list(APPEND F2C_LIBRARY ${ADDITIONAL_LAPACK_LIBRARY}) -endif() - -if(NOT LAPACK_LIBRARY) - find_library(LAPACK_LIBRARY_RELEASE NAMES lapack) - find_library(LAPACK_LIBRARY_DEBUG NAMES lapackd) - - #keep a list of "pure" lapack libs, without dependencies - set(oLAPACK_LIBRARY_RELEASE ${LAPACK_LIBRARY_RELEASE}) - set(oLAPACK_LIBRARY_DEBUG ${LAPACK_LIBRARY_DEBUG}) - select_library_configurations(oLAPACK) - - list(APPEND LAPACK_LIBRARY_RELEASE ${F2C_LIBRARY_RELEASE}) - list(APPEND LAPACK_LIBRARY_DEBUG ${F2C_LIBRARY_DEBUG}) - - find_dependency(BLAS) - get_property(_loc TARGET BLAS::BLAS PROPERTY IMPORTED_IMPLIB_RELEASE) - if(NOT _loc) - get_property(_loc TARGET BLAS::BLAS PROPERTY LOCATION_RELEASE) - endif() - set(LAPACK_BLAS_LIBRARY_RELEASE ${_loc}) - get_property(_loc TARGET BLAS::BLAS PROPERTY IMPORTED_IMPLIB_DEBUG) - if(NOT _loc) - get_property(_loc TARGET BLAS::BLAS PROPERTY LOCATION_DEBUG) - endif() - set(LAPACK_BLAS_LIBRARY_DEBUG ${_loc}) - select_library_configurations(LAPACK_BLAS) - list(APPEND LAPACK_LIBRARY_RELEASE ${LAPACK_BLAS_LIBRARY_RELEASE}) - list(APPEND LAPACK_LIBRARY_DEBUG ${LAPACK_BLAS_LIBRARY_DEBUG}) +find_package(clapack CONFIG REQUIRED) # This will be found ! - select_library_configurations(LAPACK) - if(UNIX) - list(APPEND LAPACK_LIBRARY ${PTHREAD_LINK_NAME}) - endif() +if(NOT TARGET lapack) + message(FATAL_ERROR "Target lapack was not created by find_package(clapack)!") endif() -if(NOT F2C_INCLUDE_DIR) - find_path(F2C_INCLUDE_DIR NAMES f2c.h) -endif() - -if(NOT LAPACK_INCLUDE_DIR) - find_path(LAPACK_INCLUDE_DIR NAMES clapack.h) -endif() - -list(APPEND LAPACK_INCLUDE_DIR ${F2C_INCLUDE_DIR}) -set(LAPACK_INCLUDE_DIR "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE) -set(LAPACK_INCLUDE_DIRS "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE) -set(CLAPACK_INCLUDE_DIR "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE) -set(CLAPACK_INCLUDE_DIRS "${LAPACK_INCLUDE_DIR}" CACHE PATH "" FORCE) -set(F2C_INCLUDE_DIRS "${F2C_INCLUDE_DIR}" CACHE PATH "" FORCE) - -set(LAPACK_DLL_DIR ${LAPACK_INCLUDE_DIR}) -list(TRANSFORM LAPACK_DLL_DIR APPEND "/../bin") -message(STATUS "LAPACK_DLL_DIR: ${LAPACK_DLL_DIR}") +if(NOT TARGET LAPACK::LAPACK) + add_library(LAPACK::LAPACK INTERFACE IMPORTED) + target_link_libraries(LAPACK::LAPACK INTERFACE lapack) -if(WIN32) - find_file(LAPACK_LIBRARY_RELEASE_DLL NAMES lapack.dll PATHS ${LAPACK_DLL_DIR}) - find_file(LAPACK_LIBRARY_DEBUG_FOLDER NAMES lapackd.dll PATHS ${LAPACK_DLL_DIR}) - find_file(F2C_LIBRARY_RELEASE_DLL NAMES f2c.dll libf2c.dll PATHS ${LAPACK_DLL_DIR}) - find_file(F2C_LIBRARY_DEBUG_DLL NAMES f2cd.dll libf2cd.dll PATHS ${LAPACK_DLL_DIR}) -endif() - -set(LAPACK_BLAS_LIBRARY "${LAPACK_BLAS_LIBRARY}" CACHE STRING "" FORCE) -set(F2C_LIBRARIES "${F2C_LIBRARY}" CACHE STRING "" FORCE) -set(LAPACK_VERSION "${CLAPACK_VERSION}" CACHE STRING "" FORCE) -set(LAPACK_LIBRARIES "${LAPACK_LIBRARY}" CACHE STRING "" FORCE) -set(CLAPACK_LIBRARY "${LAPACK_LIBRARY}" CACHE STRING "" FORCE) -set(CLAPACK_LIBRARIES "${LAPACK_LIBRARY}" CACHE STRING "" FORCE) + set(lib_prop IMPORTED_LOCATION) + #if(@VCPKG_LIBRARY_LINKAGE@ STREQUAL "dynamic" AND WIN32) + # set(lib_prop IMPORTED_IMPLIB) + #endif() -set(LAPACK_LIBRARY "${LAPACK_LIBRARY}" CACHE STRING "" FORCE) -set(F2C_LIBRARY "${F2C_LIBRARY}" CACHE STRING "" FORCE) -set(LAPACK_LIBRARY_RELEASE "${LAPACK_LIBRARY_RELEASE}" CACHE STRING "" FORCE) -set(LAPACK_LIBRARY_DEBUG "${LAPACK_LIBRARY_DEBUG}" CACHE STRING "" FORCE) -set(F2C_LIBRARY_RELEASE "${F2C_LIBRARY_RELEASE}" CACHE STRING "" FORCE) -set(F2C_LIBRARY_DEBUG "${F2C_LIBRARY_DEBUG}" CACHE STRING "" FORCE) + get_property(LAPACK_LIBRARY_RELEASE TARGET lapack PROPERTY ${lib_prop}_RELEASE) + get_property(LAPACK_LIBRARY_DEBUG TARGET lapack PROPERTY ${lib_prop}_DEBUG) -find_package_handle_standard_args(LAPACK DEFAULT_MSG LAPACK_LIBRARY LAPACK_INCLUDE_DIR) -mark_as_advanced(LAPACK_INCLUDE_DIR LAPACK_LIBRARY) + get_property(LAPACK_INCLUDE_DIR TARGET lapack PROPERTY INTERFACE_INCLUDE_DIRECTORIES) # Doesn't make much sense but ok. + select_library_configurations(LAPACK) -#TARGETS -if(CLAPACK_FOUND AND NOT TARGET clapack::clapack) - if(EXISTS "${LAPACK_LIBRARY_RELEASE_DLL}") - add_library(clapack::clapack SHARED IMPORTED) - set_target_properties(clapack::clapack PROPERTIES - IMPORTED_LOCATION_RELEASE "${LAPACK_LIBRARY_RELEASE_DLL}" - IMPORTED_IMPLIB_RELEASE "${oLAPACK_LIBRARY_RELEASE}" - INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}" - INTERFACE_LINK_LIBRARIES "$<$>:${oF2C_LIBRARY_RELEASE}>;$<$:${oF2C_LIBRARY_DEBUG}>;$<$>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$:${LAPACK_BLAS_LIBRARY_DEBUG}>;$;$" - IMPORTED_CONFIGURATIONS Release - IMPORTED_LINK_INTERFACE_LANGUAGES "C") - if(EXISTS "${LAPACK_LIBRARY_DEBUG_DLL}") - set_property(TARGET clapack::clapack APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug) - set_target_properties(clapack::clapack PROPERTIES - IMPORTED_LOCATION_DEBUG "${LAPACK_LIBRARY_DEBUG_DLL}" - IMPORTED_IMPLIB_DEBUG "${oLAPACK_LIBRARY_DEBUG}") - endif() - else() - add_library(clapack::clapack UNKNOWN IMPORTED) - set_target_properties(clapack::clapack PROPERTIES - IMPORTED_LOCATION_RELEASE "${oLAPACK_LIBRARY_RELEASE}" - INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}" - INTERFACE_LINK_LIBRARIES "$<$>:${oF2C_LIBRARY_RELEASE}>;$<$:${oF2C_LIBRARY_DEBUG}>;$<$>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$:${LAPACK_BLAS_LIBRARY_DEBUG}>;$;$" - IMPORTED_CONFIGURATIONS Release - IMPORTED_LINK_INTERFACE_LANGUAGES "C") - if(EXISTS "${LAPACK_LIBRARY_DEBUG}") - set_property(TARGET clapack::clapack APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug) - set_target_properties(clapack::clapack PROPERTIES - IMPORTED_LOCATION_DEBUG "${oLAPACK_LIBRARY_DEBUG}") - endif() - endif() -endif() - -# Ensure consistency with both CMake's vanilla as well as lapack-reference's FindLAPACK.cmake module and register the LAPACK::LAPACK target -if(CLAPACK_FOUND AND NOT TARGET LAPACK::LAPACK) - if(EXISTS "${LAPACK_LIBRARY_RELEASE_DLL}") - add_library(LAPACK::LAPACK SHARED IMPORTED) - set_target_properties(LAPACK::LAPACK PROPERTIES - IMPORTED_LOCATION_RELEASE "${LAPACK_LIBRARY_RELEASE_DLL}" - IMPORTED_IMPLIB_RELEASE "${oLAPACK_LIBRARY_RELEASE}" - INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}" - INTERFACE_LINK_LIBRARIES "$<$>:${oF2C_LIBRARY_RELEASE}>;$<$:${oF2C_LIBRARY_DEBUG}>;$<$>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$:${LAPACK_BLAS_LIBRARY_DEBUG}>;$;$" - IMPORTED_CONFIGURATIONS Release - IMPORTED_LINK_INTERFACE_LANGUAGES "C") - if(EXISTS "${LAPACK_LIBRARY_DEBUG_DLL}") - set_property(TARGET LAPACK::LAPACK APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug) - set_target_properties(LAPACK::LAPACK PROPERTIES - IMPORTED_LOCATION_DEBUG "${LAPACK_LIBRARY_DEBUG_DLL}" - IMPORTED_IMPLIB_DEBUG "${oLAPACK_LIBRARY_DEBUG}") - endif() - else() - add_library(LAPACK::LAPACK UNKNOWN IMPORTED) - set_target_properties(LAPACK::LAPACK PROPERTIES - IMPORTED_LOCATION_RELEASE "${oLAPACK_LIBRARY_RELEASE}" - INTERFACE_INCLUDE_DIRECTORIES "${LAPACK_INCLUDE_DIR}" - IMPORTED_CONFIGURATIONS Release - INTERFACE_LINK_LIBRARIES "$<$>:${oF2C_LIBRARY_RELEASE}>;$<$:${oF2C_LIBRARY_DEBUG}>;$<$>:${LAPACK_BLAS_LIBRARY_RELEASE}>;$<$:${LAPACK_BLAS_LIBRARY_DEBUG}>;$;$" - IMPORTED_LINK_INTERFACE_LANGUAGES "C") - if(EXISTS "${LAPACK_LIBRARY_DEBUG}") - set_property(TARGET LAPACK::LAPACK APPEND PROPERTY IMPORTED_CONFIGURATIONS Debug) - set_target_properties(LAPACK::LAPACK PROPERTIES - IMPORTED_LOCATION_DEBUG "${oLAPACK_LIBRARY_DEBUG}") - endif() - endif() -endif() + get_property(LAPACK_LINKER_FLAGS_RELEASE TARGET lapack PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE) + get_property(LAPACK_LINKER_FLAGS_DEBUG TARGET lapack PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG) -# Preserve backwards compatibility and also register the 'lapack' target -if(CLAPACK_FOUND AND NOT TARGET lapack) - add_library(lapack INTERFACE IMPORTED) - target_link_libraries(lapack INTERFACE LAPACK::LAPACK) + set(LAPACK_LIBRARIES "${LAPACK_LIBRARIES};$<$:${IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG}>;$<$>:${IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE}>") + set(LAPACK95_LIBRARIES "${LAPACK_LIBRARIES}") + set(LAPACK95_FOUND "TRUE") + set(LAPACK_LINKER_FLAGS "${LAPACK_LIBRARIES}") endif() +find_package_handle_standard_args(LAPACK DEFAULT_MSG LAPACK_LIBRARY LAPACK_INCLUDE_DIR ) +mark_as_advanced(LAPACK_INCLUDE_DIR LAPACK_LIBRARY) \ No newline at end of file From 9759dd20dabdda69b6251ab9aa272ca15d22503b Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 13:20:53 +0200 Subject: [PATCH 025/141] no find_dependency in modules! --- ports/clapack/FindLAPACK.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/clapack/FindLAPACK.cmake b/ports/clapack/FindLAPACK.cmake index b98847adf83660..25e363af5fe270 100644 --- a/ports/clapack/FindLAPACK.cmake +++ b/ports/clapack/FindLAPACK.cmake @@ -12,7 +12,7 @@ include(${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake) set(CLAPACK_VERSION "3.2.1") set(LAPACK_VERSION "${CLAPACK_VERSION}") #set(CMAKE_THREAD_PREFER_PTHREAD TRUE) -find_dependency(Threads) +find_package(Threads) find_package(clapack CONFIG REQUIRED) # This will be found ! From a8df6e7d64e183c3e459029e320b0d24bcf41303 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 14:24:13 +0200 Subject: [PATCH 026/141] add missing @ONLY --- ports/lapack-reference/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index abbadcdae9b341..39d60096ef8f2f 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -145,5 +145,5 @@ else() endif() set(BLA_VENDOR Generic) -configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake") +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) file(COPY "${CMAKE_CURRENT_LIST_DIR}/FindLAPACK.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") From 1e1819cced9e86ded7de7f78bb3d16e1d703d0f8 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 16:43:17 +0200 Subject: [PATCH 027/141] move stuff around --- ports/blas-impl/blas.pc.in | 8 ++++ ports/blas-impl/portfile.cmake | 44 +++++++++++++++++++ .../vcpkg-cmake-wrapper.cmake.in | 0 ports/blas-impl/vcpkg.json | 17 +++++++ ports/blas/portfile.cmake | 34 +------------- ports/blas/vcpkg.json | 5 +-- ports/lapack-impl/portfile.cmake | 22 ++++++++++ .../vcpkg-cmake-wrapper.cmake.in | 0 ports/lapack-impl/vcpkg.json | 21 +++++++++ ports/lapack-reference/portfile.cmake | 27 +++--------- ports/lapack/portfile.cmake | 23 +--------- ports/lapack/vcpkg.json | 9 +--- 12 files changed, 123 insertions(+), 87 deletions(-) create mode 100644 ports/blas-impl/blas.pc.in create mode 100644 ports/blas-impl/portfile.cmake rename ports/{blas => blas-impl}/vcpkg-cmake-wrapper.cmake.in (100%) create mode 100644 ports/blas-impl/vcpkg.json create mode 100644 ports/lapack-impl/portfile.cmake rename ports/{lapack => lapack-impl}/vcpkg-cmake-wrapper.cmake.in (100%) create mode 100644 ports/lapack-impl/vcpkg.json diff --git a/ports/blas-impl/blas.pc.in b/ports/blas-impl/blas.pc.in new file mode 100644 index 00000000000000..49f7f103dc1420 --- /dev/null +++ b/ports/blas-impl/blas.pc.in @@ -0,0 +1,8 @@ +prefix=${pcfiledir}/../.. + +Name: BLAS +Description: Implementation of BLAS +Version: +Requires: @requires@ +Libs: @libs@ +Cflags: @cflags@ diff --git a/ports/blas-impl/portfile.cmake b/ports/blas-impl/portfile.cmake new file mode 100644 index 00000000000000..0e1a537de6b823 --- /dev/null +++ b/ports/blas-impl/portfile.cmake @@ -0,0 +1,44 @@ +SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +# OpenBLAS +if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) + set(requires "") # TODO: figure out the flags required? + set(libs "-framework Accelerate") + set(cflags "-framework Accelerate") +else() + set(BLA_VENDOR OpenBLAS) + set(requires openblas) +endif() + +if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_CRT_LINKAGE STREQUAL "static")) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) + endif() +endif() + +# For possible overlays: + +#NETLIB reference implementation (contained in lapack-reference) +#set(BLA_VENDOR Generic) + +# Intel MKL +#if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) +# set(BLA_VENDOR Intel10_64lp) +#elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) +# set(BLA_VENDOR Intel10_32) +#else() +# message(FATAL_ERROR "Unsupported target architecture for Intel MKL!") +#endif() + +# Apple Accelerate Framework +# set(BLA_VENDOR Apple) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) +else() + set(BLA_STATIC OFF) +endif() + +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/blas/vcpkg-cmake-wrapper.cmake" @ONLY) diff --git a/ports/blas/vcpkg-cmake-wrapper.cmake.in b/ports/blas-impl/vcpkg-cmake-wrapper.cmake.in similarity index 100% rename from ports/blas/vcpkg-cmake-wrapper.cmake.in rename to ports/blas-impl/vcpkg-cmake-wrapper.cmake.in diff --git a/ports/blas-impl/vcpkg.json b/ports/blas-impl/vcpkg.json new file mode 100644 index 00000000000000..5246d26a11002b --- /dev/null +++ b/ports/blas-impl/vcpkg.json @@ -0,0 +1,17 @@ +{ + "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", + "name": "blas-impl", + "version-date": "2022-04-22", + "description": "Metapackage for packages which provide BLAS", + "license": null, + "dependencies": [ + { + "name": "openblas", + "platform": "!osx | (staticcrt & windows)" + }, + { + "name": "vcpkg-cmake", + "host": true + } + ] +} diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index 73999abc2ea60a..d45bd8906b8b79 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -1,38 +1,6 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -# OpenBLAS -if(VCPKG_TARGET_IS_OSX) - set(BLA_VENDOR Apple) -else() - set(BLA_VENDOR OpenBLAS) -endif() - -# For possible overlays: - -#NETLIB reference implementation (contained in lapack-reference) -#set(BLA_VENDOR Generic) - -# Intel MKL -#if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) -# set(BLA_VENDOR Intel10_64lp) -#elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) -# set(BLA_VENDOR Intel10_32) -#else() -# message(FATAL_ERROR "Unsupported target architecture for Intel MKL!") -#endif() - -# Apple Accelerate Framework -# set(BLA_VENDOR Apple) - -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(BLA_STATIC ON) -else() - set(BLA_STATIC OFF) -endif() - -configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY) # Make sure BLAS can be found vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" - -DBLA_VENDOR=${BLA_VENDOR} - -DBLA_STATIC=${BLA_STATIC}) + ) diff --git a/ports/blas/vcpkg.json b/ports/blas/vcpkg.json index 40861e063fb8a2..8d9792d862e9d7 100644 --- a/ports/blas/vcpkg.json +++ b/ports/blas/vcpkg.json @@ -5,10 +5,7 @@ "description": "Metapackage for packages which provide BLAS", "license": null, "dependencies": [ - { - "name": "openblas", - "platform": "!osx" - }, + "blas-impl", { "name": "vcpkg-cmake", "host": true diff --git a/ports/lapack-impl/portfile.cmake b/ports/lapack-impl/portfile.cmake new file mode 100644 index 00000000000000..8fc00948fa3f3d --- /dev/null +++ b/ports/lapack-impl/portfile.cmake @@ -0,0 +1,22 @@ +SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) +else() + set(BLA_STATIC OFF) +endif() + +set(BLA_VENDOR Generic) +set(installed_wrapper "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") +set(installed_module "${CURRENT_INSTALLED_DIR}/share/lapack/FindLAPACK.cmake") +if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) + unset(installed_module) +elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) +else() + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) +endif() diff --git a/ports/lapack/vcpkg-cmake-wrapper.cmake.in b/ports/lapack-impl/vcpkg-cmake-wrapper.cmake.in similarity index 100% rename from ports/lapack/vcpkg-cmake-wrapper.cmake.in rename to ports/lapack-impl/vcpkg-cmake-wrapper.cmake.in diff --git a/ports/lapack-impl/vcpkg.json b/ports/lapack-impl/vcpkg.json new file mode 100644 index 00000000000000..ca27c5d887b7f5 --- /dev/null +++ b/ports/lapack-impl/vcpkg.json @@ -0,0 +1,21 @@ +{ + "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", + "name": "lapack-impl", + "version-date": "2022-02-22", + "description": "Metapackage for packages which provide LAPACK", + "license": null, + "dependencies": [ + { + "name": "clapack", + "platform": "(arm & windows) | uwp" + }, + { + "name": "lapack-reference", + "platform": "!((arm & windows) | uwp | osx)" + }, + { + "name": "vcpkg-cmake", + "host": true + } + ] +} diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 39d60096ef8f2f..59ea46a8619a37 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -36,14 +36,6 @@ endif() set(USE_OPTIMIZED_BLAS OFF) if("noblas" IN_LIST FEATURES) set(USE_OPTIMIZED_BLAS ON) - set(pcfile "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/openblas.pc") - if(EXISTS "${pcfile}") - file(CREATE_LINK "${pcfile}" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" COPY_ON_ERROR) - endif() - set(pcfile "${CURRENT_INSTALLED_DIR}/debug/lib/pkgconfig/openblas.pc") - if(EXISTS "${pcfile}") - file(CREATE_LINK "${pcfile}" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" COPY_ON_ERROR) - endif() endif() set(VCPKG_CRT_LINKAGE_BACKUP ${VCPKG_CRT_LINKAGE}) @@ -76,41 +68,36 @@ vcpkg_cmake_config_fixup(PACKAGE_NAME lapack-${lapack_ver} CONFIG_PATH lib/cmake set(pcfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc") if(EXISTS "${pcfile}") file(READ "${pcfile}" _contents) - set(_contents "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}") - file(WRITE "${pcfile}" "${_contents}") + file(WRITE "${pcfile}" "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}") endif() set(pcfile "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc") if(EXISTS "${pcfile}") file(READ "${pcfile}" _contents) - set(_contents "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}") - file(WRITE "${pcfile}" "${_contents}") + file(WRITE "${pcfile}" "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}") endif() + if(NOT USE_OPTIMIZED_BLAS AND NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) set(pcfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc") if(EXISTS "${pcfile}") file(READ "${pcfile}" _contents) - set(_contents "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}") - file(WRITE "${pcfile}" "${_contents}") + file(WRITE "${pcfile}" "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}") endif() set(pcfile "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc") if(EXISTS "${pcfile}") file(READ "${pcfile}" _contents) - set(_contents "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}") - file(WRITE "${pcfile}" "${_contents}") + file(WRITE "${pcfile}" "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}") endif() endif() if("cblas" IN_LIST FEATURES) set(pcfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/cblas.pc") if(EXISTS "${pcfile}") file(READ "${pcfile}" _contents) - set(_contents "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}") - file(WRITE "${pcfile}" "${_contents}") + file(WRITE "${pcfile}" "prefix=${CURRENT_INSTALLED_DIR}\n${_contents}") endif() set(pcfile "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/cblas.pc") if(EXISTS "${pcfile}") file(READ "${pcfile}" _contents) - set(_contents "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}") - file(WRITE "${pcfile}" "${_contents}") + file(WRITE "${pcfile}" "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}") endif() endif() vcpkg_fixup_pkgconfig() diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index c3af28b697cf69..37b09592d62865 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -1,27 +1,6 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(BLA_STATIC ON) -else() - set(BLA_STATIC OFF) -endif() - -set(BLA_VENDOR Generic) -if(VCPKG_TARGET_IS_OSX) - set(BLA_VENDOR Apple) - configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) -elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) - configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) - configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) -else() - configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) - configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) -endif() - # Make sure LAPACK can be found vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" - -DCMAKE_MODULE_PATH="${CURRENT_PACKAGES_DIR}/share/lapack" - -DBLA_VENDOR="${BLA_VENDOR}" - -DBLA_STATIC="${BLA_STATIC}") - + -DCMAKE_MODULE_PATH="${CURRENT_PACKAGES_DIR}/share/lapack") diff --git a/ports/lapack/vcpkg.json b/ports/lapack/vcpkg.json index 8a26a743e98a27..4c972d1b72df34 100644 --- a/ports/lapack/vcpkg.json +++ b/ports/lapack/vcpkg.json @@ -5,14 +5,7 @@ "description": "Metapackage for packages which provide LAPACK", "license": null, "dependencies": [ - { - "name": "clapack", - "platform": "(arm & windows) | uwp" - }, - { - "name": "lapack-reference", - "platform": "!((arm & windows) | uwp)" - }, + "lapack-impl", { "name": "vcpkg-cmake", "host": true From 63b429da1970e2ceb07e050b44a3dfb42a8370d0 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 16:58:45 +0200 Subject: [PATCH 028/141] fix platform expr --- ports/blas-impl/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/blas-impl/vcpkg.json b/ports/blas-impl/vcpkg.json index 5246d26a11002b..a61d4b459ad3f9 100644 --- a/ports/blas-impl/vcpkg.json +++ b/ports/blas-impl/vcpkg.json @@ -7,7 +7,7 @@ "dependencies": [ { "name": "openblas", - "platform": "!osx | (staticcrt & windows)" + "platform": "!osx | (static & windows)" }, { "name": "vcpkg-cmake", From dc751ce07b2234f6320333dd4e47db85d29d99cb Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 17:08:43 +0200 Subject: [PATCH 029/141] be consistent as the comment says --- ports/blas-impl/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/blas-impl/portfile.cmake b/ports/blas-impl/portfile.cmake index 0e1a537de6b823..c1574a28f3981b 100644 --- a/ports/blas-impl/portfile.cmake +++ b/ports/blas-impl/portfile.cmake @@ -11,7 +11,7 @@ else() set(requires openblas) endif() -if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_CRT_LINKAGE STREQUAL "static")) +if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) if(NOT VCPKG_BUILD_TYPE) configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) From 677cb689f13548b3f75ff6cd076e14c7e3dd6f24 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 23:20:53 +0200 Subject: [PATCH 030/141] rename test ports with -test rename -impl ports to old name move -test ports into script/test_ports --- ports/blas-impl/portfile.cmake | 44 ------------------ ports/{blas-impl => blas}/blas.pc.in | 0 ports/blas/portfile.cmake | 46 +++++++++++++++++-- .../vcpkg-cmake-wrapper.cmake.in | 0 ports/blas/vcpkg.json | 5 +- ports/lapack-impl/portfile.cmake | 22 --------- ports/lapack/portfile.cmake | 24 ++++++++-- .../vcpkg-cmake-wrapper.cmake.in | 0 ports/lapack/vcpkg.json | 9 +++- .../test_ports/blas-test}/CMakeLists.txt | 0 scripts/test_ports/blas-test/portfile.cmake | 6 +++ .../test_ports/blas-test}/vcpkg.json | 7 +-- .../test_ports/lapack-test}/CMakeLists.txt | 0 scripts/test_ports/lapack-test/portfile.cmake | 6 +++ .../test_ports/lapack-test}/vcpkg.json | 11 +---- 15 files changed, 90 insertions(+), 90 deletions(-) delete mode 100644 ports/blas-impl/portfile.cmake rename ports/{blas-impl => blas}/blas.pc.in (100%) rename ports/{blas-impl => blas}/vcpkg-cmake-wrapper.cmake.in (100%) delete mode 100644 ports/lapack-impl/portfile.cmake rename ports/{lapack-impl => lapack}/vcpkg-cmake-wrapper.cmake.in (100%) rename {ports/blas => scripts/test_ports/blas-test}/CMakeLists.txt (100%) create mode 100644 scripts/test_ports/blas-test/portfile.cmake rename {ports/blas-impl => scripts/test_ports/blas-test}/vcpkg.json (73%) rename {ports/lapack => scripts/test_ports/lapack-test}/CMakeLists.txt (100%) create mode 100644 scripts/test_ports/lapack-test/portfile.cmake rename {ports/lapack-impl => scripts/test_ports/lapack-test}/vcpkg.json (60%) diff --git a/ports/blas-impl/portfile.cmake b/ports/blas-impl/portfile.cmake deleted file mode 100644 index c1574a28f3981b..00000000000000 --- a/ports/blas-impl/portfile.cmake +++ /dev/null @@ -1,44 +0,0 @@ -SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) - -# OpenBLAS -if(VCPKG_TARGET_IS_OSX) - set(BLA_VENDOR Apple) - set(requires "") # TODO: figure out the flags required? - set(libs "-framework Accelerate") - set(cflags "-framework Accelerate") -else() - set(BLA_VENDOR OpenBLAS) - set(requires openblas) -endif() - -if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) - if(NOT VCPKG_BUILD_TYPE) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) - endif() -endif() - -# For possible overlays: - -#NETLIB reference implementation (contained in lapack-reference) -#set(BLA_VENDOR Generic) - -# Intel MKL -#if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) -# set(BLA_VENDOR Intel10_64lp) -#elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) -# set(BLA_VENDOR Intel10_32) -#else() -# message(FATAL_ERROR "Unsupported target architecture for Intel MKL!") -#endif() - -# Apple Accelerate Framework -# set(BLA_VENDOR Apple) - -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(BLA_STATIC ON) -else() - set(BLA_STATIC OFF) -endif() - -configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/blas/vcpkg-cmake-wrapper.cmake" @ONLY) diff --git a/ports/blas-impl/blas.pc.in b/ports/blas/blas.pc.in similarity index 100% rename from ports/blas-impl/blas.pc.in rename to ports/blas/blas.pc.in diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index d45bd8906b8b79..c1574a28f3981b 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -1,6 +1,44 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -# Make sure BLAS can be found -vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" - OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" - ) +# OpenBLAS +if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) + set(requires "") # TODO: figure out the flags required? + set(libs "-framework Accelerate") + set(cflags "-framework Accelerate") +else() + set(BLA_VENDOR OpenBLAS) + set(requires openblas) +endif() + +if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) + endif() +endif() + +# For possible overlays: + +#NETLIB reference implementation (contained in lapack-reference) +#set(BLA_VENDOR Generic) + +# Intel MKL +#if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) +# set(BLA_VENDOR Intel10_64lp) +#elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) +# set(BLA_VENDOR Intel10_32) +#else() +# message(FATAL_ERROR "Unsupported target architecture for Intel MKL!") +#endif() + +# Apple Accelerate Framework +# set(BLA_VENDOR Apple) + +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) +else() + set(BLA_STATIC OFF) +endif() + +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/blas/vcpkg-cmake-wrapper.cmake" @ONLY) diff --git a/ports/blas-impl/vcpkg-cmake-wrapper.cmake.in b/ports/blas/vcpkg-cmake-wrapper.cmake.in similarity index 100% rename from ports/blas-impl/vcpkg-cmake-wrapper.cmake.in rename to ports/blas/vcpkg-cmake-wrapper.cmake.in diff --git a/ports/blas/vcpkg.json b/ports/blas/vcpkg.json index 8d9792d862e9d7..f0b8d2c49f0281 100644 --- a/ports/blas/vcpkg.json +++ b/ports/blas/vcpkg.json @@ -5,7 +5,10 @@ "description": "Metapackage for packages which provide BLAS", "license": null, "dependencies": [ - "blas-impl", + { + "name": "openblas", + "platform": "!osx | (static & windows)" + }, { "name": "vcpkg-cmake", "host": true diff --git a/ports/lapack-impl/portfile.cmake b/ports/lapack-impl/portfile.cmake deleted file mode 100644 index 8fc00948fa3f3d..00000000000000 --- a/ports/lapack-impl/portfile.cmake +++ /dev/null @@ -1,22 +0,0 @@ -SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) - -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(BLA_STATIC ON) -else() - set(BLA_STATIC OFF) -endif() - -set(BLA_VENDOR Generic) -set(installed_wrapper "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") -set(installed_module "${CURRENT_INSTALLED_DIR}/share/lapack/FindLAPACK.cmake") -if(VCPKG_TARGET_IS_OSX) - set(BLA_VENDOR Apple) - configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) - unset(installed_module) -elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) - configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) - configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) -else() - configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) - configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) -endif() diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 37b09592d62865..8fc00948fa3f3d 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -1,6 +1,22 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -# Make sure LAPACK can be found -vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" - OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" - -DCMAKE_MODULE_PATH="${CURRENT_PACKAGES_DIR}/share/lapack") +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) +else() + set(BLA_STATIC OFF) +endif() + +set(BLA_VENDOR Generic) +set(installed_wrapper "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") +set(installed_module "${CURRENT_INSTALLED_DIR}/share/lapack/FindLAPACK.cmake") +if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) + unset(installed_module) +elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) +else() + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) +endif() diff --git a/ports/lapack-impl/vcpkg-cmake-wrapper.cmake.in b/ports/lapack/vcpkg-cmake-wrapper.cmake.in similarity index 100% rename from ports/lapack-impl/vcpkg-cmake-wrapper.cmake.in rename to ports/lapack/vcpkg-cmake-wrapper.cmake.in diff --git a/ports/lapack/vcpkg.json b/ports/lapack/vcpkg.json index 4c972d1b72df34..5d8921f44b6579 100644 --- a/ports/lapack/vcpkg.json +++ b/ports/lapack/vcpkg.json @@ -5,7 +5,14 @@ "description": "Metapackage for packages which provide LAPACK", "license": null, "dependencies": [ - "lapack-impl", + { + "name": "clapack", + "platform": "(arm & windows) | uwp" + }, + { + "name": "lapack-reference", + "platform": "!((arm & windows) | uwp | osx)" + }, { "name": "vcpkg-cmake", "host": true diff --git a/ports/blas/CMakeLists.txt b/scripts/test_ports/blas-test/CMakeLists.txt similarity index 100% rename from ports/blas/CMakeLists.txt rename to scripts/test_ports/blas-test/CMakeLists.txt diff --git a/scripts/test_ports/blas-test/portfile.cmake b/scripts/test_ports/blas-test/portfile.cmake new file mode 100644 index 00000000000000..d45bd8906b8b79 --- /dev/null +++ b/scripts/test_ports/blas-test/portfile.cmake @@ -0,0 +1,6 @@ +SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +# Make sure BLAS can be found +vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" + OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" + ) diff --git a/ports/blas-impl/vcpkg.json b/scripts/test_ports/blas-test/vcpkg.json similarity index 73% rename from ports/blas-impl/vcpkg.json rename to scripts/test_ports/blas-test/vcpkg.json index a61d4b459ad3f9..01765640511687 100644 --- a/ports/blas-impl/vcpkg.json +++ b/scripts/test_ports/blas-test/vcpkg.json @@ -1,14 +1,11 @@ { "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", - "name": "blas-impl", + "name": "blas-test", "version-date": "2022-04-22", "description": "Metapackage for packages which provide BLAS", "license": null, "dependencies": [ - { - "name": "openblas", - "platform": "!osx | (static & windows)" - }, + "blas", { "name": "vcpkg-cmake", "host": true diff --git a/ports/lapack/CMakeLists.txt b/scripts/test_ports/lapack-test/CMakeLists.txt similarity index 100% rename from ports/lapack/CMakeLists.txt rename to scripts/test_ports/lapack-test/CMakeLists.txt diff --git a/scripts/test_ports/lapack-test/portfile.cmake b/scripts/test_ports/lapack-test/portfile.cmake new file mode 100644 index 00000000000000..37b09592d62865 --- /dev/null +++ b/scripts/test_ports/lapack-test/portfile.cmake @@ -0,0 +1,6 @@ +SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +# Make sure LAPACK can be found +vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" + OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" + -DCMAKE_MODULE_PATH="${CURRENT_PACKAGES_DIR}/share/lapack") diff --git a/ports/lapack-impl/vcpkg.json b/scripts/test_ports/lapack-test/vcpkg.json similarity index 60% rename from ports/lapack-impl/vcpkg.json rename to scripts/test_ports/lapack-test/vcpkg.json index ca27c5d887b7f5..60dcd751d682e4 100644 --- a/ports/lapack-impl/vcpkg.json +++ b/scripts/test_ports/lapack-test/vcpkg.json @@ -1,18 +1,11 @@ { "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", - "name": "lapack-impl", + "name": "lapack-test", "version-date": "2022-02-22", "description": "Metapackage for packages which provide LAPACK", "license": null, "dependencies": [ - { - "name": "clapack", - "platform": "(arm & windows) | uwp" - }, - { - "name": "lapack-reference", - "platform": "!((arm & windows) | uwp | osx)" - }, + "lapack", { "name": "vcpkg-cmake", "host": true From 5fe252b99b2a404c20eaf81b365039c4a5d02853 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 23:39:59 +0200 Subject: [PATCH 031/141] use version-string to define blas impl. --- ports/blas/portfile.cmake | 75 ++++++++++++++++++++----------------- ports/blas/vcpkg.json | 2 +- ports/lapack/portfile.cmake | 43 +++++++++++---------- ports/lapack/vcpkg.json | 2 +- 4 files changed, 66 insertions(+), 56 deletions(-) diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index c1574a28f3981b..18300f6b7c3530 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -1,44 +1,49 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -# OpenBLAS -if(VCPKG_TARGET_IS_OSX) - set(BLA_VENDOR Apple) - set(requires "") # TODO: figure out the flags required? - set(libs "-framework Accelerate") - set(cflags "-framework Accelerate") -else() - set(BLA_VENDOR OpenBLAS) - set(requires openblas) -endif() - -if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) - if(NOT VCPKG_BUILD_TYPE) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) +file(READ "${CURRENT_PORT_DIR}/vcpkg.json" manifest_contents) +string(JSON ver_str GET "${manifest_contents}" version-string) + +if(ver_str STREQUAL "default") + # OpenBLAS + if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) + set(requires "") # TODO: figure out the flags required? + set(libs "-framework Accelerate") + set(cflags "-framework Accelerate") + else() + set(BLA_VENDOR OpenBLAS) + set(requires openblas) endif() -endif() -# For possible overlays: + if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) + endif() + endif() + + # For possible overlays: -#NETLIB reference implementation (contained in lapack-reference) -#set(BLA_VENDOR Generic) + #NETLIB reference implementation (contained in lapack-reference) + #set(BLA_VENDOR Generic) -# Intel MKL -#if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) -# set(BLA_VENDOR Intel10_64lp) -#elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) -# set(BLA_VENDOR Intel10_32) -#else() -# message(FATAL_ERROR "Unsupported target architecture for Intel MKL!") -#endif() + # Intel MKL + #if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) + # set(BLA_VENDOR Intel10_64lp) + #elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL x86) + # set(BLA_VENDOR Intel10_32) + #else() + # message(FATAL_ERROR "Unsupported target architecture for Intel MKL!") + #endif() -# Apple Accelerate Framework -# set(BLA_VENDOR Apple) + # Apple Accelerate Framework + # set(BLA_VENDOR Apple) -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(BLA_STATIC ON) -else() - set(BLA_STATIC OFF) -endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) + else() + set(BLA_STATIC OFF) + endif() -configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/blas/vcpkg-cmake-wrapper.cmake" @ONLY) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/blas/vcpkg-cmake-wrapper.cmake" @ONLY) +endif() \ No newline at end of file diff --git a/ports/blas/vcpkg.json b/ports/blas/vcpkg.json index f0b8d2c49f0281..6dd5232201bd33 100644 --- a/ports/blas/vcpkg.json +++ b/ports/blas/vcpkg.json @@ -1,7 +1,7 @@ { "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", "name": "blas", - "version-date": "2022-04-22", + "version-string": "default", "description": "Metapackage for packages which provide BLAS", "license": null, "dependencies": [ diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 8fc00948fa3f3d..113af12d929ccb 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -1,22 +1,27 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(BLA_STATIC ON) -else() - set(BLA_STATIC OFF) -endif() +file(READ "${CURRENT_PORT_DIR}/vcpkg.json" manifest_contents) +string(JSON ver_str GET "${manifest_contents}" version-string) -set(BLA_VENDOR Generic) -set(installed_wrapper "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") -set(installed_module "${CURRENT_INSTALLED_DIR}/share/lapack/FindLAPACK.cmake") -if(VCPKG_TARGET_IS_OSX) - set(BLA_VENDOR Apple) - configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) - unset(installed_module) -elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) - configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) - configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) -else() - configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) - configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) -endif() +if(ver_str STREQUAL "default") + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(BLA_STATIC ON) + else() + set(BLA_STATIC OFF) + endif() + + set(BLA_VENDOR Generic) + set(installed_wrapper "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") + set(installed_module "${CURRENT_INSTALLED_DIR}/share/lapack/FindLAPACK.cmake") + if(VCPKG_TARGET_IS_OSX) + set(BLA_VENDOR Apple) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) + unset(installed_module) + elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) + else() + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) + configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) + endif() +endif() \ No newline at end of file diff --git a/ports/lapack/vcpkg.json b/ports/lapack/vcpkg.json index 5d8921f44b6579..3446f3b57349e0 100644 --- a/ports/lapack/vcpkg.json +++ b/ports/lapack/vcpkg.json @@ -1,7 +1,7 @@ { "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", "name": "lapack", - "version-date": "2022-02-22", + "version-string": "default", "description": "Metapackage for packages which provide LAPACK", "license": null, "dependencies": [ From 272a28cb810d3f9b2a4ecd72e7e319825fb3f0cc Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Fri, 22 Apr 2022 23:42:36 +0200 Subject: [PATCH 032/141] add version stuff --- versions/b-/blas.json | 5 +++++ versions/baseline.json | 12 ++++++------ versions/c-/clapack.json | 5 +++++ versions/l-/lapack-reference.json | 5 +++++ versions/l-/lapack.json | 5 +++++ versions/o-/openblas.json | 5 +++++ 6 files changed, 31 insertions(+), 6 deletions(-) diff --git a/versions/b-/blas.json b/versions/b-/blas.json index c8b3ade64a24bc..3aeac030d9f12a 100644 --- a/versions/b-/blas.json +++ b/versions/b-/blas.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "43f1fce5e91c782e5a75cce19f6ba7cc9be6e9ec", + "version-string": "default", + "port-version": 0 + }, { "git-tree": "0d105be9337f4a6f294a7eced2da18e8cdb99051", "version-string": "1", diff --git a/versions/baseline.json b/versions/baseline.json index 053f8a940803ea..c7847eb87e90fd 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -489,8 +489,8 @@ "port-version": 0 }, "blas": { - "baseline": "1", - "port-version": 1 + "baseline": "default", + "port-version": 0 }, "blaze": { "baseline": "3.8", @@ -1390,7 +1390,7 @@ }, "clapack": { "baseline": "3.2.1", - "port-version": 20 + "port-version": 21 }, "clara": { "baseline": "1.1.5", @@ -3317,12 +3317,12 @@ "port-version": 0 }, "lapack": { - "baseline": "2022-02-22", + "baseline": "default", "port-version": 0 }, "lapack-reference": { "baseline": "3.10.0", - "port-version": 0 + "port-version": 1 }, "lastools": { "baseline": "2020-05-09", @@ -5050,7 +5050,7 @@ }, "openblas": { "baseline": "0.3.19", - "port-version": 0 + "port-version": 1 }, "opencascade": { "baseline": "7.6.0", diff --git a/versions/c-/clapack.json b/versions/c-/clapack.json index 421ccf45a63691..397fbc55e8fa3e 100644 --- a/versions/c-/clapack.json +++ b/versions/c-/clapack.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "53ec27c8e5305579c6447950fb127e79cab4e214", + "version": "3.2.1", + "port-version": 21 + }, { "git-tree": "2fd47cedfcd13b7c3a339c7acf4b89c14caea8d5", "version": "3.2.1", diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index 999e4f135ff049..1ff0f84c9ed4fb 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "da59cc546e4177caca786c3fcec9344c5cb6ad71", + "version": "3.10.0", + "port-version": 1 + }, { "git-tree": "14b5e3ab7315ce36951f759c6254712ed41cc0af", "version": "3.10.0", diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index 5803b592258a71..c349379898c57c 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "b5e4901fcfb82f012faf9106ef45df4f534c4fdc", + "version-string": "default", + "port-version": 0 + }, { "git-tree": "3a9c5b51e3480db058719db223df981e0e679819", "version-date": "2022-02-22", diff --git a/versions/o-/openblas.json b/versions/o-/openblas.json index 0cf8441a75e8b1..4a7a2e22f28ea3 100644 --- a/versions/o-/openblas.json +++ b/versions/o-/openblas.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "00e0c4b90559281d9e7838a691ec0985f51f7b18", + "version": "0.3.19", + "port-version": 1 + }, { "git-tree": "631541b0dcf2ea300f96829885d9bc0282d38a65", "version": "0.3.19", From 73037ad582d63a3d6226b21a6777f7478db880e4 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 1 May 2022 10:13:02 +0200 Subject: [PATCH 033/141] fix try compile --- scripts/buildsystems/vcpkg.cmake | 4 ++ scripts/toolchains/linux.cmake | 95 +++++++++++++++++--------------- scripts/toolchains/osx.cmake | 49 ++++++++-------- scripts/toolchains/uwp.cmake | 81 ++++++++++++++------------- scripts/toolchains/windows.cmake | 66 +++++++++++----------- 5 files changed, 157 insertions(+), 138 deletions(-) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index ce3a9bbe1d6ab1..f6c675b58c4eed 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -206,6 +206,10 @@ if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE) include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") endif() +list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CHAINLOAD_TOOLCHAIN_FILE VCPKG_TARGET_TRIPLET VCPKG_HOST_TRIPLET VCPKG_INSTALLED_DIR VCPKG_PREFER_SYSTEM_LIBS) + +# TODO: Need to override try_compile and try_run to pass some variables in project mode vs src mode + if(VCPKG_TOOLCHAIN) cmake_policy(POP) return() diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake index 2fac4922deacf7..1f12e4853fbeb4 100644 --- a/scripts/toolchains/linux.cmake +++ b/scripts/toolchains/linux.cmake @@ -1,53 +1,58 @@ if(NOT _VCPKG_LINUX_TOOLCHAIN) -set(_VCPKG_LINUX_TOOLCHAIN 1) -if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") -endif() -set(CMAKE_SYSTEM_NAME Linux CACHE STRING "") -if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") - string(APPEND VCPKG_C_FLAGS " -m32") - string(APPEND VCPKG_CXX_FLAGS " -m32") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR armv7l CACHE STRING "") - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") - if(NOT DEFINED CMAKE_CXX_COMPILER) - set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++") - endif() - if(NOT DEFINED CMAKE_C_COMPILER) - set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc") - endif() - if(NOT DEFINED CMAKE_ASM_COMPILER) - set(CMAKE_ASM_COMPILER "arm-linux-gnueabihf-gcc") - endif() - if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) - set(CMAKE_ASM-ATT_COMPILER "arm-linux-gnueabihf-as") - endif() - message(STATUS "Cross compiling arm on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + ) + set(_VCPKG_LINUX_TOOLCHAIN 1) + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") endif() -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "") - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") - if(NOT DEFINED CMAKE_CXX_COMPILER) - set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++") - endif() - if(NOT DEFINED CMAKE_C_COMPILER) - set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") + set(CMAKE_SYSTEM_NAME Linux CACHE STRING "") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + string(APPEND VCPKG_C_FLAGS " -m32") + string(APPEND VCPKG_CXX_FLAGS " -m32") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR armv7l CACHE STRING "") + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++") + endif() + if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc") + endif() + if(NOT DEFINED CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER "arm-linux-gnueabihf-gcc") + endif() + if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) + set(CMAKE_ASM-ATT_COMPILER "arm-linux-gnueabihf-as") + endif() + message(STATUS "Cross compiling arm on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") endif() - if(NOT DEFINED CMAKE_ASM_COMPILER) - set(CMAKE_ASM_COMPILER "aarch64-linux-gnu-gcc") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "") + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++") + endif() + if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") + endif() + if(NOT DEFINED CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER "aarch64-linux-gnu-gcc") + endif() + if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) + set(CMAKE_ASM-ATT_COMPILER "aarch64-linux-gnu-as") + endif() + message(STATUS "Cross compiling arm64 on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") endif() - if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) - set(CMAKE_ASM-ATT_COMPILER "aarch64-linux-gnu-as") - endif() - message(STATUS "Cross compiling arm64 on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") endif() -endif() -get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) -if(NOT _CMAKE_IN_TRY_COMPILE) + string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ") string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ") string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ") @@ -65,5 +70,5 @@ if(NOT _CMAKE_IN_TRY_COMPILE) string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") -endif() + endif() diff --git a/scripts/toolchains/osx.cmake b/scripts/toolchains/osx.cmake index efad6c5fedaca8..86950dc54cb0d3 100644 --- a/scripts/toolchains/osx.cmake +++ b/scripts/toolchains/osx.cmake @@ -1,29 +1,34 @@ if(NOT _VCPKG_OSX_TOOLCHAIN) -set(_VCPKG_OSX_TOOLCHAIN 1) -if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") - set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") -else() - set(CMAKE_SYSTEM_VERSION "17.0.0" CACHE STRING "") -endif() -set(CMAKE_SYSTEM_NAME Darwin CACHE STRING "") + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + ) + set(_VCPKG_OSX_TOOLCHAIN 1) + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") + set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") + else() + set(CMAKE_SYSTEM_VERSION "17.0.0" CACHE STRING "") + endif() + set(CMAKE_SYSTEM_NAME Darwin CACHE STRING "") -set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") + set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") -if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR) - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR arm64 CACHE STRING "") - else() - set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "") + if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR arm64 CACHE STRING "") + else() + set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "") + endif() endif() -endif() -get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) -if(NOT _CMAKE_IN_TRY_COMPILE) + string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ") string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ") string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ") @@ -37,5 +42,5 @@ if(NOT _CMAKE_IN_TRY_COMPILE) string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") -endif() + endif() diff --git a/scripts/toolchains/uwp.cmake b/scripts/toolchains/uwp.cmake index 9e76d4512dc723..63a5c46e6f3019 100644 --- a/scripts/toolchains/uwp.cmake +++ b/scripts/toolchains/uwp.cmake @@ -1,41 +1,45 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) -set(_VCPKG_WINDOWS_TOOLCHAIN 1) -set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") - -set(CMAKE_SYSTEM_NAME WindowsStore CACHE STRING "") - -if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") -endif() - -if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) -endif() - -if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") - # any of the four platforms can run x86 binaries - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") - # arm64 can run binaries of any of the four platforms after Windows 11 - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + VCPKG_PLATFORM_TOOLSET) + + set(_VCPKG_WINDOWS_TOOLCHAIN 1) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") + + set(CMAKE_SYSTEM_NAME WindowsStore CACHE STRING "") + + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") endif() - if(NOT DEFINED CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") + if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) endif() -endif() -get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) -if(NOT _CMAKE_IN_TRY_COMPILE) + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") + # any of the four platforms can run x86 binaries + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") + # arm64 can run binaries of any of the four platforms after Windows 11 + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + endif() + + if(NOT DEFINED CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") + endif() + endif() if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") @@ -80,14 +84,13 @@ if(NOT _CMAKE_IN_TRY_COMPILE) if(CMAKE_GENERATOR MATCHES "Ninja") set(additional_exe_flags "/WINMD") # VS Generator chokes on this in the compiler detection endif() - string(APPEND CMAKE_SHARED_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG /WINMD:NO /APPCONTAINER /SUBSYSTEM:CONSOLE /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}") + string(APPEND CMAKE_SHARED_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG /WINMD:NO /APPCONTAINER /SUBSYSTEM:CONSOLE /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS}") # VS adds /DEBUG:FULL /TLBID:1. WindowsApp.lib is in CMAKE_C|CXX_STANDARD_LIBRARIES - string(APPEND CMAKE_EXE_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG ${additional_exe_flags} /APPCONTAINER /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}") + string(APPEND CMAKE_EXE_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG ${additional_exe_flags} /APPCONTAINER /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS}") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF " CACHE STRING "") # VS uses /LTCG:incremental - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF " CACHE STRING "") + set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") # VS uses /LTCG:incremental + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT " /nologo ") string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") -endif() + string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS_DEBUG} ") endif() diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake index 7c8a54989d532f..faa2a2a98677bf 100644 --- a/scripts/toolchains/windows.cmake +++ b/scripts/toolchains/windows.cmake @@ -1,41 +1,44 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) -set(_VCPKG_WINDOWS_TOOLCHAIN 1) -set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + VCPKG_PLATFORM_TOOLSET) + set(_VCPKG_WINDOWS_TOOLCHAIN 1) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") -set(CMAKE_SYSTEM_NAME Windows CACHE STRING "") + set(CMAKE_SYSTEM_NAME Windows CACHE STRING "") -if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") -endif() - -if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) -endif() - -if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") - # any of the four platforms can run x86 binaries - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") - # arm64 can run binaries of any of the four platforms after Windows 11 - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") endif() - if(NOT DEFINED CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") + if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) endif() -endif() -get_property( _CMAKE_IN_TRY_COMPILE GLOBAL PROPERTY IN_TRY_COMPILE ) -if(NOT _CMAKE_IN_TRY_COMPILE) + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") + # any of the four platforms can run x86 binaries + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") + # arm64 can run binaries of any of the four platforms after Windows 11 + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + endif() + + if(NOT DEFINED CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") + endif() + endif() if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") @@ -70,4 +73,3 @@ if(NOT _CMAKE_IN_TRY_COMPILE) string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") endif() -endif() From ee98271ee153c735a551837055b474c86011cedc Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 2 May 2022 14:08:15 +0200 Subject: [PATCH 034/141] fix try compile in project mode --- scripts/buildsystems/vcpkg.cmake | 33 +++++++ scripts/toolchains/linux.cmake | 130 ++++++++++++------------- scripts/toolchains/osx.cmake | 74 +++++++------- scripts/toolchains/uwp.cmake | 162 +++++++++++++++---------------- scripts/toolchains/windows.cmake | 120 +++++++++++------------ 5 files changed, 275 insertions(+), 244 deletions(-) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index f6c675b58c4eed..cfb6a5f951f3cb 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -210,6 +210,7 @@ list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CHAINLOAD_TOOLCHAIN_FILE # TODO: Need to override try_compile and try_run to pass some variables in project mode vs src mode + if(VCPKG_TOOLCHAIN) cmake_policy(POP) return() @@ -566,6 +567,38 @@ endif() cmake_policy(POP) # Any policies applied to the below macros and functions appear to leak into consumers +get_property(in_try_compile GLOBAL PROPERTY IN_TRY_COMPILE) +if(NOT in_try_compile) + function(try_compile resultVar bindir srcdir) + z_vcpkg_function_arguments(ARGS) + if(IS_DIRECTORY "${srcdir}") # project try_compile + cmake_parse_arguments(PARSE_ARGV 2 "arg" "" "CMAKE_FLAGS;OUTPUT_VARIABLE" "") + if(arg_CMAKE_FLAGS) + list(REMOVE_ITEM ARGS CMAKE_FLAGS ${arg_CMAKE_FLAGS}) + endif() + foreach(try_compile_var IN LISTS CMAKE_TRY_COMPILE_PLATFORM_VARIABLES) + if(${try_compile_var}) + list(APPEND arg_CMAKE_FLAGS "-D${try_compile_var}=${${try_compile_var}}") + endif() + endforeach() + if(arg_OUTPUT_VARIABLE) + list(REMOVE_ITEM ARGS OUTPUT_VARIABLE ${arg_OUTPUT_VARIABLE}) + _try_compile(${ARGS} CMAKE_FLAGS ${arg_CMAKE_FLAGS} OUTPUT_VARIABLE ${arg_OUTPUT_VARIABLE}) + else() + _try_compile(${ARGS} CMAKE_FLAGS ${arg_CMAKE_FLAGS}) + endif() + else() # source based try_compile + _try_compile(${ARGS}) + cmake_parse_arguments(PARSE_ARGV 2 "arg" "" "OUTPUT_VARIABLE" "") + endif() + + if(DEFINED arg_OUTPUT_VARIABLE) + set(${arg_OUTPUT_VARIABLE} ${${arg_OUTPUT_VARIABLE}} PARENT_SCOPE) + endif() + set(${resultVar} ${${resultVar}} PARENT_SCOPE) + endfunction() +endif() +unset(in_try_compile) function(add_executable) z_vcpkg_function_arguments(ARGS) diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake index 1f12e4853fbeb4..b4485f4bbe6ccd 100644 --- a/scripts/toolchains/linux.cmake +++ b/scripts/toolchains/linux.cmake @@ -1,74 +1,72 @@ if(NOT _VCPKG_LINUX_TOOLCHAIN) - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE - VCPKG_C_FLAGS VCPKG_CXX_FLAGS - VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG - VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE - VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG - ) - set(_VCPKG_LINUX_TOOLCHAIN 1) - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") - set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") +list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + ) +set(_VCPKG_LINUX_TOOLCHAIN 1) +if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux") + set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") +endif() +set(CMAKE_SYSTEM_NAME Linux CACHE STRING "") +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + string(APPEND VCPKG_C_FLAGS " -m32") + string(APPEND VCPKG_CXX_FLAGS " -m32") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR armv7l CACHE STRING "") + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++") + endif() + if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc") + endif() + if(NOT DEFINED CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER "arm-linux-gnueabihf-gcc") + endif() + if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) + set(CMAKE_ASM-ATT_COMPILER "arm-linux-gnueabihf-as") + endif() + message(STATUS "Cross compiling arm on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") endif() - set(CMAKE_SYSTEM_NAME Linux CACHE STRING "") - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") - string(APPEND VCPKG_C_FLAGS " -m32") - string(APPEND VCPKG_CXX_FLAGS " -m32") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR armv7l CACHE STRING "") - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") - if(NOT DEFINED CMAKE_CXX_COMPILER) - set(CMAKE_CXX_COMPILER "arm-linux-gnueabihf-g++") - endif() - if(NOT DEFINED CMAKE_C_COMPILER) - set(CMAKE_C_COMPILER "arm-linux-gnueabihf-gcc") - endif() - if(NOT DEFINED CMAKE_ASM_COMPILER) - set(CMAKE_ASM_COMPILER "arm-linux-gnueabihf-gcc") - endif() - if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) - set(CMAKE_ASM-ATT_COMPILER "arm-linux-gnueabihf-as") - endif() - message(STATUS "Cross compiling arm on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "") + if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") + if(NOT DEFINED CMAKE_CXX_COMPILER) + set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++") + endif() + if(NOT DEFINED CMAKE_C_COMPILER) + set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") endif() - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR aarch64 CACHE STRING "") - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "x86_64") - if(NOT DEFINED CMAKE_CXX_COMPILER) - set(CMAKE_CXX_COMPILER "aarch64-linux-gnu-g++") - endif() - if(NOT DEFINED CMAKE_C_COMPILER) - set(CMAKE_C_COMPILER "aarch64-linux-gnu-gcc") - endif() - if(NOT DEFINED CMAKE_ASM_COMPILER) - set(CMAKE_ASM_COMPILER "aarch64-linux-gnu-gcc") - endif() - if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) - set(CMAKE_ASM-ATT_COMPILER "aarch64-linux-gnu-as") - endif() - message(STATUS "Cross compiling arm64 on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") + if(NOT DEFINED CMAKE_ASM_COMPILER) + set(CMAKE_ASM_COMPILER "aarch64-linux-gnu-gcc") endif() + if(NOT DEFINED CMAKE_ASM-ATT_COMPILER) + set(CMAKE_ASM-ATT_COMPILER "aarch64-linux-gnu-as") + endif() + message(STATUS "Cross compiling arm64 on host x86_64, use cross compiler: ${CMAKE_CXX_COMPILER}/${CMAKE_C_COMPILER}") endif() +endif() +string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ") +string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ") +string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ") +string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ") +string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ") +string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ") - string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ") - string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ") - string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ") - string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ") - string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ") - string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ") - - string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") - if(VCPKG_CRT_LINKAGE STREQUAL "static") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT "-static ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-static ") - endif() - string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") - +string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") +if(VCPKG_CRT_LINKAGE STREQUAL "static") + string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT "-static ") + string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT "-static ") +endif() +string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") +string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") endif() diff --git a/scripts/toolchains/osx.cmake b/scripts/toolchains/osx.cmake index 86950dc54cb0d3..2d68a859f18ee2 100644 --- a/scripts/toolchains/osx.cmake +++ b/scripts/toolchains/osx.cmake @@ -1,46 +1,46 @@ if(NOT _VCPKG_OSX_TOOLCHAIN) - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE - VCPKG_C_FLAGS VCPKG_CXX_FLAGS - VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG - VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE - VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG - ) - set(_VCPKG_OSX_TOOLCHAIN 1) - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") - set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") - set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") - else() - set(CMAKE_SYSTEM_VERSION "17.0.0" CACHE STRING "") - endif() - set(CMAKE_SYSTEM_NAME Darwin CACHE STRING "") +list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + ) +set(_VCPKG_OSX_TOOLCHAIN 1) +if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin") + set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") + set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") +else() + set(CMAKE_SYSTEM_VERSION "17.0.0" CACHE STRING "") +endif() +set(CMAKE_SYSTEM_NAME Darwin CACHE STRING "") - set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") +set(CMAKE_MACOSX_RPATH ON CACHE BOOL "") - if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR) - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR arm64 CACHE STRING "") - else() - set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "") - endif() +if(NOT DEFINED CMAKE_SYSTEM_PROCESSOR) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR x86_64 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR arm64 CACHE STRING "") + else() + set(CMAKE_SYSTEM_PROCESSOR "${CMAKE_HOST_SYSTEM_PROCESSOR}" CACHE STRING "") endif() +endif() - string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ") - string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ") - string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ") - string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ") - string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ") - string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ") +string(APPEND CMAKE_C_FLAGS_INIT " -fPIC ${VCPKG_C_FLAGS} ") +string(APPEND CMAKE_CXX_FLAGS_INIT " -fPIC ${VCPKG_CXX_FLAGS} ") +string(APPEND CMAKE_C_FLAGS_DEBUG_INIT " ${VCPKG_C_FLAGS_DEBUG} ") +string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT " ${VCPKG_CXX_FLAGS_DEBUG} ") +string(APPEND CMAKE_C_FLAGS_RELEASE_INIT " ${VCPKG_C_FLAGS_RELEASE} ") +string(APPEND CMAKE_CXX_FLAGS_RELEASE_INIT " ${VCPKG_CXX_FLAGS_RELEASE} ") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") +string(APPEND CMAKE_SHARED_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ${VCPKG_LINKER_FLAGS} ") +string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " ${VCPKG_LINKER_FLAGS_DEBUG} ") +string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE_INIT " ${VCPKG_LINKER_FLAGS_RELEASE} ") endif() diff --git a/scripts/toolchains/uwp.cmake b/scripts/toolchains/uwp.cmake index 63a5c46e6f3019..95bdc8ed157385 100644 --- a/scripts/toolchains/uwp.cmake +++ b/scripts/toolchains/uwp.cmake @@ -1,96 +1,96 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG - VCPKG_C_FLAGS VCPKG_CXX_FLAGS - VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG - VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE - VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG - VCPKG_PLATFORM_TOOLSET) - - set(_VCPKG_WINDOWS_TOOLCHAIN 1) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") - - set(CMAKE_SYSTEM_NAME WindowsStore CACHE STRING "") - - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") - endif() +list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + VCPKG_PLATFORM_TOOLSET) + +set(_VCPKG_WINDOWS_TOOLCHAIN 1) +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") + +set(CMAKE_SYSTEM_NAME WindowsStore CACHE STRING "") + +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") +endif() - if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) - endif() +if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) +endif() - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") - # any of the four platforms can run x86 binaries - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") - # arm64 can run binaries of any of the four platforms after Windows 11 - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - endif() - - if(NOT DEFINED CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") - endif() +if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") + # any of the four platforms can run x86 binaries + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") + # arm64 can run binaries of any of the four platforms after Windows 11 + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") endif() - if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") - set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") - elseif(VCPKG_CRT_LINKAGE STREQUAL "static") - set(VCPKG_CRT_LINK_FLAG_PREFIX "/MT") - else() - message(FATAL_ERROR "Invalid setting for VCPKG_CRT_LINKAGE: \"${VCPKG_CRT_LINKAGE}\". It must be \"static\" or \"dynamic\"") + if(NOT DEFINED CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") endif() +endif() - set(_vcpkg_charset "/utf-8") - if (NOT VCPKG_SET_CHARSET_FLAG OR VCPKG_PLATFORM_TOOLSET MATCHES "v120") - # VS 2013 does not support /utf-8 - set(_vcpkg_charset "") - endif() +if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") + set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") +elseif(VCPKG_CRT_LINKAGE STREQUAL "static") + set(VCPKG_CRT_LINK_FLAG_PREFIX "/MT") +else() + message(FATAL_ERROR "Invalid setting for VCPKG_CRT_LINKAGE: \"${VCPKG_CRT_LINKAGE}\". It must be \"static\" or \"dynamic\"") +endif() - set(_vcpkg_cpp_flags "/DWIN32 /D_WINDOWS /D_UNICODE /DUNICODE /DWINAPI_FAMILY=WINAPI_FAMILY_APP /D__WRL_NO_DEFAULT_LIB__" ) # VS adds /D "_WINDLL" for DLLs; - set(_vcpkg_common_flags "/nologo /Z7 /MP /GS /Gd /Gm- /W3 /WX- /Zc:wchar_t /Zc:inline /Zc:forScope /fp:precise /Oy- /EHsc") - #/ZW:nostdlib -> ZW is added by CMake # VS also normally adds /sdl but not cmake MSBUILD - set(_vcpkg_winmd_flag "") - file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}" _vcpkg_vctools) - set(ENV{_CL_} "/FU\"${_vcpkg_vctools}/lib/x86/store/references/platform.winmd\" $ENV{_CL_}") - # CMake has problems to correctly pass this in the compiler test so probably need special care in get_cmake_vars - #set(_vcpkg_winmd_flag "/FU\\\\\"${_vcpkg_vctools}/lib/x86/store/references/platform.winmd\\\\\"") # VS normally passes /ZW for Apps +set(_vcpkg_charset "/utf-8") +if (NOT VCPKG_SET_CHARSET_FLAG OR VCPKG_PLATFORM_TOOLSET MATCHES "v120") + # VS 2013 does not support /utf-8 + set(_vcpkg_charset "") +endif() - set(CMAKE_CXX_FLAGS "${_vcpkg_cpp_flags} ${_vcpkg_common_flags} ${_vcpkg_winmd_flag} ${_vcpkg_charset} ${VCPKG_CXX_FLAGS}" CACHE STRING "") - set(CMAKE_C_FLAGS "${_vcpkg_cpp_flags} ${_vcpkg_common_flags} ${_vcpkg_winmd_flag} ${_vcpkg_charset} ${VCPKG_C_FLAGS}" CACHE STRING "") - set(CMAKE_RC_FLAGS "-c65001 ${_vcpkg_cpp_flags}" CACHE STRING "") +set(_vcpkg_cpp_flags "/DWIN32 /D_WINDOWS /D_UNICODE /DUNICODE /DWINAPI_FAMILY=WINAPI_FAMILY_APP /D__WRL_NO_DEFAULT_LIB__" ) # VS adds /D "_WINDLL" for DLLs; +set(_vcpkg_common_flags "/nologo /Z7 /MP /GS /Gd /Gm- /W3 /WX- /Zc:wchar_t /Zc:inline /Zc:forScope /fp:precise /Oy- /EHsc") +#/ZW:nostdlib -> ZW is added by CMake # VS also normally adds /sdl but not cmake MSBUILD +set(_vcpkg_winmd_flag "") +file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}" _vcpkg_vctools) +set(ENV{_CL_} "/FU\"${_vcpkg_vctools}/lib/x86/store/references/platform.winmd\" $ENV{_CL_}") +# CMake has problems to correctly pass this in the compiler test so probably need special care in get_cmake_vars +#set(_vcpkg_winmd_flag "/FU\\\\\"${_vcpkg_vctools}/lib/x86/store/references/platform.winmd\\\\\"") # VS normally passes /ZW for Apps - unset(_vcpkg_charset) - unset(_vcpkg_cpp_flags) - unset(_vcpkg_common_flags) - unset(_vcpkg_winmd_flag) +set(CMAKE_CXX_FLAGS "${_vcpkg_cpp_flags} ${_vcpkg_common_flags} ${_vcpkg_winmd_flag} ${_vcpkg_charset} ${VCPKG_CXX_FLAGS}" CACHE STRING "") +set(CMAKE_C_FLAGS "${_vcpkg_cpp_flags} ${_vcpkg_common_flags} ${_vcpkg_winmd_flag} ${_vcpkg_charset} ${VCPKG_C_FLAGS}" CACHE STRING "") +set(CMAKE_RC_FLAGS "-c65001 ${_vcpkg_cpp_flags}" CACHE STRING "") - set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /Od /RTC1 ${VCPKG_CRT_LINK_FLAG_PREFIX}d ${VCPKG_CXX_FLAGS_DEBUG}" CACHE STRING "") - set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /Od /RTC1 ${VCPKG_CRT_LINK_FLAG_PREFIX}d ${VCPKG_C_FLAGS_DEBUG}" CACHE STRING "") +unset(_vcpkg_charset) +unset(_vcpkg_cpp_flags) +unset(_vcpkg_common_flags) +unset(_vcpkg_winmd_flag) - set(CMAKE_CXX_FLAGS_RELEASE "/Gy /O2 /Oi /DNDEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX} ${VCPKG_CXX_FLAGS_RELEASE}" CACHE STRING "") # VS adds /GL - set(CMAKE_C_FLAGS_RELEASE "/Gy /O2 /Oi /DNDEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX} ${VCPKG_C_FLAGS_RELEASE}" CACHE STRING "") +set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /Od /RTC1 ${VCPKG_CRT_LINK_FLAG_PREFIX}d ${VCPKG_CXX_FLAGS_DEBUG}" CACHE STRING "") +set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /Od /RTC1 ${VCPKG_CRT_LINK_FLAG_PREFIX}d ${VCPKG_C_FLAGS_DEBUG}" CACHE STRING "") - string(APPEND CMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT " /nologo ") # VS adds /LTCG +set(CMAKE_CXX_FLAGS_RELEASE "/Gy /O2 /Oi /DNDEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX} ${VCPKG_CXX_FLAGS_RELEASE}" CACHE STRING "") # VS adds /GL +set(CMAKE_C_FLAGS_RELEASE "/Gy /O2 /Oi /DNDEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX} ${VCPKG_C_FLAGS_RELEASE}" CACHE STRING "") - if(CMAKE_GENERATOR MATCHES "Ninja") - set(additional_exe_flags "/WINMD") # VS Generator chokes on this in the compiler detection - endif() - string(APPEND CMAKE_SHARED_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG /WINMD:NO /APPCONTAINER /SUBSYSTEM:CONSOLE /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS}") - # VS adds /DEBUG:FULL /TLBID:1. WindowsApp.lib is in CMAKE_C|CXX_STANDARD_LIBRARIES - string(APPEND CMAKE_EXE_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG ${additional_exe_flags} /APPCONTAINER /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS}") - - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") # VS uses /LTCG:incremental - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") - string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT " /nologo ") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS_DEBUG} ") +string(APPEND CMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT " /nologo ") # VS adds /LTCG + +if(CMAKE_GENERATOR MATCHES "Ninja") + set(additional_exe_flags "/WINMD") # VS Generator chokes on this in the compiler detection +endif() +string(APPEND CMAKE_SHARED_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG /WINMD:NO /APPCONTAINER /SUBSYSTEM:CONSOLE /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS}") +# VS adds /DEBUG:FULL /TLBID:1. WindowsApp.lib is in CMAKE_C|CXX_STANDARD_LIBRARIES +string(APPEND CMAKE_EXE_LINKER_FLAGS " /MANIFEST:NO /NXCOMPAT /DYNAMICBASE /DEBUG ${additional_exe_flags} /APPCONTAINER /MANIFESTUAC:NO ${VCPKG_LINKER_FLAGS}") + +set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") # VS uses /LTCG:incremental +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") +string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT " /nologo ") +string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS_DEBUG} ") endif() diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake index faa2a2a98677bf..01bcdab1a24fdf 100644 --- a/scripts/toolchains/windows.cmake +++ b/scripts/toolchains/windows.cmake @@ -1,75 +1,75 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) - list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG - VCPKG_C_FLAGS VCPKG_CXX_FLAGS - VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG - VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE - VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG - VCPKG_PLATFORM_TOOLSET) - set(_VCPKG_WINDOWS_TOOLCHAIN 1) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") +list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG + VCPKG_C_FLAGS VCPKG_CXX_FLAGS + VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG + VCPKG_C_FLAGS_RELEASE VCPKG_CXX_FLAGS_RELEASE + VCPKG_LINKER_FLAGS VCPKG_LINKER_FLAGS_RELEASE VCPKG_LINKER_FLAGS_DEBUG + VCPKG_PLATFORM_TOOLSET) +set(_VCPKG_WINDOWS_TOOLCHAIN 1) +set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>$<$:DLL>" CACHE STRING "") - set(CMAKE_SYSTEM_NAME Windows CACHE STRING "") +set(CMAKE_SYSTEM_NAME Windows CACHE STRING "") - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") - set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") - elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") - endif() - - if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) - endif() +if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(CMAKE_SYSTEM_PROCESSOR x86 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(CMAKE_SYSTEM_PROCESSOR AMD64 CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") + set(CMAKE_SYSTEM_PROCESSOR ARM CACHE STRING "") +elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(CMAKE_SYSTEM_PROCESSOR ARM64 CACHE STRING "") +endif() - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") - # any of the four platforms can run x86 binaries - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") - # arm64 can run binaries of any of the four platforms after Windows 11 - set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") - endif() +if(DEFINED VCPKG_CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${VCPKG_CMAKE_SYSTEM_VERSION}" CACHE STRING "" FORCE) +endif() - if(NOT DEFINED CMAKE_SYSTEM_VERSION) - set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") - endif() +if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") + if(CMAKE_SYSTEM_PROCESSOR STREQUAL CMAKE_HOST_SYSTEM_PROCESSOR) + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86") + # any of the four platforms can run x86 binaries + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") + elseif(CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") + # arm64 can run binaries of any of the four platforms after Windows 11 + set(CMAKE_CROSSCOMPILING OFF CACHE STRING "") endif() - if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") - set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") - elseif(VCPKG_CRT_LINKAGE STREQUAL "static") - set(VCPKG_CRT_LINK_FLAG_PREFIX "/MT") - else() - message(FATAL_ERROR "Invalid setting for VCPKG_CRT_LINKAGE: \"${VCPKG_CRT_LINKAGE}\". It must be \"static\" or \"dynamic\"") + if(NOT DEFINED CMAKE_SYSTEM_VERSION) + set(CMAKE_SYSTEM_VERSION "${CMAKE_HOST_SYSTEM_VERSION}" CACHE STRING "") endif() +endif() - set(CHARSET_FLAG "/utf-8") - if (NOT VCPKG_SET_CHARSET_FLAG OR VCPKG_PLATFORM_TOOLSET MATCHES "v120") - # VS 2013 does not support /utf-8 - set(CHARSET_FLAG) - endif() +if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") + set(VCPKG_CRT_LINK_FLAG_PREFIX "/MD") +elseif(VCPKG_CRT_LINKAGE STREQUAL "static") + set(VCPKG_CRT_LINK_FLAG_PREFIX "/MT") +else() + message(FATAL_ERROR "Invalid setting for VCPKG_CRT_LINKAGE: \"${VCPKG_CRT_LINKAGE}\". It must be \"static\" or \"dynamic\"") +endif() + +set(CHARSET_FLAG "/utf-8") +if (NOT VCPKG_SET_CHARSET_FLAG OR VCPKG_PLATFORM_TOOLSET MATCHES "v120") + # VS 2013 does not support /utf-8 + set(CHARSET_FLAG) +endif() - set(CMAKE_CXX_FLAGS " /nologo /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} /GR /EHsc /MP ${VCPKG_CXX_FLAGS}" CACHE STRING "") - set(CMAKE_C_FLAGS " /nologo /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} /MP ${VCPKG_C_FLAGS}" CACHE STRING "") - set(CMAKE_RC_FLAGS "-c65001 /DWIN32" CACHE STRING "") +set(CMAKE_CXX_FLAGS " /nologo /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} /GR /EHsc /MP ${VCPKG_CXX_FLAGS}" CACHE STRING "") +set(CMAKE_C_FLAGS " /nologo /DWIN32 /D_WINDOWS /W3 ${CHARSET_FLAG} /MP ${VCPKG_C_FLAGS}" CACHE STRING "") +set(CMAKE_RC_FLAGS "-c65001 /DWIN32" CACHE STRING "") - unset(CHARSET_FLAG) +unset(CHARSET_FLAG) - set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /Ob0 /Od /RTC1 ${VCPKG_CXX_FLAGS_DEBUG}" CACHE STRING "") - set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /Ob0 /Od /RTC1 ${VCPKG_C_FLAGS_DEBUG}" CACHE STRING "") - set(CMAKE_CXX_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_CXX_FLAGS_RELEASE}" CACHE STRING "") - set(CMAKE_C_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_C_FLAGS_RELEASE}" CACHE STRING "") +set(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /Ob0 /Od /RTC1 ${VCPKG_CXX_FLAGS_DEBUG}" CACHE STRING "") +set(CMAKE_C_FLAGS_DEBUG "/D_DEBUG ${VCPKG_CRT_LINK_FLAG_PREFIX}d /Z7 /Ob0 /Od /RTC1 ${VCPKG_C_FLAGS_DEBUG}" CACHE STRING "") +set(CMAKE_CXX_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_CXX_FLAGS_RELEASE}" CACHE STRING "") +set(CMAKE_C_FLAGS_RELEASE "${VCPKG_CRT_LINK_FLAG_PREFIX} /O2 /Oi /Gy /DNDEBUG /Z7 ${VCPKG_C_FLAGS_RELEASE}" CACHE STRING "") - string(APPEND CMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT " /nologo ") - set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") +string(APPEND CMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT " /nologo ") +set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") +set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/nologo /DEBUG /INCREMENTAL:NO /OPT:REF /OPT:ICF ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_RELEASE}" CACHE STRING "") - string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT " /nologo ") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") - string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") +string(APPEND CMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT " /nologo ") +string(APPEND CMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") +string(APPEND CMAKE_EXE_LINKER_FLAGS_DEBUG_INIT " /nologo ${VCPKG_LINKER_FLAGS} ${VCPKG_LINKER_FLAGS_DEBUG} ") endif() From 80d23d07fe10104e175b9ca93d2dedc7d4f09645 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 2 May 2022 17:16:24 +0200 Subject: [PATCH 035/141] try fixing qtbase --- scripts/buildsystems/vcpkg.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index cfb6a5f951f3cb..73536ceabf39ea 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -578,7 +578,7 @@ if(NOT in_try_compile) endif() foreach(try_compile_var IN LISTS CMAKE_TRY_COMPILE_PLATFORM_VARIABLES) if(${try_compile_var}) - list(APPEND arg_CMAKE_FLAGS "-D${try_compile_var}=${${try_compile_var}}") + list(APPEND arg_CMAKE_FLAGS -D${try_compile_var}=${${try_compile_var}}) endif() endforeach() if(arg_OUTPUT_VARIABLE) From d30a5359dddd3146d32c495408f000ccfa120d9c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 2 May 2022 21:44:42 +0200 Subject: [PATCH 036/141] fix regressions. --- scripts/buildsystems/vcpkg.cmake | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 73536ceabf39ea..e30deaa08c23d0 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -206,11 +206,6 @@ if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE) include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") endif() -list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CHAINLOAD_TOOLCHAIN_FILE VCPKG_TARGET_TRIPLET VCPKG_HOST_TRIPLET VCPKG_INSTALLED_DIR VCPKG_PREFER_SYSTEM_LIBS) - -# TODO: Need to override try_compile and try_run to pass some variables in project mode vs src mode - - if(VCPKG_TOOLCHAIN) cmake_policy(POP) return() @@ -567,18 +562,21 @@ endif() cmake_policy(POP) # Any policies applied to the below macros and functions appear to leak into consumers + +list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CHAINLOAD_TOOLCHAIN_FILE VCPKG_TARGET_TRIPLET VCPKG_HOST_TRIPLET VCPKG_INSTALLED_DIR VCPKG_PREFER_SYSTEM_LIBS) +# Need to override try_compile and try_run to pass some variables in project mode vs src mode get_property(in_try_compile GLOBAL PROPERTY IN_TRY_COMPILE) if(NOT in_try_compile) function(try_compile resultVar bindir srcdir) z_vcpkg_function_arguments(ARGS) if(IS_DIRECTORY "${srcdir}") # project try_compile - cmake_parse_arguments(PARSE_ARGV 2 "arg" "" "CMAKE_FLAGS;OUTPUT_VARIABLE" "") - if(arg_CMAKE_FLAGS) + cmake_parse_arguments(PARSE_ARGV 2 "arg" "" "OUTPUT_VARIABLE" "CMAKE_FLAGS") + if(DEFINED arg_CMAKE_FLAGS) list(REMOVE_ITEM ARGS CMAKE_FLAGS ${arg_CMAKE_FLAGS}) endif() foreach(try_compile_var IN LISTS CMAKE_TRY_COMPILE_PLATFORM_VARIABLES) if(${try_compile_var}) - list(APPEND arg_CMAKE_FLAGS -D${try_compile_var}=${${try_compile_var}}) + list(APPEND arg_CMAKE_FLAGS "-D${try_compile_var}=${${try_compile_var}}") endif() endforeach() if(arg_OUTPUT_VARIABLE) From 50ae753d1325d40785f63aecc237a2dcb64090b6 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 3 May 2022 09:47:16 +0200 Subject: [PATCH 037/141] set policies to fix last regression --- scripts/buildsystems/vcpkg.cmake | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index cfb6a5f951f3cb..12a40662f3a17b 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -566,10 +566,18 @@ endif() cmake_policy(POP) -# Any policies applied to the below macros and functions appear to leak into consumers +# Any policies applied to the below macros and functions leak into consumers +# Consumer policies are ignored for the below overriden functions since policies settings are recorded at the time function/macros are being defined get_property(in_try_compile GLOBAL PROPERTY IN_TRY_COMPILE) if(NOT in_try_compile) function(try_compile resultVar bindir srcdir) + cmake_policy(PUSH) + if(POLICY CMP0056) + cmake_policy(SET CMP0056 NEW) + endif() + if(POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) + endif() z_vcpkg_function_arguments(ARGS) if(IS_DIRECTORY "${srcdir}") # project try_compile cmake_parse_arguments(PARSE_ARGV 2 "arg" "" "CMAKE_FLAGS;OUTPUT_VARIABLE" "") @@ -596,6 +604,7 @@ if(NOT in_try_compile) set(${arg_OUTPUT_VARIABLE} ${${arg_OUTPUT_VARIABLE}} PARENT_SCOPE) endif() set(${resultVar} ${${resultVar}} PARENT_SCOPE) + cmake_policy(POP) endfunction() endif() unset(in_try_compile) From ef7358555510996223f3c1ba592df97bb11d69da Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 4 May 2022 17:22:38 +0200 Subject: [PATCH 038/141] more pc files --- ports/blas/portfile.cmake | 4 +++- ports/lapack/lapack.pc.in | 8 ++++++++ ports/lapack/portfile.cmake | 12 ++++++++++++ ports/openblas/vcpkg.json | 2 +- 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 ports/lapack/lapack.pc.in diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index 18300f6b7c3530..9a0a11f0f72f91 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -7,7 +7,7 @@ if(ver_str STREQUAL "default") # OpenBLAS if(VCPKG_TARGET_IS_OSX) set(BLA_VENDOR Apple) - set(requires "") # TODO: figure out the flags required? + set(requires "") set(libs "-framework Accelerate") set(cflags "-framework Accelerate") else() @@ -20,6 +20,8 @@ if(ver_str STREQUAL "default") if(NOT VCPKG_BUILD_TYPE) configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) endif() + else() + set(BLA_VENDOR Generic) endif() # For possible overlays: diff --git a/ports/lapack/lapack.pc.in b/ports/lapack/lapack.pc.in new file mode 100644 index 00000000000000..49f7f103dc1420 --- /dev/null +++ b/ports/lapack/lapack.pc.in @@ -0,0 +1,8 @@ +prefix=${pcfiledir}/../.. + +Name: BLAS +Description: Implementation of BLAS +Version: +Requires: @requires@ +Libs: @libs@ +Cflags: @cflags@ diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 113af12d929ccb..35e71b18b815af 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -16,10 +16,22 @@ if(ver_str STREQUAL "default") if(VCPKG_TARGET_IS_OSX) set(BLA_VENDOR Apple) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) + set(libs "-framework Accelerate") + set(cflags "-framework Accelerate") + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" COPYONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" COPYONLY) + endif() unset(installed_module) elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) + set(libs "-llapack -llibf2c") + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" COPYONLY) + if(NOT VCPKG_BUILD_TYPE) + set(libs "-llapackd -llibf2cd") + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" COPYONLY) + endif() else() configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) diff --git a/ports/openblas/vcpkg.json b/ports/openblas/vcpkg.json index d7be1f3383ab11..f4439fe3010084 100644 --- a/ports/openblas/vcpkg.json +++ b/ports/openblas/vcpkg.json @@ -1,7 +1,7 @@ { "name": "openblas", "version": "0.3.19", - "port-version": 1, + "port-version": 2, "description": "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.", "homepage": "https://github.com/xianyi/OpenBLAS", "dependencies": [ From d58573d755098956fb6f73910c3b3bc37f7a399f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 4 May 2022 17:26:03 +0200 Subject: [PATCH 039/141] version stuff --- versions/b-/blas.json | 2 +- versions/baseline.json | 2 +- versions/l-/lapack.json | 2 +- versions/o-/openblas.json | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/versions/b-/blas.json b/versions/b-/blas.json index 3aeac030d9f12a..52fe96f34d1876 100644 --- a/versions/b-/blas.json +++ b/versions/b-/blas.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "43f1fce5e91c782e5a75cce19f6ba7cc9be6e9ec", + "git-tree": "01a62ba993a98a0d40cfe1ab63a0dead03fa5a7c", "version-string": "default", "port-version": 0 }, diff --git a/versions/baseline.json b/versions/baseline.json index c45139ba2ff736..ce7557ca3e1834 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5058,7 +5058,7 @@ }, "openblas": { "baseline": "0.3.19", - "port-version": 1 + "port-version": 2 }, "opencascade": { "baseline": "7.6.0", diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index c349379898c57c..c55cd201d8840a 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "b5e4901fcfb82f012faf9106ef45df4f534c4fdc", + "git-tree": "5fe643fdee00afc8007da2dc2e3ebaa215087179", "version-string": "default", "port-version": 0 }, diff --git a/versions/o-/openblas.json b/versions/o-/openblas.json index 8b7301aa54fd11..5d482680a7e16a 100644 --- a/versions/o-/openblas.json +++ b/versions/o-/openblas.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "b51b631e388bf2897b79db48a5433250f5586363", + "version": "0.3.19", + "port-version": 2 + }, { "git-tree": "90e2cde7fda025b587d6c41e699c98c263cf41eb", "version": "0.3.19", From 244878ca6bbf993604ca9574565d4f4be93476f2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 4 May 2022 17:32:24 +0200 Subject: [PATCH 040/141] adjust test to check for pc files. --- scripts/test_ports/blas-test/CMakeLists.txt | 2 ++ scripts/test_ports/blas-test/portfile.cmake | 3 +-- scripts/test_ports/blas-test/vcpkg.json | 5 +++++ scripts/test_ports/lapack-test/CMakeLists.txt | 2 ++ scripts/test_ports/lapack-test/portfile.cmake | 3 +-- scripts/test_ports/lapack-test/vcpkg.json | 5 +++++ 6 files changed, 16 insertions(+), 4 deletions(-) diff --git a/scripts/test_ports/blas-test/CMakeLists.txt b/scripts/test_ports/blas-test/CMakeLists.txt index 790f79e8baa70e..d05bda7b2b93b7 100644 --- a/scripts/test_ports/blas-test/CMakeLists.txt +++ b/scripts/test_ports/blas-test/CMakeLists.txt @@ -2,3 +2,5 @@ cmake_minimum_required(VERSION 3.17) project(Find_BLAS_external) find_package(BLAS REQUIRED) +find_package(PkgConfig REQUIRED) +pkg_check_modules(BLAS_PC REQUIRED IMPORTED_TARGET blas) diff --git a/scripts/test_ports/blas-test/portfile.cmake b/scripts/test_ports/blas-test/portfile.cmake index d45bd8906b8b79..fa2d43072ae1c0 100644 --- a/scripts/test_ports/blas-test/portfile.cmake +++ b/scripts/test_ports/blas-test/portfile.cmake @@ -2,5 +2,4 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) # Make sure BLAS can be found vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" - OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" - ) + OPTIONS -DVCPKG_HOST_TRIPLET=${HOST_TRIPLET}) diff --git a/scripts/test_ports/blas-test/vcpkg.json b/scripts/test_ports/blas-test/vcpkg.json index 01765640511687..ab9615c3e9ef07 100644 --- a/scripts/test_ports/blas-test/vcpkg.json +++ b/scripts/test_ports/blas-test/vcpkg.json @@ -6,6 +6,11 @@ "license": null, "dependencies": [ "blas", + { + "name": "pkgconf", + "host": true, + "platform": "windows" + }, { "name": "vcpkg-cmake", "host": true diff --git a/scripts/test_ports/lapack-test/CMakeLists.txt b/scripts/test_ports/lapack-test/CMakeLists.txt index ddd7883b1632eb..8956bba1601930 100644 --- a/scripts/test_ports/lapack-test/CMakeLists.txt +++ b/scripts/test_ports/lapack-test/CMakeLists.txt @@ -2,3 +2,5 @@ cmake_minimum_required(VERSION 3.17) project(Find_LAPACK_external) find_package(LAPACK REQUIRED) +find_package(PkgConfig REQUIRED) +pkg_check_modules(LAPACK_PC REQUIRED IMPORTED_TARGET lapack) diff --git a/scripts/test_ports/lapack-test/portfile.cmake b/scripts/test_ports/lapack-test/portfile.cmake index 37b09592d62865..f1f2b5cdd023b9 100644 --- a/scripts/test_ports/lapack-test/portfile.cmake +++ b/scripts/test_ports/lapack-test/portfile.cmake @@ -2,5 +2,4 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) # Make sure LAPACK can be found vcpkg_cmake_configure(SOURCE_PATH "${CURRENT_PORT_DIR}" - OPTIONS -DCMAKE_PREFIX_PATH="${CURRENT_PACKAGES_DIR}" - -DCMAKE_MODULE_PATH="${CURRENT_PACKAGES_DIR}/share/lapack") + OPTIONS -DVCPKG_HOST_TRIPLET=${HOST_TRIPLET}) diff --git a/scripts/test_ports/lapack-test/vcpkg.json b/scripts/test_ports/lapack-test/vcpkg.json index 60dcd751d682e4..00c2832d328cf3 100644 --- a/scripts/test_ports/lapack-test/vcpkg.json +++ b/scripts/test_ports/lapack-test/vcpkg.json @@ -6,6 +6,11 @@ "license": null, "dependencies": [ "lapack", + { + "name": "pkgconf", + "host": true, + "platform": "windows" + }, { "name": "vcpkg-cmake", "host": true From 55d4d0935c09e98e8a1fcc4bb7aa2a1b6000f248 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 4 May 2022 17:34:08 +0200 Subject: [PATCH 041/141] revert openblas version --- ports/openblas/vcpkg.json | 2 +- versions/baseline.json | 2 +- versions/o-/openblas.json | 5 ----- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/ports/openblas/vcpkg.json b/ports/openblas/vcpkg.json index f4439fe3010084..d7be1f3383ab11 100644 --- a/ports/openblas/vcpkg.json +++ b/ports/openblas/vcpkg.json @@ -1,7 +1,7 @@ { "name": "openblas", "version": "0.3.19", - "port-version": 2, + "port-version": 1, "description": "OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD version.", "homepage": "https://github.com/xianyi/OpenBLAS", "dependencies": [ diff --git a/versions/baseline.json b/versions/baseline.json index ce7557ca3e1834..c45139ba2ff736 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -5058,7 +5058,7 @@ }, "openblas": { "baseline": "0.3.19", - "port-version": 2 + "port-version": 1 }, "opencascade": { "baseline": "7.6.0", diff --git a/versions/o-/openblas.json b/versions/o-/openblas.json index 5d482680a7e16a..8b7301aa54fd11 100644 --- a/versions/o-/openblas.json +++ b/versions/o-/openblas.json @@ -1,10 +1,5 @@ { "versions": [ - { - "git-tree": "b51b631e388bf2897b79db48a5433250f5586363", - "version": "0.3.19", - "port-version": 2 - }, { "git-tree": "90e2cde7fda025b587d6c41e699c98c263cf41eb", "version": "0.3.19", From b7c002bb4775919d40f941fe36e16a9f737c5e37 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 4 May 2022 18:08:44 +0200 Subject: [PATCH 042/141] fix copy pasta --- ports/lapack/portfile.cmake | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 35e71b18b815af..9700d1daa7d36a 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -18,19 +18,19 @@ if(ver_str STREQUAL "default") configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) set(libs "-framework Accelerate") set(cflags "-framework Accelerate") - configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" COPYONLY) + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" @ONLY) if(NOT VCPKG_BUILD_TYPE) - configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" COPYONLY) + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" @ONLY) endif() unset(installed_module) elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) set(libs "-llapack -llibf2c") - configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" COPYONLY) + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" @ONLY) if(NOT VCPKG_BUILD_TYPE) set(libs "-llapackd -llibf2cd") - configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" COPYONLY) + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" @ONLY) endif() else() configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) From d77a77e8ee3f67ba6dc189594c621e8dd799a1d9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 4 May 2022 21:30:49 +0200 Subject: [PATCH 043/141] fix uwp regression --- ports/clapack/FindLAPACK.cmake | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ports/clapack/FindLAPACK.cmake b/ports/clapack/FindLAPACK.cmake index 25e363af5fe270..8516fc78d42052 100644 --- a/ports/clapack/FindLAPACK.cmake +++ b/ports/clapack/FindLAPACK.cmake @@ -37,8 +37,12 @@ if(NOT TARGET LAPACK::LAPACK) get_property(LAPACK_LINKER_FLAGS_RELEASE TARGET lapack PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE) get_property(LAPACK_LINKER_FLAGS_DEBUG TARGET lapack PROPERTY IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG) + list(TRANSFORM LAPACK_LINKER_FLAGS_DEBUG PREPEND "$<$:") + list(TRANSFORM LAPACK_LINKER_FLAGS_DEBUG APPEND ">") + list(TRANSFORM LAPACK_LINKER_FLAGS_RELEASE PREPEND "$<$>:") + list(TRANSFORM LAPACK_LINKER_FLAGS_RELEASE APPEND ">") - set(LAPACK_LIBRARIES "${LAPACK_LIBRARIES};$<$:${IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG}>;$<$>:${IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE}>") + set(LAPACK_LIBRARIES "${LAPACK_LIBRARIES};${LAPACK_LINKER_FLAGS_DEBUG};${LAPACK_LINKER_FLAGS_RELEASE}") set(LAPACK95_LIBRARIES "${LAPACK_LIBRARIES}") set(LAPACK95_FOUND "TRUE") set(LAPACK_LINKER_FLAGS "${LAPACK_LIBRARIES}") From 989601471012698b6a431605e424046dfb289c97 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 4 May 2022 21:40:56 +0200 Subject: [PATCH 044/141] version stuff --- versions/c-/clapack.json | 2 +- versions/l-/lapack.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/versions/c-/clapack.json b/versions/c-/clapack.json index 397fbc55e8fa3e..33ebd276f8a7b4 100644 --- a/versions/c-/clapack.json +++ b/versions/c-/clapack.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "53ec27c8e5305579c6447950fb127e79cab4e214", + "git-tree": "c6ae90dbc78f251f9a486182d83dc7f15b5c20d8", "version": "3.2.1", "port-version": 21 }, diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index c55cd201d8840a..60004c2a96f06f 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "5fe643fdee00afc8007da2dc2e3ebaa215087179", + "git-tree": "235ef93dec56035f02e8fdd88fbf34dfc4d2b095", "version-string": "default", "port-version": 0 }, From c82d7eec78d3581143af5aaf3c09d5f2151f490d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 5 May 2022 00:24:25 +0200 Subject: [PATCH 045/141] move stuff around --- scripts/buildsystems/vcpkg.cmake | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 5bf0ff187c909d..04161f24702881 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -564,10 +564,8 @@ cmake_policy(POP) # Any policies applied to the below macros and functions leak into consumers # Consumer policies are ignored for the below overriden functions since policies settings are recorded at the time function/macros are being defined -list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CHAINLOAD_TOOLCHAIN_FILE VCPKG_TARGET_TRIPLET VCPKG_HOST_TRIPLET VCPKG_INSTALLED_DIR VCPKG_PREFER_SYSTEM_LIBS) # Need to override try_compile and try_run to pass some variables in project mode vs src mode -get_property(in_try_compile GLOBAL PROPERTY IN_TRY_COMPILE) -if(NOT in_try_compile) +if(NOT Z_VCPKG_CMAKE_IN_TRY_COMPILE) function(try_compile resultVar bindir srcdir) cmake_policy(PUSH) if(POLICY CMP0056) @@ -605,7 +603,6 @@ if(NOT in_try_compile) cmake_policy(POP) endfunction() endif() -unset(in_try_compile) function(add_executable) z_vcpkg_function_arguments(ARGS) @@ -884,10 +881,15 @@ if(NOT Z_VCPKG_CMAKE_IN_TRY_COMPILE) list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_TARGET_TRIPLET VCPKG_TARGET_ARCHITECTURE - VCPKG_APPLOCAL_DEPS + VCPKG_HOST_TRIPLET + VCPKG_INSTALLED_DIR + VCPKG_PREFER_SYSTEM_LIBS + # VCPKG_APPLOCAL_DEPS # This should be off within try_compile! VCPKG_CHAINLOAD_TOOLCHAIN_FILE Z_VCPKG_ROOT_DIR ) +else() + set(VCPKG_APPLOCAL_DEPS OFF) endif() if(Z_VCPKG_HAS_FATAL_ERROR) From c83c524c8e079952651ead1c8b2bcefc7a39244f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 7 May 2022 00:45:07 +0200 Subject: [PATCH 046/141] download patch --- ports/vcpkg-tool-ninja/portfile.cmake | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/ports/vcpkg-tool-ninja/portfile.cmake b/ports/vcpkg-tool-ninja/portfile.cmake index bcf08dc8d39f61..8cb941b47b4282 100644 --- a/ports/vcpkg-tool-ninja/portfile.cmake +++ b/ports/vcpkg-tool-ninja/portfile.cmake @@ -1,12 +1,19 @@ set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) +vcpkg_download_distfile( + LONG_PATH_PATCH + URLS "https://patch-diff.githubusercontent.com/raw/ninja-build/ninja/pull/2056.diff" # stable? + FILENAME 2056.diff + SHA512 90f17c2cbb5e0c5b41de748f75a3fc3e0c9da8837a0507c8570a49affe15ae7258661dc1f1bc201574847d93ea8b7fe4cbecfffd868395d50ca821033c5f295d +) + vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO ninja-build/ninja REF 170c387a7461d476523ae29c115a58f16e4d3430 SHA512 75c0f263ad325d14c99c9a1d85e571832407b481271a2733e78183a478f7ecd22d84451fc8d7ce16ab20d641ce040761d7ab266695d66bbac5b2b9a3a29aa521 HEAD_REF master - PATCHES PR2056.diff # Long path support windows + PATCHES "${LONG_PATH_PATCH}" # Long path support windows ) set(VCPKG_BUILD_TYPE release) #we only need release here! vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}") From d1a18c5e27312cf7415298dcbce4414545fe5ebc Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 7 May 2022 00:45:32 +0200 Subject: [PATCH 047/141] version stuff --- versions/v-/vcpkg-tool-ninja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-tool-ninja.json b/versions/v-/vcpkg-tool-ninja.json index 51d0cfdfab10d1..29f9c401e9dded 100644 --- a/versions/v-/vcpkg-tool-ninja.json +++ b/versions/v-/vcpkg-tool-ninja.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "0a9071fd10711b762bfa1e50f7314f3dd23d41d9", + "git-tree": "dc54055a75f169ebb3690be8baf3f89bbc32183e", "version-date": "2022-03-31", "port-version": 0 } From 6ba30066a7c0adb998628fe6ee4642d963279ef9 Mon Sep 17 00:00:00 2001 From: Billy Robert O'Neal III Date: Fri, 6 May 2022 16:44:07 -0700 Subject: [PATCH 048/141] Remove checked in diff copy. --- ports/vcpkg-tool-ninja/PR2056.diff | 1062 ---------------------------- versions/v-/vcpkg-tool-ninja.json | 2 +- 2 files changed, 1 insertion(+), 1063 deletions(-) delete mode 100644 ports/vcpkg-tool-ninja/PR2056.diff diff --git a/ports/vcpkg-tool-ninja/PR2056.diff b/ports/vcpkg-tool-ninja/PR2056.diff deleted file mode 100644 index 110cfa0e43d4ba..00000000000000 --- a/ports/vcpkg-tool-ninja/PR2056.diff +++ /dev/null @@ -1,1062 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 57ae548f5b..3fdde943cc 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -17,10 +17,16 @@ endif() - - # --- compiler flags - if(MSVC) -+ option(BUILD_UNICODE "Build with Unicode support. This enables long path support on windows." ON) -+ - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") - string(REPLACE "/GR" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - add_compile_options(/W4 /wd4100 /wd4267 /wd4706 /wd4702 /wd4244 /GR- /Zc:__cplusplus) - add_compile_definitions(_CRT_SECURE_NO_WARNINGS) -+ -+ if(BUILD_UNICODE) -+ add_compile_definitions(UNICODE _UNICODE) -+ endif() - else() - include(CheckCXXCompilerFlag) - check_cxx_compiler_flag(-Wno-deprecated flag_no_deprecated) -diff --git a/src/build_log.cc b/src/build_log.cc -index 4dcd6cee53..b069bfaa5a 100644 ---- a/src/build_log.cc -+++ b/src/build_log.cc -@@ -186,7 +186,7 @@ bool BuildLog::OpenForWriteIfNeeded() { - if (log_file_ || log_file_path_.empty()) { - return true; - } -- log_file_ = fopen(log_file_path_.c_str(), "ab"); -+ log_file_ = fopen(ToPathWidth(log_file_path_).c_str(), "ab"); - if (!log_file_) { - return false; - } -@@ -260,7 +260,7 @@ struct LineReader { - - LoadStatus BuildLog::Load(const string& path, string* err) { - METRIC_RECORD(".ninja_log load"); -- FILE* file = fopen(path.c_str(), "r"); -+ FILE* file = fopen(ToPathWidth(path).c_str(), "r"); - if (!file) { - if (errno == ENOENT) - return LOAD_NOT_FOUND; -@@ -283,7 +283,7 @@ LoadStatus BuildLog::Load(const string& path, string* err) { - *err = ("build log version invalid, perhaps due to being too old; " - "starting over"); - fclose(file); -- unlink(path.c_str()); -+ unlink(ToPathWidth(path).c_str()); - // Don't report this as a failure. An empty build log will cause - // us to rebuild the outputs anyway. - return LOAD_SUCCESS; -@@ -393,7 +393,7 @@ bool BuildLog::Recompact(const string& path, const BuildLogUser& user, - - Close(); - string temp_path = path + ".recompact"; -- FILE* f = fopen(temp_path.c_str(), "wb"); -+ FILE* f = fopen(ToPathWidth(temp_path).c_str(), "wb"); - if (!f) { - *err = strerror(errno); - return false; -@@ -423,7 +423,7 @@ bool BuildLog::Recompact(const string& path, const BuildLogUser& user, - entries_.erase(dead_outputs[i]); - - fclose(f); -- if (unlink(path.c_str()) < 0) { -+ if (unlink(ToPathWidth(path).c_str()) < 0) { - *err = strerror(errno); - return false; - } -@@ -444,7 +444,7 @@ bool BuildLog::Restat(const StringPiece path, - - Close(); - std::string temp_path = path.AsString() + ".restat"; -- FILE* f = fopen(temp_path.c_str(), "wb"); -+ FILE* f = fopen(ToPathWidth(temp_path).c_str(), "wb"); - if (!f) { - *err = strerror(errno); - return false; -@@ -480,7 +480,7 @@ bool BuildLog::Restat(const StringPiece path, - } - - fclose(f); -- if (unlink(path.str_) < 0) { -+ if (unlink(ToPathWidth(path.str_).c_str()) < 0) { - *err = strerror(errno); - return false; - } -diff --git a/src/build_log_perftest.cc b/src/build_log_perftest.cc -index 5a936198fb..2547cabac1 100644 ---- a/src/build_log_perftest.cc -+++ b/src/build_log_perftest.cc -@@ -144,7 +144,7 @@ int main() { - printf("min %dms max %dms avg %.1fms\n", - min, max, total / times.size()); - -- unlink(kTestFilename); -+ unlink(ToPathWidth(kTestFilename).c_str()); - - return 0; - } -diff --git a/src/build_log_test.cc b/src/build_log_test.cc -index 37182994d2..010ea3921a 100644 ---- a/src/build_log_test.cc -+++ b/src/build_log_test.cc -@@ -31,15 +31,15 @@ using namespace std; - - namespace { - --const char kTestFilename[] = "BuildLogTest-tempfile"; -+const file_string kTestFilename(TEXT("BuildLogTest-tempfile")); - - struct BuildLogTest : public StateTestWithBuiltinRules, public BuildLogUser { - virtual void SetUp() { - // In case a crashing test left a stale file behind. -- unlink(kTestFilename); -+ unlink(kTestFilename.c_str()); - } - virtual void TearDown() { -- unlink(kTestFilename); -+ unlink(kTestFilename.c_str()); - } - virtual bool IsPathDead(StringPiece s) const { return false; } - }; -@@ -135,7 +135,7 @@ TEST_F(BuildLogTest, Truncate) { - } - - struct stat statbuf; -- ASSERT_EQ(0, stat(kTestFilename, &statbuf)); -+ ASSERT_EQ(0, stat(NarrowPath(kTestFilename).c_str(), &statbuf)); - ASSERT_GT(statbuf.st_size, 0); - - // For all possible truncations of the input file, assert that we don't -@@ -256,12 +256,13 @@ TEST_F(BuildLogTest, Restat) { - TestDiskInterface testDiskInterface; - char out2[] = { 'o', 'u', 't', '2', 0 }; - char* filter2[] = { out2 }; -- EXPECT_TRUE(log.Restat(kTestFilename, testDiskInterface, 1, filter2, &err)); -+ EXPECT_TRUE(log.Restat(NarrowPath(kTestFilename), testDiskInterface, 1, filter2, &err)); - ASSERT_EQ("", err); - e = log.LookupByOutput("out"); - ASSERT_EQ(3, e->mtime); // unchanged, since the filter doesn't match - -- EXPECT_TRUE(log.Restat(kTestFilename, testDiskInterface, 0, NULL, &err)); -+ EXPECT_TRUE( -+ log.Restat(NarrowPath(kTestFilename), testDiskInterface, 0, NULL, &err)); - ASSERT_EQ("", err); - e = log.LookupByOutput("out"); - ASSERT_EQ(4, e->mtime); -diff --git a/src/clean_test.cc b/src/clean_test.cc -index e99909c0d0..e1de421a6b 100644 ---- a/src/clean_test.cc -+++ b/src/clean_test.cc -@@ -469,11 +469,11 @@ TEST_F(CleanTest, CleanDepFileAndRspFileWithSpaces) { - struct CleanDeadTest : public CleanTest, public BuildLogUser{ - virtual void SetUp() { - // In case a crashing test left a stale file behind. -- unlink(kTestFilename); -+ unlink(ToPathWidth(kTestFilename).c_str()); - CleanTest::SetUp(); - } - virtual void TearDown() { -- unlink(kTestFilename); -+ unlink(ToPathWidth(kTestFilename).c_str()); - } - virtual bool IsPathDead(StringPiece) const { return false; } - }; -diff --git a/src/deps_log.cc b/src/deps_log.cc -index 7e48b38513..e194c42e12 100644 ---- a/src/deps_log.cc -+++ b/src/deps_log.cc -@@ -152,7 +152,7 @@ void DepsLog::Close() { - LoadStatus DepsLog::Load(const string& path, State* state, string* err) { - METRIC_RECORD(".ninja_deps load"); - char buf[kMaxRecordSize + 1]; -- FILE* f = fopen(path.c_str(), "rb"); -+ FILE* f = fopen(ToPathWidth(path).c_str(), "rb"); - if (!f) { - if (errno == ENOENT) - return LOAD_NOT_FOUND; -@@ -175,7 +175,7 @@ LoadStatus DepsLog::Load(const string& path, State* state, string* err) { - else - *err = "bad deps log signature or version; starting over"; - fclose(f); -- unlink(path.c_str()); -+ unlink(ToPathWidth(path).c_str()); - // Don't report this as a failure. An empty deps log will cause - // us to rebuild the outputs anyway. - return LOAD_SUCCESS; -@@ -316,7 +316,7 @@ bool DepsLog::Recompact(const string& path, string* err) { - - // OpenForWrite() opens for append. Make sure it's not appending to a - // left-over file from a previous recompaction attempt that crashed somehow. -- unlink(temp_path.c_str()); -+ unlink(ToPathWidth(temp_path).c_str()); - - DepsLog new_log; - if (!new_log.OpenForWrite(temp_path, err)) -@@ -348,7 +348,7 @@ bool DepsLog::Recompact(const string& path, string* err) { - deps_.swap(new_log.deps_); - nodes_.swap(new_log.nodes_); - -- if (unlink(path.c_str()) < 0) { -+ if (unlink(ToPathWidth(path).c_str()) < 0) { - *err = strerror(errno); - return false; - } -@@ -420,7 +420,7 @@ bool DepsLog::OpenForWriteIfNeeded() { - if (file_path_.empty()) { - return true; - } -- file_ = fopen(file_path_.c_str(), "ab"); -+ file_ = fopen(ToPathWidth(file_path_).c_str(), "ab"); - if (!file_) { - return false; - } -diff --git a/src/deps_log_test.cc b/src/deps_log_test.cc -index 13fcc788b6..e8d9ca2be9 100644 ---- a/src/deps_log_test.cc -+++ b/src/deps_log_test.cc -@@ -32,10 +32,10 @@ const char kTestFilename[] = "DepsLogTest-tempfile"; - struct DepsLogTest : public testing::Test { - virtual void SetUp() { - // In case a crashing test left a stale file behind. -- unlink(kTestFilename); -+ unlink(ToPathWidth(kTestFilename).c_str()); - } - virtual void TearDown() { -- unlink(kTestFilename); -+ unlink(ToPathWidth(kTestFilename).c_str()); - } - }; - -@@ -335,7 +335,7 @@ TEST_F(DepsLogTest, InvalidHeader) { - }; - for (size_t i = 0; i < sizeof(kInvalidHeaders) / sizeof(kInvalidHeaders[0]); - ++i) { -- FILE* deps_log = fopen(kTestFilename, "wb"); -+ FILE* deps_log = fopen(ToPathWidth(kTestFilename).c_str(), "wb"); - ASSERT_TRUE(deps_log != NULL); - ASSERT_EQ( - strlen(kInvalidHeaders[i]), -diff --git a/src/disk_interface.cc b/src/disk_interface.cc -index a37c5703ba..4c87b19ea5 100644 ---- a/src/disk_interface.cc -+++ b/src/disk_interface.cc -@@ -56,7 +56,7 @@ string DirName(const string& path) { - - int MakeDir(const string& path) { - #ifdef _WIN32 -- return _mkdir(path.c_str()); -+ return mkdir(ToPathWidth(path).c_str()); - #else - return mkdir(path.c_str(), 0777); - #endif -@@ -75,7 +75,7 @@ TimeStamp TimeStampFromFileTime(const FILETIME& filetime) { - - TimeStamp StatSingleFile(const string& path, string* err) { - WIN32_FILE_ATTRIBUTE_DATA attrs; -- if (!GetFileAttributesExA(path.c_str(), GetFileExInfoStandard, &attrs)) { -+ if (!GetFileAttributesEx(ToPathWidth(path).c_str(), GetFileExInfoStandard, &attrs)) { - DWORD win_err = GetLastError(); - if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) - return 0; -@@ -104,28 +104,28 @@ bool StatAllFilesInDir(const string& dir, map* stamps, - static_cast(1); - FINDEX_INFO_LEVELS level = - can_use_basic_info ? kFindExInfoBasic : FindExInfoStandard; -- WIN32_FIND_DATAA ffd; -- HANDLE find_handle = FindFirstFileExA((dir + "\\*").c_str(), level, &ffd, -+ WIN32_FIND_DATA ffd; -+ HANDLE find_handle = FindFirstFileEx(ToPathWidth((dir + "\\*")).c_str(), level, &ffd, - FindExSearchNameMatch, NULL, 0); - - if (find_handle == INVALID_HANDLE_VALUE) { - DWORD win_err = GetLastError(); - if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) - return true; -- *err = "FindFirstFileExA(" + dir + "): " + GetLastErrorString(); -+ *err = "FindFirstFileExW(" + dir + "): " + GetLastErrorString(); - return false; - } - do { -- string lowername = ffd.cFileName; -+ file_string lowername = ffd.cFileName; - if (lowername == "..") { - // Seems to just copy the timestamp for ".." from ".", which is wrong. - // This is the case at least on NTFS under Windows 7. - continue; - } - transform(lowername.begin(), lowername.end(), lowername.begin(), ::tolower); -- stamps->insert(make_pair(lowername, -+ stamps->insert(make_pair(NarrowPath(lowername), - TimeStampFromFileTime(ffd.ftLastWriteTime))); -- } while (FindNextFileA(find_handle, &ffd)); -+ } while (FindNextFile(find_handle, &ffd)); - FindClose(find_handle); - return true; - } -@@ -162,9 +162,9 @@ TimeStamp RealDiskInterface::Stat(const string& path, string* err) const { - #ifdef _WIN32 - // MSDN: "Naming Files, Paths, and Namespaces" - // http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx -- if (!path.empty() && path[0] != '\\' && path.size() > MAX_PATH) { -+ if (!path.empty() && path[0] != '\\' && path.size() > PATH_MAX) { - ostringstream err_stream; -- err_stream << "Stat(" << path << "): Filename longer than " << MAX_PATH -+ err_stream << "Stat(" << path << "): Filename longer than " << PATH_MAX - << " characters"; - *err = err_stream.str(); - return -1; -@@ -220,7 +220,7 @@ TimeStamp RealDiskInterface::Stat(const string& path, string* err) const { - } - - bool RealDiskInterface::WriteFile(const string& path, const string& contents) { -- FILE* fp = fopen(path.c_str(), "w"); -+ FILE* fp = fopen(ToPathWidth(path).c_str(), "w"); - if (fp == NULL) { - Error("WriteFile(%s): Unable to create file. %s", - path.c_str(), strerror(errno)); -@@ -266,7 +266,8 @@ FileReader::Status RealDiskInterface::ReadFile(const string& path, - - int RealDiskInterface::RemoveFile(const string& path) { - #ifdef _WIN32 -- DWORD attributes = GetFileAttributes(path.c_str()); -+ const file_string pathT = ToPathWidth(path); -+ DWORD attributes = GetFileAttributes(pathT.c_str()); - if (attributes == INVALID_FILE_ATTRIBUTES) { - DWORD win_err = GetLastError(); - if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) { -@@ -277,7 +278,7 @@ int RealDiskInterface::RemoveFile(const string& path) { - // On Windows Ninja should behave the same: - // https://github.com/ninja-build/ninja/issues/1886 - // Skip error checking. If this fails, accept whatever happens below. -- SetFileAttributes(path.c_str(), attributes & ~FILE_ATTRIBUTE_READONLY); -+ SetFileAttributes(pathT.c_str(), attributes & ~FILE_ATTRIBUTE_READONLY); - } - if (attributes & FILE_ATTRIBUTE_DIRECTORY) { - // remove() deletes both files and directories. On Windows we have to -@@ -285,7 +286,7 @@ int RealDiskInterface::RemoveFile(const string& path) { - // used on a directory) - // This fixes the behavior of ninja -t clean in some cases - // https://github.com/ninja-build/ninja/issues/828 -- if (!RemoveDirectory(path.c_str())) { -+ if (!RemoveDirectory(pathT.c_str())) { - DWORD win_err = GetLastError(); - if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) { - return 1; -@@ -295,7 +296,7 @@ int RealDiskInterface::RemoveFile(const string& path) { - return -1; - } - } else { -- if (!DeleteFile(path.c_str())) { -+ if (!DeleteFile(pathT.c_str())) { - DWORD win_err = GetLastError(); - if (win_err == ERROR_FILE_NOT_FOUND || win_err == ERROR_PATH_NOT_FOUND) { - return 1; -diff --git a/src/disk_interface_test.cc b/src/disk_interface_test.cc -index 5e952edde5..575204f1b8 100644 ---- a/src/disk_interface_test.cc -+++ b/src/disk_interface_test.cc -@@ -38,7 +38,7 @@ struct DiskInterfaceTest : public testing::Test { - } - - bool Touch(const char* path) { -- FILE *f = fopen(path, "w"); -+ FILE *f = fopen(ToPathWidth(path).c_str(), "w"); - if (!f) - return false; - return fclose(f) == 0; -@@ -178,7 +178,7 @@ TEST_F(DiskInterfaceTest, ReadFile) { - err.clear(); - - const char* kTestFile = "testfile"; -- FILE* f = fopen(kTestFile, "wb"); -+ FILE* f = fopen(ToPathWidth(kTestFile).c_str(), "wb"); - ASSERT_TRUE(f); - const char* kTestContent = "test content\nok"; - fprintf(f, "%s", kTestContent); -@@ -193,13 +193,13 @@ TEST_F(DiskInterfaceTest, ReadFile) { - TEST_F(DiskInterfaceTest, MakeDirs) { - string path = "path/with/double//slash/"; - EXPECT_TRUE(disk_.MakeDirs(path)); -- FILE* f = fopen((path + "a_file").c_str(), "w"); -+ FILE* f = fopen(ToPathWidth((path + "a_file")).c_str(), "w"); - EXPECT_TRUE(f); - EXPECT_EQ(0, fclose(f)); - #ifdef _WIN32 - string path2 = "another\\with\\back\\\\slashes\\"; - EXPECT_TRUE(disk_.MakeDirs(path2.c_str())); -- FILE* f2 = fopen((path2 + "a_file").c_str(), "w"); -+ FILE* f2 = fopen(ToPathWidth((path2 + "a_file")).c_str(), "w"); - EXPECT_TRUE(f2); - EXPECT_EQ(0, fclose(f2)); - #endif -diff --git a/src/file_path.h b/src/file_path.h -new file mode 100644 -index 0000000000..c11ab9d94d ---- /dev/null -+++ b/src/file_path.h -@@ -0,0 +1,123 @@ -+// Copyright 2021 Google Inc. All Rights Reserved. -+// -+// Licensed under the Apache License, Version 2.0 (the "License"); -+// you may not use this file except in compliance with the License. -+// You may obtain a copy of the License at -+// -+// http://www.apache.org/licenses/LICENSE-2.0 -+// -+// Unless required by applicable law or agreed to in writing, software -+// distributed under the License is distributed on an "AS IS" BASIS, -+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -+// See the License for the specific language governing permissions and -+// limitations under the License. -+ -+#ifndef NINJA_FILE_PATH_H_ -+#define NINJA_FILE_PATH_H_ -+ -+#include -+ -+#ifndef TEXT -+#ifdef UNICODE -+#define __TEXT(quote) L##quote -+#else /* UNICODE */ -+#define __TEXT(quote) quote -+#endif /* UNICODE */ -+#define TEXT(quote) __TEXT(quote) -+#endif -+ -+#ifndef _TCHAR_DEFINED -+#ifdef UNICODE -+typedef wchar_t TCHAR, *PTCHAR; -+#else -+typedef char TCHAR, *PTCHAR; -+#endif -+#define _TCHAR_DEFINED -+#endif /* !_TCHAR_DEFINED */ -+ -+#ifdef UNICODE -+typedef std::wstring file_string_t; -+#else -+typedef std::string file_string_t; -+#endif -+ -+inline std::string NarrowPath(const std::wstring& path) { -+ return std::string(path.begin(), path.end()); -+} -+ -+inline std::string NarrowPath(const std::string& path) { -+ return path; -+} -+ -+inline std::wstring WidenPath(const std::string& path) { -+ return std::wstring(path.begin(), path.end()); -+} -+ -+inline std::wstring WidenPath(const std::wstring& path) { -+ return path; -+} -+ -+#ifdef UNICODE -+inline std::wstring ToPathWidth(const std::string& path) { -+ return WidenPath(path); -+} -+ -+inline std::wstring ToPathWidth(const std::wstring& path) { -+ return path; -+} -+#else -+inline std::string ToPathWidth(const std::string& path) { -+ return path; -+} -+ -+inline std::string ToPathWidth(const std::wstring& path) { -+ return NarrowPath(path); -+} -+#endif -+ -+struct file_string : public file_string_t { -+ file_string() : file_string_t() {} -+ file_string(const std::string& path) : file_string_t(ToPathWidth(path)) {} -+ file_string(const std::wstring& path) : file_string_t(ToPathWidth(path)) {} -+ file_string(const char* path) : file_string_t(ToPathWidth(path)) {} -+ file_string(const wchar_t* path) : file_string_t(ToPathWidth(path)) {} -+ -+ operator const TCHAR*() const { return c_str(); } -+ -+#ifdef UNICODE -+ operator std::string() const { return NarrowPath(*this); } -+#endif -+ file_string operator+(const std::string& r) { -+ return this->append(ToPathWidth(r)); -+ } -+ -+ file_string operator+(const std::wstring& r) { -+ return this->append(ToPathWidth(r)); -+ } -+ -+ file_string operator+(const char* r) { -+ return this->append(ToPathWidth(r)); -+ } -+ -+ file_string operator+(const wchar_t* r) { -+ return this->append(ToPathWidth(r)); -+ } -+ -+ bool operator==(const std::string& r) { -+ return this->compare(ToPathWidth(r)) == 0; -+ } -+ -+ bool operator==(const std::wstring& r) { -+ return this->compare(ToPathWidth(r)) == 0; -+ } -+ -+ bool operator==(const char* r) { -+ return this->compare(ToPathWidth(r)) == 0; -+ } -+ -+ bool operator==(const wchar_t* r) { -+ return this->compare(ToPathWidth(r)) == 0; -+ } -+}; -+ -+#endif // NINJA_FILE_PATH_H_ -diff --git a/src/includes_normalize-win32.cc b/src/includes_normalize-win32.cc -index 081e364ac3..ba5031fed6 100644 ---- a/src/includes_normalize-win32.cc -+++ b/src/includes_normalize-win32.cc -@@ -28,12 +28,12 @@ using namespace std; - - namespace { - --bool InternalGetFullPathName(const StringPiece& file_name, char* buffer, -+bool InternalGetFullPathName(const StringPiece& file_name, TCHAR* buffer, - size_t buffer_length, string *err) { -- DWORD result_size = GetFullPathNameA(file_name.AsString().c_str(), -+ DWORD result_size = GetFullPathName(ToPathWidth(file_name.AsString()).c_str(), - buffer_length, buffer, NULL); - if (result_size == 0) { -- *err = "GetFullPathNameA(" + file_name.AsString() + "): " + -+ *err = "GetFullPathName(" + file_name.AsString() + "): " + - GetLastErrorString(); - return false; - } else if (result_size > buffer_length) { -@@ -76,19 +76,19 @@ bool SameDrive(StringPiece a, StringPiece b, string* err) { - return true; - } - -- char a_absolute[_MAX_PATH]; -- char b_absolute[_MAX_PATH]; -- if (!InternalGetFullPathName(a, a_absolute, sizeof(a_absolute), err)) { -+ TCHAR a_absolute[PATH_MAX]; -+ TCHAR b_absolute[PATH_MAX]; -+ if (!InternalGetFullPathName(a, a_absolute, _countof(a_absolute), err)) { - return false; - } -- if (!InternalGetFullPathName(b, b_absolute, sizeof(b_absolute), err)) { -+ if (!InternalGetFullPathName(b, b_absolute, _countof(b_absolute), err)) { - return false; - } -- char a_drive[_MAX_DIR]; -- char b_drive[_MAX_DIR]; -- _splitpath(a_absolute, a_drive, NULL, NULL, NULL); -- _splitpath(b_absolute, b_drive, NULL, NULL, NULL); -- return _stricmp(a_drive, b_drive) == 0; -+ TCHAR a_drive[_MAX_DIR]; -+ TCHAR b_drive[_MAX_DIR]; -+ t_splitpath(a_absolute, a_drive, NULL, NULL, NULL); -+ t_splitpath(b_absolute, b_drive, NULL, NULL, NULL); -+ return t_stricmp(a_drive, b_drive) == 0; - } - - // Check path |s| is FullPath style returned by GetFullPathName. -@@ -146,14 +146,14 @@ string IncludesNormalize::AbsPath(StringPiece s, string* err) { - return result; - } - -- char result[_MAX_PATH]; -- if (!InternalGetFullPathName(s, result, sizeof(result), err)) { -+ TCHAR result[PATH_MAX]; -+ if (!InternalGetFullPathName(s, result, _countof(result), err)) { - return ""; - } -- for (char* c = result; *c; ++c) -- if (*c == '\\') -- *c = '/'; -- return result; -+ for (TCHAR* c = result; *c; ++c) -+ if (*c == TEXT('\\')) -+ *c = TEXT('/'); -+ return NarrowPath(result); - } - - string IncludesNormalize::Relativize( -@@ -183,9 +183,9 @@ string IncludesNormalize::Relativize( - - bool IncludesNormalize::Normalize(const string& input, - string* result, string* err) const { -- char copy[_MAX_PATH + 1]; -+ char copy[PATH_MAX + 1]; - size_t len = input.size(); -- if (len > _MAX_PATH) { -+ if (len > PATH_MAX) { - *err = "path too long"; - return false; - } -diff --git a/src/includes_normalize_test.cc b/src/includes_normalize_test.cc -index 9214f53495..d0e2efb03c 100644 ---- a/src/includes_normalize_test.cc -+++ b/src/includes_normalize_test.cc -@@ -27,9 +27,10 @@ using namespace std; - namespace { - - string GetCurDir() { -- char buf[_MAX_PATH]; -- _getcwd(buf, sizeof(buf)); -- vector parts = SplitStringPiece(buf, '\\'); -+ TCHAR buf[PATH_MAX]; -+ getcwd(buf, _countof(buf)); -+ string narrowPath = NarrowPath(buf); -+ vector parts = SplitStringPiece(narrowPath, '\\'); - return parts[parts.size() - 1].AsString(); - } - -@@ -106,42 +107,47 @@ TEST(IncludesNormalize, LongInvalidPath) { - "pdb (for example, mspdb110.dll) could not be found on your path. This " - "is usually a configuration error. Compilation will continue using /Z7 " - "instead of /Zi, but expect a similar error when you link your program."; -+ -+ string longInputString(kLongInputString); -+ while (longInputString.size() <= PATH_MAX) { -+ longInputString += kLongInputString; -+ } -+ - // Too long, won't be canonicalized. Ensure doesn't crash. - string result, err; - IncludesNormalize normalizer("."); -- EXPECT_FALSE( -- normalizer.Normalize(kLongInputString, &result, &err)); -+ EXPECT_FALSE(normalizer.Normalize(longInputString, &result, &err)); - EXPECT_EQ("path too long", err); - - - // Construct max size path having cwd prefix. - // kExactlyMaxPath = "$cwd\\a\\aaaa...aaaa\0"; -- char kExactlyMaxPath[_MAX_PATH + 1]; -- ASSERT_NE(_getcwd(kExactlyMaxPath, sizeof kExactlyMaxPath), NULL); -+ TCHAR kExactlyMaxPath[PATH_MAX + 1]; -+ ASSERT_NE(getcwd(kExactlyMaxPath, _countof(kExactlyMaxPath)), NULL); - -- int cwd_len = strlen(kExactlyMaxPath); -- ASSERT_LE(cwd_len + 3 + 1, _MAX_PATH) -+ int cwd_len = t_strlen(kExactlyMaxPath); -+ ASSERT_LE(cwd_len + 3 + 1, PATH_MAX) - kExactlyMaxPath[cwd_len] = '\\'; - kExactlyMaxPath[cwd_len + 1] = 'a'; - kExactlyMaxPath[cwd_len + 2] = '\\'; - - kExactlyMaxPath[cwd_len + 3] = 'a'; - -- for (int i = cwd_len + 4; i < _MAX_PATH; ++i) { -- if (i > cwd_len + 4 && i < _MAX_PATH - 1 && i % 10 == 0) -+ for (int i = cwd_len + 4; i < PATH_MAX; ++i) { -+ if (i > cwd_len + 4 && i < PATH_MAX - 1 && i % 10 == 0) - kExactlyMaxPath[i] = '\\'; - else - kExactlyMaxPath[i] = 'a'; - } - -- kExactlyMaxPath[_MAX_PATH] = '\0'; -- EXPECT_EQ(strlen(kExactlyMaxPath), _MAX_PATH); -+ kExactlyMaxPath[PATH_MAX] = '\0'; -+ EXPECT_EQ(t_strlen(kExactlyMaxPath), PATH_MAX); - -- string forward_slashes(kExactlyMaxPath); -+ file_string forward_slashes(kExactlyMaxPath); - replace(forward_slashes.begin(), forward_slashes.end(), '\\', '/'); -- // Make sure a path that's exactly _MAX_PATH long is canonicalized. -- EXPECT_EQ(forward_slashes.substr(cwd_len + 1), -- NormalizeAndCheckNoError(kExactlyMaxPath)); -+ // Make sure a path that's exactly PATH_MAX long is canonicalized. -+ EXPECT_EQ(NarrowPath(forward_slashes.substr(cwd_len + 1)), -+ NormalizeAndCheckNoError(NarrowPath(kExactlyMaxPath))); - } - - TEST(IncludesNormalize, ShortRelativeButTooLongAbsolutePath) { -@@ -153,17 +159,22 @@ TEST(IncludesNormalize, ShortRelativeButTooLongAbsolutePath) { - - // Construct max size path having cwd prefix. - // kExactlyMaxPath = "aaaa\\aaaa...aaaa\0"; -- char kExactlyMaxPath[_MAX_PATH + 1]; -- for (int i = 0; i < _MAX_PATH; ++i) { -- if (i < _MAX_PATH - 1 && i % 10 == 4) -+ char kExactlyMaxPath[PATH_MAX + 1]; -+ for (int i = 0; i < PATH_MAX; ++i) { -+ if (i < PATH_MAX - 1 && i % 10 == 4) - kExactlyMaxPath[i] = '\\'; - else - kExactlyMaxPath[i] = 'a'; - } -- kExactlyMaxPath[_MAX_PATH] = '\0'; -- EXPECT_EQ(strlen(kExactlyMaxPath), _MAX_PATH); -+ kExactlyMaxPath[PATH_MAX] = '\0'; -+ EXPECT_EQ(strlen(kExactlyMaxPath), PATH_MAX); - -- // Make sure a path that's exactly _MAX_PATH long fails with a proper error. -+ // Make sure a path that's exactly PATH_MAX long fails with a proper error. - EXPECT_FALSE(normalizer.Normalize(kExactlyMaxPath, &result, &err)); -+ -+#ifdef UNICODE -+ EXPECT_TRUE(err.find("path too long") != string::npos); -+#else - EXPECT_TRUE(err.find("GetFullPathName") != string::npos); -+#endif - } -diff --git a/src/manifest_parser_perftest.cc b/src/manifest_parser_perftest.cc -index 853d8e0d5d..98952632c9 100644 ---- a/src/manifest_parser_perftest.cc -+++ b/src/manifest_parser_perftest.cc -@@ -103,7 +103,7 @@ int main(int argc, char* argv[]) { - return 1; - } - -- if (chdir(kManifestDir) < 0) -+ if (chdir(ToPathWidth(kManifestDir).c_str()) < 0) - Fatal("chdir: %s", strerror(errno)); - - const int kNumRepetitions = 5; -diff --git a/src/minidump-win32.cc b/src/minidump-win32.cc -index 9aea7678b9..6c59088520 100644 ---- a/src/minidump-win32.cc -+++ b/src/minidump-win32.cc -@@ -62,7 +62,7 @@ void CreateWin32MiniDump(_EXCEPTION_POINTERS* pep) { - HANDLE hFile = CreateFileA(temp_file, GENERIC_READ | GENERIC_WRITE, 0, NULL, - CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); - if (hFile == NULL) { -- Error("failed to create minidump: CreateFileA(%s): %s", -+ Error("failed to create minidump: CreateFile(%s): %s", - temp_file, GetLastErrorString().c_str()); - return; - } -diff --git a/src/msvc_helper-win32.cc b/src/msvc_helper-win32.cc -index 1148ae52a5..be9db63653 100644 ---- a/src/msvc_helper-win32.cc -+++ b/src/msvc_helper-win32.cc -@@ -46,7 +46,7 @@ int CLWrapper::Run(const string& command, string* output) { - - // Must be inheritable so subprocesses can dup to children. - HANDLE nul = -- CreateFileA("NUL", GENERIC_READ, -+ CreateFile(TEXT("NUL"), GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - &security_attributes, OPEN_EXISTING, 0, NULL); - if (nul == INVALID_HANDLE_VALUE) -@@ -60,14 +60,14 @@ int CLWrapper::Run(const string& command, string* output) { - Win32Fatal("SetHandleInformation"); - - PROCESS_INFORMATION process_info = {}; -- STARTUPINFOA startup_info = {}; -- startup_info.cb = sizeof(STARTUPINFOA); -+ STARTUPINFO startup_info = {}; -+ startup_info.cb = sizeof(STARTUPINFO); - startup_info.hStdInput = nul; - startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE); - startup_info.hStdOutput = stdout_write; - startup_info.dwFlags |= STARTF_USESTDHANDLES; - -- if (!CreateProcessA(NULL, (char*)command.c_str(), NULL, NULL, -+ if (!CreateProcess(NULL, (TCHAR*)ToPathWidth(command).c_str(), NULL, NULL, - /* inherit handles */ TRUE, 0, - env_block_, NULL, - &startup_info, &process_info)) { -diff --git a/src/msvc_helper_main-win32.cc b/src/msvc_helper_main-win32.cc -index 7d593071f9..b295f34fa6 100644 ---- a/src/msvc_helper_main-win32.cc -+++ b/src/msvc_helper_main-win32.cc -@@ -50,9 +50,9 @@ void PushPathIntoEnvironment(const string& env_block) { - } - } - --void WriteDepFileOrDie(const char* object_path, const CLParser& parse) { -- string depfile_path = string(object_path) + ".d"; -- FILE* depfile = fopen(depfile_path.c_str(), "w"); -+void WriteDepFileOrDie(const TCHAR* object_path, const CLParser& parse) { -+ file_string depfile_path = file_string(object_path) + TEXT(".d"); -+ FILE* depfile = fopen(ToPathWidth(depfile_path).c_str(), "w"); - if (!depfile) { - unlink(object_path); - Fatal("opening %s: %s", depfile_path.c_str(), -@@ -133,7 +133,7 @@ int MSVCHelperMain(int argc, char** argv) { - string err; - if (!parser.Parse(output, deps_prefix, &output, &err)) - Fatal("%s\n", err.c_str()); -- WriteDepFileOrDie(output_filename, parser); -+ WriteDepFileOrDie(ToPathWidth(output_filename).c_str(), parser); - } - - if (output.empty()) -diff --git a/src/ninja.cc b/src/ninja.cc -index 89580ae94f..a93fa06238 100644 ---- a/src/ninja.cc -+++ b/src/ninja.cc -@@ -871,11 +871,11 @@ int NinjaMain::ToolCompilationDatabase(const Options* options, int argc, - argc -= optind; - - bool first = true; -- vector cwd; -- char* success = NULL; -+ vector cwd; -+ TCHAR* success = NULL; - - do { -- cwd.resize(cwd.size() + 1024); -+ cwd.resize(cwd.size() + PATH_MAX); - errno = 0; - success = getcwd(&cwd[0], cwd.size()); - } while (!success && errno == ERANGE); -@@ -893,7 +893,7 @@ int NinjaMain::ToolCompilationDatabase(const Options* options, int argc, - if (!first) { - putchar(','); - } -- printCompdb(&cwd[0], *e, eval_mode); -+ printCompdb(NarrowPath(&cwd[0]).c_str(), *e, eval_mode); - first = false; - } else { - for (int i = 0; i != argc; ++i) { -@@ -901,7 +901,7 @@ int NinjaMain::ToolCompilationDatabase(const Options* options, int argc, - if (!first) { - putchar(','); - } -- printCompdb(&cwd[0], *e, eval_mode); -+ printCompdb(NarrowPath(&cwd[0]).c_str(), *e, eval_mode); - first = false; - } - } -@@ -1442,7 +1442,7 @@ NORETURN void real_main(int argc, char** argv) { - // can be piped into a file without this string showing up. - if (!options.tool && config.verbosity != BuildConfig::NO_STATUS_UPDATE) - status->Info("Entering directory `%s'", options.working_dir); -- if (chdir(options.working_dir) < 0) { -+ if (chdir(ToPathWidth(options.working_dir).c_str()) < 0) { - Fatal("chdir to '%s' - %s", options.working_dir, strerror(errno)); - } - } -diff --git a/src/subprocess-win32.cc b/src/subprocess-win32.cc -index ff3baaca7f..8f5faccdac 100644 ---- a/src/subprocess-win32.cc -+++ b/src/subprocess-win32.cc -@@ -39,11 +39,11 @@ Subprocess::~Subprocess() { - } - - HANDLE Subprocess::SetupPipe(HANDLE ioport) { -- char pipe_name[100]; -- snprintf(pipe_name, sizeof(pipe_name), -- "\\\\.\\pipe\\ninja_pid%lu_sp%p", GetCurrentProcessId(), this); -+ TCHAR pipe_name[100]; -+ t_snprintf(pipe_name, sizeof(pipe_name), -+ TEXT("\\\\.\\pipe\\ninja_pid%lu_sp%p"), GetCurrentProcessId(), this); - -- pipe_ = ::CreateNamedPipeA(pipe_name, -+ pipe_ = ::CreateNamedPipe(pipe_name, - PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED, - PIPE_TYPE_BYTE, - PIPE_UNLIMITED_INSTANCES, -@@ -62,7 +62,7 @@ HANDLE Subprocess::SetupPipe(HANDLE ioport) { - - // Get the write end of the pipe as a handle inheritable across processes. - HANDLE output_write_handle = -- CreateFileA(pipe_name, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); -+ CreateFile(pipe_name, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); - HANDLE output_write_child; - if (!DuplicateHandle(GetCurrentProcess(), output_write_handle, - GetCurrentProcess(), &output_write_child, -@@ -83,13 +83,13 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { - security_attributes.bInheritHandle = TRUE; - // Must be inheritable so subprocesses can dup to children. - HANDLE nul = -- CreateFileA("NUL", GENERIC_READ, -+ CreateFile(TEXT("NUL"), GENERIC_READ, - FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, - &security_attributes, OPEN_EXISTING, 0, NULL); - if (nul == INVALID_HANDLE_VALUE) - Fatal("couldn't open nul"); - -- STARTUPINFOA startup_info; -+ STARTUPINFO startup_info; - memset(&startup_info, 0, sizeof(startup_info)); - startup_info.cb = sizeof(STARTUPINFO); - if (!use_console_) { -@@ -109,7 +109,7 @@ bool Subprocess::Start(SubprocessSet* set, const string& command) { - - // Do not prepend 'cmd /c' on Windows, this breaks command - // lines greater than 8,191 chars. -- if (!CreateProcessA(NULL, (char*)command.c_str(), NULL, NULL, -+ if (!CreateProcess(NULL, (TCHAR*)ToPathWidth(command).c_str(), NULL, NULL, - /* inherit handles */ TRUE, process_flags, - NULL, NULL, - &startup_info, &process_info)) { -diff --git a/src/test.cc b/src/test.cc -index 11b1c9ebf0..ec3e522797 100644 ---- a/src/test.cc -+++ b/src/test.cc -@@ -56,7 +56,7 @@ char* mkdtemp(char* name_template) { - return NULL; - } - -- err = _mkdir(name_template); -+ err = mkdir(ToPathWidth(name_template).c_str()); - if (err < 0) { - perror("mkdir"); - return NULL; -@@ -68,8 +68,8 @@ char* mkdtemp(char* name_template) { - - string GetSystemTempDir() { - #ifdef _WIN32 -- char buf[1024]; -- if (!GetTempPath(sizeof(buf), buf)) -+ char buf[MAX_PATH + 1]; -+ if (!GetTempPathA(sizeof(buf), buf)) - return ""; - return buf; - #else -@@ -200,7 +200,7 @@ void ScopedTempDir::CreateAndEnter(const string& name) { - start_dir_ = GetSystemTempDir(); - if (start_dir_.empty()) - Fatal("couldn't get system temp dir"); -- if (chdir(start_dir_.c_str()) < 0) -+ if (chdir(ToPathWidth(start_dir_).c_str()) < 0) - Fatal("chdir: %s", strerror(errno)); - - // Create a temporary subdirectory of that. -@@ -213,7 +213,7 @@ void ScopedTempDir::CreateAndEnter(const string& name) { - temp_dir_name_ = tempname; - - // chdir into the new temporary directory. -- if (chdir(temp_dir_name_.c_str()) < 0) -+ if (chdir(ToPathWidth(temp_dir_name_).c_str()) < 0) - Fatal("chdir: %s", strerror(errno)); - } - -@@ -222,7 +222,7 @@ void ScopedTempDir::Cleanup() { - return; // Something went wrong earlier. - - // Move out of the directory we're about to clobber. -- if (chdir(start_dir_.c_str()) < 0) -+ if (chdir(ToPathWidth(start_dir_).c_str()) < 0) - Fatal("chdir: %s", strerror(errno)); - - #ifdef _WIN32 -diff --git a/src/util.cc b/src/util.cc -index 080883e066..c92dcfe3de 100644 ---- a/src/util.cc -+++ b/src/util.cc -@@ -140,7 +140,7 @@ void CanonicalizePath(char* path, size_t* len, uint64_t* slash_bits) { - return; - } - -- const int kMaxPathComponents = 60; -+ const int kMaxPathComponents = _MAX_DIR; - char* components[kMaxPathComponents]; - int component_count = 0; - -@@ -332,12 +332,12 @@ void GetWin32EscapedString(const string& input, string* result) { - result->push_back(kQuote); - } - --int ReadFile(const string& path, string* contents, string* err) { -+int ReadFile(const std::string& path, string* contents, string* err) { - #ifdef _WIN32 - // This makes a ninja run on a set of 1500 manifest files about 4% faster - // than using the generic fopen code below. - err->clear(); -- HANDLE f = ::CreateFileA(path.c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, -+ HANDLE f = ::CreateFile(ToPathWidth(path).c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); - if (f == INVALID_HANDLE_VALUE) { - err->assign(GetLastErrorString()); -diff --git a/src/util.h b/src/util.h -index 4a7fea2258..4d110b4a8e 100644 ---- a/src/util.h -+++ b/src/util.h -@@ -17,6 +17,7 @@ - - #ifdef _WIN32 - #include "win32port.h" -+#include - #else - #include - #endif -@@ -26,6 +27,8 @@ - #include - #include - -+#include "file_path.h" -+ - #ifdef _MSC_VER - #define NORETURN __declspec(noreturn) - #else -@@ -113,13 +116,50 @@ bool Truncate(const std::string& path, size_t size, std::string* err); - #ifdef _MSC_VER - #define snprintf _snprintf - #define fileno _fileno -+#define strtoull _strtoui64 -+ -+#ifdef UNICODE -+#define unlink _wunlink -+#define fopen(path, mode) _wfopen(path, TEXT(mode)) -+#define chdir _wchdir -+#define getcwd _wgetcwd -+#define mkdir _wmkdir -+ -+#define t_snprintf _snwprintf -+#define t_splitpath _wsplitpath -+#define t_stricmp _wcsicmp -+#define t_strlen wcslen -+ -+#define PATH_MAX 2048 -+#else // !UNICODE - #define unlink _unlink -+#define fopen(path, mode) fopen(path, TEXT(mode)) - #define chdir _chdir --#define strtoull _strtoui64 - #define getcwd _getcwd -+#define mkdir _mkdir -+ -+#define t_snprintf snprintf -+#define t_splitpath _splitpath -+#define t_stricmp _stricmp -+#define t_strlen strlen -+ -+#define PATH_MAX _MAX_PATH -+#endif // !UNICODE -+#else // !_MSC_VER -+#define t_snprintf snprintf -+#define t_splitpath _splitpath -+#define t_stricmp _stricmp -+#define t_strlen strlen -+ -+#ifndef PATH_MAX - #define PATH_MAX _MAX_PATH - #endif - -+#ifndef _MAX_DIR -+#define _MAX_DIR 256 -+#endif -+#endif // !_MSC_VER -+ - #ifdef _WIN32 - /// Convert the value returned by GetLastError() into a string. - std::string GetLastErrorString(); -diff --git a/windows/ninja.manifest b/windows/ninja.manifest -index dab929e151..aaa0bd362e 100644 ---- a/windows/ninja.manifest -+++ b/windows/ninja.manifest -@@ -3,6 +3,7 @@ - - - UTF-8 -+ true - - - diff --git a/versions/v-/vcpkg-tool-ninja.json b/versions/v-/vcpkg-tool-ninja.json index 29f9c401e9dded..643a736c0a0e50 100644 --- a/versions/v-/vcpkg-tool-ninja.json +++ b/versions/v-/vcpkg-tool-ninja.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "dc54055a75f169ebb3690be8baf3f89bbc32183e", + "git-tree": "0d55ba6e9ede00479127566b8f39fce7034e1b05", "version-date": "2022-03-31", "port-version": 0 } From 34d5e125ebe54bd07687328ffd54788be844775c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 7 May 2022 19:57:07 +0200 Subject: [PATCH 049/141] use vcpkg-port-config to get the tools automatically --- ports/vcpkg-tool-7zip/portfile.cmake | 4 +- ports/vcpkg-tool-7zip/vcpkg-port-config.cmake | 1 + ports/vcpkg-tool-llvm/portfile.cmake | 53 ++++++++++--------- ports/vcpkg-tool-llvm/vcpkg-port-config.cmake | 3 ++ ports/vcpkg-tool-llvm/vcpkg.json | 2 +- 5 files changed, 34 insertions(+), 29 deletions(-) create mode 100644 ports/vcpkg-tool-7zip/vcpkg-port-config.cmake create mode 100644 ports/vcpkg-tool-llvm/vcpkg-port-config.cmake diff --git a/ports/vcpkg-tool-7zip/portfile.cmake b/ports/vcpkg-tool-7zip/portfile.cmake index 8c0c4fca54d555..bd57ba9cba2182 100644 --- a/ports/vcpkg-tool-7zip/portfile.cmake +++ b/ports/vcpkg-tool-7zip/portfile.cmake @@ -39,9 +39,7 @@ if(VCPKG_TARGET_IS_WINDOWS) message(STATUS "Extracting ${name_msg} ... finished!") file(RENAME "${output_path}/${name_folder}/SourceDir/Files/7-Zip" "${output_path}/${PORT}/") file(REMOVE_RECURSE "${output_path}/${name_folder}") - set(details "set(program_version \"${program_version}\")\n") - string(APPEND details "set(paths_to_search \"\${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}\")\n") - file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/details.cmake" "${details}") + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) endif() diff --git a/ports/vcpkg-tool-7zip/vcpkg-port-config.cmake b/ports/vcpkg-tool-7zip/vcpkg-port-config.cmake new file mode 100644 index 00000000000000..540d9a08de926f --- /dev/null +++ b/ports/vcpkg-tool-7zip/vcpkg-port-config.cmake @@ -0,0 +1 @@ +set(7Z "${CMAKE_CURRENT_LIST_DIR}/../../manual-tools/vcpkg-tool-7zip/7z@VCPKG_TARGET_EXECUTABLE_SUFFIX@") diff --git a/ports/vcpkg-tool-llvm/portfile.cmake b/ports/vcpkg-tool-llvm/portfile.cmake index b8c54e54f18a16..fde6ca2a15e9c9 100644 --- a/ports/vcpkg-tool-llvm/portfile.cmake +++ b/ports/vcpkg-tool-llvm/portfile.cmake @@ -3,29 +3,32 @@ set(VCPKG_POLICY_EMPTY_PACKAGE enabled) file(READ "${CURRENT_PORT_DIR}/vcpkg.json" manifest_contents) string(JSON version GET "${manifest_contents}" version) -if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") - set(name LLVM-${version}-win32.exe) - set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/${name}") - set(hash 6df7b992d4c382c3e1c71ff30e43b9fa0311c33adfebc9feaa4ea7e2f50fdb836b04dbad529aac1a6f7bf0135b98ecf3291d0386152afbcaf5ac7cb4592a94fa) -elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") - set(name LLVM-${version}-win64.exe) - set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/${name}") - set(hash 56e8871898fc2d62383b76b75ce7852a0179d70a1d327e95e73a115f1e09db5ceec1ae950279ddb0779de417eca9cdf7517d9c6a5498c7c17de6550aef16073d) -endif() -vcpkg_download_distfile(archive_path - URLS "${url}" - FILENAME "${name}" - SHA512 "${hash}" -) +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + if(VCPKG_DETECTED_CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(name LLVM-${version}-win32.exe) + set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/${name}") + set(hash 82bebd0c0912fd000602f5961492ada913e3b6cb63001b63e2de3e070a168c65a628ebb1a443403b272210af131240f3a3032e03478037b5a8200cc243f27b74) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(name LLVM-${version}-win64.exe) + set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/${name}") + set(hash 96916ef4838e2b43debbf6e92c3b3b1a862051348771df9de6c7c1b0d839ef04c057bddde7e59c2f08e1483d7609dd7a5e77616ed1072047404caa974841a668) + endif() + vcpkg_download_distfile(archive_path + URLS "${url}" + FILENAME "${name}" + SHA512 "${hash}" + ) -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") -set(7Z "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-7zip/7z.exe") -vcpkg_execute_in_download_mode( - COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" "-y" "-bso0" "-bsp0" - WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" - ) -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/$PLUGINSDIR") - -set(details "set(program_version \"${program_version}\")\n") -string(APPEND details "set(paths_to_search \"\${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/bin\")\n") -file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/details.cmake" "${details}") \ No newline at end of file + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") + set(7Z "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-7zip/7z.exe") + vcpkg_execute_in_download_mode( + COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" "-y" "-bso0" "-bsp0" + WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" + ) + file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/$PLUGINSDIR") + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) + endif() +endif() \ No newline at end of file diff --git a/ports/vcpkg-tool-llvm/vcpkg-port-config.cmake b/ports/vcpkg-tool-llvm/vcpkg-port-config.cmake new file mode 100644 index 00000000000000..e1fd35be9eaad0 --- /dev/null +++ b/ports/vcpkg-tool-llvm/vcpkg-port-config.cmake @@ -0,0 +1,3 @@ +set(CLANG "${CMAKE_CURRENT_LIST_DIR}/../../manual-tools/vcpkg-tool-llvm/bin/clang@VCPKG_TARGET_EXECUTABLE_SUFFIX@") +set(CLANG_CL "${CMAKE_CURRENT_LIST_DIR}/../../manual-tools/vcpkg-tool-llvm/bin/clang-cl@VCPKG_TARGET_EXECUTABLE_SUFFIX@") +set(LLVM_ROOT "${CMAKE_CURRENT_LIST_DIR}/../../manual-tools/vcpkg-tool-llvm/") diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json index a38d2640dbfeeb..4c7467c3e85dd3 100644 --- a/ports/vcpkg-tool-llvm/vcpkg.json +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -1,6 +1,6 @@ { "name": "vcpkg-tool-llvm", - "version": "13.0.1", + "version": "14.0.3", "description": "The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Note: the repository does not accept github pull requests at this moment. Please submit your patches at http://reviews.llvm.org. ", "homepage": "https://github.com/llvm/llvm-project", "license": null, From c4a5ea996b12435d7c8e063b1e762afb0e6523e9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 7 May 2022 20:57:37 +0200 Subject: [PATCH 050/141] add missing dep --- ports/vcpkg-tool-llvm/vcpkg.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json index 4c7467c3e85dd3..41bcfe6148b45d 100644 --- a/ports/vcpkg-tool-llvm/vcpkg.json +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -6,6 +6,10 @@ "license": null, "supports": "windows & (x64 | x86)", "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, { "name": "vcpkg-tool-7zip", "host": true From 9d39530e9c35db2c2f7dd2e7301cc76a8911f2f2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 7 May 2022 20:58:00 +0200 Subject: [PATCH 051/141] add pgmath --- ports/pgmath/build_only_one_kind.patch | 16 ++++++ ports/pgmath/portfile.cmake | 69 ++++++++++++++++++++++++++ ports/pgmath/vcpkg.json | 23 +++++++++ ports/pgmath/werror.patch | 13 +++++ 4 files changed, 121 insertions(+) create mode 100644 ports/pgmath/build_only_one_kind.patch create mode 100644 ports/pgmath/portfile.cmake create mode 100644 ports/pgmath/vcpkg.json create mode 100644 ports/pgmath/werror.patch diff --git a/ports/pgmath/build_only_one_kind.patch b/ports/pgmath/build_only_one_kind.patch new file mode 100644 index 00000000000000..8805668bf06c1a --- /dev/null +++ b/ports/pgmath/build_only_one_kind.patch @@ -0,0 +1,16 @@ +diff --git a/runtime/libpgmath/lib/CMakeLists.txt b/runtime/libpgmath/lib/CMakeLists.txt +index c64f7fb83..149d8bfcd 100644 +--- a/runtime/libpgmath/lib/CMakeLists.txt ++++ b/runtime/libpgmath/lib/CMakeLists.txt +@@ -259,7 +259,10 @@ endif() + else() + set_target_properties(${LIBPGMATH_LIBRARY_NAME}_static PROPERTIES OUTPUT_NAME ${LIBPGMATH_LIBRARY_NAME}) + endif() ++if(PGMATH_SHARED) + install(TARGETS ${LIBPGMATH_LIBRARY_NAME} + LIBRARY DESTINATION lib) ++else() + install(TARGETS ${LIBPGMATH_LIBRARY_NAME}_static + ARCHIVE DESTINATION lib) ++endif() +\ No newline at end of file diff --git a/ports/pgmath/portfile.cmake b/ports/pgmath/portfile.cmake new file mode 100644 index 00000000000000..d0648d68703065 --- /dev/null +++ b/ports/pgmath/portfile.cmake @@ -0,0 +1,69 @@ +#vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # requires same linkage as vcpkg-tool-flang + +vcpkg_download_distfile( + PGMATH_PATCH + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1167.diff" # stable? + FILENAME 1167.diff + SHA512 4a795e59c1c930a1f19963336881134037332eadc8bdd3206205f8affdbac938a177db603bfd03f0783a84be38818e21c8ec09a0f1089252e1328cecd8f26ff1 +) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO flang-compiler/flang + REF 0df85a22ae141078658569a0e1b3745afd702e45 + SHA512 f7195fbf0885dd767ff7f8ab48688586f4c9995dc81d619d4a315e3a3a8b1af019232410aa4eff1e85ed910281338dc6ebb54f55d34534c3d92766b6e1a74149 + PATCHES "${PGMATH_PATCH}" + build_only_one_kind.patch + werror.patch +) + +vcpkg_find_acquire_program(PYTHON3) +cmake_path(GET PYTHON3 PARENT_PATH PYTHON3_DIR) +vcpkg_add_to_path("${PYTHON3_DIR}") + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + if(VCPKG_DETECTED_CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + vcpkg_list(SET OPTIONS + "-DCMAKE_C_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-llvm/bin/clang-cl.exe" + "-DCMAKE_CXX_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-llvm/bin/clang-cl.exe" + "-DCMAKE_AR=${VCPKG_DETECTED_CMAKE_AR}" + "-DCMAKE_LINKER=${VCPKG_DETECTED_CMAKE_LINKER}" + "-DCMAKE_MT=${VCPKG_DETECTED_CMAKE_MT}" + ) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + string(APPEND VCPKG_C_FLAGS " --target=aarch64-win32-msvc") + string(APPEND VCPKG_CXX_FLAGS " --target=aarch64-win32-msvc") + endif() + endif() + vcpkg_acquire_msys(MSYS_ROOT PACKAGES gawk bash sed) + vcpkg_add_to_path("${MSYS_ROOT}/usr/bin") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + vcpkg_list(APPEND OPTIONS -DCMAKE_SYSTEM_PROCESSOR=AMD64) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + vcpkg_list(APPEND OPTIONS -DCMAKE_CROSSCOMPILING=ON -DCMAKE_SYSTEM_PROCESSOR:STRING=ARM64 -DCMAKE_SYSTEM_NAME:STRING=Windows) + message(STATUS "OPTIONS:${OPTIONS}" ) + else() + vcpkg_list(APPEND OPTIONS -DCMAKE_SYSTEM_PROCESSOR=generic + -DLIBPGMATH_WITH_GENERIC=ON) + endif() +endif() + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" PGMATH_SHARED) +vcpkg_list(APPEND OPTIONS "-DPGMATH_SHARED=${PGMATH_SHARED}") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/runtime/libpgmath" + OPTIONS ${OPTIONS} + "-DWITH_WERROR=OFF" + MAYBE_UNUSED_VARIABLES + WITH_WERROR + +) +vcpkg_cmake_install(ADD_BIN_TO_PATH) + +configure_file("${SOURCE_PATH}/runtime/libpgmath/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") + +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) # Build depends on VCPKG_CRT_LINKAGE (maybe introcude VCPKG_FRT_LINKAGE?) diff --git a/ports/pgmath/vcpkg.json b/ports/pgmath/vcpkg.json new file mode 100644 index 00000000000000..5f324678edc705 --- /dev/null +++ b/ports/pgmath/vcpkg.json @@ -0,0 +1,23 @@ +{ + "name": "pgmath", + "version-date": "2022-04-23", + "description": "PGI Math Library", + "homepage": "https://llvm.org", + "license": "Apache-2.0", + "supports": "x64 | arm64", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-tool-llvm", + "host": true, + "platform": "windows" + } + ] +} diff --git a/ports/pgmath/werror.patch b/ports/pgmath/werror.patch new file mode 100644 index 00000000000000..2972b88882a6ee --- /dev/null +++ b/ports/pgmath/werror.patch @@ -0,0 +1,13 @@ +diff --git a/runtime/libpgmath/lib/x86_64/CMakeLists.txt b/runtime/libpgmath/lib/x86_64/CMakeLists.txt +index c96c8357f..9b1bf08e5 100644 +--- a/runtime/libpgmath/lib/x86_64/CMakeLists.txt ++++ b/runtime/libpgmath/lib/x86_64/CMakeLists.txt +@@ -87,7 +87,7 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + set(FLAGS "${FLAGS}-Wall -W -Wstrict-prototypes -Wwrite-strings ") + if(NOT ${LIBPGMATH_SYSTEM_NAME} MATCHES "Windows") +- set(FLAGS "${FLAGS}-Werror ") ++# set(FLAGS "${FLAGS}-Werror ") + endif() + libmath_add_object_library("${SRCS}" "${FLAGS}" "${DEFINITIONS}" "isoc99") + From de00fef401956ebec76207fef57e8cccae00523e Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 7 May 2022 23:06:12 +0200 Subject: [PATCH 052/141] add fortran stuff --- ports/flang-fortran-runtime/1177.diff | 17 ++ ports/flang-fortran-runtime/awk.patch | 129 +++++++++++ ports/flang-fortran-runtime/cross.patch | 50 ++++ ports/flang-fortran-runtime/move_flang2.patch | 28 +++ ports/flang-fortran-runtime/portfile.cmake | 130 +++++++++++ .../sep_runtime_from_compiler.patch | 66 ++++++ ports/flang-fortran-runtime/vcpkg.json | 39 ++++ ports/pgmath/portfile.cmake | 7 +- .../0004-fix-dr-1734.patch | 17 ++ .../0010-fix-libffi.patch | 16 ++ .../0011-fix-libxml2.patch | 34 +++ ports/vcpkg-tool-flang-llvm/65.diff | 175 ++++++++++++++ ports/vcpkg-tool-flang-llvm/portfile.cmake | 219 ++++++++++++++++++ ports/vcpkg-tool-flang-llvm/vcpkg.json | 20 ++ ports/vcpkg-tool-flang/1177.diff | 17 ++ ports/vcpkg-tool-flang/awk.patch | 129 +++++++++++ ports/vcpkg-tool-flang/cross.patch | 50 ++++ ports/vcpkg-tool-flang/move_flang2.patch | 28 +++ ports/vcpkg-tool-flang/portfile.cmake | 146 ++++++++++++ .../sep_runtime_from_compiler.patch | 66 ++++++ ports/vcpkg-tool-flang/vcpkg.json | 37 +++ 21 files changed, 1416 insertions(+), 4 deletions(-) create mode 100644 ports/flang-fortran-runtime/1177.diff create mode 100644 ports/flang-fortran-runtime/awk.patch create mode 100644 ports/flang-fortran-runtime/cross.patch create mode 100644 ports/flang-fortran-runtime/move_flang2.patch create mode 100644 ports/flang-fortran-runtime/portfile.cmake create mode 100644 ports/flang-fortran-runtime/sep_runtime_from_compiler.patch create mode 100644 ports/flang-fortran-runtime/vcpkg.json create mode 100644 ports/vcpkg-tool-flang-llvm/0004-fix-dr-1734.patch create mode 100644 ports/vcpkg-tool-flang-llvm/0010-fix-libffi.patch create mode 100644 ports/vcpkg-tool-flang-llvm/0011-fix-libxml2.patch create mode 100644 ports/vcpkg-tool-flang-llvm/65.diff create mode 100644 ports/vcpkg-tool-flang-llvm/portfile.cmake create mode 100644 ports/vcpkg-tool-flang-llvm/vcpkg.json create mode 100644 ports/vcpkg-tool-flang/1177.diff create mode 100644 ports/vcpkg-tool-flang/awk.patch create mode 100644 ports/vcpkg-tool-flang/cross.patch create mode 100644 ports/vcpkg-tool-flang/move_flang2.patch create mode 100644 ports/vcpkg-tool-flang/portfile.cmake create mode 100644 ports/vcpkg-tool-flang/sep_runtime_from_compiler.patch create mode 100644 ports/vcpkg-tool-flang/vcpkg.json diff --git a/ports/flang-fortran-runtime/1177.diff b/ports/flang-fortran-runtime/1177.diff new file mode 100644 index 00000000000000..17e0f2dbe54211 --- /dev/null +++ b/ports/flang-fortran-runtime/1177.diff @@ -0,0 +1,17 @@ +diff --git a/tools/flang2/flang2exe/llassem.cpp b/tools/flang2/flang2exe/llassem.cpp +index 7c15e7338cb..6c6a953fc79 100644 +--- a/tools/flang2/flang2exe/llassem.cpp ++++ b/tools/flang2/flang2exe/llassem.cpp +@@ -1170,7 +1170,12 @@ assemble_end(void) + fprintf(ASMFIL, "%%struct%s = type < { %s } > \n", name, typed); ++#if defined (_WIN64) ++ fprintf(ASMFIL, "@%s = %s global %%struct%s ", name, ++ AG_ISMOD(gblsym) ? "external dllimport" : "common", name); ++#else + fprintf(ASMFIL, "@%s = %s global %%struct%s ", name, + AG_ISMOD(gblsym) ? "external" : "common", name); ++#endif + fprintf(ASMFIL, "%s, align %d", + AG_ISMOD(gblsym) ? "" : " zeroinitializer", align_value); + } + for (llObjtodbgFirst(listp, &i); !llObjtodbgAtEnd(&i); diff --git a/ports/flang-fortran-runtime/awk.patch b/ports/flang-fortran-runtime/awk.patch new file mode 100644 index 00000000000000..211e73ea8d7dfb --- /dev/null +++ b/ports/flang-fortran-runtime/awk.patch @@ -0,0 +1,129 @@ +diff --git a/runtime/libpgmath/lib/common/CMakeLists.txt b/runtime/libpgmath/lib/common/CMakeLists.txt +index 59454c9de..caea12be3 100644 +--- a/runtime/libpgmath/lib/common/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/CMakeLists.txt +@@ -309,10 +309,11 @@ set(DEFINITIONS_CMPLX ${DEFINITIONS} MTH_CMPLX_C99_ABI) + libmath_add_object_library("${MTH_CMPLX_SRCS}" "${FLAGS}" "${DEFINITIONS_CMPLX}" "common_mth_cmplx") + + if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENERIC}) ++ find_program(AWK_COMMAND NAMES awk) + # Generate mth_128mask.c + set(TARGET_NAME "mth_128mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=core2") +@@ -325,7 +326,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=core2") +@@ -338,7 +339,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_256mask.c + set(TARGET_NAME "mth_256mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=sandybridge") +@@ -351,7 +352,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_256generic.c + set(TARGET_NAME "mth_256generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=sandybridge") +@@ -364,7 +365,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_512mask.c + set(TARGET_NAME "mth_512mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") +@@ -378,7 +379,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_512generic.c + set(TARGET_NAME "mth_512generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=knl -march=knl") +@@ -391,7 +392,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_z2yy.c + set(TARGET_NAME "mth_z2yy") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_z2yy.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_z2yy.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_z2yy.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=knl -march=knl") +@@ -404,7 +405,7 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") + # Generate mth_128mask.c + set(TARGET_NAME "mth_128mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -412,7 +413,7 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -421,10 +422,10 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "aarch64") + set(TARGET_NAME "mth_128mask") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Windows") + add_custom_command(OUTPUT ${TARGET_NAME}.cpp DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -v TARGET_OS=WIN -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -v TARGET_OS=WIN -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) + else() + add_custom_command(OUTPUT ${TARGET_NAME}.cpp DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) + endif() + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.cpp") + libmath_add_object_library("${TARGET_NAME}.cpp" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") +@@ -433,7 +434,7 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "aarch64") + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -441,7 +442,7 @@ else() + # Generate mth_128mask.c + set(TARGET_NAME "mth_128mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -449,7 +450,7 @@ else() + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) diff --git a/ports/flang-fortran-runtime/cross.patch b/ports/flang-fortran-runtime/cross.patch new file mode 100644 index 00000000000000..7d107408e1db0a --- /dev/null +++ b/ports/flang-fortran-runtime/cross.patch @@ -0,0 +1,50 @@ +diff --git a/runtime/flang/CMakeLists.txt b/runtime/flang/CMakeLists.txt +index 850942b32..3ec95760e 100644 +--- a/runtime/flang/CMakeLists.txt ++++ b/runtime/flang/CMakeLists.txt +@@ -430,7 +430,7 @@ add_custom_command( + > "${I8_FILES_DIR}/ieee_arithmetic.F95" + COMMENT "Preprocessing ieee_arithmetic.F95" + VERBATIM +- DEPENDS flang1 flang2 ++ #DEPENDS flang1 flang2 + ) + + add_custom_command( +@@ -440,7 +440,7 @@ add_custom_command( + > "${I8_FILES_DIR}/ieee_exceptions.F95" + COMMENT "Preprocessing ieee_exceptions.F95" + VERBATIM +- DEPENDS flang1 flang2 ++ #DEPENDS flang1 flang2 + ) + + add_custom_command( +@@ -450,7 +450,7 @@ add_custom_command( + COMMAND "${CMAKE_Fortran_COMPILER}" -E -DPGFLANG -cpp ${SEPARATED_CMAKE_Fortran_FLAGS} + ${CMAKE_CURRENT_SOURCE_DIR}/norm2.F95 > "norm2_1.F95" + VERBATIM +- DEPENDS flang1 flang2 ++ #DEPENDS flang1 flang2 + ) + + # The files lists FTN_INTRINSICS_DESC_DEP and FTN_SUPPORT_DESC_DEP need to be compiled twice (with and without 'DESC_I8' compile definition). So an actual copy is made in a temp file on which this is done. +@@ -662,18 +662,6 @@ target_include_directories(flang_shared + ${CMAKE_CURRENT_BINARY_DIR} + ) + +-# Make sure the compiler is built before we bootstrap +-add_dependencies(flang_static +- flang1 +- flang2 +- ) +- +-# Make sure the compiler is built before we bootstrap +-add_dependencies(flang_shared +- flang1 +- flang2 +- ) +- + if (NOT MSVC) + target_compile_options(flang_static PRIVATE -fPIC) + target_compile_options(flang_shared PRIVATE -fPIC) diff --git a/ports/flang-fortran-runtime/move_flang2.patch b/ports/flang-fortran-runtime/move_flang2.patch new file mode 100644 index 00000000000000..4ce4584c47f0a7 --- /dev/null +++ b/ports/flang-fortran-runtime/move_flang2.patch @@ -0,0 +1,28 @@ +diff --git a/tools/flang2/flang2exe/CMakeLists.txt b/tools/flang2/flang2exe/CMakeLists.txt +index a9649e996..5aeeb0480 100644 +--- a/tools/flang2/flang2exe/CMakeLists.txt ++++ b/tools/flang2/flang2exe/CMakeLists.txt +@@ -160,7 +160,7 @@ target_include_directories(flang2 + + # Install flang2 executable + install(TARGETS flang2 +- RUNTIME DESTINATION ${LLVM_TOOLS_BINARY_DIR}) ++ RUNTIME DESTINATION bin) + + # Local Variables: + # mode: cmake +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f6513a04c..000055e73 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -390,8 +390,10 @@ add_definitions( -DPGFLANG ) + + add_subdirectory(lib) + add_subdirectory(runtime) ++if( FLANG_BUILD_TOOLS ) + add_subdirectory(utils) + add_subdirectory(tools) ++endif() + #add_subdirectory(test) + + #option(FLANG_BUILD_EXAMPLES "Build FLANG example programs by default." OFF) diff --git a/ports/flang-fortran-runtime/portfile.cmake b/ports/flang-fortran-runtime/portfile.cmake new file mode 100644 index 00000000000000..e29b1864d8f559 --- /dev/null +++ b/ports/flang-fortran-runtime/portfile.cmake @@ -0,0 +1,130 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # unresolved symbol interr + +vcpkg_download_distfile( + PATCH_572 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/572.diff" + FILENAME 572.diff + SHA512 7bc8038f548ab141c1d5d8e7a93ffd72b0412a5ce3978831de0dd06e7e33ac2839924f8d97b56563cf6bc7e7bda005bc936c51ae15c5ffc4a4aceccc3f55a995 +) + +vcpkg_download_distfile( + PATCH_1163 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1163.diff" + FILENAME 1163.diff + SHA512 e6c7be92dc2fcbe77056e58647d9f2074cc3dac81b25d15241ec0cbdc5d45658000c4764b1828e997d93738d839b1cccc2cfe7806d77ad8b4d0ea6107a7a15dc +) + +vcpkg_download_distfile( + PATCH_1165 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1165.diff" + FILENAME 1165.diff + SHA512 4202b5a9f9ea5c84525939e44bea6cf3514d1d948768d899fdf0db6f0d71ee45ce187bfea68742f7a332878335f43103df1e215fb70e1b60035f48d93f04db64 +) + +vcpkg_download_distfile( + PATCH_1166 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1166.diff" + FILENAME 1166.diff + SHA512 68cb37acbabd69285481c6baa38bb3ea61497268f39bb90e2384c6a6cbea9860d54554d5dd206ebfe77ef5610fd9dc93cd6da6000d6c22e274c2e635e23ff997 +) + +vcpkg_download_distfile( + PATCH_1168 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1168.diff" + FILENAME 1168.diff + SHA512 1efe6e8db18dd3834386801fb055bdcdb4a65987855a95175c6817ba30f3f34e8677e35836dc5b934edcd28e34ccf42273409970fa5bd6de85beb3e1d60d90d4 +) + +# Needs a rebase +#vcpkg_download_distfile( +# PATCH_1177 +# URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1177.diff" +# FILENAME 1177.diff +# SHA512 e00dfbf70449a407919cdf4737beeb87614e009519abe20dd9213117447485e551e094c33460104378b925f1ba889e112c6ce86cc994338a4a9e028d587a59e2 +#) + +vcpkg_download_distfile( + PATCH_1178 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1178.diff" + FILENAME 1178.diff + SHA512 68b66f69c796cdfcf952e820ba47c02f9239ad0b59779fa364f7f58028e7771a3ca5b72c70386203f41ed3b85309473c7d2116d81c2c2ef15130ffa047ead863 +) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO flang-compiler/flang + REF 0df85a22ae141078658569a0e1b3745afd702e45 + SHA512 f7195fbf0885dd767ff7f8ab48688586f4c9995dc81d619d4a315e3a3a8b1af019232410aa4eff1e85ed910281338dc6ebb54f55d34534c3d92766b6e1a74149 + PATCHES awk.patch + "${PATCH_572}" + "${PATCH_1163}" + "${PATCH_1165}" + "${PATCH_1166}" + "${PATCH_1168}" + "1177.diff" + "${PATCH_1178}" + move_flang2.patch + cross.patch + sep_runtime_from_compiler.patch +) + +set(NINJA "${CURRENT_HOST_INSTALLED_DIR}/tools/ninja/ninja${VCPKG_HOST_EXECUTABLE_SUFFIX}") +vcpkg_find_acquire_program(PYTHON3) +get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY) +vcpkg_add_to_path("${PYTHON3_DIR}") + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + if(VCPKG_DETECTED_CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + vcpkg_list(SET OPTIONS + "-DCMAKE_C_COMPILER=${CLANG_CL}" + "-DCMAKE_CXX_COMPILER=${CLANG_CL}" + "-DCMAKE_AR=${VCPKG_DETECTED_CMAKE_AR}" + "-DCMAKE_LINKER=${VCPKG_DETECTED_CMAKE_LINKER}" + "-DCMAKE_MT=${VCPKG_DETECTED_CMAKE_MT}" + "-DCMAKE_RC=${VCPKG_DETECTED_CMAKE_RC}" + ) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + string(APPEND VCPKG_C_FLAGS " --target=aarch64-win32-msvc") + string(APPEND VCPKG_CXX_FLAGS " --target=aarch64-win32-msvc") + vcpkg_list(APPEND OPTIONS -DCMAKE_CROSSCOMPILING=ON + -DCMAKE_Fortran_FLAGS=--target=aarch64-win32-msvc) + endif() + endif() + vcpkg_list(APPEND OPTIONS + "-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + "-DCMAKE_Fortran_COMPILER_ID=Flang" + ) + + vcpkg_acquire_msys(MSYS_ROOT PACKAGES gawk bash sed) + vcpkg_add_to_path("${MSYS_ROOT}/usr/bin") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(ARCH X86) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(ARCH ARM) + endif() + vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/${ARCH}") +endif() + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + #"-DLLVM_TARGETS_TO_BUILD=X86;AArch64" + "-DFLANG_BUILD_RUNTIME=ON" + "-DFLANG_LLVM_EXTENSIONS=ON" + "-DFLANG_INCLUDE_DOCS=OFF" + "-DLLVM_INCLUDE_TESTS=OFF" + "-DFLANG_BUILD_TOOLS=OFF" + "-DVCPKG_HOST_TRIPLET=${_HOST_TRIPLET}" + "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/llvm-config.exe" + "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/lib/cmake/llvm" # Flang does not link against anything in llvm + ${OPTIONS} +) +vcpkg_cmake_install(ADD_BIN_TO_PATH) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) + +set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) \ No newline at end of file diff --git a/ports/flang-fortran-runtime/sep_runtime_from_compiler.patch b/ports/flang-fortran-runtime/sep_runtime_from_compiler.patch new file mode 100644 index 00000000000000..f1b29916a5e6f4 --- /dev/null +++ b/ports/flang-fortran-runtime/sep_runtime_from_compiler.patch @@ -0,0 +1,66 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 000055e73..28a738269 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -292,7 +292,7 @@ endif() + # Add appropriate flags for GCC + if (LLVM_COMPILER_IS_GCC_COMPATIBLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings") +- option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" ON) ++ option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) + elseif (MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14 -Woverloaded-virtual -Wno-long-long -Wno-unused-parameter -Wwrite-strings") + option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) +@@ -350,6 +350,7 @@ include_directories(BEFORE + set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include) + + # Install Fortran module files ++if( FLANG_BUILD_RUNTIME ) + install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/ + DESTINATION include + ) +@@ -360,6 +361,7 @@ get_filename_component(OMP_LIB_H_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include/omp_li + install(FILES ${OMP_LIB_H_PATH} + DESTINATION include + ) ++endif() + + add_definitions( -D_GNU_SOURCE ) + +@@ -389,7 +391,9 @@ set(FLANG_RTE_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/lib) + add_definitions( -DPGFLANG ) + +-add_subdirectory(lib) ++if( FLANG_BUILD_RUNTIME ) + add_subdirectory(runtime) ++endif() + if( FLANG_BUILD_TOOLS ) ++add_subdirectory(lib) + add_subdirectory(utils) + add_subdirectory(tools) +diff --git a/tools/flang1/flang1exe/CMakeLists.txt b/tools/flang1/flang1exe/CMakeLists.txt +index a33678700..b6967227b 100644 +--- a/tools/flang1/flang1exe/CMakeLists.txt ++++ b/tools/flang1/flang1exe/CMakeLists.txt +@@ -166,7 +166,7 @@ endif() + + # Install flang1 executable + install(TARGETS flang1 +- RUNTIME DESTINATION bin) ++ RUNTIME DESTINATION bin/${ARCH}) + + # Local Variables: + # mode: cmake +diff --git a/tools/flang2/flang2exe/CMakeLists.txt b/tools/flang2/flang2exe/CMakeLists.txt +index 5aeeb0480..105143325 100644 +--- a/tools/flang2/flang2exe/CMakeLists.txt ++++ b/tools/flang2/flang2exe/CMakeLists.txt +@@ -160,7 +160,7 @@ target_include_directories(flang2 + + # Install flang2 executable + install(TARGETS flang2 +- RUNTIME DESTINATION bin) ++ RUNTIME DESTINATION bin/${ARCH}) + + # Local Variables: + # mode: cmake diff --git a/ports/flang-fortran-runtime/vcpkg.json b/ports/flang-fortran-runtime/vcpkg.json new file mode 100644 index 00000000000000..69676d1c687d64 --- /dev/null +++ b/ports/flang-fortran-runtime/vcpkg.json @@ -0,0 +1,39 @@ +{ + "name": "flang-fortran-runtime", + "version-date": "2022-04-23", + "description": "The LLVM Compiler Infrastructure.", + "homepage": "https://llvm.org", + "license": "Apache-2.0", + "dependencies": [ + "pgmath", + { + "name": "pkgconf", + "host": true + }, + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-tool-flang", + "host": true + }, + { + "name": "vcpkg-tool-flang-llvm", + "host": true + }, + { + "name": "vcpkg-tool-llvm", + "host": true, + "platform": "windows" + }, + { + "name": "vcpkg-tool-ninja", + "host": true + } + ] +} diff --git a/ports/pgmath/portfile.cmake b/ports/pgmath/portfile.cmake index d0648d68703065..345c80814f9bd2 100644 --- a/ports/pgmath/portfile.cmake +++ b/ports/pgmath/portfile.cmake @@ -26,8 +26,8 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) include("${cmake_vars_file}") if(VCPKG_DETECTED_CMAKE_CXX_COMPILER_ID MATCHES "MSVC") vcpkg_list(SET OPTIONS - "-DCMAKE_C_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-llvm/bin/clang-cl.exe" - "-DCMAKE_CXX_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-llvm/bin/clang-cl.exe" + "-DCMAKE_C_COMPILER=${CLANG_CL}" + "-DCMAKE_CXX_COMPILER=${CLANG_CL}" "-DCMAKE_AR=${VCPKG_DETECTED_CMAKE_AR}" "-DCMAKE_LINKER=${VCPKG_DETECTED_CMAKE_LINKER}" "-DCMAKE_MT=${VCPKG_DETECTED_CMAKE_MT}" @@ -42,8 +42,7 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") vcpkg_list(APPEND OPTIONS -DCMAKE_SYSTEM_PROCESSOR=AMD64) elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") - vcpkg_list(APPEND OPTIONS -DCMAKE_CROSSCOMPILING=ON -DCMAKE_SYSTEM_PROCESSOR:STRING=ARM64 -DCMAKE_SYSTEM_NAME:STRING=Windows) - message(STATUS "OPTIONS:${OPTIONS}" ) + vcpkg_list(APPEND OPTIONS -DCMAKE_CROSSCOMPILING=ON) else() vcpkg_list(APPEND OPTIONS -DCMAKE_SYSTEM_PROCESSOR=generic -DLIBPGMATH_WITH_GENERIC=ON) diff --git a/ports/vcpkg-tool-flang-llvm/0004-fix-dr-1734.patch b/ports/vcpkg-tool-flang-llvm/0004-fix-dr-1734.patch new file mode 100644 index 00000000000000..3a2f4a28e3e956 --- /dev/null +++ b/ports/vcpkg-tool-flang-llvm/0004-fix-dr-1734.patch @@ -0,0 +1,17 @@ + llvm/include/llvm/Support/type_traits.h | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/llvm/include/llvm/Support/type_traits.h b/llvm/include/llvm/Support/type_traits.h +index 7b7d5d991f3f..469b681deea3 100644 +--- a/llvm/include/llvm/Support/type_traits.h ++++ b/llvm/include/llvm/Support/type_traits.h +@@ -176,7 +176,8 @@ class is_trivially_copyable { + (has_deleted_copy_assign || has_trivial_copy_assign) && + (has_deleted_copy_constructor || has_trivial_copy_constructor); + +-#ifdef HAVE_STD_IS_TRIVIALLY_COPYABLE ++// due to DR 1734, a type can be std::is_trivially_copyable but not llvm::is_trivially_copyable ++#if 0 + static_assert(value == std::is_trivially_copyable::value, + "inconsistent behavior between llvm:: and std:: implementation of is_trivially_copyable"); + #endif diff --git a/ports/vcpkg-tool-flang-llvm/0010-fix-libffi.patch b/ports/vcpkg-tool-flang-llvm/0010-fix-libffi.patch new file mode 100644 index 00000000000000..93d0cb4da4d421 --- /dev/null +++ b/ports/vcpkg-tool-flang-llvm/0010-fix-libffi.patch @@ -0,0 +1,16 @@ + llvm/cmake/config-ix.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake +index dd0aaadb47c7..279435b5b27d 100644 +--- a/llvm/cmake/config-ix.cmake ++++ b/llvm/cmake/config-ix.cmake +@@ -343,7 +343,7 @@ if( LLVM_ENABLE_FFI ) + message(FATAL_ERROR "libffi includes are not found.") + endif() + +- find_library(FFI_LIBRARY_PATH ffi PATHS ${FFI_LIBRARY_DIR}) ++ find_library(FFI_LIBRARY_PATH NAMES ffi libffi PATHS ${FFI_LIBRARY_DIR}) + if( NOT FFI_LIBRARY_PATH ) + message(FATAL_ERROR "libffi is not found.") + endif() diff --git a/ports/vcpkg-tool-flang-llvm/0011-fix-libxml2.patch b/ports/vcpkg-tool-flang-llvm/0011-fix-libxml2.patch new file mode 100644 index 00000000000000..d3f953f320df6b --- /dev/null +++ b/ports/vcpkg-tool-flang-llvm/0011-fix-libxml2.patch @@ -0,0 +1,34 @@ + clang/tools/c-index-test/CMakeLists.txt | 6 +----- + lldb/cmake/modules/LLDBConfig.cmake | 2 +- + 2 files changed, 2 insertions(+), 6 deletions(-) + +diff --git a/clang/tools/c-index-test/CMakeLists.txt b/clang/tools/c-index-test/CMakeLists.txt +index ceef4b08637c..40b9e995597f 100644 +--- a/clang/tools/c-index-test/CMakeLists.txt ++++ b/clang/tools/c-index-test/CMakeLists.txt +@@ -40,11 +40,7 @@ set_target_properties(c-index-test + + # If libxml2 is available, make it available for c-index-test. + if (CLANG_HAVE_LIBXML) +- if ((CMAKE_OSX_SYSROOT) AND (EXISTS ${CMAKE_OSX_SYSROOT}/${LIBXML2_INCLUDE_DIR})) +- include_directories(SYSTEM ${CMAKE_OSX_SYSROOT}/${LIBXML2_INCLUDE_DIR}) +- else() +- include_directories(SYSTEM ${LIBXML2_INCLUDE_DIR}) +- endif() ++ include_directories(SYSTEM ${LIBXML2_INCLUDE_DIRS}) + target_link_libraries(c-index-test PRIVATE ${LIBXML2_LIBRARIES}) + endif() + +diff --git a/lldb/cmake/modules/LLDBConfig.cmake b/lldb/cmake/modules/LLDBConfig.cmake +index b62cd7d24438..a8c78ee1bccd 100644 +--- a/lldb/cmake/modules/LLDBConfig.cmake ++++ b/lldb/cmake/modules/LLDBConfig.cmake +@@ -215,7 +215,7 @@ if (LLDB_ENABLE_LZMA) + endif() + + if (LLDB_ENABLE_LIBXML2) +- include_directories(${LIBXML2_INCLUDE_DIR}) ++ include_directories(${LIBXML2_INCLUDE_DIRS}) + endif() + + include_directories(BEFORE diff --git a/ports/vcpkg-tool-flang-llvm/65.diff b/ports/vcpkg-tool-flang-llvm/65.diff new file mode 100644 index 00000000000000..0d8495e7b4f016 --- /dev/null +++ b/ports/vcpkg-tool-flang-llvm/65.diff @@ -0,0 +1,175 @@ +diff --git a/clang/lib/Driver/ToolChains/ClassicFlang.cpp b/clang/lib/Driver/ToolChains/ClassicFlang.cpp +index b6ce5d9ac99d..a2003fc77f3d 100644 +--- a/clang/lib/Driver/ToolChains/ClassicFlang.cpp ++++ b/clang/lib/Driver/ToolChains/ClassicFlang.cpp +@@ -1072,6 +1072,14 @@ void ClassicFlang::ConstructJob(Compilation &C, const JobAction &JA, + LowerCmdArgs.push_back(Args.MakeArgString(OutFile)); + } + ++ bool IsWindowsMSVC = getToolChain().getTriple().isWindowsMSVCEnvironment(); ++ if (IsWindowsMSVC && !Args.hasArg(options::OPT_noFlangLibs)) { ++ getToolChain().AddFortranStdlibLibArgs(Args, LowerCmdArgs); ++ for (auto Arg : Args.filtered(options::OPT_noFlangLibs)) { ++ Arg->claim(); ++ } ++ } ++ + C.addCommand(std::make_unique(JA, *this, ResponseFileSupport::AtFileUTF8(), LowerExec, LowerCmdArgs, Inputs)); + } + +diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp +index 332a52ea92a1..2624c88b45be 100644 +--- a/clang/lib/Driver/ToolChains/CommonArgs.cpp ++++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp +@@ -118,7 +118,7 @@ static void renderRemarksHotnessOptions(const ArgList &Args, + } + + /// \brief Determine if Fortran "main" object is needed +-static bool needFortranMain(const Driver &D, const ArgList &Args) { ++bool tools::needFortranMain(const Driver &D, const ArgList &Args) { + return (needFortranLibs(D, Args) + && (!Args.hasArg(options::OPT_Mnomain) || + !Args.hasArg(options::OPT_no_fortran_main))); +diff --git a/clang/lib/Driver/ToolChains/CommonArgs.h b/clang/lib/Driver/ToolChains/CommonArgs.h +index 624353edc1ab..6a5962a76505 100644 +--- a/clang/lib/Driver/ToolChains/CommonArgs.h ++++ b/clang/lib/Driver/ToolChains/CommonArgs.h +@@ -22,6 +22,8 @@ namespace tools { + + bool needFortranLibs(const Driver &D, const llvm::opt::ArgList &Args); + ++bool needFortranMain(const Driver &D, const llvm::opt::ArgList &Args); ++ + void addPathIfExists(const Driver &D, const Twine &Path, + ToolChain::path_list &Paths); + +diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp +index 13943b6c404a..f2348a13f7be 100644 +--- a/clang/lib/Driver/ToolChains/MSVC.cpp ++++ b/clang/lib/Driver/ToolChains/MSVC.cpp +@@ -335,7 +335,10 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA, + + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nostartfiles) && + !C.getDriver().IsCLMode()) { +- CmdArgs.push_back("-defaultlib:libcmt"); ++#ifdef ENABLE_CLASSIC_FLANG ++ if (!C.getDriver().IsFlangMode()) ++#endif ++ CmdArgs.push_back("-defaultlib:libcmt"); + CmdArgs.push_back("-defaultlib:oldnames"); + } + +@@ -481,6 +484,13 @@ void visualstudio::Linker::ConstructJob(Compilation &C, const JobAction &JA, + } + } + ++#ifdef ENABLE_CLASSIC_FLANG ++ if (C.getDriver().IsFlangMode()) { ++ CmdArgs.push_back(Args.MakeArgString(std::string("-libpath:") + ++ TC.getDriver().Dir + "/../lib")); ++ } ++#endif ++ + // Add compiler-rt lib in case if it was explicitly + // specified as an argument for --rtlib option. + if (!Args.hasArg(options::OPT_nostdlib)) { +@@ -825,6 +835,83 @@ void MSVCToolChain::AddHIPIncludeArgs(const ArgList &DriverArgs, + RocmInstallation.AddHIPIncludeArgs(DriverArgs, CC1Args); + } + ++#ifdef ENABLE_CLASSIC_FLANG ++void MSVCToolChain::AddFortranStdlibLibArgs(const ArgList &Args, ++ ArgStringList &CmdArgs) const { ++ bool staticFlangLibs = false; ++ bool useOpenMP = false; ++ ++ if (Args.hasArg(options::OPT_staticFlangLibs)) { ++ for (auto *A: Args.filtered(options::OPT_staticFlangLibs)) { ++ A->claim(); ++ staticFlangLibs = true; ++ } ++ } ++ ++ Arg *A = Args.getLastArg(options::OPT_mp, options::OPT_nomp, ++ options::OPT_fopenmp, options::OPT_fno_openmp); ++ if (A && ++ (A->getOption().matches(options::OPT_mp) || ++ A->getOption().matches(options::OPT_fopenmp))) { ++ useOpenMP = true; ++ } ++ ++ if (needFortranMain(getDriver(), Args)) { ++ // flangmain is always static ++ //CmdArgs.push_back("-linker"); ++ //CmdArgs.push_back("/subsystem:console"); ++ //CmdArgs.push_back("-linker"); ++ //CmdArgs.push_back("/defaultlib:flangmain.lib"); ++ } ++ ++ if (staticFlangLibs) { ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:libflang.lib"); ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:libflangrti.lib"); ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:libpgmath.lib"); ++ } else { ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:flang.lib"); ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:flangrti.lib"); ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:pgmath.lib"); ++ } ++ if (useOpenMP) { ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/nodefaultlib:vcomp.lib"); ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/nodefaultlib:vcompd.lib"); ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:libomp.lib"); ++ } ++ else { ++ if (staticFlangLibs) { ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:libompstub.lib"); ++ } else { ++ CmdArgs.push_back("-linker"); ++ CmdArgs.push_back("/defaultlib:ompstub.lib"); ++ } ++ } ++ ++ // Allways link Fortran executables with Pthreads ++ // CmdArgs.push_back("-lpthread"); ++ ++ // These options are added clang-cl in Clang.cpp for C/C++ ++ // In clang-cl.exe -MD and -MT control these options, but in ++ // flang.exe like clang.exe these are different options for ++ // dependency tracking. Let's assume that if somebody needs ++ // static flang libs, they don't need static C runtime libs. ++ // FIXME: Use LLVM_USE_CRT_ variable ++ // to use libcmt.lib or msvcrt.lib ++ // CmdArgs.push_back("-linker"); ++ // CmdArgs.push_back("/defaultlib:libcmt.lib"); ++} ++#endif ++ + void MSVCToolChain::printVerboseInfo(raw_ostream &OS) const { + CudaInstallation.print(OS); + RocmInstallation.print(OS); +diff --git a/clang/lib/Driver/ToolChains/MSVC.h b/clang/lib/Driver/ToolChains/MSVC.h +index dba99ed77246..540094e5191b 100644 +--- a/clang/lib/Driver/ToolChains/MSVC.h ++++ b/clang/lib/Driver/ToolChains/MSVC.h +@@ -126,6 +126,11 @@ class LLVM_LIBRARY_VISIBILITY MSVCToolChain : public ToolChain { + void AddHIPIncludeArgs(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const override; + ++#ifdef ENABLE_CLASSIC_FLANG ++ void AddFortranStdlibLibArgs(const llvm::opt::ArgList &Args, ++ llvm::opt::ArgStringList &CmdArgs) const override; ++#endif ++ + bool getWindowsSDKLibraryPath( + const llvm::opt::ArgList &Args, std::string &path) const; + bool getUniversalCRTLibraryPath(const llvm::opt::ArgList &Args, diff --git a/ports/vcpkg-tool-flang-llvm/portfile.cmake b/ports/vcpkg-tool-flang-llvm/portfile.cmake new file mode 100644 index 00000000000000..e0fc1508b59a9e --- /dev/null +++ b/ports/vcpkg-tool-flang-llvm/portfile.cmake @@ -0,0 +1,219 @@ +set(LLVM_VERSION "13.0.1") + +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO flang-compiler/classic-flang-llvm-project + REF eafb7696e6f1cbf00f19d3c418f71cdac574bad3 + SHA512 8008c11145cacd2d5237af3c5d00b86fba922d67a444b67a05fd5a20162dec4e8d187016a28c1bdc008ce42dfce0254fa5b0635a50bc8fc8af3281de97a76951 + HEAD_REF release_13x + PATCHES + 0004-fix-dr-1734.patch + 0010-fix-libffi.patch + 0011-fix-libxml2.patch + 65.diff +) + +# Force enable or disable external libraries +set(llvm_external_libraries + zlib + libxml2 +) +foreach(external_library IN LISTS llvm_external_libraries) + string(TOLOWER "enable-${external_library}" feature_name) + string(TOUPPER "LLVM_ENABLE_${external_library}" define_name) + list(APPEND FEATURE_OPTIONS + -D${define_name}=FORCE_ON + ) +endforeach() + +vcpkg_find_acquire_program(PYTHON3) +get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY) +vcpkg_add_to_path("${PYTHON3_DIR}") +vcpkg_find_acquire_program(PERL) +get_filename_component(PERL_DIR "${PERL}" DIRECTORY) +vcpkg_add_to_path("${PERL_DIR}") + +set(VCPKG_BUILD_TYPE release) # Only need release tools +set(CURRENT_PACKAGES_DIR_BAK "${CURRENT_PACKAGES_DIR}") +set(CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang") +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}/llvm" + OPTIONS + ${FEATURE_OPTIONS} + ${CROSS_OPTIONS} + -DLLVM_INCLUDE_EXAMPLES=OFF + -DLLVM_BUILD_EXAMPLES=OFF + -DLLVM_INCLUDE_TESTS=OFF + -DLLVM_INCLUDE_BENCHMARKS=OFF + -DLLVM_BUILD_TESTS=OFF + -DLLVM_BUILD_UTILS=OFF + -DLLVM_INSTALL_UTILS=ON + -DLLVM_TOOL_BUGPOINT_BUILD=OFF + -DLLVM_TOOL_BUGPOINT_PASSES_BUILD=OFF + -DLLVM_TOOL_DSYMÙTIL_BUILD=OFF + -DLLVM_TOOL_GOLD_BUILD=OFF + -DLLVM_TOOL_LLC_BUILD=OFF + -DLLVM_TOOL_LLVM_AS_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_BCANALYZER_BUILD=OFF + -DLLVM_TOOL_LLVM_CAT_BUILD=OFF + -DLLVM_TOOL_LLVM_CFI_VERIFY_BUILD=OFF + -DLLVM_TOOL_LLVM_COV_BUILD=OFF + -DLLVM_TOOL_LLVM_CVTRES_BUILD=OFF + -DLLVM_TOOL_LLVM_CXXDUMP_BUILD=OFF + -DLLVM_TOOL_LLVM_CXXFILT_BUILD=OFF + -DLLVM_TOOL_LLVM_CXXMAP_BUILD=OFF + -DLLVM_TOOL_LLVM_C_TEST_BUILD=OFF + -DLLVM_TOOL_LLVM_DIFF_BUILD=OFF + -DLLVM_TOOL_LLVM_DIS_BUILD=OFF + -DLLVM_TOOL_LLVM_DWARFDUMP_BUILD=ON + -DLLVM_TOOL_LLVM_DWP_BUILD=OFF + -DLLVM_TOOL_LLVM_EXEGESIS_BUILD=OFF + -DLLVM_TOOL_LLVM_EXTRACT_BUILD=OFF + -DLLVM_TOOL_LLVM_GO_BUILD=OFF + -DLLVM_TOOL_LLVM_GSYMUTIL_BUILD=OFF + -DLLVM_TOOL_LLVM_IFS_BUILD=OFF + -DLLVM_TOOL_LLVM_ISEL_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_ITANIUM_DEMANGLE_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_JITLINK_BUILD=OFF + -DLLVM_TOOL_LLVM_JITLISTENER_BUILD=OFF + -DLLVM_TOOL_LLVM_LIBTOOL_DARWIN_BUILD=OFF + -DLLVM_TOOL_LLVM_LIPO_BUILD=OFF + -DLLVM_TOOL_LLVM_MCA_BUILD=OFF + -DLLVM_TOOL_LLVM_MC_ASSEMBLE_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_MC_BUILD=OFF + -DLLVM_TOOL_LLVM_MC_DISASSEMBLE_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_ML_BUILD=OFF + -DLLVM_TOOL_LLVM_MODEXTRACT_BUILD=OFF + -DLLVM_TOOL_LLVM_OPT_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_OPT_REPORT_BUILD=OFF + -DLLVM_TOOL_LLVM_PROFDATA_BUILD=OFF + -DLLVM_TOOL_LLVM_PROFGEN_BUILD=OFF + -DLLVM_TOOL_LLVM_REDUCE_BUILD=OFF + -DLLVM_TOOL_LLVM_RTDYLD_BUILD=OFF + -DLLVM_TOOL_LLVM_RUST_DEMANGLE_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_SHLIB_BUILD=OFF + -DLLVM_TOOL_LLVM_SIM_BUILD=OFF + -DLLVM_TOOL_LLVM_SIZE_BUILD=OFF + -DLLVM_TOOL_LLVM_SPECIAL_CASE_LIST_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_SPLIT_BUILD=OFF + -DLLVM_TOOL_LLVM_STRESS_BUILD=OFF + -DLLVM_TOOL_LLVM_STRINGS_BUILD=OFF + -DLLVM_TOOL_LLVM_SYMBOLIZER_BUILD=OFF + -DLLVM_TOOL_LLVM_TAPI_DIFF_BUILD=OFF + -DLLVM_TOOL_LLVM_UNDNAME_BUILD=OFF + -DLLVM_TOOL_LLVM_XRAY_BUILD=OFF + -DLLVM_TOOL_LLVM_YAML_NUMERIC_PARSER_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_YAML_PARSER_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLVM_LTO2_BUILD=OFF + -DLLVM_TOOL_LLVM_LTO_BUILD=OFF + -DLLVM_TOOL_REMARKS_SHLIB_BUILD=OFF + -DLLVM_TOOL_SANCOV_BUILD=OFF + -DLLVM_TOOL_SANSTATS_BUILD=OFF + -DLLVM_TOOL_SPLIT_FILE_BUILD=OFF + -DLLVM_TOOL_VERIFY_USELISTORDER_BUILD=OFF + -DLLVM_TOOL_XCODE_TOOLCHAIN_BUILD=OFF + -DLLVM_TOOL_YAML2OBJ_BUILD=OFF + -DLLVM_TOOL_OBJ2YAML_BUILD=OFF + -DLLVM_TOOL_OPT_BUILD=OFF + -DLLVM_TOOL_OPT_VIEWER_BUILD=OFF + -DLLVM_TOOL_VFABI_DEMANGLE_FUZZER_BUILD=OFF + -DLLVM_TOOL_LLI_BUILD=OFF + -DLLVM_TOOL_MLIR_BUILD=ON + -DCLANG_TOOL_AMDGPU_ARCH_BUILD=OFF + -DCLANG_TOOL_APINOTES_TEST_BUILD=OFF + -DCLANG_TOOL_ARCMT_TEST_BUILD=OFF + -DCLANG_TOOL_CLANG_CHECK_BUILD=OFF + -DCLANG_TOOL_CLANG_DIFF_BUILD=OFF + -DCLANG_TOOL_CLANG_EXTDEF_MAPPING_BUILD=OFF + -DCLANG_TOOL_CLANG_FORMAT_BUILD=OFF + -DCLANG_TOOL_CLANG_FORMAT_VS_BUILD=OFF + -DCLANG_TOOL_CLANG_FUZZER_BUILD=OFF + -DCLANG_TOOL_CLANG_IMPORT_TEST_BUILD=OFF + -DCLANG_TOOL_CLANG_OFFLOAD_BUNDLER_BUILD=OFF + -DCLANG_TOOL_CLANG_OFFLOAD_WRAPPER_BUILD=OFF + -DCLANG_TOOL_CLANG_REFACTOR_BUILD=OFF + -DCLANG_TOOL_CLANG_RENAME_BUILD=OFF + -DCLANG_TOOL_CLANG_REPL_BUILD=OFF + -DCLANG_TOOL_CLANG_SCAN_DEPS_BUILD=OFF + -DCLANG_TOOL_CLANG_SHLIB_BUILD=OFF + -DCLANG_TOOL_C_ARCMT_TEST_BUILD=OFF + -DCLANG_TOOL_C_INDEX_TEST_BUILD=OFF + -DCLANG_TOOL_DIAGTOOL_BUILD=OFF + -DCLANG_TOOL_SCAN_BUILD_BUILD=OFF + -DCLANG_TOOL_SCAN_BUILD_PY_BUILD=OFF + -DCLANG_TOOL_SCAN_VIEW_BUILD=OFF + #-DLLDB_ENABLE_CURSES=OFF + # Force TableGen to be built with optimization. This will significantly improve build time. + -DLLVM_OPTIMIZED_TABLEGEN=ON + #"-DLLVM_ENABLE_PROJECTS=${LLVM_ENABLE_PROJECTS}" + -DLLVM_ENABLE_CLASSIC_FLANG=ON + "-DLLVM_ENABLE_PROJECTS=clang;flang;openmp" + "-DLLVM_TARGETS_TO_BUILD=X86;AArch64" + -DFLANG_BUILD_NEW_DRIVER=OFF + -DFLANG_INCLUDE_DOCS=OFF + #-DPACKAGE_VERSION=${LLVM_VERSION} + # Limit the maximum number of concurrent link jobs to 1. This should fix low amount of memory issue for link. + # Disable build LLVM-C.dll (Windows only) due to doesn't compile with CMAKE_DEBUG_POSTFIX + -DLLVM_BUILD_LLVM_C_DYLIB=OFF + # Path for binary subdirectory (defaults to 'bin') + #-DLLVM_TOOLS_INSTALL_DIR=tools/flang + -DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR} +) + + +vcpkg_cmake_install(ADD_BIN_TO_PATH) + +function(llvm_cmake_package_config_fixup package_name) + cmake_parse_arguments("arg" "DO_NOT_DELETE_PARENT_CONFIG_PATH" "FEATURE_NAME" "" ${ARGN}) + if(NOT DEFINED arg_FEATURE_NAME) + set(arg_FEATURE_NAME ${package_name}) + endif() + if("${arg_FEATURE_NAME}" STREQUAL "${PORT}" OR "${arg_FEATURE_NAME}" IN_LIST FEATURES) + set(args) + list(APPEND args PACKAGE_NAME "${package_name}") + if(arg_DO_NOT_DELETE_PARENT_CONFIG_PATH) + list(APPEND args "DO_NOT_DELETE_PARENT_CONFIG_PATH") + endif() + vcpkg_cmake_config_fixup(${args}) + file(INSTALL "${SOURCE_PATH}/${package_name}/LICENSE.TXT" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${package_name}" RENAME copyright) + if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/${package_name}_usage") + file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/${package_name}_usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${package_name}" RENAME usage) + endif() + endif() +endfunction() + +llvm_cmake_package_config_fixup("clang" DO_NOT_DELETE_PARENT_CONFIG_PATH) +llvm_cmake_package_config_fixup("flang" DO_NOT_DELETE_PARENT_CONFIG_PATH) +llvm_cmake_package_config_fixup("lld" DO_NOT_DELETE_PARENT_CONFIG_PATH) +llvm_cmake_package_config_fixup("mlir" DO_NOT_DELETE_PARENT_CONFIG_PATH) +llvm_cmake_package_config_fixup("polly" DO_NOT_DELETE_PARENT_CONFIG_PATH) +llvm_cmake_package_config_fixup("ParallelSTL" FEATURE_NAME "pstl" DO_NOT_DELETE_PARENT_CONFIG_PATH) +llvm_cmake_package_config_fixup("llvm") + +set(CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR_BAK}") + +# Don't let LLVM take control over vcpkg here! +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/lib/cmake/llvm/ChooseMSVCCRT.cmake" "choose_msvc_crt(MSVC_CRT)" "#choose_msvc_crt(MSVC_CRT)") + +vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin") + +# LLVM still generates a few DLLs in the static build: +# * libclang.dll +# * LTO.dll +# * Remarks.dll +set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) +set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) + +configure_file("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin/clang.exe" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin/flang.exe" COPYONLY) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Config" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/CodeGen/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/Dialect/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/Transforms/CMakeFiles") + +file(INSTALL "${SOURCE_PATH}/llvm/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/vcpkg-tool-flang-llvm/vcpkg.json b/ports/vcpkg-tool-flang-llvm/vcpkg.json new file mode 100644 index 00000000000000..fab8eb9c7b8b72 --- /dev/null +++ b/ports/vcpkg-tool-flang-llvm/vcpkg.json @@ -0,0 +1,20 @@ +{ + "name": "vcpkg-tool-flang-llvm", + "version-date": "2022-04-23", + "description": "The LLVM Compiler Infrastructure.", + "homepage": "https://llvm.org", + "license": "Apache-2.0", + "supports": "windows & native", + "dependencies": [ + "libxml2", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "zlib" + ] +} diff --git a/ports/vcpkg-tool-flang/1177.diff b/ports/vcpkg-tool-flang/1177.diff new file mode 100644 index 00000000000000..17e0f2dbe54211 --- /dev/null +++ b/ports/vcpkg-tool-flang/1177.diff @@ -0,0 +1,17 @@ +diff --git a/tools/flang2/flang2exe/llassem.cpp b/tools/flang2/flang2exe/llassem.cpp +index 7c15e7338cb..6c6a953fc79 100644 +--- a/tools/flang2/flang2exe/llassem.cpp ++++ b/tools/flang2/flang2exe/llassem.cpp +@@ -1170,7 +1170,12 @@ assemble_end(void) + fprintf(ASMFIL, "%%struct%s = type < { %s } > \n", name, typed); ++#if defined (_WIN64) ++ fprintf(ASMFIL, "@%s = %s global %%struct%s ", name, ++ AG_ISMOD(gblsym) ? "external dllimport" : "common", name); ++#else + fprintf(ASMFIL, "@%s = %s global %%struct%s ", name, + AG_ISMOD(gblsym) ? "external" : "common", name); ++#endif + fprintf(ASMFIL, "%s, align %d", + AG_ISMOD(gblsym) ? "" : " zeroinitializer", align_value); + } + for (llObjtodbgFirst(listp, &i); !llObjtodbgAtEnd(&i); diff --git a/ports/vcpkg-tool-flang/awk.patch b/ports/vcpkg-tool-flang/awk.patch new file mode 100644 index 00000000000000..211e73ea8d7dfb --- /dev/null +++ b/ports/vcpkg-tool-flang/awk.patch @@ -0,0 +1,129 @@ +diff --git a/runtime/libpgmath/lib/common/CMakeLists.txt b/runtime/libpgmath/lib/common/CMakeLists.txt +index 59454c9de..caea12be3 100644 +--- a/runtime/libpgmath/lib/common/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/CMakeLists.txt +@@ -309,10 +309,11 @@ set(DEFINITIONS_CMPLX ${DEFINITIONS} MTH_CMPLX_C99_ABI) + libmath_add_object_library("${MTH_CMPLX_SRCS}" "${FLAGS}" "${DEFINITIONS_CMPLX}" "common_mth_cmplx") + + if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENERIC}) ++ find_program(AWK_COMMAND NAMES awk) + # Generate mth_128mask.c + set(TARGET_NAME "mth_128mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=core2") +@@ -325,7 +326,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=core2") +@@ -338,7 +339,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_256mask.c + set(TARGET_NAME "mth_256mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=sandybridge") +@@ -351,7 +352,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_256generic.c + set(TARGET_NAME "mth_256generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=256 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-march=sandybridge") +@@ -364,7 +365,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_512mask.c + set(TARGET_NAME "mth_512mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") +@@ -378,7 +379,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_512generic.c + set(TARGET_NAME "mth_512generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=knl -march=knl") +@@ -391,7 +392,7 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + # Generate mth_z2yy.c + set(TARGET_NAME "mth_z2yy") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_z2yy.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_z2yy.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=512 -v TARGET=X8664 -f ${LIBPGMATH_TOOLS_DIR}/mth_z2yy.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + set_property(SOURCE ${TARGET_NAME}.c APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=knl -march=knl") +@@ -404,7 +405,7 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") + # Generate mth_128mask.c + set(TARGET_NAME "mth_128mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -412,7 +413,7 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=POWER -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -421,10 +422,10 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "aarch64") + set(TARGET_NAME "mth_128mask") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Windows") + add_custom_command(OUTPUT ${TARGET_NAME}.cpp DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -v TARGET_OS=WIN -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -v TARGET_OS=WIN -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) + else() + add_custom_command(OUTPUT ${TARGET_NAME}.cpp DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.cpp) + endif() + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.cpp") + libmath_add_object_library("${TARGET_NAME}.cpp" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") +@@ -433,7 +434,7 @@ elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "aarch64") + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=ARM64 -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -441,7 +442,7 @@ else() + # Generate mth_128mask.c + set(TARGET_NAME "mth_128mask") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_mask.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) +@@ -449,7 +450,7 @@ else() + # Generate mth_128generic.c + set(TARGET_NAME "mth_128generic") + add_custom_command(OUTPUT ${TARGET_NAME}.c DEPENDS ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk PRE_BUILD +- COMMAND awk -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) ++ COMMAND ${AWK_COMMAND} -v MAX_VREG_SIZE=128 -v TARGET=GENERIC -f ${LIBPGMATH_TOOLS_DIR}/mth_generic_frp.awk > ${TARGET_NAME}.c) + add_custom_target(${TARGET_NAME} ALL DEPENDS "${TARGET_NAME}.c") + libmath_add_object_library("${TARGET_NAME}.c" "${FLAGS}" "${DEFINITIONS}" "${TARGET_NAME}_build") + add_dependencies("${TARGET_NAME}_build" ${TARGET_NAME}) diff --git a/ports/vcpkg-tool-flang/cross.patch b/ports/vcpkg-tool-flang/cross.patch new file mode 100644 index 00000000000000..7d107408e1db0a --- /dev/null +++ b/ports/vcpkg-tool-flang/cross.patch @@ -0,0 +1,50 @@ +diff --git a/runtime/flang/CMakeLists.txt b/runtime/flang/CMakeLists.txt +index 850942b32..3ec95760e 100644 +--- a/runtime/flang/CMakeLists.txt ++++ b/runtime/flang/CMakeLists.txt +@@ -430,7 +430,7 @@ add_custom_command( + > "${I8_FILES_DIR}/ieee_arithmetic.F95" + COMMENT "Preprocessing ieee_arithmetic.F95" + VERBATIM +- DEPENDS flang1 flang2 ++ #DEPENDS flang1 flang2 + ) + + add_custom_command( +@@ -440,7 +440,7 @@ add_custom_command( + > "${I8_FILES_DIR}/ieee_exceptions.F95" + COMMENT "Preprocessing ieee_exceptions.F95" + VERBATIM +- DEPENDS flang1 flang2 ++ #DEPENDS flang1 flang2 + ) + + add_custom_command( +@@ -450,7 +450,7 @@ add_custom_command( + COMMAND "${CMAKE_Fortran_COMPILER}" -E -DPGFLANG -cpp ${SEPARATED_CMAKE_Fortran_FLAGS} + ${CMAKE_CURRENT_SOURCE_DIR}/norm2.F95 > "norm2_1.F95" + VERBATIM +- DEPENDS flang1 flang2 ++ #DEPENDS flang1 flang2 + ) + + # The files lists FTN_INTRINSICS_DESC_DEP and FTN_SUPPORT_DESC_DEP need to be compiled twice (with and without 'DESC_I8' compile definition). So an actual copy is made in a temp file on which this is done. +@@ -662,18 +662,6 @@ target_include_directories(flang_shared + ${CMAKE_CURRENT_BINARY_DIR} + ) + +-# Make sure the compiler is built before we bootstrap +-add_dependencies(flang_static +- flang1 +- flang2 +- ) +- +-# Make sure the compiler is built before we bootstrap +-add_dependencies(flang_shared +- flang1 +- flang2 +- ) +- + if (NOT MSVC) + target_compile_options(flang_static PRIVATE -fPIC) + target_compile_options(flang_shared PRIVATE -fPIC) diff --git a/ports/vcpkg-tool-flang/move_flang2.patch b/ports/vcpkg-tool-flang/move_flang2.patch new file mode 100644 index 00000000000000..4ce4584c47f0a7 --- /dev/null +++ b/ports/vcpkg-tool-flang/move_flang2.patch @@ -0,0 +1,28 @@ +diff --git a/tools/flang2/flang2exe/CMakeLists.txt b/tools/flang2/flang2exe/CMakeLists.txt +index a9649e996..5aeeb0480 100644 +--- a/tools/flang2/flang2exe/CMakeLists.txt ++++ b/tools/flang2/flang2exe/CMakeLists.txt +@@ -160,7 +160,7 @@ target_include_directories(flang2 + + # Install flang2 executable + install(TARGETS flang2 +- RUNTIME DESTINATION ${LLVM_TOOLS_BINARY_DIR}) ++ RUNTIME DESTINATION bin) + + # Local Variables: + # mode: cmake +diff --git a/CMakeLists.txt b/CMakeLists.txt +index f6513a04c..000055e73 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -390,8 +390,10 @@ add_definitions( -DPGFLANG ) + + add_subdirectory(lib) + add_subdirectory(runtime) ++if( FLANG_BUILD_TOOLS ) + add_subdirectory(utils) + add_subdirectory(tools) ++endif() + #add_subdirectory(test) + + #option(FLANG_BUILD_EXAMPLES "Build FLANG example programs by default." OFF) diff --git a/ports/vcpkg-tool-flang/portfile.cmake b/ports/vcpkg-tool-flang/portfile.cmake new file mode 100644 index 00000000000000..7c6181ced59746 --- /dev/null +++ b/ports/vcpkg-tool-flang/portfile.cmake @@ -0,0 +1,146 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # unresolved symbol interr +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +vcpkg_download_distfile( + PATCH_572 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/572.diff" + FILENAME 572.diff + SHA512 7bc8038f548ab141c1d5d8e7a93ffd72b0412a5ce3978831de0dd06e7e33ac2839924f8d97b56563cf6bc7e7bda005bc936c51ae15c5ffc4a4aceccc3f55a995 +) + +vcpkg_download_distfile( + PATCH_1163 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1163.diff" + FILENAME 1163.diff + SHA512 e6c7be92dc2fcbe77056e58647d9f2074cc3dac81b25d15241ec0cbdc5d45658000c4764b1828e997d93738d839b1cccc2cfe7806d77ad8b4d0ea6107a7a15dc +) + +vcpkg_download_distfile( + PATCH_1165 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1165.diff" + FILENAME 1165.diff + SHA512 4202b5a9f9ea5c84525939e44bea6cf3514d1d948768d899fdf0db6f0d71ee45ce187bfea68742f7a332878335f43103df1e215fb70e1b60035f48d93f04db64 +) + +vcpkg_download_distfile( + PATCH_1166 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1166.diff" + FILENAME 1166.diff + SHA512 68cb37acbabd69285481c6baa38bb3ea61497268f39bb90e2384c6a6cbea9860d54554d5dd206ebfe77ef5610fd9dc93cd6da6000d6c22e274c2e635e23ff997 +) + +vcpkg_download_distfile( + PATCH_1168 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1168.diff" + FILENAME 1168.diff + SHA512 1efe6e8db18dd3834386801fb055bdcdb4a65987855a95175c6817ba30f3f34e8677e35836dc5b934edcd28e34ccf42273409970fa5bd6de85beb3e1d60d90d4 +) + +# Needs a rebase +#vcpkg_download_distfile( +# PATCH_1177 +# URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1177.diff" +# FILENAME 1177.diff +# SHA512 e00dfbf70449a407919cdf4737beeb87614e009519abe20dd9213117447485e551e094c33460104378b925f1ba889e112c6ce86cc994338a4a9e028d587a59e2 +#) + +vcpkg_download_distfile( + PATCH_1178 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1178.diff" + FILENAME 1178.diff + SHA512 68b66f69c796cdfcf952e820ba47c02f9239ad0b59779fa364f7f58028e7771a3ca5b72c70386203f41ed3b85309473c7d2116d81c2c2ef15130ffa047ead863 +) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO flang-compiler/flang + REF 0df85a22ae141078658569a0e1b3745afd702e45 + SHA512 f7195fbf0885dd767ff7f8ab48688586f4c9995dc81d619d4a315e3a3a8b1af019232410aa4eff1e85ed910281338dc6ebb54f55d34534c3d92766b6e1a74149 + PATCHES awk.patch + "${PATCH_572}" + "${PATCH_1163}" + "${PATCH_1165}" + "${PATCH_1166}" + "${PATCH_1168}" + "1177.diff" + "${PATCH_1178}" + move_flang2.patch + cross.patch + sep_runtime_from_compiler.patch +) + +vcpkg_find_acquire_program(PYTHON3) +get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY) +vcpkg_add_to_path("${PYTHON3_DIR}") + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + vcpkg_cmake_get_vars(cmake_vars_file) + include("${cmake_vars_file}") + if(VCPKG_DETECTED_CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + vcpkg_list(SET OPTIONS + "-DCMAKE_C_COMPILER=${CLANG_CL}" + "-DCMAKE_CXX_COMPILER=${CLANG_CL}" + "-DCMAKE_AR=${VCPKG_DETECTED_CMAKE_AR}" + "-DCMAKE_LINKER=${VCPKG_DETECTED_CMAKE_LINKER}" + "-DCMAKE_MT=${VCPKG_DETECTED_CMAKE_MT}" + ) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + string(APPEND VCPKG_C_FLAGS " --target=aarch64-win32-msvc") + string(APPEND VCPKG_CXX_FLAGS " --target=aarch64-win32-msvc") + endif() + endif() + vcpkg_acquire_msys(MSYS_ROOT PACKAGES gawk bash sed) + vcpkg_add_to_path("${MSYS_ROOT}/usr/bin") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + vcpkg_list(APPEND OPTIONS -DCMAKE_CROSSCOMPILING=ON) + endif() +endif() + +set(VCPKG_BUILD_TYPE release) + +# Búild AMD64 compiler +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + #"-DLLVM_TARGETS_TO_BUILD=X86;AArch64" + "-DFLANG_BUILD_RUNTIME=OFF" + "-DTARGET_ARCHITECTURE=AMD64" + "-DFLANG_LLVM_EXTENSIONS=ON" + "-DFLANG_INCLUDE_DOCS=OFF" + "-DLLVM_INCLUDE_TESTS=OFF" + "-DFLANG_BUILD_TOOLS=ON" + "-DVCPKG_HOST_TRIPLET=${_HOST_TRIPLET}" + "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/llvm-config.exe" + "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/lib/cmake/llvm" # Flang does not link against anything in llvm + #"-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + #"-DCMAKE_Fortran_COMPILER_ID=Flang" + ${OPTIONS} +) +vcpkg_cmake_install(ADD_BIN_TO_PATH) + +# Búild ARM compiler +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + #"-DLLVM_TARGETS_TO_BUILD=X86;AArch64" + "-DFLANG_BUILD_RUNTIME=OFF" + "-DTARGET_ARCHITECTURE=ARM64" + "-DFLANG_LLVM_EXTENSIONS=ON" + "-DFLANG_BUILD_TOOLS=ON" + "-DVCPKG_HOST_TRIPLET=${_HOST_TRIPLET}" + "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/llvm-config.exe" + "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/lib/cmake/llvm" # Flang does not link against anything in llvm + #"-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + #"-DCMAKE_Fortran_COMPILER_ID=Flang" + ${OPTIONS} +) +vcpkg_cmake_install(ADD_BIN_TO_PATH) + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/") +file(RENAME "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin" ) +file(RENAME "${CURRENT_PACKAGES_DIR}/lib" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/lib" ) + +file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) + +set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) \ No newline at end of file diff --git a/ports/vcpkg-tool-flang/sep_runtime_from_compiler.patch b/ports/vcpkg-tool-flang/sep_runtime_from_compiler.patch new file mode 100644 index 00000000000000..f1b29916a5e6f4 --- /dev/null +++ b/ports/vcpkg-tool-flang/sep_runtime_from_compiler.patch @@ -0,0 +1,66 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 000055e73..28a738269 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -292,7 +292,7 @@ endif() + # Add appropriate flags for GCC + if (LLVM_COMPILER_IS_GCC_COMPATIBLE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings") +- option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" ON) ++ option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) + elseif (MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14 -Woverloaded-virtual -Wno-long-long -Wno-unused-parameter -Wwrite-strings") + option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) +@@ -350,6 +350,7 @@ include_directories(BEFORE + set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include) + + # Install Fortran module files ++if( FLANG_BUILD_RUNTIME ) + install(DIRECTORY ${CMAKE_Fortran_MODULE_DIRECTORY}/ + DESTINATION include + ) +@@ -360,6 +361,7 @@ get_filename_component(OMP_LIB_H_PATH ${CMAKE_CURRENT_SOURCE_DIR}/include/omp_li + install(FILES ${OMP_LIB_H_PATH} + DESTINATION include + ) ++endif() + + add_definitions( -D_GNU_SOURCE ) + +@@ -389,7 +391,9 @@ set(FLANG_RTE_LIB_DIR ${CMAKE_CURRENT_BINARY_DIR}/lib) + add_definitions( -DPGFLANG ) + +-add_subdirectory(lib) ++if( FLANG_BUILD_RUNTIME ) + add_subdirectory(runtime) ++endif() + if( FLANG_BUILD_TOOLS ) ++add_subdirectory(lib) + add_subdirectory(utils) + add_subdirectory(tools) +diff --git a/tools/flang1/flang1exe/CMakeLists.txt b/tools/flang1/flang1exe/CMakeLists.txt +index a33678700..b6967227b 100644 +--- a/tools/flang1/flang1exe/CMakeLists.txt ++++ b/tools/flang1/flang1exe/CMakeLists.txt +@@ -166,7 +166,7 @@ endif() + + # Install flang1 executable + install(TARGETS flang1 +- RUNTIME DESTINATION bin) ++ RUNTIME DESTINATION bin/${ARCH}) + + # Local Variables: + # mode: cmake +diff --git a/tools/flang2/flang2exe/CMakeLists.txt b/tools/flang2/flang2exe/CMakeLists.txt +index 5aeeb0480..105143325 100644 +--- a/tools/flang2/flang2exe/CMakeLists.txt ++++ b/tools/flang2/flang2exe/CMakeLists.txt +@@ -160,7 +160,7 @@ target_include_directories(flang2 + + # Install flang2 executable + install(TARGETS flang2 +- RUNTIME DESTINATION bin) ++ RUNTIME DESTINATION bin/${ARCH}) + + # Local Variables: + # mode: cmake diff --git a/ports/vcpkg-tool-flang/vcpkg.json b/ports/vcpkg-tool-flang/vcpkg.json new file mode 100644 index 00000000000000..fd63195a0211bc --- /dev/null +++ b/ports/vcpkg-tool-flang/vcpkg.json @@ -0,0 +1,37 @@ +{ + "name": "vcpkg-tool-flang", + "version-date": "2022-04-23", + "description": "The LLVM Compiler Infrastructure.", + "homepage": "https://llvm.org", + "license": "Apache-2.0", + "supports": "native", + "dependencies": [ + "libxml2", + "pgmath", + { + "name": "pkgconf", + "host": true + }, + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + { + "name": "vcpkg-tool-flang-llvm", + "host": true + }, + { + "name": "vcpkg-tool-llvm", + "host": true + }, + { + "name": "vcpkg-tool-ninja", + "host": true + }, + "zlib" + ] +} From d5dcbf773ce46a698850b8b007bc8f4025afc787 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 8 May 2022 22:28:24 +0200 Subject: [PATCH 053/141] add intel patch --- ports/lapack-reference/intel.patch | 28 ++++++++++++++++ ports/lapack-reference/portfile.cmake | 33 ++++++++----------- .../vcpkg-cmake-wrapper.cmake.in | 10 ++++++ ports/lapack-reference/vcpkg.json | 5 +-- 4 files changed, 53 insertions(+), 23 deletions(-) create mode 100644 ports/lapack-reference/intel.patch diff --git a/ports/lapack-reference/intel.patch b/ports/lapack-reference/intel.patch new file mode 100644 index 00000000000000..84c8002f21b2d6 --- /dev/null +++ b/ports/lapack-reference/intel.patch @@ -0,0 +1,28 @@ +diff --git a/INSTALL/dsecnd_EXT_ETIME.f b/INSTALL/dsecnd_EXT_ETIME.f +index 35377643b..f98aad7a9 100644 +--- a/INSTALL/dsecnd_EXT_ETIME.f ++++ b/INSTALL/dsecnd_EXT_ETIME.f +@@ -34,6 +34,9 @@ + * + * ===================================================================== + DOUBLE PRECISION FUNCTION DSECND( ) ++#if defined(__INTEL_COMPILER) ++ USE IFPORT ++#endif + * + * -- LAPACK auxiliary routine -- + * -- LAPACK is a software package provided by Univ. of Tennessee, -- +diff --git a/INSTALL/second_EXT_ETIME.f b/INSTALL/second_EXT_ETIME.f +index 43044cda7..0e2a9a331 100644 +--- a/INSTALL/second_EXT_ETIME.f ++++ b/INSTALL/second_EXT_ETIME.f +@@ -34,6 +34,9 @@ + * + * ===================================================================== + REAL FUNCTION SECOND( ) ++#if defined(__INTEL_COMPILER) ++ USE IFPORT ++#endif + * + * -- LAPACK auxiliary routine -- + * -- LAPACK is a software package provided by Univ. of Tennessee, -- diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 59ea46a8619a37..4c1f34aded0e3d 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -8,21 +8,29 @@ if(EXISTS "${CURRENT_INSTALLED_DIR}/share/clapack/copyright") message(FATAL_ERROR "Can't build ${PORT} if clapack is installed. Please remove clapack:${TARGET_TRIPLET}, and try to install ${PORT}:${TARGET_TRIPLET} again.") endif() -include(vcpkg_find_fortran) SET(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) set(lapack_ver 3.10.0) +x_vcpkg_find_fortran(OUT_OPTIONS Fortran_opts + OUT_OPTIONS_RELEASE Fortran_opts_rel + OUT_OPTIONS_DEBUG Fortran_opts_dbg) + +if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL OR VCPKG_DETECTED_CMAKE_Fortran_COMPILER MATCHES "ifort${VCPKG_HOST_EXECUTABLE_SUFFIX}") + set(PATCHES intel.patch) +endif() + vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO "Reference-LAPACK/lapack" REF "v${lapack_ver}" SHA512 56055000c241bab8f318ebd79249ea012c33be0c4c3eca6a78e247f35ad9e8088f46605a0ba52fd5ad3e7898be3b7bc6c50ceb3af327c4986a266b06fe768cbf HEAD_REF master + PATCHES ${PATCHES} ) if(NOT VCPKG_TARGET_IS_WINDOWS) - set(ENV{FFLAGS} "$ENV{FFLAGS} -fPIC") + set(ENV{FFLAGS} "$ENV{FFLAGS} -fPIC") # Should probably be in the toolchain endif() set(CBLAS OFF) @@ -38,27 +46,14 @@ if("noblas" IN_LIST FEATURES) set(USE_OPTIMIZED_BLAS ON) endif() -set(VCPKG_CRT_LINKAGE_BACKUP ${VCPKG_CRT_LINKAGE}) -vcpkg_find_fortran(FORTRAN_CMAKE) -if(VCPKG_USE_INTERNAL_Fortran) - if(VCPKG_CRT_LINKAGE_BACKUP STREQUAL static) - # If openblas has been built with static crt linkage we cannot use it with gfortran! - set(USE_OPTIMIZED_BLAS OFF) - #Cannot use openblas from vcpkg if we are building with gfortran here. - if("noblas" IN_LIST FEATURES) - message(FATAL_ERROR "Feature 'noblas' cannot be used without supplying an external fortran compiler") - endif() - endif() -else() - set(USE_OPTIMIZED_BLAS ON) -endif() - vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS "-DUSE_OPTIMIZED_BLAS=${USE_OPTIMIZED_BLAS}" "-DCBLAS=${CBLAS}" - ${FORTRAN_CMAKE} + ${Fortran_opts} + OPTIONS_DEBUG ${Fortran_opts_rel} + OPTIONS_RELEASE ${Fortran_opts_dbg} ) vcpkg_cmake_install() @@ -106,7 +101,7 @@ vcpkg_fixup_pkgconfig() file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) # remove debug includes -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") if(VCPKG_TARGET_IS_WINDOWS) if(EXISTS "${CURRENT_PACKAGES_DIR}/lib/liblapack.lib") diff --git a/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in b/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in index 84685ed1f0ab2d..7154008041371e 100644 --- a/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in +++ b/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in @@ -6,6 +6,16 @@ list(REMOVE_ITEM ARGS "NO_MODULE") list(REMOVE_ITEM ARGS "CONFIG") list(REMOVE_ITEM ARGS "MODULE") +if("@Z_VCPKG_IS_INTERNAL_Fortran_Flang@" AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") + set(CMAKE_REQUIRED_LINK_OPTIONS "-LIBPATH:${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/$<$:debug/>lib/") + add_link_options("-LIBPATH:${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/$<$:debug/>lib/") +endif() + +if("@Z_VCPKG_IS_INTERNAL_Fortran_INTEL@" AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") + set(CMAKE_REQUIRED_LINK_OPTIONS "-LIBPATH:${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/ifort/") + add_link_options("-LIBPATH:${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/ifort/") +endif() + if(@USE_OPTIMIZED_BLAS@) _find_package(BLAS) endif() diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index 0964ed84e62c80..077a32d407be39 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -14,10 +14,7 @@ "name": "vcpkg-cmake-config", "host": true }, - { - "name": "vcpkg-gfortran", - "platform": "windows" - } + "vcpkg-fortran" ], "default-features": [ "blas-select" From f8f022f72a880b0bc5bec030bca662625db1a393 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sun, 8 May 2022 22:28:40 +0200 Subject: [PATCH 054/141] use correct policy --- ports/vcpkg-tool-7zip/portfile.cmake | 2 +- ports/vcpkg-tool-llvm/portfile.cmake | 2 +- ports/vcpkg-tool-llvm/vcpkg.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-tool-7zip/portfile.cmake b/ports/vcpkg-tool-7zip/portfile.cmake index bd57ba9cba2182..e702fcc7448bde 100644 --- a/ports/vcpkg-tool-7zip/portfile.cmake +++ b/ports/vcpkg-tool-7zip/portfile.cmake @@ -1,4 +1,4 @@ -set(VCPKG_POLICY_EMPTY_PACKAGE enabled) +set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) file(READ "${CURRENT_PORT_DIR}/vcpkg.json" manifest_contents) string(JSON version GET "${manifest_contents}" "version-string") diff --git a/ports/vcpkg-tool-llvm/portfile.cmake b/ports/vcpkg-tool-llvm/portfile.cmake index fde6ca2a15e9c9..b78cb179c15f2a 100644 --- a/ports/vcpkg-tool-llvm/portfile.cmake +++ b/ports/vcpkg-tool-llvm/portfile.cmake @@ -1,4 +1,4 @@ -set(VCPKG_POLICY_EMPTY_PACKAGE enabled) +set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) file(READ "${CURRENT_PORT_DIR}/vcpkg.json" manifest_contents) string(JSON version GET "${manifest_contents}" version) diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json index 41bcfe6148b45d..dbf9440aa41d92 100644 --- a/ports/vcpkg-tool-llvm/vcpkg.json +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -6,7 +6,7 @@ "license": null, "supports": "windows & (x64 | x86)", "dependencies": [ - { + { "name": "vcpkg-cmake", "host": true }, From 2b1c335a14f54185a1ab31f7a2ed241c15798dcb Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 00:35:16 +0200 Subject: [PATCH 055/141] remove unused policy --- ports/lapack-reference/portfile.cmake | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 4c1f34aded0e3d..4c251befed4066 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -51,6 +51,9 @@ vcpkg_cmake_configure( OPTIONS "-DUSE_OPTIMIZED_BLAS=${USE_OPTIMIZED_BLAS}" "-DCBLAS=${CBLAS}" + "-DCMAKE_POLICY_DEFAULT_CMP0065=NEW" + "-DCMAKE_POLICY_DEFAULT_CMP0067=NEW" + "-DCMAKE_POLICY_DEFAULT_CMP0083=NEW" ${Fortran_opts} OPTIONS_DEBUG ${Fortran_opts_rel} OPTIONS_RELEASE ${Fortran_opts_dbg} From d9d427c7a55ac9e1f64dbd64243238b142bf8ecc Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:13:10 +0200 Subject: [PATCH 056/141] vcpkg_cmake_get_vars extend language lookup and make options passable --- ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt | 12 +++++++++++- ports/vcpkg-cmake/vcpkg.json | 2 +- ports/vcpkg-cmake/vcpkg_cmake_get_vars.cmake | 3 ++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt b/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt index fb1da469651b97..84fdc24056adaf 100644 --- a/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt +++ b/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt @@ -76,7 +76,17 @@ else() endif() -project(get_cmake_vars LANGUAGES ${VCPKG_LANGUAGES}) +project(get_cmake_vars NONE) + +include(CheckLanguage) +foreach(lang IN LISTS VCPKG_LANGUAGES) + check_language(${lang}) + if(CMAKE_${lang}_COMPILER) + enable_language(${lang}) + else() + message(STATUS "No ${lang} support!") + endif() +endforeach() foreach(VAR IN LISTS VCPKG_VARS_TO_CHECK VCPKG_FLAGS_TO_CHECK) string(APPEND OUTPUT_STRING "set(${VCPKG_VAR_PREFIX}_${VAR} \"${${VAR}}\")\n") diff --git a/ports/vcpkg-cmake/vcpkg.json b/ports/vcpkg-cmake/vcpkg.json index 3c3cebde55fdff..bef078c6f79cb9 100644 --- a/ports/vcpkg-cmake/vcpkg.json +++ b/ports/vcpkg-cmake/vcpkg.json @@ -1,5 +1,5 @@ { "name": "vcpkg-cmake", - "version-date": "2022-05-06", + "version-date": "2022-05-09", "license": "MIT" } diff --git a/ports/vcpkg-cmake/vcpkg_cmake_get_vars.cmake b/ports/vcpkg-cmake/vcpkg_cmake_get_vars.cmake index e8a1feec481832..f0995bd5d244b2 100644 --- a/ports/vcpkg-cmake/vcpkg_cmake_get_vars.cmake +++ b/ports/vcpkg-cmake/vcpkg_cmake_get_vars.cmake @@ -40,7 +40,7 @@ message(STATUS "detected CXX flags: ${VCPKG_DETECTED_CMAKE_CXX_FLAGS}") set(Z_VCPKG_CMAKE_GET_VARS_CURRENT_LIST_DIR "${CMAKE_CURRENT_LIST_DIR}") function(vcpkg_cmake_get_vars out_file) - cmake_parse_arguments(PARSE_ARGV 1 arg "" "" "") + cmake_parse_arguments(PARSE_ARGV 1 arg "" "" "OPTIONS") if(DEFINED arg_UNPARSED_ARGUMENTS) message(FATAL_ERROR "${CMAKE_CURRENT_FUNCTION} was passed extra arguments: ${arg_UNPARSED_ARGUMENTS}") @@ -51,6 +51,7 @@ function(vcpkg_cmake_get_vars out_file) CACHE PATH "The file to include to access the CMake variables from a generated project.") vcpkg_cmake_configure( SOURCE_PATH "${Z_VCPKG_CMAKE_GET_VARS_CURRENT_LIST_DIR}/cmake_get_vars" + OPTIONS ${arg_OPTIONS} OPTIONS_DEBUG "-DVCPKG_OUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/cmake-get-vars-${TARGET_TRIPLET}-dbg.cmake.log" OPTIONS_RELEASE "-DVCPKG_OUTPUT_FILE:PATH=${CURRENT_BUILDTREES_DIR}/cmake-get-vars-${TARGET_TRIPLET}-rel.cmake.log" LOGFILE_BASE cmake-get-vars-${TARGET_TRIPLET} From 980e44f9eeca143c5c36fac9ed7a07c28b53e80a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:13:18 +0200 Subject: [PATCH 057/141] remove unused variable --- ports/flang-fortran-runtime/portfile.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/ports/flang-fortran-runtime/portfile.cmake b/ports/flang-fortran-runtime/portfile.cmake index e29b1864d8f559..0a4011412f0f13 100644 --- a/ports/flang-fortran-runtime/portfile.cmake +++ b/ports/flang-fortran-runtime/portfile.cmake @@ -83,7 +83,6 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) "-DCMAKE_AR=${VCPKG_DETECTED_CMAKE_AR}" "-DCMAKE_LINKER=${VCPKG_DETECTED_CMAKE_LINKER}" "-DCMAKE_MT=${VCPKG_DETECTED_CMAKE_MT}" - "-DCMAKE_RC=${VCPKG_DETECTED_CMAKE_RC}" ) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") string(APPEND VCPKG_C_FLAGS " --target=aarch64-win32-msvc") From 470215f0a9597c480f740623c16f420670e856b4 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:13:23 +0200 Subject: [PATCH 058/141] install license --- ports/vcpkg-tool-7zip/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/vcpkg-tool-7zip/portfile.cmake b/ports/vcpkg-tool-7zip/portfile.cmake index e702fcc7448bde..a4bbaec336f5b8 100644 --- a/ports/vcpkg-tool-7zip/portfile.cmake +++ b/ports/vcpkg-tool-7zip/portfile.cmake @@ -40,6 +40,7 @@ if(VCPKG_TARGET_IS_WINDOWS) file(RENAME "${output_path}/${name_folder}/SourceDir/Files/7-Zip" "${output_path}/${PORT}/") file(REMOVE_RECURSE "${output_path}/${name_folder}") configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) + file(INSTALL "${CURRENT_PACKAGES_DIR}/manual-tools/vcpkg-tool-7zip/License.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) endif() From 5d0d09765390e0be2c4f82422e5767696cc2b0ab Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:14:01 +0200 Subject: [PATCH 059/141] add ifort path --- ports/vcpkg-fortran-ifort/portfile.cmake | 16 ++++ .../vcpkg-port-config.cmake.in | 2 + ports/vcpkg-fortran-ifort/vcpkg.json | 17 ++++ .../x_vcpkg_find_fortran.cmake | 67 +++++++++++++++ .../z_vcpkg_load_environment_from_batch.cmake | 85 +++++++++++++++++++ ports/vcpkg-ifort/portfile.cmake | 50 +++++++++++ ports/vcpkg-ifort/vcpkg.json | 10 +++ ports/vcpkg-tool-ifort/portfile.cmake | 53 ++++++++++++ ports/vcpkg-tool-ifort/vcpkg.json | 18 ++++ 9 files changed, 318 insertions(+) create mode 100644 ports/vcpkg-fortran-ifort/portfile.cmake create mode 100644 ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in create mode 100644 ports/vcpkg-fortran-ifort/vcpkg.json create mode 100644 ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake create mode 100644 ports/vcpkg-fortran-ifort/z_vcpkg_load_environment_from_batch.cmake create mode 100644 ports/vcpkg-ifort/portfile.cmake create mode 100644 ports/vcpkg-ifort/vcpkg.json create mode 100644 ports/vcpkg-tool-ifort/portfile.cmake create mode 100644 ports/vcpkg-tool-ifort/vcpkg.json diff --git a/ports/vcpkg-fortran-ifort/portfile.cmake b/ports/vcpkg-fortran-ifort/portfile.cmake new file mode 100644 index 00000000000000..a14f6c83ada542 --- /dev/null +++ b/ports/vcpkg-fortran-ifort/portfile.cmake @@ -0,0 +1,16 @@ +set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) + +set(FUNCTION_NAME x_vcpkg_find_fortran) + +if(VCPKG_CROSSCOMPILING) + # make FATAL_ERROR in CI when issue #16773 fixed + message(WARNING "${PORT} is a host-only port; please mark it as a host port in your dependencies.") +endif() + +file(COPY + "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" + "${CMAKE_CURRENT_LIST_DIR}/z_vcpkg_load_environment_from_batch.cmake" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + +configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY) +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) diff --git a/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in new file mode 100644 index 00000000000000..e6109903cec223 --- /dev/null +++ b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in @@ -0,0 +1,2 @@ +include("${CMAKE_CURRENT_LIST_DIR}/z_vcpkg_load_environment_from_batch.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") diff --git a/ports/vcpkg-fortran-ifort/vcpkg.json b/ports/vcpkg-fortran-ifort/vcpkg.json new file mode 100644 index 00000000000000..366ec0cccc94a3 --- /dev/null +++ b/ports/vcpkg-fortran-ifort/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "vcpkg-fortran-ifort", + "version-date": "2022-02-22", + "description": "Metaport for ifort on Windows. Only used for Windows", + "license": "MIT", + "supports": "(x86 | x64) & windows", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-tool-ifort", + "host": true + } + ] +} diff --git a/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake new file mode 100644 index 00000000000000..05245709b014e3 --- /dev/null +++ b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake @@ -0,0 +1,67 @@ +#[===[.md: +# x_vcpkg_find_fortran + +Checks if a Fortran compiler can be found. +Windows(x86/x64) Only: If not it will search and enable Intel + ifort compiler if available. + +## Usage +```cmake +x_vcpkg_find_fortran() +``` + +## Example +```cmake +x_vcpkg_find_fortran(fortran_args) +# ... +vcpkg_configure_cmake(... + OPTIONS + ${fortran_args} +) +``` +#]===] + +include("${CMAKE_CURRENT_LIST_DIR}/z_vcpkg_load_environment_from_batch.cmake") +include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg_cmake_get_vars.cmake") + +function(x_vcpkg_find_fortran) + cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "OUT_OPTIONS;OUT_OPTIONS_RELEASE;OUT_OPTIONS_DEBUG" "") + + vcpkg_list(SET additional_cmake_args) + + vcpkg_list(SET additional_cmake_args) + vcpkg_cmake_get_vars(cmake_vars_file OPTIONS "-DVCPKG_LANGUAGES=C;CXX;Fortran") + include("${cmake_vars_file}") + + if(NOT VCPKG_DETECTED_CMAKE_Fortran_COMPILER) + if(WIN32) + message(STATUS "Using internal Fortran Compiler ifort!") + set(PATH_SUFFIX "bin/intel64") + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + string(APPEND PATH_SUFFIX "_ia32") + endif() + set(search_path "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-ifort/Intel/Compiler/12.0") + find_program(IFORT NAMES ifort${VCPKG_HOST_EXECUTABLE_SUFFIX} PATHS "${search_path}/compiler/2022.0.3/windows" PATH_SUFFIXES "${PATH_SUFFIX}" NO_DEFAULT_PATH) + if(NOT IFORT) + message(FATAL_ERROR "unable to find ifort in '${search_path}/compiler/2022.0.3/windows/bin'" ) + endif() + find_file(SETVARS NAMES setvars.bat PATHS "${search_path}" NO_DEFAULT_PATH) + unset(ENV{ONEAPI_ROOT}) # Otherwise the batch will load from from ONEAPI_ROOT + z_vcpkg_load_environment_from_batch(BATCH_FILE_PATH "${SETVARS}") + # if(VCPKG_TARGET_IS_UWP) # UWP is not supported since the Fortran libs are not build for UWP + # set(extra_uwp_flags "/NODEFAULTLIB /Qopenmp-stubs /D_UNICODE /DUNICODE /DWINAPI_FAMILY=WINAPI_FAMILY_APP /D__WRL_NO_DEFAULT_LIB__") + # set(exta_uwp_link_flags "-DCMAKE_SHARED_LINKER_FLAGS_INIT:STRING=/APPCONTAINER") + # endif() + + vcpkg_list(APPEND additional_cmake_args +"-DCMAKE_TRY_COMPILE_PLATFORM_VARIABLES=CMAKE_Fortran_FLAGS;CMAKE_Fortran_FLAGS_RELEASE;CMAKE_Fortran_FLAGS_DEBUG;CMAKE_Fortran_STANDARD_LIBRARIES;CMAKE_EXE_LINKER_FLAGS;CMAKE_EXE_LINKER_FLAGS_RELEASE;CMAKE_EXE_LINKER_FLAGS_DEBUG;CMAKE_STATIC_LINKER_FLAGS;CMAKE_STATIC_LINKER_FLAGS_DEBUG;CMAKE_STATIC_LINKER_FLAGS_RELEASE;CMAKE_SHARED_LINKER_FLAGS;CMAKE_SHARED_LINKER_FLAGS_RELEASE;CMAKE_SHARED_LINKER_FLAGS_DEBUG;CMAKE_REQUIRED_LINK_OPTIONS" + "-DCMAKE_Fortran_COMPILER=${IFORT}" + "-DCMAKE_Fortran_FLAGS_INIT:STRING=/Z7 /names:lowercase /assume:underscore /assume:protect_parens") + set(Z_VCPKG_USE_INTERNAL_Fortran TRUE CACHE INTERNAL "") + set(Z_VCPKG_IS_INTERNAL_Fortran_INTEL TRUE CACHE INTERNAL "") + else() + message(FATAL_ERROR "Unable to find a Fortran compiler using CMake. Please install one (e.g. gfortran) and make it available to CMake!") + endif() + endif() + set("${arg_OUT_OPTIONS}" "${additional_cmake_args}" PARENT_SCOPE) +endfunction() diff --git a/ports/vcpkg-fortran-ifort/z_vcpkg_load_environment_from_batch.cmake b/ports/vcpkg-fortran-ifort/z_vcpkg_load_environment_from_batch.cmake new file mode 100644 index 00000000000000..ab55f38c55189a --- /dev/null +++ b/ports/vcpkg-fortran-ifort/z_vcpkg_load_environment_from_batch.cmake @@ -0,0 +1,85 @@ +#[===[.md: +# z_vcpkg_load_environment_from_batch + +Load environment variables from a batch filed + +## Usage +```cmake +z_vcpkg_load_environment_from_batch(BATCH_FILE_PATH + [ARGUMENTS ]) +``` + +## Parameters +### BATCH_FILE_PATH +Batch file to load +### BATCH_FILE_PATH +Arguments to pass to the batch file +#]===] +function(z_vcpkg_load_environment_from_batch) + cmake_parse_arguments(PARSE_ARGV 0 args "" "BATCH_FILE_PATH" "ARGUMENTS") + if(args_BATCH_FILE_PATH STREQUAL "") + message(FATAL_ERROR "'${CMAKE_CURRENT_FUNCTION}' requires argument BATCH_FILE_PATH") + endif() + + # Get original environment + vcpkg_execute_required_process( + COMMAND "${CMAKE_COMMAND}" "-E" "environment" + WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}" + LOGNAME "environment-initial" + ) + file(READ "${CURRENT_BUILDTREES_DIR}/environment-initial-out.log" ENVIRONMENT_INITIAL) + + # Get modified envirnoment + string (REPLACE ";" " " SPACE_SEPARATED_ARGUMENTS "${args_ARGUMENTS}") + + file(WRITE "${CURRENT_BUILDTREES_DIR}/get-modified-environment.bat" "call \"${args_BATCH_FILE_PATH}\" ${SPACE_SEPARATED_ARGUMENTS}\n\"${CMAKE_COMMAND}\" -E environment") + vcpkg_execute_required_process( + COMMAND "cmd" "/c" "${CURRENT_BUILDTREES_DIR}/get-modified-environment.bat" + WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}" + LOGNAME "environment-after" + ) + file(READ "${CURRENT_BUILDTREES_DIR}/environment-after-out.log" ENVIRONMENT_AFTER) + + # Escape characters that have a special meaning in CMake strings. + string(REPLACE [[\]] "/" ENVIRONMENT_INITIAL "${ENVIRONMENT_INITIAL}") + string(REPLACE ";" [[\;]] ENVIRONMENT_INITIAL "${ENVIRONMENT_INITIAL}") + string(REPLACE "\n" ";" ENVIRONMENT_INITIAL "${ENVIRONMENT_INITIAL}") + + string(REPLACE [[\]] "/" ENVIRONMENT_AFTER "${ENVIRONMENT_AFTER}") + string(REPLACE ";" [[\;]] ENVIRONMENT_AFTER "${ENVIRONMENT_AFTER}") + string(REPLACE "\n" ";" ENVIRONMENT_AFTER "${ENVIRONMENT_AFTER}") + + # Apply the environment changes to the current CMake environment + foreach(AFTER_LINE IN LISTS ENVIRONMENT_AFTER) + if("${AFTER_LINE}" MATCHES "^([^=]+)=(.+)$") + set(AFTER_VAR_NAME "${CMAKE_MATCH_1}") + set(AFTER_VAR_VALUE "${CMAKE_MATCH_2}") + set(FOUND "FALSE") + foreach(INITIAL_LINE IN LISTS ENVIRONMENT_INITIAL) + if("${INITIAL_LINE}" MATCHES "^([^=]+)=(.+)$") + set(INITIAL_VAR_NAME "${CMAKE_MATCH_1}") + set(INITIAL_VAR_VALUE "${CMAKE_MATCH_2}") + + if("${AFTER_VAR_NAME}" STREQUAL "${INITIAL_VAR_NAME}") + set(FOUND "TRUE") + if(NOT "${AFTER_VAR_VALUE}" STREQUAL "${INITIAL_VAR_VALUE}") + + # Variable has been modified + # NOTE: we do not revert the escape changes that have previously been applied + # since the only change that should be visible in a single environment variable + # should be a conversion from `\` to `/` and this should not have any effect on + # windows paths. + debug_message("ENV MODIFIED ${AFTER_VAR_NAME}=${AFTER_VAR_VALUE}") + set(ENV{${AFTER_VAR_NAME}} "${AFTER_VAR_VALUE}") + endif() + endif() + endif() + endforeach() + if(NOT FOUND) + # Variable has been added + debug_message("ENV ADDED ${AFTER_VAR_NAME}=${AFTER_VAR_VALUE}") + set(ENV{${AFTER_VAR_NAME}} "${AFTER_VAR_VALUE}") + endif() + endif() + endforeach() +endfunction() \ No newline at end of file diff --git a/ports/vcpkg-ifort/portfile.cmake b/ports/vcpkg-ifort/portfile.cmake new file mode 100644 index 00000000000000..603f9f605140d9 --- /dev/null +++ b/ports/vcpkg-ifort/portfile.cmake @@ -0,0 +1,50 @@ +x_vcpkg_find_fortran(FORTRAN_CMAKE) +message(STATUS "VCPKG_USE_INTERNAL_Fortran:${VCPKG_USE_INTERNAL_Fortran}") +if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL) + set(BASE_PATH "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-ifort/Intel/Compiler/12.0/compiler/2022.0.3") + set(IFORT_COMPILER_ROOT "${BASE_PATH}/windows") + ) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(subpath "ia32_win") + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(subpath "intel64_win") + endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") + set(IFORT_BASEPATH_LIBS "${IFORT_COMPILER_ROOT}/compiler/lib/${subpath}/") + file(COPY "${IFORT_BASEPATH_LIBS}" DESTINATION "${CURRENT_PACKAGES_DIR}/share/ifort/") + endif() + if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic") + set(IFORT_BASEPATH_DLLS "${IFORT_COMPILER_ROOT}/redist/${subpath}/compiler/") + set(IFORT_DLLS + cilkrts20.dll + libdlg100.dll + libchkp.dll + libicaf.dll + libifportmd.dll + libirngmd.dll + svml_dispmd.dll + libiomp5md.dll + libiompstubs5md.dll + ) + set(IFORT_DLLS_DEBUG + libifcoremdd.dll + libmmdd.dll + ) + set(IFORT_DLLS_RELEASE + libifcoremd.dll + libmmd.dll + ) + list(TRANSFORM IFORT_DLLS PREPEND "${IFORT_BASEPATH_DLLS}") + list(TRANSFORM IFORT_DLLS_DEBUG PREPEND "${IFORT_BASEPATH_DLLS}") + list(TRANSFORM IFORT_DLLS_RELEASE PREPEND "${IFORT_BASEPATH_DLLS}") + + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") + file(COPY ${IFORT_DLLS} ${IFORT_DLLS_RELEASE} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") + file(COPY ${IFORT_DLLS} ${IFORT_DLLS_DEBUG} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + endif() + file(COPY "${BASE_PATH}/licensing/fortran/third-party-programs.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) + set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) # libs are at share/ifort and reflect how they are installed by the compiler instead of splitting them. + set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) +else() + set(VCPKG_POLICY_EMPTY_PACKAGE enabled) +endif() \ No newline at end of file diff --git a/ports/vcpkg-ifort/vcpkg.json b/ports/vcpkg-ifort/vcpkg.json new file mode 100644 index 00000000000000..94c1e100739c99 --- /dev/null +++ b/ports/vcpkg-ifort/vcpkg.json @@ -0,0 +1,10 @@ +{ + "name": "vcpkg-ifort", + "version-date": "2022-02-22", + "description": "Metaport to install ifort dll dependencies from Intel oneAPI", + "license": "MIT", + "supports": "(windows & !arm) & !uwp", + "dependencies": [ + "vcpkg-fortran" + ] +} diff --git a/ports/vcpkg-tool-ifort/portfile.cmake b/ports/vcpkg-tool-ifort/portfile.cmake new file mode 100644 index 00000000000000..cca4384d6b45c8 --- /dev/null +++ b/ports/vcpkg-tool-ifort/portfile.cmake @@ -0,0 +1,53 @@ +set(VCPKG_POLIC_EMPTY_PACKAGE enabled) + +vcpkg_download_distfile(archive_path + URLS "https://registrationcenter-download.intel.com/akdlm/irc_nas/18578/w_HPCKit_p_2022.1.3.145_offline.exe" + FILENAME "w_HPCKit_p_2022.1.3.145_offline.exe" + SHA512 703f525002d07b75dcfbfd337bf6b8621f13674a45d5ad909d34d0117ea992f16fc4fa96a16d8c7ea39cc79a063b20d0c0446c4bd9e8c0d9f2f2ca91cee7eeae +) + +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") +set(7Z "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-7zip/7z.exe") +vcpkg_execute_in_download_mode( + COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/intel-extract" "-y" "-bso0" "-bsp0" + WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" + ) + +configure_file("${CURRENT_PACKAGES_DIR}/intel-extract/license.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) +# vcpkg_execute_in_download_mode( + # COMMAND "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/bootstrapper.exe" + # "-s " "--action install" + # "--components=intel.oneapi.win.cpp-compiler:intel.oneapi.win.ifort-compiler" + # "--eula=accept" + # "--install-dir=${CURRENT_PACKAGES_DIR}/manual-tools/intel" + # "--intel-sw-improvement-program-consent=decline" + # "-p=NEED_VS2017_INTEGRATION=0" "-p=NEED_VS2019_INTEGRATION=0" "-p=NEED_VS2022_INTEGRATION=0" + # "--log-dir=${CURRENT_BUILDTREES_DIR}" + # WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" + # ) + +set(packages + "intel.oneapi.win.openmp,v=2022.0.3-3747/oneapi-comp-openmp-for-installer_p_2022.0.3.3747.msi" + "intel.oneapi.win.compilers-common-runtime,v=2022.0.3-3747/oneapi-comp-common-runtime-for-installer_p_2022.0.3.3747.msi" + "intel.oneapi.win.compilers-common,v=2022.0.3-3747/oneapi-comp-common-for-installer_p_2022.0.3.3747.msi" + "intel.oneapi.win.ifort-compiler,v=2022.0.3-3747/oneapi-comp-f-for-installer_p_2022.0.3.3747.msi" + "intel.oneapi.win.oneapi-common.vars,v=2022.0.1-126/oneapi-common-vars-for-installer_p_2022.0.1.126.msi" + ) +foreach(pack IN LISTS packages) + set(archive_path "${CURRENT_PACKAGES_DIR}/intel-extract/packages/${pack}") + cmake_path(GET pack STEM LAST_ONLY packstem) + cmake_path(NATIVE_PATH archive_path archive_path_native) + set(output_path "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") # vcpkg.cmake adds everything in /tools to CMAKE_PROGRAM_PATH. That is not desired + file(MAKE_DIRECTORY "${output_path}") + vcpkg_execute_in_download_mode( + COMMAND "${CURRENT_HOST_INSTALLED_DIR}/tools/vcpkg-tool-lessmsi/lessmsi.exe" x "${archive_path_native}" # Using output_path here does not work in bash + WORKING_DIRECTORY "${output_path}" + OUTPUT_FILE "${CURRENT_BUILDTREES_DIR}/lessmsi-${TARGET_TRIPLET}-out.log" + ERROR_FILE "${CURRENT_BUILDTREES_DIR}/lessmsi-${TARGET_TRIPLET}-err.log" + RESULT_VARIABLE error_code + ) + file(COPY "${output_path}/${packstem}/SourceDir/" DESTINATION "${output_path}") + file(REMOVE_RECURSE "${output_path}/${packstem}") +endforeach() +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/Intel/Compiler/12.0/setvars.bat" "componentArray[default]=latest" "componentArray[default]=2022.0.3") # The latest symlink is not created +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/intel-extract") \ No newline at end of file diff --git a/ports/vcpkg-tool-ifort/vcpkg.json b/ports/vcpkg-tool-ifort/vcpkg.json new file mode 100644 index 00000000000000..8d3fc202aadf95 --- /dev/null +++ b/ports/vcpkg-tool-ifort/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "vcpkg-tool-ifort", + "version-date": "2022-05-08", + "description": "Get the Intel HPC OneAPI Toolkit", + "license": null, + "supports": "windows & x64 & native", + "dependencies": [ + { + "name": "vcpkg-tool-7zip", + "host": true + }, + { + "name": "vcpkg-tool-lessmsi", + "host": true, + "platform": "windows" + } + ] +} From 1a05ff45f2a571169e5c46dfd5d6584adad03eec Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:14:19 +0200 Subject: [PATCH 060/141] add flang path --- ports/vcpkg-fortran-flang/portfile.cmake | 17 +++ .../vcpkg-port-config.cmake.in | 2 + ports/vcpkg-fortran-flang/vcpkg.json | 19 +++ .../x_vcpkg_find_fortran.cmake | 120 ++++++++++++++++++ 4 files changed, 158 insertions(+) create mode 100644 ports/vcpkg-fortran-flang/portfile.cmake create mode 100644 ports/vcpkg-fortran-flang/vcpkg-port-config.cmake.in create mode 100644 ports/vcpkg-fortran-flang/vcpkg.json create mode 100644 ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake diff --git a/ports/vcpkg-fortran-flang/portfile.cmake b/ports/vcpkg-fortran-flang/portfile.cmake new file mode 100644 index 00000000000000..204639b6a77caf --- /dev/null +++ b/ports/vcpkg-fortran-flang/portfile.cmake @@ -0,0 +1,17 @@ +set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) + +set(FUNCTION_NAME x_vcpkg_find_fortran) + +if(VCPKG_CROSSCOMPILING) + # make FATAL_ERROR in CI when issue #16773 fixed + # message(WARNING "${PORT} is a host-only port; please mark it as a host port in your dependencies.") + # NOTE: Interessting case here: Would need to go from target --> host --> target. +endif() + +file(COPY + "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + +configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) + diff --git a/ports/vcpkg-fortran-flang/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran-flang/vcpkg-port-config.cmake.in new file mode 100644 index 00000000000000..5260140c9ea5c6 --- /dev/null +++ b/ports/vcpkg-fortran-flang/vcpkg-port-config.cmake.in @@ -0,0 +1,2 @@ +include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg_cmake_get_vars.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") diff --git a/ports/vcpkg-fortran-flang/vcpkg.json b/ports/vcpkg-fortran-flang/vcpkg.json new file mode 100644 index 00000000000000..0941da6b2ce121 --- /dev/null +++ b/ports/vcpkg-fortran-flang/vcpkg.json @@ -0,0 +1,19 @@ +{ + "name": "vcpkg-fortran-flang", + "version-date": "2022-02-22", + "description": "Metaport to use the flang fortran compiler", + "license": "MIT", + "supports": "windows", + "dependencies": [ + "flang-fortran-runtime", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-tool-flang", + "host": true, + "platform": "windows" + } + ] +} diff --git a/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake new file mode 100644 index 00000000000000..c6d1b0bfc9944c --- /dev/null +++ b/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake @@ -0,0 +1,120 @@ +#[===[.md: +# x_vcpkg_find_fortran + +Checks if a Fortran compiler can be found. +Windows(x86/x64) Only: If not it will search and enable Intel + ifort compiler if available. + +## Usage +```cmake +x_vcpkg_find_fortran() +``` + +## Example +```cmake +x_vcpkg_find_fortran(fortran_args) +# ... +vcpkg_configure_cmake(... + OPTIONS + ${fortran_args} +) +``` +#]===] +include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg_cmake_get_vars.cmake") + +function(x_vcpkg_find_fortran) + cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "OUT_OPTIONS;OUT_OPTIONS_RELEASE;OUT_OPTIONS_DEBUG" "") + + vcpkg_list(SET additional_cmake_args) + vcpkg_cmake_get_vars(cmake_vars_file OPTIONS "-DVCPKG_LANGUAGES=C;CXX;Fortran") + include("${cmake_vars_file}") + + if(NOT VCPKG_DETECTED_CMAKE_Fortran_COMPILER) + if(WIN32) + message(STATUS "No Fortran compiler found on the PATH. Trying to use classic flang!") + # if(VCPKG_TARGET_IS_UWP) # UWP not working. Missing libomp to build flang-fortran-runtime + # set(extra_uwp_flags "-Wl,/NODEFAULTLIB:libcmt -Wl,/NODEFAULTLIB:libcmtd -Wl,/NODEFAULTLIB:msvcrt -Wl,/NODEFAULTLIB:msvcrtd") + # set(exta_uwp_link_flags "-DCMAKE_SHARED_LINKER_FLAGS_INIT:STRING=-Wl,/APPCONTAINER") + # endif() + + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") + set(ARCH X86) + elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(ARCH ARM) + endif() + vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/${ARCH}") + + find_library(PGMATH NAMES libpgmath pgmath PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET PGMATH FILENAME pgmathlibname) + find_library(flanglib NAMES libflang flang PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET flanglib FILENAME flanglibname) + find_library(flangrtilib NAMES libflangrti flangrti PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET flangrtilib FILENAME flangrtilibname) + if(VCPKG_OPENMP) + find_library(omplib NAMES libomp omp PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET omplib FILENAME omplibname) + else() + find_library(omplib NAMES libompstub ompstub PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET omplib FILENAME omplibname) + endif() + find_library(flangmainlib NAMES libflangmain flangmain PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET flangmainlib FILENAME flangmainlibname) + + vcpkg_list(SET flang_compile_libs "") + vcpkg_list(SET flang_link_lib "${flanglibname} ${flangrtilibname} ${pgmathlibname} ${omplibname}") + vcpkg_list(SET flang_link_default_lib "/DEFAULTLIB:${flanglibname} /DEFAULTLIB:${flangrtilibname} /DEFAULTLIB:${pgmathlibname} /DEFAULTLIB:${omplibname}") + + set(static_flang "") + if("${pgmathlibname}" STREQUAL "libpgmath.lib") + set(static_flang "-static-flang-libs ") + endif() + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") + set(arch_flag "--target=aarch64-win32-msvc") + endif() + #-noFlangLibs -fno-fortran-main + #-Wno-unused-command-line-argument + vcpkg_list(APPEND additional_cmake_args +"-DCMAKE_TRY_COMPILE_PLATFORM_VARIABLES=CMAKE_Fortran_FLAGS;CMAKE_Fortran_FLAGS_RELEASE;CMAKE_Fortran_FLAGS_DEBUG;CMAKE_Fortran_STANDARD_LIBRARIES;CMAKE_EXE_LINKER_FLAGS;CMAKE_EXE_LINKER_FLAGS_RELEASE;CMAKE_EXE_LINKER_FLAGS_DEBUG;CMAKE_STATIC_LINKER_FLAGS;CMAKE_STATIC_LINKER_FLAGS_DEBUG;CMAKE_STATIC_LINKER_FLAGS_RELEASE;CMAKE_SHARED_LINKER_FLAGS;CMAKE_SHARED_LINKER_FLAGS_RELEASE;CMAKE_SHARED_LINKER_FLAGS_DEBUG;CMAKE_REQUIRED_LINK_OPTIONS" + "-DCMAKE_POLICY_DEFAULT_CMP0065=NEW" + "-DCMAKE_POLICY_DEFAULT_CMP0067=NEW" + "-DCMAKE_POLICY_DEFAULT_CMP0083=NEW" + "-DCMAKE_C_COMPILER=${VCPKG_DETECTED_CMAKE_C_COMPILER}" # Need to pass C compiler if only Fortran is enabled. + "-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + "-DCMAKE_EXE_LINKER_FLAGS_DEBUG_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib" + "-DCMAKE_EXE_LINKER_FLAGS_RELEASE_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib" + "-DCMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib" + "-DCMAKE_SHARED_LINKER_FLAGS_RELEASE_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib" + "-DCMAKE_STATIC_LINKER_FLAGS_DEBUG_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib" + "-DCMAKE_STATIC_LINKER_FLAGS_RELEASE_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib" + "-DCMAKE_Fortran_FLAGS_DEBUG_INIT:STRING=-O0 -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib" + "-DCMAKE_Fortran_FLAGS_RELEASE_INIT:STRING=-O3 -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/lib" + "-DCMAKE_Fortran_STANDARD_LIBRARIES_INIT=${flang_link_lib}" + #"-DCMAKE_Fortran_LINKER_FLAGS_RELEASE_INIT=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flang_link_default_lib}" + #"-DCMAKE_Fortran_LINKER_FLAGS_DEBUG_INIT=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flang_link_default_lib}" + "-DCMAKE_REQUIRED_LINK_OPTIONS:STRING=-LIBPATH:${CURRENT_INSTALLED_DIR}/\$$<\$$:debug/>lib/" + #"-DCMAKE_Fortran_LINK_EXECUTABLE=\\\\\"\\\\\${_CMAKE_VS_LINK_EXE} \\\\\${CMAKE_CL_NOLOGO} \\\\\${CMAKE_START_TEMP_FILE} /out: /implib: /pdb: /version:.${_PLATFORM_LINK_FLAGS} \\\\\${CMAKE_END_TEMP_FILE}\\\\\"" + "${exta_uwp_link_flags}") + vcpkg_list(APPEND additional_cmake_args_rel + "-DCMAKE_EXE_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flangmainlibname} ${flang_link_default_lib}" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flang_link_default_lib}" + "-DCMAKE_STATIC_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flang_link_default_lib}" + "-DCMAKE_Fortran_FLAGS_INIT:STRING=${arch_flag} -Mreentrant -I ${CURRENT_INSTALLED_DIR}/include ${static_flang}${flang_compile_libs} -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${extra_uwp_flags}" + #"-DCMAKE_Fortran_LINKER_FLAGS_INIT=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flang_link_default_lib}" + ) + vcpkg_list(APPEND additional_cmake_args_dbg + "-DCMAKE_EXE_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flangmainlibname} ${flang_link_default_lib}" + "-DCMAKE_SHARED_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flang_link_default_lib}" + "-DCMAKE_STATIC_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flang_link_default_lib}" + "-DCMAKE_Fortran_FLAGS_INIT:STRING=${arch_flag} -Mreentrant -I ${CURRENT_INSTALLED_DIR}/include ${static_flang}${flang_compile_libs} -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${extra_uwp_flags}" + #"-DCMAKE_Fortran_LINKER_FLAGS_INIT=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flang_link_default_lib}" + ) + set(Z_VCPKG_USE_INTERNAL_Fortran TRUE CACHE INTERNAL "") + set(Z_VCPKG_IS_INTERNAL_Fortran_Flang TRUE CACHE INTERNAL "") + else() + message(FATAL_ERROR "Unable to find a Fortran compiler using CMake. Please install one (e.g. gfortran) and make it available for CMake!") + endif() + endif() + set("${arg_OUT_OPTIONS}" "${additional_cmake_args}" PARENT_SCOPE) + set("${arg_OUT_OPTIONS_RELEASE}" "${additional_cmake_args_rel}" PARENT_SCOPE) + set("${arg_OUT_OPTIONS_DEBUG}" "${additional_cmake_args_dbg}" PARENT_SCOPE) +endfunction() From ed81fd850609dca3865c8d965caac7eae391e365 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:14:30 +0200 Subject: [PATCH 061/141] add vcpkg-fortran --- ports/vcpkg-fortran/portfile.cmake | 18 ++++++++++++++++++ ports/vcpkg-fortran/vcpkg-port-config.cmake.in | 1 + ports/vcpkg-fortran/vcpkg.json | 16 ++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 ports/vcpkg-fortran/portfile.cmake create mode 100644 ports/vcpkg-fortran/vcpkg-port-config.cmake.in create mode 100644 ports/vcpkg-fortran/vcpkg.json diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake new file mode 100644 index 00000000000000..d03dfe965760c0 --- /dev/null +++ b/ports/vcpkg-fortran/portfile.cmake @@ -0,0 +1,18 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + set(VCPKG_POLICY_CMAKE_SCRIPT_HELPER enabled) + set(FUNCTION_NAME x_vcpkg_find_fortran) + set(PORT_IMPL vcpkg-fortran-flang) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + set(PORT_IMPL vcpkg-fortran-ifort) + endif() + #if(VCPKG_CROSSCOMPILING) + # message(FATAL_ERROR "${PORT} is a host-only port; please mark it as a host port in your dependencies.") + #endif() + + #file(COPY + # DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + + configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) +endif() \ No newline at end of file diff --git a/ports/vcpkg-fortran/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in new file mode 100644 index 00000000000000..774eb7adaf837e --- /dev/null +++ b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/../@PORT_IMPL@/@FUNCTION_NAME@.cmake") diff --git a/ports/vcpkg-fortran/vcpkg.json b/ports/vcpkg-fortran/vcpkg.json new file mode 100644 index 00000000000000..dc330390c18b92 --- /dev/null +++ b/ports/vcpkg-fortran/vcpkg.json @@ -0,0 +1,16 @@ +{ + "name": "vcpkg-fortran", + "version-date": "2022-02-22", + "description": "Metaport for fortran compiler helpers. Only used for Windows", + "license": "MIT", + "dependencies": [ + { + "name": "vcpkg-fortran-flang", + "platform": "(windows & !mingw) & (x64 | arm64)" + }, + { + "name": "vcpkg-fortran-ifort", + "platform": "(windows & !mingw) & x86" + } + ] +} From 987299bbcb41df780de64fb7ac0bac53d532e342 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:15:29 +0200 Subject: [PATCH 062/141] bump lapack version --- ports/lapack-reference/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index 077a32d407be39..67b3fc2c75d246 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -1,7 +1,7 @@ { "name": "lapack-reference", "version": "3.10.0", - "port-version": 1, + "port-version": 2, "description": "LAPACK - Linear Algebra PACKage", "homepage": "http://www.netlib.org/lapack/", "license": "BSD-3-Clause-Open-MPI", From 120ae0b14d8f09a622f9a6e2fd0b03b0ba35a929 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:17:36 +0200 Subject: [PATCH 063/141] switch lapack on arm64 to lapack-reference since flang supports arm64 --- ports/lapack/vcpkg.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/lapack/vcpkg.json b/ports/lapack/vcpkg.json index 3446f3b57349e0..a861a3aa617044 100644 --- a/ports/lapack/vcpkg.json +++ b/ports/lapack/vcpkg.json @@ -7,11 +7,11 @@ "dependencies": [ { "name": "clapack", - "platform": "(arm & windows) | uwp" + "platform": "(arm & !arm64 & windows) | uwp" }, { "name": "lapack-reference", - "platform": "!((arm & windows) | uwp | osx)" + "platform": "!((arm & !arm64 & windows) | uwp | osx)" }, { "name": "vcpkg-cmake", From fa4694217b2080d0f17bdc58fabd138ed7b24849 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:18:01 +0200 Subject: [PATCH 064/141] version stuff --- versions/baseline.json | 42 ++++++++++++++++++++++++-- versions/f-/flang-fortran-runtime.json | 9 ++++++ versions/l-/lapack-reference.json | 5 +++ versions/p-/pgmath.json | 9 ++++++ versions/v-/vcpkg-cmake.json | 5 +++ versions/v-/vcpkg-fortran-flang.json | 9 ++++++ versions/v-/vcpkg-fortran-ifort.json | 9 ++++++ versions/v-/vcpkg-fortran.json | 9 ++++++ versions/v-/vcpkg-ifort.json | 9 ++++++ versions/v-/vcpkg-tool-7zip.json | 2 +- versions/v-/vcpkg-tool-flang-llvm.json | 9 ++++++ versions/v-/vcpkg-tool-flang.json | 9 ++++++ versions/v-/vcpkg-tool-ifort.json | 9 ++++++ versions/v-/vcpkg-tool-llvm.json | 5 +++ 14 files changed, 136 insertions(+), 4 deletions(-) create mode 100644 versions/f-/flang-fortran-runtime.json create mode 100644 versions/p-/pgmath.json create mode 100644 versions/v-/vcpkg-fortran-flang.json create mode 100644 versions/v-/vcpkg-fortran-ifort.json create mode 100644 versions/v-/vcpkg-fortran.json create mode 100644 versions/v-/vcpkg-ifort.json create mode 100644 versions/v-/vcpkg-tool-flang-llvm.json create mode 100644 versions/v-/vcpkg-tool-flang.json create mode 100644 versions/v-/vcpkg-tool-ifort.json diff --git a/versions/baseline.json b/versions/baseline.json index 04e30bbcef664e..ddb2886c137dc0 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2224,6 +2224,10 @@ "baseline": "2022.03.21.00", "port-version": 1 }, + "flang-fortran-runtime": { + "baseline": "2022-04-23", + "port-version": 0 + }, "flann": { "baseline": "2019-04-07", "port-version": 5 @@ -3330,7 +3334,7 @@ }, "lapack-reference": { "baseline": "3.10.0", - "port-version": 1 + "port-version": 2 }, "lastools": { "baseline": "2020-05-09", @@ -5388,6 +5392,10 @@ "baseline": "2019-05-14", "port-version": 1 }, + "pgmath": { + "baseline": "2022-04-23", + "port-version": 0 + }, "phnt": { "baseline": "2020-12-21", "port-version": 0 @@ -7317,13 +7325,25 @@ "port-version": 1 }, "vcpkg-cmake": { - "baseline": "2022-05-06", + "baseline": "2022-05-09", "port-version": 0 }, "vcpkg-cmake-config": { "baseline": "2022-02-06", "port-version": 0 }, + "vcpkg-fortran": { + "baseline": "2022-02-22", + "port-version": 0 + }, + "vcpkg-fortran-flang": { + "baseline": "2022-02-22", + "port-version": 0 + }, + "vcpkg-fortran-ifort": { + "baseline": "2022-02-22", + "port-version": 0 + }, "vcpkg-get-python-packages": { "baseline": "2022-04-11", "port-version": 0 @@ -7336,6 +7356,10 @@ "baseline": "2021-11-16", "port-version": 1 }, + "vcpkg-ifort": { + "baseline": "2022-02-22", + "port-version": 0 + }, "vcpkg-pkgconfig-get-modules": { "baseline": "2022-02-10", "port-version": 0 @@ -7348,6 +7372,14 @@ "baseline": "21.07", "port-version": 0 }, + "vcpkg-tool-flang": { + "baseline": "2022-04-23", + "port-version": 0 + }, + "vcpkg-tool-flang-llvm": { + "baseline": "2022-04-23", + "port-version": 0 + }, "vcpkg-tool-gn": { "baseline": "2022-04-16", "port-version": 0 @@ -7356,12 +7388,16 @@ "baseline": "2022-03-04", "port-version": 0 }, + "vcpkg-tool-ifort": { + "baseline": "2022-05-08", + "port-version": 0 + }, "vcpkg-tool-lessmsi": { "baseline": "1.10.0", "port-version": 0 }, "vcpkg-tool-llvm": { - "baseline": "13.0.1", + "baseline": "14.0.3", "port-version": 0 }, "vcpkg-tool-meson": { diff --git a/versions/f-/flang-fortran-runtime.json b/versions/f-/flang-fortran-runtime.json new file mode 100644 index 00000000000000..903ad5ccea4bdf --- /dev/null +++ b/versions/f-/flang-fortran-runtime.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "46764fb0e7d0ee5c1003b183e59878a37ed0cb6a", + "version-date": "2022-04-23", + "port-version": 0 + } + ] +} diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index 1ff0f84c9ed4fb..ae4a38d40773dc 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "19ce14744b4e1e2eb54607906cfaf1207a563405", + "version": "3.10.0", + "port-version": 2 + }, { "git-tree": "da59cc546e4177caca786c3fcec9344c5cb6ad71", "version": "3.10.0", diff --git a/versions/p-/pgmath.json b/versions/p-/pgmath.json new file mode 100644 index 00000000000000..aac8328d8431d9 --- /dev/null +++ b/versions/p-/pgmath.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "0973548e0c0da1b808d1112358cc23172fdef23d", + "version-date": "2022-04-23", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-cmake.json b/versions/v-/vcpkg-cmake.json index ecc5876cd29787..e0314c89e98f4a 100644 --- a/versions/v-/vcpkg-cmake.json +++ b/versions/v-/vcpkg-cmake.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "62ae1fa4376b40827147b903268a0257b7875422", + "version-date": "2022-05-09", + "port-version": 0 + }, { "git-tree": "46a5686341cf9136053ff01b9f213dbd2dbea8a6", "version-date": "2022-05-06", diff --git a/versions/v-/vcpkg-fortran-flang.json b/versions/v-/vcpkg-fortran-flang.json new file mode 100644 index 00000000000000..48ae816eea3366 --- /dev/null +++ b/versions/v-/vcpkg-fortran-flang.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "2aecf072efffa02a8323211ebf61a29f861c2b8e", + "version-date": "2022-02-22", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-fortran-ifort.json b/versions/v-/vcpkg-fortran-ifort.json new file mode 100644 index 00000000000000..851513711441e6 --- /dev/null +++ b/versions/v-/vcpkg-fortran-ifort.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "9844e224563602cfa536619ae81af0e2692f49cb", + "version-date": "2022-02-22", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json new file mode 100644 index 00000000000000..1ff38a0213703e --- /dev/null +++ b/versions/v-/vcpkg-fortran.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "8a80c48548272c5983ca60c556a80095371affe1", + "version-date": "2022-02-22", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-ifort.json b/versions/v-/vcpkg-ifort.json new file mode 100644 index 00000000000000..91e401052a335e --- /dev/null +++ b/versions/v-/vcpkg-ifort.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "040ccc44b9d0eba5ae5df3b2c1f9791fb93eb3eb", + "version-date": "2022-02-22", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-tool-7zip.json b/versions/v-/vcpkg-tool-7zip.json index 2f8d1633760a4d..b6fb47b29c8779 100644 --- a/versions/v-/vcpkg-tool-7zip.json +++ b/versions/v-/vcpkg-tool-7zip.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "086568db163aef0bee77c7d0e183289e2c2631be", + "git-tree": "51695dfdad2182d62dc3ff37e1e9fe485a21b6ac", "version-string": "21.07", "port-version": 0 } diff --git a/versions/v-/vcpkg-tool-flang-llvm.json b/versions/v-/vcpkg-tool-flang-llvm.json new file mode 100644 index 00000000000000..c54294954e946b --- /dev/null +++ b/versions/v-/vcpkg-tool-flang-llvm.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "aa90240f4ecf4b2b94f86e05d9a4126484ab25ce", + "version-date": "2022-04-23", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-tool-flang.json b/versions/v-/vcpkg-tool-flang.json new file mode 100644 index 00000000000000..e82da16b75d962 --- /dev/null +++ b/versions/v-/vcpkg-tool-flang.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "8e522dd71dc8aac9a9da0a84b03b5b94b517f69e", + "version-date": "2022-04-23", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-tool-ifort.json b/versions/v-/vcpkg-tool-ifort.json new file mode 100644 index 00000000000000..2ca6b30ea0320c --- /dev/null +++ b/versions/v-/vcpkg-tool-ifort.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "7bb5bf7dd31590727572b23c8d1f2ddace3a0d93", + "version-date": "2022-05-08", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-tool-llvm.json b/versions/v-/vcpkg-tool-llvm.json index 218b2489baeea3..739eda48d9bf5b 100644 --- a/versions/v-/vcpkg-tool-llvm.json +++ b/versions/v-/vcpkg-tool-llvm.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "b52b8db4b6fd4aef309817f920c3b7f899c6d553", + "version": "14.0.3", + "port-version": 0 + }, { "git-tree": "933c41d9ae6be3930aadbb5f7f361d7aad1510a4", "version": "13.0.1", From fdaf76901f3e2b6e5c90bb78558c2856b63d670f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:20:48 +0200 Subject: [PATCH 065/141] fix metaport wrapper install --- ports/lapack/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 9700d1daa7d36a..33884457c0a086 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -23,7 +23,7 @@ if(ver_str STREQUAL "default") configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" @ONLY) endif() unset(installed_module) - elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR VCPKG_TARGET_IS_UWP) + elseif((VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm") OR VCPKG_TARGET_IS_UWP) configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) set(libs "-llapack -llibf2c") From da6ee69516c7069ceff5c734e0a08fa9e086aa3b Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 10:21:00 +0200 Subject: [PATCH 066/141] version stuff --- versions/l-/lapack.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index 60004c2a96f06f..43d1dfd7126c42 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "235ef93dec56035f02e8fdd88fbf34dfc4d2b095", + "git-tree": "e4145f829cdfe119df841c095b733a9b21c2fbe2", "version-string": "default", "port-version": 0 }, From 90c08201c88dc630c2233356ffd86ab26f8eace5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 12:01:32 +0200 Subject: [PATCH 067/141] touch copyright --- ports/vcpkg-tool-llvm/portfile.cmake | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-tool-llvm/portfile.cmake b/ports/vcpkg-tool-llvm/portfile.cmake index b78cb179c15f2a..651467dcf0c017 100644 --- a/ports/vcpkg-tool-llvm/portfile.cmake +++ b/ports/vcpkg-tool-llvm/portfile.cmake @@ -21,14 +21,13 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) FILENAME "${name}" SHA512 "${hash}" ) - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") - set(7Z "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-7zip/7z.exe") vcpkg_execute_in_download_mode( COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" "-y" "-bso0" "-bsp0" WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" ) file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/$PLUGINSDIR") configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) + file(TOUCH "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright") # binary distribution does not contain a license endif() -endif() \ No newline at end of file +endif() From fa9e2f0023fc5f666338ca35a10ac09069c02dd4 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 12:02:03 +0200 Subject: [PATCH 068/141] version stuff --- versions/v-/vcpkg-tool-llvm.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-tool-llvm.json b/versions/v-/vcpkg-tool-llvm.json index 739eda48d9bf5b..e4e3b60e7ead2d 100644 --- a/versions/v-/vcpkg-tool-llvm.json +++ b/versions/v-/vcpkg-tool-llvm.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "b52b8db4b6fd4aef309817f920c3b7f899c6d553", + "git-tree": "9d01ace94144df91873fb982bddd7940dd116cff", "version": "14.0.3", "port-version": 0 }, From d4ab1253aa3de4655443b0c52be3ec0a0f7eabd5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 12:02:44 +0200 Subject: [PATCH 069/141] add lic field --- ports/clapack/vcpkg.json | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/clapack/vcpkg.json b/ports/clapack/vcpkg.json index b3d28c2965c9e3..3d87ad9b50514a 100644 --- a/ports/clapack/vcpkg.json +++ b/ports/clapack/vcpkg.json @@ -4,6 +4,7 @@ "port-version": 21, "description": "CLAPACK (f2c'ed version of LAPACK)", "homepage": "https://www.netlib.org/clapack", + "license": null, "dependencies": [ "blas", { From 9a1915c7e55ff0793ba687c150cd55efb1091b1a Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 12:03:08 +0200 Subject: [PATCH 070/141] verison stuff --- versions/c-/clapack.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/c-/clapack.json b/versions/c-/clapack.json index 33ebd276f8a7b4..7abdd60618dfce 100644 --- a/versions/c-/clapack.json +++ b/versions/c-/clapack.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "c6ae90dbc78f251f9a486182d83dc7f15b5c20d8", + "git-tree": "6784ef28f0d4111506b88208be613263be9cafe9", "version": "3.2.1", "port-version": 21 }, From 5d6b2c8920b1f5ed6b159f3e895e2e08dae57829 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 12:20:57 +0200 Subject: [PATCH 071/141] fix typo --- ports/vcpkg-fortran-flang/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vcpkg-fortran-flang/portfile.cmake b/ports/vcpkg-fortran-flang/portfile.cmake index 204639b6a77caf..e057ac2f9fcc7a 100644 --- a/ports/vcpkg-fortran-flang/portfile.cmake +++ b/ports/vcpkg-fortran-flang/portfile.cmake @@ -12,6 +12,6 @@ file(COPY "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") -configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) +configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) From ef917a449e0829fb7840aa25450e81975a69cc19 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 12:21:38 +0200 Subject: [PATCH 072/141] version stuff --- versions/v-/vcpkg-fortran-flang.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-fortran-flang.json b/versions/v-/vcpkg-fortran-flang.json index 48ae816eea3366..21a60a05489168 100644 --- a/versions/v-/vcpkg-fortran-flang.json +++ b/versions/v-/vcpkg-fortran-flang.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "2aecf072efffa02a8323211ebf61a29f861c2b8e", + "git-tree": "b51aa24510b25d4a35d0539815e5844bcd489b62", "version-date": "2022-02-22", "port-version": 0 } From 2e19c82b8bec13a24d57e547220ac5cc7f9b1d0d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 15:03:58 +0200 Subject: [PATCH 073/141] fix policy typo --- ports/vcpkg-tool-ifort/portfile.cmake | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ports/vcpkg-tool-ifort/portfile.cmake b/ports/vcpkg-tool-ifort/portfile.cmake index cca4384d6b45c8..1cbd8284d9ce95 100644 --- a/ports/vcpkg-tool-ifort/portfile.cmake +++ b/ports/vcpkg-tool-ifort/portfile.cmake @@ -1,4 +1,4 @@ -set(VCPKG_POLIC_EMPTY_PACKAGE enabled) +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) vcpkg_download_distfile(archive_path URLS "https://registrationcenter-download.intel.com/akdlm/irc_nas/18578/w_HPCKit_p_2022.1.3.145_offline.exe" @@ -7,7 +7,6 @@ vcpkg_download_distfile(archive_path ) file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}") -set(7Z "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-7zip/7z.exe") vcpkg_execute_in_download_mode( COMMAND "${7Z}" x "${archive_path}" "-o${CURRENT_PACKAGES_DIR}/intel-extract" "-y" "-bso0" "-bsp0" WORKING_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}" From 61f991d44efc20259c9f1f8b0b8c6291484b1f80 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 15:04:26 +0200 Subject: [PATCH 074/141] version stuff --- versions/v-/vcpkg-tool-ifort.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-tool-ifort.json b/versions/v-/vcpkg-tool-ifort.json index 2ca6b30ea0320c..ae619927437397 100644 --- a/versions/v-/vcpkg-tool-ifort.json +++ b/versions/v-/vcpkg-tool-ifort.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "7bb5bf7dd31590727572b23c8d1f2ddace3a0d93", + "git-tree": "924cfddf654c1d731e713bd9a0613ddc8051b0cf", "version-date": "2022-05-08", "port-version": 0 } From e710677b06b8808bf01e6bcb4972ec2efd697c7b Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 17:30:13 +0200 Subject: [PATCH 075/141] fix uwp regressions --- ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt | 3 ++- ports/vcpkg-tool-llvm/vcpkg.json | 2 +- scripts/toolchains/uwp.cmake | 4 +++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt b/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt index 84fdc24056adaf..7185f42a2fcb54 100644 --- a/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt +++ b/ports/vcpkg-cmake/cmake_get_vars/CMakeLists.txt @@ -76,7 +76,8 @@ else() endif() -project(get_cmake_vars NONE) +project(get_cmake_vars C CXX) +# C;CXX as default since NONE does not work with the approach below and uwp. include(CheckLanguage) foreach(lang IN LISTS VCPKG_LANGUAGES) diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json index dbf9440aa41d92..86ef8b0ac887ee 100644 --- a/ports/vcpkg-tool-llvm/vcpkg.json +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -4,7 +4,7 @@ "description": "The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Note: the repository does not accept github pull requests at this moment. Please submit your patches at http://reviews.llvm.org. ", "homepage": "https://github.com/llvm/llvm-project", "license": null, - "supports": "windows & (x64 | x86)", + "supports": "windows & (x64 | x86) & native", "dependencies": [ { "name": "vcpkg-cmake", diff --git a/scripts/toolchains/uwp.cmake b/scripts/toolchains/uwp.cmake index 95bdc8ed157385..81857378384dd0 100644 --- a/scripts/toolchains/uwp.cmake +++ b/scripts/toolchains/uwp.cmake @@ -60,7 +60,9 @@ set(_vcpkg_common_flags "/nologo /Z7 /MP /GS /Gd /Gm- /W3 /WX- /Zc:wchar_t /Zc:i #/ZW:nostdlib -> ZW is added by CMake # VS also normally adds /sdl but not cmake MSBUILD set(_vcpkg_winmd_flag "") file(TO_CMAKE_PATH "$ENV{VCToolsInstallDir}" _vcpkg_vctools) -set(ENV{_CL_} "/FU\"${_vcpkg_vctools}/lib/x86/store/references/platform.winmd\" $ENV{_CL_}") +if(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") # clang-cl does not know how to deal with /FU + set(ENV{_CL_} "/FU\"${_vcpkg_vctools}/lib/x86/store/references/platform.winmd\" $ENV{_CL_}") +endif() # CMake has problems to correctly pass this in the compiler test so probably need special care in get_cmake_vars #set(_vcpkg_winmd_flag "/FU\\\\\"${_vcpkg_vctools}/lib/x86/store/references/platform.winmd\\\\\"") # VS normally passes /ZW for Apps From b00dd29dec32f3a1ca7e8dfc1cfaa75ad1103944 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Mon, 9 May 2022 17:30:38 +0200 Subject: [PATCH 076/141] version stuff --- versions/v-/vcpkg-cmake.json | 2 +- versions/v-/vcpkg-tool-llvm.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/versions/v-/vcpkg-cmake.json b/versions/v-/vcpkg-cmake.json index e0314c89e98f4a..a1312bcff6dea2 100644 --- a/versions/v-/vcpkg-cmake.json +++ b/versions/v-/vcpkg-cmake.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "62ae1fa4376b40827147b903268a0257b7875422", + "git-tree": "4e58563a100d2b479143db800069da545c124144", "version-date": "2022-05-09", "port-version": 0 }, diff --git a/versions/v-/vcpkg-tool-llvm.json b/versions/v-/vcpkg-tool-llvm.json index e4e3b60e7ead2d..fbda321c1a253b 100644 --- a/versions/v-/vcpkg-tool-llvm.json +++ b/versions/v-/vcpkg-tool-llvm.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "9d01ace94144df91873fb982bddd7940dd116cff", + "git-tree": "32387d5382bb0abb1025a4c0bb776289a530a328", "version": "14.0.3", "port-version": 0 }, From 1a8c4f58a46a97fabbde0f5e1dfcbfb8ec5c2279 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 10 May 2022 12:14:28 +0200 Subject: [PATCH 077/141] rename stuff vcpkg-ifort -> vcpkg-ifort-libs flang- -> flang-classic fix regressions (hopefully) --- ports/blas/portfile.cmake | 10 ++---- .../1177.diff | 0 .../awk.patch | 0 .../cross.patch | 0 .../move_flang2.patch | 0 .../portfile.cmake | 8 ++--- .../sep_runtime_from_compiler.patch | 0 .../vcpkg.json | 8 +++-- ports/vcpkg-fortran-flang/vcpkg.json | 6 ++-- .../x_vcpkg_find_fortran.cmake | 4 +-- ports/vcpkg-fortran/portfile.cmake | 7 ++-- .../vcpkg-fortran/vcpkg-port-config.cmake.in | 6 +++- ports/vcpkg-fortran/vcpkg.json | 6 +++- .../vcpkg-fortran/x_vcpkg_find_fortran.cmake | 34 +++++++++++++++++++ .../portfile.cmake | 8 +++-- .../vcpkg.json | 7 ++-- .../0004-fix-dr-1734.patch | 0 .../0010-fix-libffi.patch | 0 .../0011-fix-libxml2.patch | 0 .../65.diff | 0 .../portfile.cmake | 20 +++++------ .../vcpkg.json | 2 +- .../1177.diff | 0 .../awk.patch | 0 .../cross.patch | 0 .../move_flang2.patch | 0 .../portfile.cmake | 18 +++++----- .../sep_runtime_from_compiler.patch | 0 .../vcpkg.json | 4 +-- 29 files changed, 97 insertions(+), 51 deletions(-) rename ports/{flang-fortran-runtime => flang-classic-fortran-runtime}/1177.diff (100%) rename ports/{flang-fortran-runtime => flang-classic-fortran-runtime}/awk.patch (100%) rename ports/{flang-fortran-runtime => flang-classic-fortran-runtime}/cross.patch (100%) rename ports/{flang-fortran-runtime => flang-classic-fortran-runtime}/move_flang2.patch (100%) rename ports/{flang-fortran-runtime => flang-classic-fortran-runtime}/portfile.cmake (95%) rename ports/{flang-fortran-runtime => flang-classic-fortran-runtime}/sep_runtime_from_compiler.patch (100%) rename ports/{flang-fortran-runtime => flang-classic-fortran-runtime}/vcpkg.json (73%) create mode 100644 ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake rename ports/{vcpkg-ifort => vcpkg-ifort-libs}/portfile.cmake (87%) rename ports/{vcpkg-ifort => vcpkg-ifort-libs}/vcpkg.json (69%) rename ports/{vcpkg-tool-flang-llvm => vcpkg-tool-flang-classic-llvm}/0004-fix-dr-1734.patch (100%) rename ports/{vcpkg-tool-flang-llvm => vcpkg-tool-flang-classic-llvm}/0010-fix-libffi.patch (100%) rename ports/{vcpkg-tool-flang-llvm => vcpkg-tool-flang-classic-llvm}/0011-fix-libxml2.patch (100%) rename ports/{vcpkg-tool-flang-llvm => vcpkg-tool-flang-classic-llvm}/65.diff (100%) rename ports/{vcpkg-tool-flang-llvm => vcpkg-tool-flang-classic-llvm}/portfile.cmake (93%) rename ports/{vcpkg-tool-flang-llvm => vcpkg-tool-flang-classic-llvm}/vcpkg.json (89%) rename ports/{vcpkg-tool-flang => vcpkg-tool-flang-classic}/1177.diff (100%) rename ports/{vcpkg-tool-flang => vcpkg-tool-flang-classic}/awk.patch (100%) rename ports/{vcpkg-tool-flang => vcpkg-tool-flang-classic}/cross.patch (100%) rename ports/{vcpkg-tool-flang => vcpkg-tool-flang-classic}/move_flang2.patch (100%) rename ports/{vcpkg-tool-flang => vcpkg-tool-flang-classic}/portfile.cmake (92%) rename ports/{vcpkg-tool-flang => vcpkg-tool-flang-classic}/sep_runtime_from_compiler.patch (100%) rename ports/{vcpkg-tool-flang => vcpkg-tool-flang-classic}/vcpkg.json (87%) diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index 9a0a11f0f72f91..bff4c31754bf19 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -15,13 +15,9 @@ if(ver_str STREQUAL "default") set(requires openblas) endif() - if(NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) - if(NOT VCPKG_BUILD_TYPE) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) - endif() - else() - set(BLA_VENDOR Generic) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) endif() # For possible overlays: diff --git a/ports/flang-fortran-runtime/1177.diff b/ports/flang-classic-fortran-runtime/1177.diff similarity index 100% rename from ports/flang-fortran-runtime/1177.diff rename to ports/flang-classic-fortran-runtime/1177.diff diff --git a/ports/flang-fortran-runtime/awk.patch b/ports/flang-classic-fortran-runtime/awk.patch similarity index 100% rename from ports/flang-fortran-runtime/awk.patch rename to ports/flang-classic-fortran-runtime/awk.patch diff --git a/ports/flang-fortran-runtime/cross.patch b/ports/flang-classic-fortran-runtime/cross.patch similarity index 100% rename from ports/flang-fortran-runtime/cross.patch rename to ports/flang-classic-fortran-runtime/cross.patch diff --git a/ports/flang-fortran-runtime/move_flang2.patch b/ports/flang-classic-fortran-runtime/move_flang2.patch similarity index 100% rename from ports/flang-fortran-runtime/move_flang2.patch rename to ports/flang-classic-fortran-runtime/move_flang2.patch diff --git a/ports/flang-fortran-runtime/portfile.cmake b/ports/flang-classic-fortran-runtime/portfile.cmake similarity index 95% rename from ports/flang-fortran-runtime/portfile.cmake rename to ports/flang-classic-fortran-runtime/portfile.cmake index 0a4011412f0f13..fd48ccda93839a 100644 --- a/ports/flang-fortran-runtime/portfile.cmake +++ b/ports/flang-classic-fortran-runtime/portfile.cmake @@ -92,7 +92,7 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) endif() endif() vcpkg_list(APPEND OPTIONS - "-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + "-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/flang.exe" "-DCMAKE_Fortran_COMPILER_ID=Flang" ) @@ -103,7 +103,7 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") set(ARCH ARM) endif() - vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/${ARCH}") + vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/${ARCH}") endif() vcpkg_cmake_configure( @@ -116,8 +116,8 @@ vcpkg_cmake_configure( "-DLLVM_INCLUDE_TESTS=OFF" "-DFLANG_BUILD_TOOLS=OFF" "-DVCPKG_HOST_TRIPLET=${_HOST_TRIPLET}" - "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/llvm-config.exe" - "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/lib/cmake/llvm" # Flang does not link against anything in llvm + "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/llvm-config.exe" + "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/lib/cmake/llvm" # Flang does not link against anything in llvm ${OPTIONS} ) vcpkg_cmake_install(ADD_BIN_TO_PATH) diff --git a/ports/flang-fortran-runtime/sep_runtime_from_compiler.patch b/ports/flang-classic-fortran-runtime/sep_runtime_from_compiler.patch similarity index 100% rename from ports/flang-fortran-runtime/sep_runtime_from_compiler.patch rename to ports/flang-classic-fortran-runtime/sep_runtime_from_compiler.patch diff --git a/ports/flang-fortran-runtime/vcpkg.json b/ports/flang-classic-fortran-runtime/vcpkg.json similarity index 73% rename from ports/flang-fortran-runtime/vcpkg.json rename to ports/flang-classic-fortran-runtime/vcpkg.json index 69676d1c687d64..b32789f6cc9981 100644 --- a/ports/flang-fortran-runtime/vcpkg.json +++ b/ports/flang-classic-fortran-runtime/vcpkg.json @@ -1,9 +1,11 @@ { - "name": "flang-fortran-runtime", + "name": "flang-classic-fortran-runtime", "version-date": "2022-04-23", "description": "The LLVM Compiler Infrastructure.", "homepage": "https://llvm.org", "license": "Apache-2.0", + "supports": "!uwp", + "$comment": "UWP support requires libomp which isn't available", "dependencies": [ "pgmath", { @@ -19,11 +21,11 @@ "host": true }, { - "name": "vcpkg-tool-flang", + "name": "vcpkg-tool-flang-classic", "host": true }, { - "name": "vcpkg-tool-flang-llvm", + "name": "vcpkg-tool-flang-classic-llvm", "host": true }, { diff --git a/ports/vcpkg-fortran-flang/vcpkg.json b/ports/vcpkg-fortran-flang/vcpkg.json index 0941da6b2ce121..4ed0ae1d1c3042 100644 --- a/ports/vcpkg-fortran-flang/vcpkg.json +++ b/ports/vcpkg-fortran-flang/vcpkg.json @@ -1,17 +1,17 @@ { - "name": "vcpkg-fortran-flang", + "name": "vcpkg-fortran-flang-classic", "version-date": "2022-02-22", "description": "Metaport to use the flang fortran compiler", "license": "MIT", "supports": "windows", "dependencies": [ - "flang-fortran-runtime", + "flang-classic-fortran-runtime", { "name": "vcpkg-cmake", "host": true }, { - "name": "vcpkg-tool-flang", + "name": "vcpkg-tool-flang-classic", "host": true, "platform": "windows" } diff --git a/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake index c6d1b0bfc9944c..07a880d7882c5d 100644 --- a/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake +++ b/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake @@ -42,7 +42,7 @@ function(x_vcpkg_find_fortran) elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64") set(ARCH ARM) endif() - vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/${ARCH}") + vcpkg_add_to_path("${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/${ARCH}") find_library(PGMATH NAMES libpgmath pgmath PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) cmake_path(GET PGMATH FILENAME pgmathlibname) @@ -79,7 +79,7 @@ function(x_vcpkg_find_fortran) "-DCMAKE_POLICY_DEFAULT_CMP0067=NEW" "-DCMAKE_POLICY_DEFAULT_CMP0083=NEW" "-DCMAKE_C_COMPILER=${VCPKG_DETECTED_CMAKE_C_COMPILER}" # Need to pass C compiler if only Fortran is enabled. - "-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + "-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/flang.exe" "-DCMAKE_EXE_LINKER_FLAGS_DEBUG_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib" "-DCMAKE_EXE_LINKER_FLAGS_RELEASE_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib" "-DCMAKE_SHARED_LINKER_FLAGS_DEBUG_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib" diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake index d03dfe965760c0..4adb2fbf3fee5a 100644 --- a/ports/vcpkg-fortran/portfile.cmake +++ b/ports/vcpkg-fortran/portfile.cmake @@ -10,9 +10,10 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) # message(FATAL_ERROR "${PORT} is a host-only port; please mark it as a host port in your dependencies.") #endif() - #file(COPY - # DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") - + if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) + file(COPY "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") + endif() configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) endif() \ No newline at end of file diff --git a/ports/vcpkg-fortran/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in index 774eb7adaf837e..c1c379a92f0557 100644 --- a/ports/vcpkg-fortran/vcpkg-port-config.cmake.in +++ b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in @@ -1 +1,5 @@ -include("${CMAKE_CURRENT_LIST_DIR}/../@PORT_IMPL@/@FUNCTION_NAME@.cmake") +if(@VCPKG_TARGET_IS_WINDOWS@ AND NOT @VCPKG_TARGET_IS_MINGW@) + include("${CMAKE_CURRENT_LIST_DIR}/../@PORT_IMPL@/@FUNCTION_NAME@.cmake") +else() + include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") +endif() \ No newline at end of file diff --git a/ports/vcpkg-fortran/vcpkg.json b/ports/vcpkg-fortran/vcpkg.json index dc330390c18b92..20407dc86066ab 100644 --- a/ports/vcpkg-fortran/vcpkg.json +++ b/ports/vcpkg-fortran/vcpkg.json @@ -5,12 +5,16 @@ "license": "MIT", "dependencies": [ { - "name": "vcpkg-fortran-flang", + "name": "vcpkg-fortran-flang-classic", "platform": "(windows & !mingw) & (x64 | arm64)" }, { "name": "vcpkg-fortran-ifort", "platform": "(windows & !mingw) & x86" + }, + { + "name": "vcpkg-ifort-libs", + "platform": "(windows & !mingw) & x86" } ] } diff --git a/ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake new file mode 100644 index 00000000000000..7e605816735872 --- /dev/null +++ b/ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake @@ -0,0 +1,34 @@ +#[===[.md: +# x_vcpkg_find_fortran + +Checks if a Fortran compiler can be found. +Windows only: If not it will try to use one internal to vcpkg + +## Usage +```cmake +x_vcpkg_find_fortran(OUT_OPTIONS + OUT_OPTIONS_RELEASE + OUT_OPTIONS_DEBUG + ) +``` + +## Example +```cmake +x_vcpkg_find_fortran(OUT_OPTIONS fortran_args + OUT_OPTIONS_RELEASE fortran_args_rel + OUT_OPTIONS_DEBUG fortran_args_dbg + ) +# ... +vcpkg_configure_cmake(... + OPTIONS + ${fortran_args} + OPTIONS_RELEASE + ${fortran_args_rel} + OPTIONS_DEBUG + ${fortran_args_dbg} +) +``` +#]===] +function(x_vcpkg_find_fortran) + cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "OUT_OPTIONS;OUT_OPTIONS_RELEASE;OUT_OPTIONS_DEBUG" "") +endfunction() diff --git a/ports/vcpkg-ifort/portfile.cmake b/ports/vcpkg-ifort-libs/portfile.cmake similarity index 87% rename from ports/vcpkg-ifort/portfile.cmake rename to ports/vcpkg-ifort-libs/portfile.cmake index 603f9f605140d9..345125b343d916 100644 --- a/ports/vcpkg-ifort/portfile.cmake +++ b/ports/vcpkg-ifort-libs/portfile.cmake @@ -1,9 +1,11 @@ -x_vcpkg_find_fortran(FORTRAN_CMAKE) -message(STATUS "VCPKG_USE_INTERNAL_Fortran:${VCPKG_USE_INTERNAL_Fortran}") +x_vcpkg_find_fortran(OUT_OPTIONS Fortran_opts + OUT_OPTIONS_RELEASE Fortran_opts_rel + OUT_OPTIONS_DEBUG Fortran_opts_dbg) +message(STATUS "Z_VCPKG_IS_INTERNAL_Fortran_INTEL:${Z_VCPKG_IS_INTERNAL_Fortran_INTEL}") if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL) set(BASE_PATH "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-ifort/Intel/Compiler/12.0/compiler/2022.0.3") set(IFORT_COMPILER_ROOT "${BASE_PATH}/windows") - ) + if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") set(subpath "ia32_win") elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") diff --git a/ports/vcpkg-ifort/vcpkg.json b/ports/vcpkg-ifort-libs/vcpkg.json similarity index 69% rename from ports/vcpkg-ifort/vcpkg.json rename to ports/vcpkg-ifort-libs/vcpkg.json index 94c1e100739c99..d5c694aff75972 100644 --- a/ports/vcpkg-ifort/vcpkg.json +++ b/ports/vcpkg-ifort-libs/vcpkg.json @@ -1,10 +1,13 @@ { - "name": "vcpkg-ifort", + "name": "vcpkg-ifort-libs", "version-date": "2022-02-22", "description": "Metaport to install ifort dll dependencies from Intel oneAPI", "license": "MIT", "supports": "(windows & !arm) & !uwp", "dependencies": [ - "vcpkg-fortran" + { + "name": "vcpkg-fortran-ifort", + "host": true + } ] } diff --git a/ports/vcpkg-tool-flang-llvm/0004-fix-dr-1734.patch b/ports/vcpkg-tool-flang-classic-llvm/0004-fix-dr-1734.patch similarity index 100% rename from ports/vcpkg-tool-flang-llvm/0004-fix-dr-1734.patch rename to ports/vcpkg-tool-flang-classic-llvm/0004-fix-dr-1734.patch diff --git a/ports/vcpkg-tool-flang-llvm/0010-fix-libffi.patch b/ports/vcpkg-tool-flang-classic-llvm/0010-fix-libffi.patch similarity index 100% rename from ports/vcpkg-tool-flang-llvm/0010-fix-libffi.patch rename to ports/vcpkg-tool-flang-classic-llvm/0010-fix-libffi.patch diff --git a/ports/vcpkg-tool-flang-llvm/0011-fix-libxml2.patch b/ports/vcpkg-tool-flang-classic-llvm/0011-fix-libxml2.patch similarity index 100% rename from ports/vcpkg-tool-flang-llvm/0011-fix-libxml2.patch rename to ports/vcpkg-tool-flang-classic-llvm/0011-fix-libxml2.patch diff --git a/ports/vcpkg-tool-flang-llvm/65.diff b/ports/vcpkg-tool-flang-classic-llvm/65.diff similarity index 100% rename from ports/vcpkg-tool-flang-llvm/65.diff rename to ports/vcpkg-tool-flang-classic-llvm/65.diff diff --git a/ports/vcpkg-tool-flang-llvm/portfile.cmake b/ports/vcpkg-tool-flang-classic-llvm/portfile.cmake similarity index 93% rename from ports/vcpkg-tool-flang-llvm/portfile.cmake rename to ports/vcpkg-tool-flang-classic-llvm/portfile.cmake index e0fc1508b59a9e..512f9024e745de 100644 --- a/ports/vcpkg-tool-flang-llvm/portfile.cmake +++ b/ports/vcpkg-tool-flang-classic-llvm/portfile.cmake @@ -37,7 +37,7 @@ vcpkg_add_to_path("${PERL_DIR}") set(VCPKG_BUILD_TYPE release) # Only need release tools set(CURRENT_PACKAGES_DIR_BAK "${CURRENT_PACKAGES_DIR}") -set(CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang") +set(CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic") vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}/llvm" OPTIONS @@ -195,9 +195,9 @@ llvm_cmake_package_config_fixup("llvm") set(CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR_BAK}") # Don't let LLVM take control over vcpkg here! -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/lib/cmake/llvm/ChooseMSVCCRT.cmake" "choose_msvc_crt(MSVC_CRT)" "#choose_msvc_crt(MSVC_CRT)") +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/lib/cmake/llvm/ChooseMSVCCRT.cmake" "choose_msvc_crt(MSVC_CRT)" "#choose_msvc_crt(MSVC_CRT)") -vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin") +vcpkg_copy_tool_dependencies("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/bin") # LLVM still generates a few DLLs in the static build: # * libclang.dll @@ -207,13 +207,13 @@ set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) set(VCPKG_POLICY_DLLS_IN_STATIC_LIBRARY enabled) set(VCPKG_POLICY_MISMATCHED_NUMBER_OF_BINARIES enabled) -configure_file("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin/clang.exe" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin/flang.exe" COPYONLY) +configure_file("${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/bin/clang.exe" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/bin/flang.exe" COPYONLY) -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/CMakeFiles" - "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Config" - "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/CMakeFiles" - "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/CodeGen/CMakeFiles" - "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/Dialect/CMakeFiles" - "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/include/flang/Optimizer/Transforms/CMakeFiles") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/include/flang/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/include/flang/Config" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/include/flang/Optimizer/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/include/flang/Optimizer/CodeGen/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/include/flang/Optimizer/Dialect/CMakeFiles" + "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/include/flang/Optimizer/Transforms/CMakeFiles") file(INSTALL "${SOURCE_PATH}/llvm/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/vcpkg-tool-flang-llvm/vcpkg.json b/ports/vcpkg-tool-flang-classic-llvm/vcpkg.json similarity index 89% rename from ports/vcpkg-tool-flang-llvm/vcpkg.json rename to ports/vcpkg-tool-flang-classic-llvm/vcpkg.json index fab8eb9c7b8b72..47baab879109ec 100644 --- a/ports/vcpkg-tool-flang-llvm/vcpkg.json +++ b/ports/vcpkg-tool-flang-classic-llvm/vcpkg.json @@ -1,5 +1,5 @@ { - "name": "vcpkg-tool-flang-llvm", + "name": "vcpkg-tool-flang-classic-llvm", "version-date": "2022-04-23", "description": "The LLVM Compiler Infrastructure.", "homepage": "https://llvm.org", diff --git a/ports/vcpkg-tool-flang/1177.diff b/ports/vcpkg-tool-flang-classic/1177.diff similarity index 100% rename from ports/vcpkg-tool-flang/1177.diff rename to ports/vcpkg-tool-flang-classic/1177.diff diff --git a/ports/vcpkg-tool-flang/awk.patch b/ports/vcpkg-tool-flang-classic/awk.patch similarity index 100% rename from ports/vcpkg-tool-flang/awk.patch rename to ports/vcpkg-tool-flang-classic/awk.patch diff --git a/ports/vcpkg-tool-flang/cross.patch b/ports/vcpkg-tool-flang-classic/cross.patch similarity index 100% rename from ports/vcpkg-tool-flang/cross.patch rename to ports/vcpkg-tool-flang-classic/cross.patch diff --git a/ports/vcpkg-tool-flang/move_flang2.patch b/ports/vcpkg-tool-flang-classic/move_flang2.patch similarity index 100% rename from ports/vcpkg-tool-flang/move_flang2.patch rename to ports/vcpkg-tool-flang-classic/move_flang2.patch diff --git a/ports/vcpkg-tool-flang/portfile.cmake b/ports/vcpkg-tool-flang-classic/portfile.cmake similarity index 92% rename from ports/vcpkg-tool-flang/portfile.cmake rename to ports/vcpkg-tool-flang-classic/portfile.cmake index 7c6181ced59746..75fe7e3ec9d306 100644 --- a/ports/vcpkg-tool-flang/portfile.cmake +++ b/ports/vcpkg-tool-flang-classic/portfile.cmake @@ -111,9 +111,9 @@ vcpkg_cmake_configure( "-DLLVM_INCLUDE_TESTS=OFF" "-DFLANG_BUILD_TOOLS=ON" "-DVCPKG_HOST_TRIPLET=${_HOST_TRIPLET}" - "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/llvm-config.exe" - "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/lib/cmake/llvm" # Flang does not link against anything in llvm - #"-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/llvm-config.exe" + "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/lib/cmake/llvm" # Flang does not link against anything in llvm + #"-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/flang.exe" #"-DCMAKE_Fortran_COMPILER_ID=Flang" ${OPTIONS} ) @@ -129,17 +129,17 @@ vcpkg_cmake_configure( "-DFLANG_LLVM_EXTENSIONS=ON" "-DFLANG_BUILD_TOOLS=ON" "-DVCPKG_HOST_TRIPLET=${_HOST_TRIPLET}" - "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/llvm-config.exe" - "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/lib/cmake/llvm" # Flang does not link against anything in llvm - #"-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang/bin/flang.exe" + "-DLLVM_CONFIG=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/llvm-config.exe" + "-DLLVM_CMAKE_PATH=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/lib/cmake/llvm" # Flang does not link against anything in llvm + #"-DCMAKE_Fortran_COMPILER=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/llvm-flang-classic/bin/flang.exe" #"-DCMAKE_Fortran_COMPILER_ID=Flang" ${OPTIONS} ) vcpkg_cmake_install(ADD_BIN_TO_PATH) -file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/") -file(RENAME "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/bin" ) -file(RENAME "${CURRENT_PACKAGES_DIR}/lib" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang/lib" ) +file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/") +file(RENAME "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/bin" ) +file(RENAME "${CURRENT_PACKAGES_DIR}/lib" "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic/lib" ) file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/ports/vcpkg-tool-flang/sep_runtime_from_compiler.patch b/ports/vcpkg-tool-flang-classic/sep_runtime_from_compiler.patch similarity index 100% rename from ports/vcpkg-tool-flang/sep_runtime_from_compiler.patch rename to ports/vcpkg-tool-flang-classic/sep_runtime_from_compiler.patch diff --git a/ports/vcpkg-tool-flang/vcpkg.json b/ports/vcpkg-tool-flang-classic/vcpkg.json similarity index 87% rename from ports/vcpkg-tool-flang/vcpkg.json rename to ports/vcpkg-tool-flang-classic/vcpkg.json index fd63195a0211bc..c7b0b9159d59f9 100644 --- a/ports/vcpkg-tool-flang/vcpkg.json +++ b/ports/vcpkg-tool-flang-classic/vcpkg.json @@ -1,5 +1,5 @@ { - "name": "vcpkg-tool-flang", + "name": "vcpkg-tool-flang-classic", "version-date": "2022-04-23", "description": "The LLVM Compiler Infrastructure.", "homepage": "https://llvm.org", @@ -21,7 +21,7 @@ "host": true }, { - "name": "vcpkg-tool-flang-llvm", + "name": "vcpkg-tool-flang-classic-llvm", "host": true }, { From 62bec0a4ae4894345e2aa52c552e175c565d2297 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 10 May 2022 12:16:01 +0200 Subject: [PATCH 078/141] format manifest --- ports/flang-classic-fortran-runtime/vcpkg.json | 2 +- ports/vcpkg-ifort-libs/vcpkg.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ports/flang-classic-fortran-runtime/vcpkg.json b/ports/flang-classic-fortran-runtime/vcpkg.json index b32789f6cc9981..0a1e40584f6b1c 100644 --- a/ports/flang-classic-fortran-runtime/vcpkg.json +++ b/ports/flang-classic-fortran-runtime/vcpkg.json @@ -1,11 +1,11 @@ { + "$comment": "UWP support requires libomp which isn't available", "name": "flang-classic-fortran-runtime", "version-date": "2022-04-23", "description": "The LLVM Compiler Infrastructure.", "homepage": "https://llvm.org", "license": "Apache-2.0", "supports": "!uwp", - "$comment": "UWP support requires libomp which isn't available", "dependencies": [ "pgmath", { diff --git a/ports/vcpkg-ifort-libs/vcpkg.json b/ports/vcpkg-ifort-libs/vcpkg.json index d5c694aff75972..87c13b4e6d73a0 100644 --- a/ports/vcpkg-ifort-libs/vcpkg.json +++ b/ports/vcpkg-ifort-libs/vcpkg.json @@ -5,9 +5,9 @@ "license": "MIT", "supports": "(windows & !arm) & !uwp", "dependencies": [ - { - "name": "vcpkg-fortran-ifort", - "host": true - } + { + "name": "vcpkg-fortran-ifort", + "host": true + } ] } From f432588c13c8af94fca8d98af24560b5da0561ce Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 10 May 2022 12:17:36 +0200 Subject: [PATCH 079/141] more renaming --- .../portfile.cmake | 0 .../vcpkg-port-config.cmake.in | 0 .../vcpkg.json | 0 .../x_vcpkg_find_fortran.cmake | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename ports/{vcpkg-fortran-flang => vcpkg-fortran-flang-classic}/portfile.cmake (100%) rename ports/{vcpkg-fortran-flang => vcpkg-fortran-flang-classic}/vcpkg-port-config.cmake.in (100%) rename ports/{vcpkg-fortran-flang => vcpkg-fortran-flang-classic}/vcpkg.json (100%) rename ports/{vcpkg-fortran-flang => vcpkg-fortran-flang-classic}/x_vcpkg_find_fortran.cmake (100%) diff --git a/ports/vcpkg-fortran-flang/portfile.cmake b/ports/vcpkg-fortran-flang-classic/portfile.cmake similarity index 100% rename from ports/vcpkg-fortran-flang/portfile.cmake rename to ports/vcpkg-fortran-flang-classic/portfile.cmake diff --git a/ports/vcpkg-fortran-flang/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran-flang-classic/vcpkg-port-config.cmake.in similarity index 100% rename from ports/vcpkg-fortran-flang/vcpkg-port-config.cmake.in rename to ports/vcpkg-fortran-flang-classic/vcpkg-port-config.cmake.in diff --git a/ports/vcpkg-fortran-flang/vcpkg.json b/ports/vcpkg-fortran-flang-classic/vcpkg.json similarity index 100% rename from ports/vcpkg-fortran-flang/vcpkg.json rename to ports/vcpkg-fortran-flang-classic/vcpkg.json diff --git a/ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake similarity index 100% rename from ports/vcpkg-fortran-flang/x_vcpkg_find_fortran.cmake rename to ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake From e44b0997916ce100cc86beb045bcc9084fc04abf Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Tue, 10 May 2022 12:19:14 +0200 Subject: [PATCH 080/141] version cleanup --- versions/b-/blas.json | 2 +- versions/baseline.json | 12 ++++++++---- ...ntime.json => flang-classic-fortran-runtime.json} | 2 +- ...n-flang.json => vcpkg-fortran-flang-classic.json} | 2 +- versions/v-/vcpkg-fortran.json | 2 +- versions/v-/vcpkg-ifort-libs.json | 9 +++++++++ ...-llvm.json => vcpkg-tool-flang-classic-llvm.json} | 2 +- ...tool-flang.json => vcpkg-tool-flang-classic.json} | 2 +- 8 files changed, 23 insertions(+), 10 deletions(-) rename versions/f-/{flang-fortran-runtime.json => flang-classic-fortran-runtime.json} (60%) rename versions/v-/{vcpkg-fortran-flang.json => vcpkg-fortran-flang-classic.json} (60%) create mode 100644 versions/v-/vcpkg-ifort-libs.json rename versions/v-/{vcpkg-tool-flang-llvm.json => vcpkg-tool-flang-classic-llvm.json} (60%) rename versions/v-/{vcpkg-tool-flang.json => vcpkg-tool-flang-classic.json} (60%) diff --git a/versions/b-/blas.json b/versions/b-/blas.json index 52fe96f34d1876..c2532e1a07d1e4 100644 --- a/versions/b-/blas.json +++ b/versions/b-/blas.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "01a62ba993a98a0d40cfe1ab63a0dead03fa5a7c", + "git-tree": "11f2867919829e66fe89ea1277c273074c95d4d6", "version-string": "default", "port-version": 0 }, diff --git a/versions/baseline.json b/versions/baseline.json index 789a47fbf5d124..3ea595482fdd9d 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2224,7 +2224,7 @@ "baseline": "2022.03.21.00", "port-version": 1 }, - "flang-fortran-runtime": { + "flang-classic-fortran-runtime": { "baseline": "2022-04-23", "port-version": 0 }, @@ -7340,7 +7340,7 @@ "baseline": "2022-02-22", "port-version": 0 }, - "vcpkg-fortran-flang": { + "vcpkg-fortran-flang-classic": { "baseline": "2022-02-22", "port-version": 0 }, @@ -7364,6 +7364,10 @@ "baseline": "2022-02-22", "port-version": 0 }, + "vcpkg-ifort-libs": { + "baseline": "2022-02-22", + "port-version": 0 + }, "vcpkg-pkgconfig-get-modules": { "baseline": "2022-02-10", "port-version": 0 @@ -7376,11 +7380,11 @@ "baseline": "21.07", "port-version": 0 }, - "vcpkg-tool-flang": { + "vcpkg-tool-flang-classic": { "baseline": "2022-04-23", "port-version": 0 }, - "vcpkg-tool-flang-llvm": { + "vcpkg-tool-flang-classic-llvm": { "baseline": "2022-04-23", "port-version": 0 }, diff --git a/versions/f-/flang-fortran-runtime.json b/versions/f-/flang-classic-fortran-runtime.json similarity index 60% rename from versions/f-/flang-fortran-runtime.json rename to versions/f-/flang-classic-fortran-runtime.json index 903ad5ccea4bdf..5f1210a9ebf472 100644 --- a/versions/f-/flang-fortran-runtime.json +++ b/versions/f-/flang-classic-fortran-runtime.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "46764fb0e7d0ee5c1003b183e59878a37ed0cb6a", + "git-tree": "7720d84e9002eba4a41b5ed8b639aeaac1567fdd", "version-date": "2022-04-23", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran-flang.json b/versions/v-/vcpkg-fortran-flang-classic.json similarity index 60% rename from versions/v-/vcpkg-fortran-flang.json rename to versions/v-/vcpkg-fortran-flang-classic.json index 21a60a05489168..8a98da49ef50d7 100644 --- a/versions/v-/vcpkg-fortran-flang.json +++ b/versions/v-/vcpkg-fortran-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "b51aa24510b25d4a35d0539815e5844bcd489b62", + "git-tree": "82e97309d59a5b340a1f1e98ab4aea1ff740ff83", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index 1ff38a0213703e..955030489b6063 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "8a80c48548272c5983ca60c556a80095371affe1", + "git-tree": "39b19da62ac74e09c7d587896b4d584e933d13d0", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-ifort-libs.json b/versions/v-/vcpkg-ifort-libs.json new file mode 100644 index 00000000000000..1c4c4ce0dbf278 --- /dev/null +++ b/versions/v-/vcpkg-ifort-libs.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "0c5e9f73711dc4fdbde1163c047a2c2b50e7aa94", + "version-date": "2022-02-22", + "port-version": 0 + } + ] +} diff --git a/versions/v-/vcpkg-tool-flang-llvm.json b/versions/v-/vcpkg-tool-flang-classic-llvm.json similarity index 60% rename from versions/v-/vcpkg-tool-flang-llvm.json rename to versions/v-/vcpkg-tool-flang-classic-llvm.json index c54294954e946b..de6f6b41c1b5c6 100644 --- a/versions/v-/vcpkg-tool-flang-llvm.json +++ b/versions/v-/vcpkg-tool-flang-classic-llvm.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "aa90240f4ecf4b2b94f86e05d9a4126484ab25ce", + "git-tree": "5e8c5aa7a90c394dad72634979ec25e37b3c326f", "version-date": "2022-04-23", "port-version": 0 } diff --git a/versions/v-/vcpkg-tool-flang.json b/versions/v-/vcpkg-tool-flang-classic.json similarity index 60% rename from versions/v-/vcpkg-tool-flang.json rename to versions/v-/vcpkg-tool-flang-classic.json index e82da16b75d962..a136224a82f746 100644 --- a/versions/v-/vcpkg-tool-flang.json +++ b/versions/v-/vcpkg-tool-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "8e522dd71dc8aac9a9da0a84b03b5b94b517f69e", + "git-tree": "3a12078cedf95d2430333d01656aa919d56cf34a", "version-date": "2022-04-23", "port-version": 0 } From 1a73abfe6ef4097a683e72b18cb9ad583776498d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 09:23:03 +0200 Subject: [PATCH 081/141] fix paths and includes after rename --- ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in | 1 + ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake | 3 --- ports/vcpkg-fortran/portfile.cmake | 2 +- ports/vcpkg-fortran/vcpkg-port-config.cmake.in | 5 +++-- 4 files changed, 5 insertions(+), 6 deletions(-) diff --git a/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in index e6109903cec223..a62251e1d6e896 100644 --- a/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in +++ b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in @@ -1,2 +1,3 @@ +include("${CMAKE_CURRENT_LIST_DIR}/../vcpkg-cmake/vcpkg-port-config.cmake") include("${CMAKE_CURRENT_LIST_DIR}/z_vcpkg_load_environment_from_batch.cmake") include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") diff --git a/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake index 05245709b014e3..c1e8ffa2beb828 100644 --- a/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake +++ b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake @@ -21,9 +21,6 @@ vcpkg_configure_cmake(... ``` #]===] -include("${CMAKE_CURRENT_LIST_DIR}/z_vcpkg_load_environment_from_batch.cmake") -include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg_cmake_get_vars.cmake") - function(x_vcpkg_find_fortran) cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "OUT_OPTIONS;OUT_OPTIONS_RELEASE;OUT_OPTIONS_DEBUG" "") diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake index 4adb2fbf3fee5a..4933a786ec00ab 100644 --- a/ports/vcpkg-fortran/portfile.cmake +++ b/ports/vcpkg-fortran/portfile.cmake @@ -2,7 +2,7 @@ set(VCPKG_POLICY_EMPTY_PACKAGE enabled) if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) set(VCPKG_POLICY_CMAKE_SCRIPT_HELPER enabled) set(FUNCTION_NAME x_vcpkg_find_fortran) - set(PORT_IMPL vcpkg-fortran-flang) + set(PORT_IMPL vcpkg-fortran-flang-classic) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") set(PORT_IMPL vcpkg-fortran-ifort) endif() diff --git a/ports/vcpkg-fortran/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in index c1c379a92f0557..d34b978b751371 100644 --- a/ports/vcpkg-fortran/vcpkg-port-config.cmake.in +++ b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in @@ -1,5 +1,6 @@ -if(@VCPKG_TARGET_IS_WINDOWS@ AND NOT @VCPKG_TARGET_IS_MINGW@) - include("${CMAKE_CURRENT_LIST_DIR}/../@PORT_IMPL@/@FUNCTION_NAME@.cmake") +include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg-port-config.cmake") +if("@VCPKG_TARGET_IS_WINDOWS@" AND NOT "@VCPKG_TARGET_IS_MINGW@") + include("${_VCPKG_INSTALLED_DIR}/${TARGET_TRIPLET}/share/@PORT_IMPL@/@FUNCTION_NAME@.cmake") else() include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") endif() \ No newline at end of file From 648b22dce3a82a1c65253199ff23bdc49f826b97 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 10:04:13 +0200 Subject: [PATCH 082/141] fixes --- ports/vcpkg-ifort-libs/portfile.cmake | 4 ++-- ports/vcpkg-ifort-libs/vcpkg.json | 2 +- ports/vcpkg-tool-flang-classic/vcpkg.json | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/ports/vcpkg-ifort-libs/portfile.cmake b/ports/vcpkg-ifort-libs/portfile.cmake index 345125b343d916..5cca077f7863fa 100644 --- a/ports/vcpkg-ifort-libs/portfile.cmake +++ b/ports/vcpkg-ifort-libs/portfile.cmake @@ -1,7 +1,7 @@ x_vcpkg_find_fortran(OUT_OPTIONS Fortran_opts OUT_OPTIONS_RELEASE Fortran_opts_rel OUT_OPTIONS_DEBUG Fortran_opts_dbg) -message(STATUS "Z_VCPKG_IS_INTERNAL_Fortran_INTEL:${Z_VCPKG_IS_INTERNAL_Fortran_INTEL}") + if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL) set(BASE_PATH "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-ifort/Intel/Compiler/12.0/compiler/2022.0.3") set(IFORT_COMPILER_ROOT "${BASE_PATH}/windows") @@ -44,7 +44,7 @@ if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL) file(COPY ${IFORT_DLLS} ${IFORT_DLLS_RELEASE} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") file(COPY ${IFORT_DLLS} ${IFORT_DLLS_DEBUG} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") endif() - file(COPY "${BASE_PATH}/licensing/fortran/third-party-programs.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) + file(INSTALL "${BASE_PATH}/licensing/fortran/third-party-programs.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) # libs are at share/ifort and reflect how they are installed by the compiler instead of splitting them. set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) else() diff --git a/ports/vcpkg-ifort-libs/vcpkg.json b/ports/vcpkg-ifort-libs/vcpkg.json index 87c13b4e6d73a0..6638b8330ab515 100644 --- a/ports/vcpkg-ifort-libs/vcpkg.json +++ b/ports/vcpkg-ifort-libs/vcpkg.json @@ -3,7 +3,7 @@ "version-date": "2022-02-22", "description": "Metaport to install ifort dll dependencies from Intel oneAPI", "license": "MIT", - "supports": "(windows & !arm) & !uwp", + "supports": "windows & !arm & !uwp", "dependencies": [ { "name": "vcpkg-fortran-ifort", diff --git a/ports/vcpkg-tool-flang-classic/vcpkg.json b/ports/vcpkg-tool-flang-classic/vcpkg.json index c7b0b9159d59f9..b80d4e337e8c1c 100644 --- a/ports/vcpkg-tool-flang-classic/vcpkg.json +++ b/ports/vcpkg-tool-flang-classic/vcpkg.json @@ -7,7 +7,6 @@ "supports": "native", "dependencies": [ "libxml2", - "pgmath", { "name": "pkgconf", "host": true From 8c7d6eb2550f70a414a86bd407d1ad0e83aa8c3b Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 10:04:45 +0200 Subject: [PATCH 083/141] version stuff --- versions/v-/vcpkg-fortran-ifort.json | 2 +- versions/v-/vcpkg-fortran.json | 2 +- versions/v-/vcpkg-ifort-libs.json | 2 +- versions/v-/vcpkg-tool-flang-classic.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/versions/v-/vcpkg-fortran-ifort.json b/versions/v-/vcpkg-fortran-ifort.json index 851513711441e6..58406ceb5d0f60 100644 --- a/versions/v-/vcpkg-fortran-ifort.json +++ b/versions/v-/vcpkg-fortran-ifort.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "9844e224563602cfa536619ae81af0e2692f49cb", + "git-tree": "87055334d05b49d4e199dedf3c027c16615f8556", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index 955030489b6063..b5791819ad1521 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "39b19da62ac74e09c7d587896b4d584e933d13d0", + "git-tree": "c7b719ed344a44361af6c47502a7742ebd3e4751", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-ifort-libs.json b/versions/v-/vcpkg-ifort-libs.json index 1c4c4ce0dbf278..18fc14fb24b2c4 100644 --- a/versions/v-/vcpkg-ifort-libs.json +++ b/versions/v-/vcpkg-ifort-libs.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "0c5e9f73711dc4fdbde1163c047a2c2b50e7aa94", + "git-tree": "b6781fdf598ad8ae36f318cd9a31a40fff230df1", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-tool-flang-classic.json b/versions/v-/vcpkg-tool-flang-classic.json index a136224a82f746..2e44ff101daf35 100644 --- a/versions/v-/vcpkg-tool-flang-classic.json +++ b/versions/v-/vcpkg-tool-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "3a12078cedf95d2430333d01656aa919d56cf34a", + "git-tree": "0e69d92f382cf4d79a8026d33c4f3f2cebf64464", "version-date": "2022-04-23", "port-version": 0 } From fb3c43bb0f47845259c369dde1a99a4cccb715e9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 20:17:28 +0200 Subject: [PATCH 084/141] need to install the helper on all platforms. --- ports/vcpkg-fortran/portfile.cmake | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake index 4933a786ec00ab..eebdda648ed059 100644 --- a/ports/vcpkg-fortran/portfile.cmake +++ b/ports/vcpkg-fortran/portfile.cmake @@ -1,19 +1,12 @@ -set(VCPKG_POLICY_EMPTY_PACKAGE enabled) -if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - set(VCPKG_POLICY_CMAKE_SCRIPT_HELPER enabled) - set(FUNCTION_NAME x_vcpkg_find_fortran) +set(VCPKG_POLICY_CMAKE_SCRIPT_HELPER enabled) +set(FUNCTION_NAME x_vcpkg_find_fortran) +if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) set(PORT_IMPL vcpkg-fortran-flang-classic) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") set(PORT_IMPL vcpkg-fortran-ifort) endif() - #if(VCPKG_CROSSCOMPILING) - # message(FATAL_ERROR "${PORT} is a host-only port; please mark it as a host port in your dependencies.") - #endif() - - if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) - file(COPY "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" - DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") - endif() - configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) - configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) -endif() \ No newline at end of file +endif() +file(COPY "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" + DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) From 11b0225111b0d27e5aeeb9607fabac01cb8c7ddb Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 20:17:49 +0200 Subject: [PATCH 085/141] version stuff --- versions/v-/vcpkg-fortran.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index b5791819ad1521..54224f115ed3a4 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "c7b719ed344a44361af6c47502a7742ebd3e4751", + "git-tree": "04f47d0e408334dcba26b740cfab9b8573e0cb9f", "version-date": "2022-02-22", "port-version": 0 } From 2088721d694a9a3a9e5302bbfc1d031ada4ef17f Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 21:20:20 +0200 Subject: [PATCH 086/141] remove platform expression --- ports/lapack-reference/vcpkg.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index 67b3fc2c75d246..8b585ade27cc80 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -28,8 +28,7 @@ "default-features": false, "features": [ "noblas" - ], - "platform": "!windows | !static" + ] } ] }, From 9268a5667b1a7496af5705bfde5a21c02bbea66c Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 21:21:31 +0200 Subject: [PATCH 087/141] version stuff --- versions/l-/lapack-reference.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index ae4a38d40773dc..3f74fa53c7f73c 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "19ce14744b4e1e2eb54607906cfaf1207a563405", + "git-tree": "f1c967fabfd66f6691d644c0190fd4249572d402", "version": "3.10.0", "port-version": 2 }, From 76a3f180c329e83a6d9beab22ddc30b62c2c1da2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:30:08 +0200 Subject: [PATCH 088/141] fix wrong dll name --- ports/vcpkg-ifort-libs/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vcpkg-ifort-libs/portfile.cmake b/ports/vcpkg-ifort-libs/portfile.cmake index 5cca077f7863fa..a1aa64d9e6d8e8 100644 --- a/ports/vcpkg-ifort-libs/portfile.cmake +++ b/ports/vcpkg-ifort-libs/portfile.cmake @@ -19,7 +19,7 @@ if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL) set(IFORT_BASEPATH_DLLS "${IFORT_COMPILER_ROOT}/redist/${subpath}/compiler/") set(IFORT_DLLS cilkrts20.dll - libdlg100.dll + ifdlg100.dll libchkp.dll libicaf.dll libifportmd.dll From 53a15381a7d7c1c62b3326b9248245ba060c3c70 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:30:28 +0200 Subject: [PATCH 089/141] version stuff --- versions/v-/vcpkg-ifort-libs.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-ifort-libs.json b/versions/v-/vcpkg-ifort-libs.json index 18fc14fb24b2c4..b2471f45826cea 100644 --- a/versions/v-/vcpkg-ifort-libs.json +++ b/versions/v-/vcpkg-ifort-libs.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "b6781fdf598ad8ae36f318cd9a31a40fff230df1", + "git-tree": "6c6ebb25e4a0f0bdb955fab3147fbf703c2d4da5", "version-date": "2022-02-22", "port-version": 0 } From a59ca822e39a41a2268da7071507adac3457b2f6 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:40:09 +0200 Subject: [PATCH 090/141] fix stuff.... --- ports/vcpkg-fortran/portfile.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake index eebdda648ed059..06e786999acf43 100644 --- a/ports/vcpkg-fortran/portfile.cmake +++ b/ports/vcpkg-fortran/portfile.cmake @@ -1,4 +1,4 @@ -set(VCPKG_POLICY_CMAKE_SCRIPT_HELPER enabled) +set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) set(FUNCTION_NAME x_vcpkg_find_fortran) if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) set(PORT_IMPL vcpkg-fortran-flang-classic) @@ -8,5 +8,5 @@ if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) endif() file(COPY "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") -configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/coypright" COPYONLY) +configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) From 0dc17ccc3981563dd7f4ced0bb6cbe1823909d26 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:40:35 +0200 Subject: [PATCH 091/141] version as always --- versions/v-/vcpkg-fortran.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index 54224f115ed3a4..e5581d1a5e5b6b 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "04f47d0e408334dcba26b740cfab9b8573e0cb9f", + "git-tree": "a2b759eb48b04dbee21661a8adffc85dfd48e4f2", "version-date": "2022-02-22", "port-version": 0 } From 8ba15bfc920eb4b4b874f5628718ea6b28fdffa5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:48:47 +0200 Subject: [PATCH 092/141] fix include path --- ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in index a62251e1d6e896..ea9c307c053195 100644 --- a/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in +++ b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in @@ -1,3 +1,3 @@ -include("${CMAKE_CURRENT_LIST_DIR}/../vcpkg-cmake/vcpkg-port-config.cmake") +include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg-port-config.cmake") include("${CMAKE_CURRENT_LIST_DIR}/z_vcpkg_load_environment_from_batch.cmake") include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") From 4a16e86faa82e4499f7ed004f559f76464e0a8c2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:49:04 +0200 Subject: [PATCH 093/141] version stuff --- versions/v-/vcpkg-fortran-ifort.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-fortran-ifort.json b/versions/v-/vcpkg-fortran-ifort.json index 58406ceb5d0f60..f94d73735ec1cd 100644 --- a/versions/v-/vcpkg-fortran-ifort.json +++ b/versions/v-/vcpkg-fortran-ifort.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "87055334d05b49d4e199dedf3c027c16615f8556", + "git-tree": "a4023d6dbee14fa4a3e92a0faa420c68d21b8100", "version-date": "2022-02-22", "port-version": 0 } From 8af040e022c75b0aca54a34b6e88075906b58155 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:58:05 +0200 Subject: [PATCH 094/141] fix logic..... --- ports/vcpkg-fortran/portfile.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake index 06e786999acf43..4d0e90b78c0caf 100644 --- a/ports/vcpkg-fortran/portfile.cmake +++ b/ports/vcpkg-fortran/portfile.cmake @@ -1,6 +1,6 @@ set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) set(FUNCTION_NAME x_vcpkg_find_fortran) -if(NOT VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_MINGW) +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) set(PORT_IMPL vcpkg-fortran-flang-classic) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") set(PORT_IMPL vcpkg-fortran-ifort) From 444e86c5e70c6dee3e59b9dad864c90d9569caf3 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 22:58:25 +0200 Subject: [PATCH 095/141] version stuff --- versions/v-/vcpkg-fortran.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index e5581d1a5e5b6b..15009815aa2c86 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "a2b759eb48b04dbee21661a8adffc85dfd48e4f2", + "git-tree": "68b3c282952ed0578a11a6a592acc9a7a6764bc7", "version-date": "2022-02-22", "port-version": 0 } From 21a6f88b48206687cfcaba66fe222db4768c9ba3 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 23:21:44 +0200 Subject: [PATCH 096/141] fix stuff .... --- ports/vcpkg-fortran/vcpkg-port-config.cmake.in | 2 +- ports/vcpkg-ifort-libs/vcpkg.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-fortran/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in index d34b978b751371..5e04683f22a427 100644 --- a/ports/vcpkg-fortran/vcpkg-port-config.cmake.in +++ b/ports/vcpkg-fortran/vcpkg-port-config.cmake.in @@ -1,6 +1,6 @@ include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg-port-config.cmake") if("@VCPKG_TARGET_IS_WINDOWS@" AND NOT "@VCPKG_TARGET_IS_MINGW@") - include("${_VCPKG_INSTALLED_DIR}/${TARGET_TRIPLET}/share/@PORT_IMPL@/@FUNCTION_NAME@.cmake") + include("${_VCPKG_INSTALLED_DIR}/${TARGET_TRIPLET}/share/@PORT_IMPL@/vcpkg-port-config.cmake") else() include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") endif() \ No newline at end of file diff --git a/ports/vcpkg-ifort-libs/vcpkg.json b/ports/vcpkg-ifort-libs/vcpkg.json index 6638b8330ab515..8e6b51525f5655 100644 --- a/ports/vcpkg-ifort-libs/vcpkg.json +++ b/ports/vcpkg-ifort-libs/vcpkg.json @@ -6,8 +6,7 @@ "supports": "windows & !arm & !uwp", "dependencies": [ { - "name": "vcpkg-fortran-ifort", - "host": true + "name": "vcpkg-fortran-ifort" } ] } From 10f9248ea90f8ed32ebcb43889aa83899854833d Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 23:22:19 +0200 Subject: [PATCH 097/141] format manifest --- ports/vcpkg-ifort-libs/vcpkg.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/ports/vcpkg-ifort-libs/vcpkg.json b/ports/vcpkg-ifort-libs/vcpkg.json index 8e6b51525f5655..6cafd4cc188e86 100644 --- a/ports/vcpkg-ifort-libs/vcpkg.json +++ b/ports/vcpkg-ifort-libs/vcpkg.json @@ -5,8 +5,6 @@ "license": "MIT", "supports": "windows & !arm & !uwp", "dependencies": [ - { - "name": "vcpkg-fortran-ifort" - } + "vcpkg-fortran-ifort" ] } From b754bfe4d39b22ca6ef6fb0742251d759b2424c7 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Wed, 11 May 2022 23:22:27 +0200 Subject: [PATCH 098/141] version stuff --- versions/v-/vcpkg-fortran.json | 2 +- versions/v-/vcpkg-ifort-libs.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index 15009815aa2c86..152f2abeb2557b 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "68b3c282952ed0578a11a6a592acc9a7a6764bc7", + "git-tree": "1a85e324d797c2af04c6281b8a28207c6ca69622", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-ifort-libs.json b/versions/v-/vcpkg-ifort-libs.json index b2471f45826cea..e2581845e08fb4 100644 --- a/versions/v-/vcpkg-ifort-libs.json +++ b/versions/v-/vcpkg-ifort-libs.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "6c6ebb25e4a0f0bdb955fab3147fbf703c2d4da5", + "git-tree": "c0148d6db5c739e18a606e809148b507a85ee585", "version-date": "2022-02-22", "port-version": 0 } From f7b39443e92b6c21529e27d79972017f0a2ccf11 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 12 May 2022 08:43:21 +0200 Subject: [PATCH 099/141] fix dep after merge --- ports/vcpkg-fortran-flang-classic/vcpkg-port-config.cmake.in | 2 +- ports/vcpkg-fortran-flang-classic/vcpkg.json | 4 ++++ ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in | 2 +- ports/vcpkg-fortran-ifort/vcpkg.json | 4 ++++ 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/ports/vcpkg-fortran-flang-classic/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran-flang-classic/vcpkg-port-config.cmake.in index 5260140c9ea5c6..ec8399a7546e95 100644 --- a/ports/vcpkg-fortran-flang-classic/vcpkg-port-config.cmake.in +++ b/ports/vcpkg-fortran-flang-classic/vcpkg-port-config.cmake.in @@ -1,2 +1,2 @@ -include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg_cmake_get_vars.cmake") +include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake-get-vars/vcpkg-port-config.cmake") include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") diff --git a/ports/vcpkg-fortran-flang-classic/vcpkg.json b/ports/vcpkg-fortran-flang-classic/vcpkg.json index 4ed0ae1d1c3042..97fb7779b3b6a6 100644 --- a/ports/vcpkg-fortran-flang-classic/vcpkg.json +++ b/ports/vcpkg-fortran-flang-classic/vcpkg.json @@ -9,6 +9,10 @@ { "name": "vcpkg-cmake", "host": true + }, + { + "name": "vcpkg-cmake-get-vars", + "host": true }, { "name": "vcpkg-tool-flang-classic", diff --git a/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in index ea9c307c053195..d05bee54af6c05 100644 --- a/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in +++ b/ports/vcpkg-fortran-ifort/vcpkg-port-config.cmake.in @@ -1,3 +1,3 @@ -include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg-port-config.cmake") +include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake-get-vars/vcpkg-port-config.cmake") include("${CMAKE_CURRENT_LIST_DIR}/z_vcpkg_load_environment_from_batch.cmake") include("${CMAKE_CURRENT_LIST_DIR}/@FUNCTION_NAME@.cmake") diff --git a/ports/vcpkg-fortran-ifort/vcpkg.json b/ports/vcpkg-fortran-ifort/vcpkg.json index 366ec0cccc94a3..94da58ebf17fb7 100644 --- a/ports/vcpkg-fortran-ifort/vcpkg.json +++ b/ports/vcpkg-fortran-ifort/vcpkg.json @@ -9,6 +9,10 @@ "name": "vcpkg-cmake", "host": true }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, { "name": "vcpkg-tool-ifort", "host": true From 76ff85ea369902c61c973f72cd32e6fea0063eac Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Thu, 12 May 2022 08:45:13 +0200 Subject: [PATCH 100/141] more dep fixes --- ports/flang-classic-fortran-runtime/vcpkg.json | 4 ++++ ports/pgmath/vcpkg.json | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/ports/flang-classic-fortran-runtime/vcpkg.json b/ports/flang-classic-fortran-runtime/vcpkg.json index 0a1e40584f6b1c..1fc253a6177f11 100644 --- a/ports/flang-classic-fortran-runtime/vcpkg.json +++ b/ports/flang-classic-fortran-runtime/vcpkg.json @@ -16,6 +16,10 @@ "name": "vcpkg-cmake", "host": true }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, { "name": "vcpkg-cmake-config", "host": true diff --git a/ports/pgmath/vcpkg.json b/ports/pgmath/vcpkg.json index 5f324678edc705..0af9d9f16453ee 100644 --- a/ports/pgmath/vcpkg.json +++ b/ports/pgmath/vcpkg.json @@ -10,6 +10,10 @@ "name": "vcpkg-cmake", "host": true }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, { "name": "vcpkg-cmake-config", "host": true From b5460039a66c3bdb5ce6fc9d624cc37bfe6fab40 Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 08:59:25 +0200 Subject: [PATCH 101/141] format manifest --- ports/flang-classic-fortran-runtime/vcpkg.json | 4 ++-- ports/pgmath/vcpkg.json | 4 ++-- ports/vcpkg-fortran-flang-classic/vcpkg.json | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ports/flang-classic-fortran-runtime/vcpkg.json b/ports/flang-classic-fortran-runtime/vcpkg.json index 1fc253a6177f11..c95ea76c1a6848 100644 --- a/ports/flang-classic-fortran-runtime/vcpkg.json +++ b/ports/flang-classic-fortran-runtime/vcpkg.json @@ -17,11 +17,11 @@ "host": true }, { - "name": "vcpkg-cmake-get-vars", + "name": "vcpkg-cmake-config", "host": true }, { - "name": "vcpkg-cmake-config", + "name": "vcpkg-cmake-get-vars", "host": true }, { diff --git a/ports/pgmath/vcpkg.json b/ports/pgmath/vcpkg.json index 0af9d9f16453ee..a4f486f80086ba 100644 --- a/ports/pgmath/vcpkg.json +++ b/ports/pgmath/vcpkg.json @@ -11,11 +11,11 @@ "host": true }, { - "name": "vcpkg-cmake-get-vars", + "name": "vcpkg-cmake-config", "host": true }, { - "name": "vcpkg-cmake-config", + "name": "vcpkg-cmake-get-vars", "host": true }, { diff --git a/ports/vcpkg-fortran-flang-classic/vcpkg.json b/ports/vcpkg-fortran-flang-classic/vcpkg.json index 97fb7779b3b6a6..0a92cb2113e381 100644 --- a/ports/vcpkg-fortran-flang-classic/vcpkg.json +++ b/ports/vcpkg-fortran-flang-classic/vcpkg.json @@ -10,7 +10,7 @@ "name": "vcpkg-cmake", "host": true }, - { + { "name": "vcpkg-cmake-get-vars", "host": true }, From 8029859d5e6a79ef5deb9528439ddbe7ae617cd9 Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 09:01:11 +0200 Subject: [PATCH 102/141] version stuff --- versions/baseline.json | 54 +++++++++++++++++-- .../f-/flang-classic-fortran-runtime.json | 2 +- versions/p-/pgmath.json | 2 +- versions/v-/vcpkg-cmake-get-vars.json | 2 +- versions/v-/vcpkg-fortran-flang-classic.json | 2 +- versions/v-/vcpkg-fortran-ifort.json | 2 +- 6 files changed, 54 insertions(+), 10 deletions(-) diff --git a/versions/baseline.json b/versions/baseline.json index 37dfe4cff9c2fc..8bbcd4dd8819d8 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -489,8 +489,8 @@ "port-version": 0 }, "blas": { - "baseline": "1", - "port-version": 1 + "baseline": "default", + "port-version": 0 }, "blaze": { "baseline": "3.8", @@ -1394,7 +1394,7 @@ }, "clapack": { "baseline": "3.2.1", - "port-version": 20 + "port-version": 21 }, "clara": { "baseline": "1.1.5", @@ -2228,6 +2228,10 @@ "baseline": "2022.03.21.00", "port-version": 1 }, + "flang-classic-fortran-runtime": { + "baseline": "2022-04-23", + "port-version": 0 + }, "flann": { "baseline": "2019-04-07", "port-version": 5 @@ -3329,12 +3333,12 @@ "port-version": 0 }, "lapack": { - "baseline": "2022-02-22", + "baseline": "default", "port-version": 0 }, "lapack-reference": { "baseline": "3.10.0", - "port-version": 0 + "port-version": 2 }, "lastools": { "baseline": "2020-05-09", @@ -5396,6 +5400,10 @@ "baseline": "2019-05-14", "port-version": 1 }, + "pgmath": { + "baseline": "2022-04-23", + "port-version": 0 + }, "phnt": { "baseline": "2020-12-21", "port-version": 0 @@ -7340,6 +7348,18 @@ "baseline": "2022-05-10", "port-version": 0 }, + "vcpkg-fortran": { + "baseline": "2022-02-22", + "port-version": 0 + }, + "vcpkg-fortran-flang-classic": { + "baseline": "2022-02-22", + "port-version": 0 + }, + "vcpkg-fortran-ifort": { + "baseline": "2022-02-22", + "port-version": 0 + }, "vcpkg-get-python-packages": { "baseline": "2022-04-11", "port-version": 0 @@ -7352,6 +7372,10 @@ "baseline": "2021-11-16", "port-version": 1 }, + "vcpkg-ifort-libs": { + "baseline": "2022-02-22", + "port-version": 0 + }, "vcpkg-pkgconfig-get-modules": { "baseline": "2022-02-10", "port-version": 0 @@ -7360,6 +7384,18 @@ "baseline": "2022-05-10", "port-version": 0 }, + "vcpkg-tool-7zip": { + "baseline": "21.07", + "port-version": 0 + }, + "vcpkg-tool-flang-classic": { + "baseline": "2022-04-23", + "port-version": 0 + }, + "vcpkg-tool-flang-classic-llvm": { + "baseline": "2022-04-23", + "port-version": 0 + }, "vcpkg-tool-gn": { "baseline": "2022-04-16", "port-version": 0 @@ -7368,10 +7404,18 @@ "baseline": "2022-03-04", "port-version": 0 }, + "vcpkg-tool-ifort": { + "baseline": "2022-05-08", + "port-version": 0 + }, "vcpkg-tool-lessmsi": { "baseline": "1.10.0", "port-version": 0 }, + "vcpkg-tool-llvm": { + "baseline": "14.0.3", + "port-version": 0 + }, "vcpkg-tool-meson": { "baseline": "0.60.2", "port-version": 2 diff --git a/versions/f-/flang-classic-fortran-runtime.json b/versions/f-/flang-classic-fortran-runtime.json index 5f1210a9ebf472..de225aa4b5d40f 100644 --- a/versions/f-/flang-classic-fortran-runtime.json +++ b/versions/f-/flang-classic-fortran-runtime.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "7720d84e9002eba4a41b5ed8b639aeaac1567fdd", + "git-tree": "012599ade9a1ba46fe047872f8ddf79d41b2fdc1", "version-date": "2022-04-23", "port-version": 0 } diff --git a/versions/p-/pgmath.json b/versions/p-/pgmath.json index aac8328d8431d9..7ba7fd380fa091 100644 --- a/versions/p-/pgmath.json +++ b/versions/p-/pgmath.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "0973548e0c0da1b808d1112358cc23172fdef23d", + "git-tree": "41cd9b0385c52c7efdf10423f56d05b8802d7ec4", "version-date": "2022-04-23", "port-version": 0 } diff --git a/versions/v-/vcpkg-cmake-get-vars.json b/versions/v-/vcpkg-cmake-get-vars.json index 992a7e24453c29..5cc26b7bfdbdda 100644 --- a/versions/v-/vcpkg-cmake-get-vars.json +++ b/versions/v-/vcpkg-cmake-get-vars.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "181f509cdab757511233106aa44c529e04c0c29f", + "git-tree": "9d6f9453126a0ac7c4db75644647a9487a7df990", "version-date": "2022-05-10", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran-flang-classic.json b/versions/v-/vcpkg-fortran-flang-classic.json index 8a98da49ef50d7..186e0bf2e5e31d 100644 --- a/versions/v-/vcpkg-fortran-flang-classic.json +++ b/versions/v-/vcpkg-fortran-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "82e97309d59a5b340a1f1e98ab4aea1ff740ff83", + "git-tree": "506c3069ba8d2a4c39a8caa6eadb780f90c0ab1a", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran-ifort.json b/versions/v-/vcpkg-fortran-ifort.json index f94d73735ec1cd..54020d69e08ec4 100644 --- a/versions/v-/vcpkg-fortran-ifort.json +++ b/versions/v-/vcpkg-fortran-ifort.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "a4023d6dbee14fa4a3e92a0faa420c68d21b8100", + "git-tree": "4dfb5a612780d219e3129bd5cf3e73033766d01c", "version-date": "2022-02-22", "port-version": 0 } From c85c1d1115cb62d52f83f3c26b4e804b7ae22a98 Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 12:50:48 +0200 Subject: [PATCH 103/141] fix stuff... --- .../vcpkg-cmake-wrapper.cmake.in | 5 +++++ .../x_vcpkg_find_fortran.cmake | 19 +++++++++++++------ .../x_vcpkg_find_fortran.cmake | 18 +++++++++++++----- ports/vcpkg-tool-flang-classic/vcpkg.json | 4 ++++ ports/vcpkg-tool-llvm/vcpkg.json | 2 +- 5 files changed, 36 insertions(+), 12 deletions(-) diff --git a/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in b/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in index 7154008041371e..b24d87ccbd6089 100644 --- a/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in +++ b/ports/lapack-reference/vcpkg-cmake-wrapper.cmake.in @@ -6,6 +6,9 @@ list(REMOVE_ITEM ARGS "NO_MODULE") list(REMOVE_ITEM ARGS "CONFIG") list(REMOVE_ITEM ARGS "MODULE") +cmake_policy(PUSH) +cmake_policy(SET CMP0012 NEW) + if("@Z_VCPKG_IS_INTERNAL_Fortran_Flang@" AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static") set(CMAKE_REQUIRED_LINK_OPTIONS "-LIBPATH:${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/$<$:debug/>lib/") add_link_options("-LIBPATH:${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/$<$:debug/>lib/") @@ -16,6 +19,8 @@ if("@Z_VCPKG_IS_INTERNAL_Fortran_INTEL@" AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL add_link_options("-LIBPATH:${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/share/ifort/") endif() +cmake_policy(POP) + if(@USE_OPTIMIZED_BLAS@) _find_package(BLAS) endif() diff --git a/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake index 07a880d7882c5d..958c37a79ca4eb 100644 --- a/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake +++ b/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake @@ -2,26 +2,33 @@ # x_vcpkg_find_fortran Checks if a Fortran compiler can be found. -Windows(x86/x64) Only: If not it will search and enable Intel - ifort compiler if available. +Windows only: If not it will try to use one internal to vcpkg ## Usage ```cmake -x_vcpkg_find_fortran() +x_vcpkg_find_fortran(OUT_OPTIONS + OUT_OPTIONS_RELEASE + OUT_OPTIONS_DEBUG + ) ``` ## Example ```cmake -x_vcpkg_find_fortran(fortran_args) +x_vcpkg_find_fortran(OUT_OPTIONS fortran_args + OUT_OPTIONS_RELEASE fortran_args_rel + OUT_OPTIONS_DEBUG fortran_args_dbg + ) # ... vcpkg_configure_cmake(... OPTIONS ${fortran_args} + OPTIONS_RELEASE + ${fortran_args_rel} + OPTIONS_DEBUG + ${fortran_args_dbg} ) ``` #]===] -include("${_VCPKG_INSTALLED_DIR}/${_HOST_TRIPLET}/share/vcpkg-cmake/vcpkg_cmake_get_vars.cmake") - function(x_vcpkg_find_fortran) cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "OUT_OPTIONS;OUT_OPTIONS_RELEASE;OUT_OPTIONS_DEBUG" "") diff --git a/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake index c1e8ffa2beb828..48f8ad20accbed 100644 --- a/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake +++ b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake @@ -2,25 +2,33 @@ # x_vcpkg_find_fortran Checks if a Fortran compiler can be found. -Windows(x86/x64) Only: If not it will search and enable Intel - ifort compiler if available. +Windows only: If not it will try to use one internal to vcpkg ## Usage ```cmake -x_vcpkg_find_fortran() +x_vcpkg_find_fortran(OUT_OPTIONS + OUT_OPTIONS_RELEASE + OUT_OPTIONS_DEBUG + ) ``` ## Example ```cmake -x_vcpkg_find_fortran(fortran_args) +x_vcpkg_find_fortran(OUT_OPTIONS fortran_args + OUT_OPTIONS_RELEASE fortran_args_rel + OUT_OPTIONS_DEBUG fortran_args_dbg + ) # ... vcpkg_configure_cmake(... OPTIONS ${fortran_args} + OPTIONS_RELEASE + ${fortran_args_rel} + OPTIONS_DEBUG + ${fortran_args_dbg} ) ``` #]===] - function(x_vcpkg_find_fortran) cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "OUT_OPTIONS;OUT_OPTIONS_RELEASE;OUT_OPTIONS_DEBUG" "") diff --git a/ports/vcpkg-tool-flang-classic/vcpkg.json b/ports/vcpkg-tool-flang-classic/vcpkg.json index b80d4e337e8c1c..aae506fde8e19c 100644 --- a/ports/vcpkg-tool-flang-classic/vcpkg.json +++ b/ports/vcpkg-tool-flang-classic/vcpkg.json @@ -19,6 +19,10 @@ "name": "vcpkg-cmake-config", "host": true }, + { + "name": "vcpkg-cmake-get-vars", + "host": true + }, { "name": "vcpkg-tool-flang-classic-llvm", "host": true diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json index 86ef8b0ac887ee..e460153aa4a8d2 100644 --- a/ports/vcpkg-tool-llvm/vcpkg.json +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -7,7 +7,7 @@ "supports": "windows & (x64 | x86) & native", "dependencies": [ { - "name": "vcpkg-cmake", + "name": "vcpkg-cmake-get-vars", "host": true }, { From 3931f7cb24048f49d9d2669d43bb3589f163ce09 Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 12:52:20 +0200 Subject: [PATCH 104/141] version stuff --- versions/l-/lapack-reference.json | 2 +- versions/v-/vcpkg-fortran-flang-classic.json | 2 +- versions/v-/vcpkg-fortran-ifort.json | 2 +- versions/v-/vcpkg-tool-flang-classic.json | 2 +- versions/v-/vcpkg-tool-llvm.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index 3f74fa53c7f73c..fae08877737c6f 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "f1c967fabfd66f6691d644c0190fd4249572d402", + "git-tree": "ca0c945d1f1c58a2a9c6994e875726281faca37f", "version": "3.10.0", "port-version": 2 }, diff --git a/versions/v-/vcpkg-fortran-flang-classic.json b/versions/v-/vcpkg-fortran-flang-classic.json index 186e0bf2e5e31d..a663562686e2aa 100644 --- a/versions/v-/vcpkg-fortran-flang-classic.json +++ b/versions/v-/vcpkg-fortran-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "506c3069ba8d2a4c39a8caa6eadb780f90c0ab1a", + "git-tree": "82f5bcc9165736802cc9718b4c1b0c5f45a49966", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran-ifort.json b/versions/v-/vcpkg-fortran-ifort.json index 54020d69e08ec4..56a23c0ee81595 100644 --- a/versions/v-/vcpkg-fortran-ifort.json +++ b/versions/v-/vcpkg-fortran-ifort.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "4dfb5a612780d219e3129bd5cf3e73033766d01c", + "git-tree": "2b27db4ea3cdb41fd0c68e1e7681bc878f5dd810", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-tool-flang-classic.json b/versions/v-/vcpkg-tool-flang-classic.json index 2e44ff101daf35..dce0194c4792ec 100644 --- a/versions/v-/vcpkg-tool-flang-classic.json +++ b/versions/v-/vcpkg-tool-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "0e69d92f382cf4d79a8026d33c4f3f2cebf64464", + "git-tree": "661b84fee23dfc1072d05fa600ceef7ad27c7ed2", "version-date": "2022-04-23", "port-version": 0 } diff --git a/versions/v-/vcpkg-tool-llvm.json b/versions/v-/vcpkg-tool-llvm.json index fbda321c1a253b..fe80f786e0c262 100644 --- a/versions/v-/vcpkg-tool-llvm.json +++ b/versions/v-/vcpkg-tool-llvm.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "32387d5382bb0abb1025a4c0bb776289a530a328", + "git-tree": "2eae9ffed05d40559cc0a2c971e9551cfaa16c07", "version": "14.0.3", "port-version": 0 }, From fcee1d02746b9800560d041a9a70ec117946c36c Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 17:26:11 +0200 Subject: [PATCH 105/141] disable parallel configure in pgmath since there has been a strange build error in uwp --- ports/pgmath/portfile.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/ports/pgmath/portfile.cmake b/ports/pgmath/portfile.cmake index 345c80814f9bd2..e46843374c3b6a 100644 --- a/ports/pgmath/portfile.cmake +++ b/ports/pgmath/portfile.cmake @@ -54,6 +54,7 @@ vcpkg_list(APPEND OPTIONS "-DPGMATH_SHARED=${PGMATH_SHARED}") vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}/runtime/libpgmath" + DISABLE_PARALLEL_CONFIGURE OPTIONS ${OPTIONS} "-DWITH_WERROR=OFF" MAYBE_UNUSED_VARIABLES From 0f7e99b049ac4f4d44f85fb6c8f739bccd195775 Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 17:26:29 +0200 Subject: [PATCH 106/141] version stuff --- versions/p-/pgmath.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/p-/pgmath.json b/versions/p-/pgmath.json index 7ba7fd380fa091..1313c6233db499 100644 --- a/versions/p-/pgmath.json +++ b/versions/p-/pgmath.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "41cd9b0385c52c7efdf10423f56d05b8802d7ec4", + "git-tree": "b6b4d0b26f1ec639f0fbf6a94ce99d84877fb1dc", "version-date": "2022-04-23", "port-version": 0 } From 82b14d24ba051edd12f07b00827dd789d0ec5497 Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 17:35:17 +0200 Subject: [PATCH 107/141] ci baseline adjustment --- scripts/ci.baseline.txt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 2e54d9f5f1cf3c..f3cf9d1cbd0d95 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -1269,9 +1269,7 @@ clapack:x64-windows-static=skip clapack:x64-windows-static-md=skip clapack:x64-windows=skip clapack:x86-windows=skip -lapack-reference:arm64-windows=skip -lapack-reference:arm-uwp=skip -lapack-reference:x64-uwp=skip +clapack:arm64-windows=skip # failures for x64-windows-static-md ace:x64-windows-static-md=fail From f79abc85c00d6d396cd5667df46d67d19390f18a Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 17:55:22 +0200 Subject: [PATCH 108/141] Fix arm64 path --- ports/blas/portfile.cmake | 16 +++++++++------- ports/blas/vcpkg.json | 7 ++++++- ports/lapack-reference/portfile.cmake | 2 +- ports/lapack-reference/vcpkg.json | 6 ++++-- ports/lapack/vcpkg.json | 4 ++-- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index bff4c31754bf19..faf556b1eccd71 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -10,21 +10,23 @@ if(ver_str STREQUAL "default") set(requires "") set(libs "-framework Accelerate") set(cflags "-framework Accelerate") + elseif(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") + set(BLA_VENDOR Generic) + set(requires "") + set(NO_PC_INSTALL TRUE) else() set(BLA_VENDOR OpenBLAS) set(requires openblas) endif() - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) - if(NOT VCPKG_BUILD_TYPE) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) + if(NOT NO_PC_INSTALL) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) + endif() endif() - # For possible overlays: - #NETLIB reference implementation (contained in lapack-reference) - #set(BLA_VENDOR Generic) - # Intel MKL #if(VCPKG_TARGET_ARCHITECTURE STREQUAL x64) # set(BLA_VENDOR Intel10_64lp) diff --git a/ports/blas/vcpkg.json b/ports/blas/vcpkg.json index 6dd5232201bd33..f5c554e7a6e4e0 100644 --- a/ports/blas/vcpkg.json +++ b/ports/blas/vcpkg.json @@ -7,7 +7,12 @@ "dependencies": [ { "name": "openblas", - "platform": "!osx | (static & windows)" + "platform": "!(osx | (windows & arm))" + }, + { + "name": "lapack-reference", + "platform": "(arm64 & windows)", + "$comment" : "Will use internal generic BLAS of lapack-reference" }, { "name": "vcpkg-cmake", diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 4c251befed4066..e06c5019e792a3 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -74,7 +74,7 @@ if(EXISTS "${pcfile}") file(WRITE "${pcfile}" "prefix=${CURRENT_INSTALLED_DIR}/debug\n${_contents}") endif() -if(NOT USE_OPTIMIZED_BLAS AND NOT (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")) +if(NOT USE_OPTIMIZED_BLAS) set(pcfile "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc") if(EXISTS "${pcfile}") file(READ "${pcfile}" _contents) diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index 8b585ade27cc80..5df9f0faeec856 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -28,7 +28,8 @@ "default-features": false, "features": [ "noblas" - ] + ], + "platform": "!(windows & arm)" } ] }, @@ -39,7 +40,8 @@ "description": "Use external optimized BLAS", "dependencies": [ "blas" - ] + ], + "supports": "!(windows & arm64)" } } } diff --git a/ports/lapack/vcpkg.json b/ports/lapack/vcpkg.json index a861a3aa617044..20ec0161942208 100644 --- a/ports/lapack/vcpkg.json +++ b/ports/lapack/vcpkg.json @@ -7,11 +7,11 @@ "dependencies": [ { "name": "clapack", - "platform": "(arm & !arm64 & windows) | uwp" + "platform": "(arm32 & windows) | uwp" }, { "name": "lapack-reference", - "platform": "!((arm & !arm64 & windows) | uwp | osx)" + "platform": "!((arm32 & windows) | uwp | osx)" }, { "name": "vcpkg-cmake", From dbbf390fea847c64d201454ed35c67fedd390a89 Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 17:56:01 +0200 Subject: [PATCH 109/141] format manifest --- ports/blas/vcpkg.json | 10 +++++----- ports/lapack-reference/vcpkg.json | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ports/blas/vcpkg.json b/ports/blas/vcpkg.json index f5c554e7a6e4e0..5083371575c7ed 100644 --- a/ports/blas/vcpkg.json +++ b/ports/blas/vcpkg.json @@ -6,13 +6,13 @@ "license": null, "dependencies": [ { - "name": "openblas", - "platform": "!(osx | (windows & arm))" + "$comment": "Will use internal generic BLAS of lapack-reference", + "name": "lapack-reference", + "platform": "arm64 & windows" }, { - "name": "lapack-reference", - "platform": "(arm64 & windows)", - "$comment" : "Will use internal generic BLAS of lapack-reference" + "name": "openblas", + "platform": "!(osx | (windows & arm))" }, { "name": "vcpkg-cmake", diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index 5df9f0faeec856..e415b28edb7a88 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -38,10 +38,10 @@ }, "noblas": { "description": "Use external optimized BLAS", + "supports": "!(windows & arm64)", "dependencies": [ "blas" - ], - "supports": "!(windows & arm64)" + ] } } } From 1f5bc42794a09a913894325bb6dd6160db46aefa Mon Sep 17 00:00:00 2001 From: Neumann-A <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 17:56:27 +0200 Subject: [PATCH 110/141] version stuff --- versions/b-/blas.json | 2 +- versions/l-/lapack-reference.json | 2 +- versions/l-/lapack.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/versions/b-/blas.json b/versions/b-/blas.json index c2532e1a07d1e4..dd3f8e74dff4cc 100644 --- a/versions/b-/blas.json +++ b/versions/b-/blas.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "11f2867919829e66fe89ea1277c273074c95d4d6", + "git-tree": "084e985a190a6c7bd7d15f2ce2aca0414e76b80f", "version-string": "default", "port-version": 0 }, diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index fae08877737c6f..8341db042d7ee0 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "ca0c945d1f1c58a2a9c6994e875726281faca37f", + "git-tree": "2d6641367b0c21de9dc6685d47c486d0b9ebd05d", "version": "3.10.0", "port-version": 2 }, diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index 43d1dfd7126c42..1fa731cc03fe7e 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "e4145f829cdfe119df841c095b733a9b21c2fbe2", + "git-tree": "42ca5126e8f624955a32610f3cf74faf8a022d92", "version-string": "default", "port-version": 0 }, From 186f730105f2a75ca2d8f8e5acaa7e9ffc267858 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 21:04:09 +0200 Subject: [PATCH 111/141] fix uwp/arm regressions --- ports/g2o/vcpkg.json | 6 +++++- ports/geogram/vcpkg.json | 4 ++-- ports/vcpkg-fortran/vcpkg.json | 1 + scripts/ci.baseline.txt | 2 ++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ports/g2o/vcpkg.json b/ports/g2o/vcpkg.json index b81b5d65c9f8fc..be1dad0310be1c 100644 --- a/ports/g2o/vcpkg.json +++ b/ports/g2o/vcpkg.json @@ -1,13 +1,17 @@ { "name": "g2o", "version-string": "2020-02-07", - "port-version": 2, + "port-version": 3, "description": "g2o: A General Framework for Graph Optimization", "homepage": "https://openslam.org/g2o.html", "dependencies": [ "ceres", "eigen3", "lapack", + { + "name": "opengl", + "platform": "windows" + }, "suitesparse" ] } diff --git a/ports/geogram/vcpkg.json b/ports/geogram/vcpkg.json index e7c40ee36551cd..f0ecc834f7354a 100644 --- a/ports/geogram/vcpkg.json +++ b/ports/geogram/vcpkg.json @@ -1,10 +1,10 @@ { "name": "geogram", "version": "1.7.6", - "port-version": 2, + "port-version": 3, "description": "Geogram is a programming library of geometric algorithms.", "homepage": "https://gforge.inria.fr/projects/geogram/", - "supports": "!uwp", + "supports": "!uwp & !arm", "dependencies": [ "blas", "lapack" diff --git a/ports/vcpkg-fortran/vcpkg.json b/ports/vcpkg-fortran/vcpkg.json index 20407dc86066ab..18535fe51960a9 100644 --- a/ports/vcpkg-fortran/vcpkg.json +++ b/ports/vcpkg-fortran/vcpkg.json @@ -3,6 +3,7 @@ "version-date": "2022-02-22", "description": "Metaport for fortran compiler helpers. Only used for Windows", "license": "MIT", + "supports": "!uwp", "dependencies": [ { "name": "vcpkg-fortran-flang-classic", diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index f3cf9d1cbd0d95..1db0a2b13a4c72 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -209,6 +209,7 @@ discord-rpc:arm-uwp=fail discord-rpc:x64-uwp=fail # requires g++11 discordcoreapi:x64-linux=fail +dlib:arm64-windows=fail dlib:arm-uwp=fail dlib:x64-uwp=fail dmlc:arm-uwp=fail @@ -1079,6 +1080,7 @@ shogun:x64-windows-static-md=skip shogun:x86-windows = skip signalrclient:x64-uwp=fail signalrclient:arm-uwp=fail +simbody:arm64-windows=fail skia:arm-uwp=fail skia:x64-uwp=fail sleef:x86-windows=fail From 56c7402485be606cf06f36054ad7ed78ced46c62 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 23:44:22 +0200 Subject: [PATCH 112/141] version-date --- ports/g2o/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/g2o/vcpkg.json b/ports/g2o/vcpkg.json index be1dad0310be1c..a24806c71196bb 100644 --- a/ports/g2o/vcpkg.json +++ b/ports/g2o/vcpkg.json @@ -1,6 +1,6 @@ { "name": "g2o", - "version-string": "2020-02-07", + "version-date": "2020-02-07", "port-version": 3, "description": "g2o: A General Framework for Graph Optimization", "homepage": "https://openslam.org/g2o.html", From 81de545cee0da5aab56ae9a975b82977450d50ca Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 12 May 2022 23:44:32 +0200 Subject: [PATCH 113/141] version stuff --- versions/baseline.json | 4 ++-- versions/g-/g2o.json | 5 +++++ versions/g-/geogram.json | 5 +++++ versions/v-/vcpkg-fortran.json | 2 +- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/versions/baseline.json b/versions/baseline.json index 8bbcd4dd8819d8..bcf8023a4f872f 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2398,7 +2398,7 @@ }, "g2o": { "baseline": "2020-02-07", - "port-version": 2 + "port-version": 3 }, "g3log": { "baseline": "1.3.4", @@ -2462,7 +2462,7 @@ }, "geogram": { "baseline": "1.7.6", - "port-version": 2 + "port-version": 3 }, "geographiclib": { "baseline": "1.52", diff --git a/versions/g-/g2o.json b/versions/g-/g2o.json index 34e9d0dfa836f5..dd1dd3a440b9d2 100644 --- a/versions/g-/g2o.json +++ b/versions/g-/g2o.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "5e60367bc5bd73d48969c99ee2e7ad16c8d4b6e8", + "version-date": "2020-02-07", + "port-version": 3 + }, { "git-tree": "4fb8813de02bd243b25d9ed93065f9f9cba09e93", "version-string": "2020-02-07", diff --git a/versions/g-/geogram.json b/versions/g-/geogram.json index 9ee01d4bcf10f1..e43ab8a7cd23b6 100644 --- a/versions/g-/geogram.json +++ b/versions/g-/geogram.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "29040ca7d4881d0e7a652350f1bfd428108a5bc7", + "version": "1.7.6", + "port-version": 3 + }, { "git-tree": "d68db6c8078b7598e5bed6550a911f791ae63ab3", "version": "1.7.6", diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index 152f2abeb2557b..a86170420a059d 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "1a85e324d797c2af04c6281b8a28207c6ca69622", + "git-tree": "5e41b4ae727265d23e89042f7958849f62ad8bd1", "version-date": "2022-02-22", "port-version": 0 } From f5134fe0e39706d727e8ed0d58678b35bdb213d5 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 13 May 2022 00:50:26 +0200 Subject: [PATCH 114/141] make paltform expr more precise --- ports/blas/vcpkg.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ports/blas/vcpkg.json b/ports/blas/vcpkg.json index 5083371575c7ed..590d7ed6adc7c8 100644 --- a/ports/blas/vcpkg.json +++ b/ports/blas/vcpkg.json @@ -12,7 +12,7 @@ }, { "name": "openblas", - "platform": "!(osx | (windows & arm))" + "platform": "!(osx | (windows & arm64))" }, { "name": "vcpkg-cmake", From 59a532f8ffcbee1974203879f03c32867b0c8700 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 13 May 2022 00:51:05 +0200 Subject: [PATCH 115/141] version stuff --- versions/b-/blas.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/b-/blas.json b/versions/b-/blas.json index dd3f8e74dff4cc..1b639ee8c2c258 100644 --- a/versions/b-/blas.json +++ b/versions/b-/blas.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "084e985a190a6c7bd7d15f2ce2aca0414e76b80f", + "git-tree": "1c2e9dae2bd358b054e8c44df75b6606bea82981", "version-string": "default", "port-version": 0 }, From a090cd52f641818cfef1c2983d0da233e163a5ed Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 13 May 2022 17:51:26 +0200 Subject: [PATCH 116/141] fix pgmath compile flags. disable finding flang from llvm --- ports/pgmath/clang-cl-flags.patch | 661 ++++++++++++++++++ ports/pgmath/portfile.cmake | 5 + .../vcpkg-fortran/x_vcpkg_find_fortran.cmake | 1 + 3 files changed, 667 insertions(+) create mode 100644 ports/pgmath/clang-cl-flags.patch diff --git a/ports/pgmath/clang-cl-flags.patch b/ports/pgmath/clang-cl-flags.patch new file mode 100644 index 00000000000000..85408973938c50 --- /dev/null +++ b/ports/pgmath/clang-cl-flags.patch @@ -0,0 +1,661 @@ +diff --git a/runtime/libpgmath/lib/common/CMakeLists.txt b/runtime/libpgmath/lib/common/CMakeLists.txt +index 59454c9de..15939ffef 100644 +--- a/runtime/libpgmath/lib/common/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/CMakeLists.txt +@@ -82,7 +82,10 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64" AND NOT ${LIBPGMATH_WITH_GENER + add_subdirectory("tanf") + + # Specific definition, will probably need to remove when we create a single file for each def +- set_property(SOURCE dispatch.c APPEND_STRING PROPERTY COMPILE_FLAGS "-fno-builtin-c{sqrt,pow,log,exp,acos,asin,atan,cos,sin,tan,cosh,sinh,tanh}{,f} -fno-builtin-{ceil,floor}{,f}") ++ set(builtin_list "csqrt;cpow;clog;cexp;cacos;casin;catan;ccos;csin;ctan;ccosh;csinh;ctanh;ceil;floor") ++ foreach(builtin IN LISTS builtin_list) ++ set_property(SOURCE dispatch.c APPEND_STRING PROPERTY COMPILE_FLAGS "-fno-builtin-${builtin} -fno-builtin-${builtin}f ") ++ endforeach() + set_property(SOURCE dispatch.c APPEND PROPERTY COMPILE_DEFINITIONS PGFLANG) + set_property(SOURCE mth_xintrinsics.c APPEND_STRING PROPERTY COMPILE_FLAGS "-msse2 ") + set_property(SOURCE mth_yintrinsics.c APPEND_STRING PROPERTY COMPILE_FLAGS "-mavx ") +diff --git a/runtime/libpgmath/lib/common/acos/fma3/CMakeLists.txt b/runtime/libpgmath/lib/common/acos/fma3/CMakeLists.txt +index e76eb92f5..e8e304baa 100644 +--- a/runtime/libpgmath/lib/common/acos/fma3/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/acos/fma3/CMakeLists.txt +@@ -24,9 +24,9 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(SRCS + vdacos8.cpp + vsacos16.cpp) +- set(FLAGS_AVX512 "${FLAGS} -march=skylake-avx512 -mtune=skylake-avx512") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:skylake-avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "acos-avx512") +- set(FLAGS_AVX512 "${FLAGS} -march=knl -mtune=knl") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:knl /D__knl") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "acos-knl") + endif() + elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") +diff --git a/runtime/libpgmath/lib/common/asin/fma3/CMakeLists.txt b/runtime/libpgmath/lib/common/asin/fma3/CMakeLists.txt +index e48e94314..854517352 100644 +--- a/runtime/libpgmath/lib/common/asin/fma3/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/asin/fma3/CMakeLists.txt +@@ -24,9 +24,9 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(SRCS + vdasin8.cpp + vsasin16.cpp) +- set(FLAGS_AVX512 "${FLAGS} -march=skylake-avx512 -mtune=skylake-avx512") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:skylake-avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "asin-avx512") +- set(FLAGS_AVX512 "${FLAGS} -march=knl -mtune=knl") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:knl /D__knl") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "asin-knl") + endif() + elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") +diff --git a/runtime/libpgmath/lib/common/atan/CMakeLists.txt b/runtime/libpgmath/lib/common/atan/CMakeLists.txt +index 91a37a86a..988c52c8a 100644 +--- a/runtime/libpgmath/lib/common/atan/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/atan/CMakeLists.txt +@@ -25,25 +25,25 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan-avx2_1") + + + # Vector, Two elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=2") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan-avx2_2") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan-avx2_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan-avx512_8") + +diff --git a/runtime/libpgmath/lib/common/atan2/CMakeLists.txt b/runtime/libpgmath/lib/common/atan2/CMakeLists.txt +index 394245725..c7f7a7613 100644 +--- a/runtime/libpgmath/lib/common/atan2/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/atan2/CMakeLists.txt +@@ -25,25 +25,25 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2-avx2_1") + + + # Vector, Two elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=2") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2-avx2_2") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2-avx2_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2-avx512_8") + +diff --git a/runtime/libpgmath/lib/common/atan2f/CMakeLists.txt b/runtime/libpgmath/lib/common/atan2f/CMakeLists.txt +index a63e8ac2f..ef79def97 100644 +--- a/runtime/libpgmath/lib/common/atan2f/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/atan2f/CMakeLists.txt +@@ -25,25 +25,25 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2f-avx2_1") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2f-avx2_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2f-avx2_8") + + + # Vector, Sixteen elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=16") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=16") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atan2f-avx512_16") + +diff --git a/runtime/libpgmath/lib/common/atanf/CMakeLists.txt b/runtime/libpgmath/lib/common/atanf/CMakeLists.txt +index 321f87796..b30421138 100644 +--- a/runtime/libpgmath/lib/common/atanf/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/atanf/CMakeLists.txt +@@ -25,25 +25,25 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atanf-avx2_1") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atanf-avx2_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atanf-avx2_8") + + + # Vector, Sixteen elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=16") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=16") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" + "atanf-avx512_16") + +diff --git a/runtime/libpgmath/lib/common/cexp/CMakeLists.txt b/runtime/libpgmath/lib/common/cexp/CMakeLists.txt +index 196bf9225..aba9fbab4 100644 +--- a/runtime/libpgmath/lib/common/cexp/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/cexp/CMakeLists.txt +@@ -20,42 +20,42 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=1 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=1 -D_CPU=avx2") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-avx2_1") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=1 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=1 -D_CPU=avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-avx512_1") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=1 -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=1 -D_CPU=knl") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-knl_1") + + + # Scalar with vector calling ABI +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=1 -D_CPU=avx2 -D_SCALAR_WITH_VECTOR_ABI_") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=1 -D_CPU=avx2 -D_SCALAR_WITH_VECTOR_ABI_") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-avx2_1v") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=1 -D_CPU=avx512 -D_SCALAR_WITH_VECTOR_ABI_") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=1 -D_CPU=avx512 -D_SCALAR_WITH_VECTOR_ABI_") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-avx512_1v") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=1 -D_CPU=knl -D_SCALAR_WITH_VECTOR_ABI_") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=1 -D_CPU=knl -D_SCALAR_WITH_VECTOR_ABI_") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-knl_1v") + + + # Vector, Two elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=2 -D_CPU=avx2") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-avx2_2") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=2 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=2 -D_CPU=avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-avx512_2") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=2 -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=2 -D_CPU=knl") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-knl_2") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=4 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=4 -D_CPU=avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-avx512_4") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=4 -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=4 -D_CPU=knl") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexp-knl_4") + +diff --git a/runtime/libpgmath/lib/common/cexpf/CMakeLists.txt b/runtime/libpgmath/lib/common/cexpf/CMakeLists.txt +index d77d68774..2f927524d 100644 +--- a/runtime/libpgmath/lib/common/cexpf/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/cexpf/CMakeLists.txt +@@ -20,42 +20,42 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=1 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=1 -D_CPU=avx2") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-avx2_1") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=1 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=1 -D_CPU=avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-avx512_1") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=1 -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=1 -D_CPU=knl") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-knl_1") + + + # Vector, Two elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=2 -D_CPU=avx2") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-avx2_2") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=2 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=2 -D_CPU=avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-avx512_2") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=2 -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=2 -D_CPU=knl") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-knl_2") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=4 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=4 -D_CPU=avx2") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-avx2_4") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=4 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=4 -D_CPU=avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-avx512_4") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=4 -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=4 -D_CPU=knl") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-knl_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=8 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=8 -D_CPU=avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-avx512_8") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_VL=8 -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_VL=8 -D_CPU=knl") + libmath_add_object_library("${SRCS}" "${FLAGS_TMP}" "${DEFINITIONS}" "cexpf-knl_8") + +diff --git a/runtime/libpgmath/lib/common/exp/fma3/CMakeLists.txt b/runtime/libpgmath/lib/common/exp/fma3/CMakeLists.txt +index 1cdba219e..6073ea41f 100644 +--- a/runtime/libpgmath/lib/common/exp/fma3/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/exp/fma3/CMakeLists.txt +@@ -24,9 +24,9 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(SRCS + vdexp8.cpp + vsexp16.cpp) +- set(FLAGS_AVX512 "${FLAGS} -march=skylake-avx512 -mtune=skylake-avx512") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:skylake-avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "exp-avx512") +- set(FLAGS_AVX512 "${FLAGS} -march=knl -mtune=knl") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:knl /D__knl") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "exp-knl") + endif() + elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") +diff --git a/runtime/libpgmath/lib/common/log/CMakeLists.txt b/runtime/libpgmath/lib/common/log/CMakeLists.txt +index b612d089e..31bb8b8c2 100644 +--- a/runtime/libpgmath/lib/common/log/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/log/CMakeLists.txt +@@ -30,34 +30,34 @@ set(SRCS_VECTOR + if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-avx2_1") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-avx512_1") + + + # Vector, 2 elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=2") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-avx2_2") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=2") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=2") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-avx512_2") + + + # Vector, 4 elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-avx2_4") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-avx512_4") + + + # Vector, 8 elements +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_CPU=knl -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_CPU=knl -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-knl_8") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log-avx512_8") + + endif() +diff --git a/runtime/libpgmath/lib/common/log/fma3/CMakeLists.txt b/runtime/libpgmath/lib/common/log/fma3/CMakeLists.txt +index ac973b591..b94542e55 100644 +--- a/runtime/libpgmath/lib/common/log/fma3/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/log/fma3/CMakeLists.txt +@@ -34,9 +34,9 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + fdlog8.cpp + fslog16.cpp + rslog16.cpp) +- set(FLAGS_AVX512 "${FLAGS} -march=skylake-avx512 -mtune=skylake-avx512") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:skylake-avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "log-avx512") +- set(FLAGS_AVX512 "${FLAGS} -march=knl -mtune=knl") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:knl /D__knl") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "log-knl") + endif() + elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") +diff --git a/runtime/libpgmath/lib/common/log10/CMakeLists.txt b/runtime/libpgmath/lib/common/log10/CMakeLists.txt +index b4c7d621f..a04eeb87b 100644 +--- a/runtime/libpgmath/lib/common/log10/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/log10/CMakeLists.txt +@@ -24,31 +24,31 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10-avx2_1") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10-avx512_1") + + + # Vector, Two elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10-avx2_2") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=2 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=2 -D_CPU=avx512") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10-avx512_2") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_VL=4 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_VL=4 -D_CPU=avx2") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10-avx2_4") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=4 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=4 -D_CPU=avx512") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10-avx512_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_VL=8 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_VL=8 -D_CPU=avx512") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10-avx512_8") + + +diff --git a/runtime/libpgmath/lib/common/log10f/CMakeLists.txt b/runtime/libpgmath/lib/common/log10f/CMakeLists.txt +index 1f24eb3d8..f6d757345 100644 +--- a/runtime/libpgmath/lib/common/log10f/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/log10f/CMakeLists.txt +@@ -41,36 +41,36 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR_LEGACY}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-avx2_1") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-avx512_1") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR_LEGACY}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-avx2_4") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D__AVX512VL__") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D__AVX512VL__") + libmath_add_object_library("${SRCS_VECTOR4}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-avx512_4") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_CPU=knl") + libmath_add_object_library("${SRCS_VECTOR4}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-knl_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR_LEGACY}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-avx2_8") + +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D__AVX512VL__") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D__AVX512VL__") + libmath_add_object_library("${SRCS_VECTOR8}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-avx512_8") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_CPU=knl") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_CPU=knl") + libmath_add_object_library("${SRCS_VECTOR8}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-knl_8") + + + # Vector, Sixteen elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D__AVX512F__") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D__AVX512F__") + libmath_add_object_library("${SRCS_VECTOR16}" "${FLAGS_TMP}" "${DEFINITIONS}" "log10f-avx512_16") + +diff --git a/runtime/libpgmath/lib/common/logf/CMakeLists.txt b/runtime/libpgmath/lib/common/logf/CMakeLists.txt +index dc01db066..66aceaf4a 100644 +--- a/runtime/libpgmath/lib/common/logf/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/logf/CMakeLists.txt +@@ -25,24 +25,24 @@ if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + endif() + + # Scalar +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2") + libmath_add_object_library("${SRCS_SCALAR}" "${FLAGS_TMP}" "${DEFINITIONS}" "logf-avx2_1") + + + # Vector, Four elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=4") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=4") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "logf-avx2_4") + + + # Vector, Eight elements +-set(FLAGS_TMP "${FLAGS} -mtune=core-avx2 -march=core-avx2 -D_CPU=avx2 -D_VL=8") ++set(FLAGS_TMP "${FLAGS} /tune:core-avx2 /arch:AVX2 -D_CPU=avx2 -D_VL=8") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "logf-avx2_8") + + + # Vector, Sixteen elements +-set(FLAGS_TMP "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512 -D_CPU=avx512 -D_VL=16") ++set(FLAGS_TMP "${FLAGS} /tune:skylake-avx512 /arch:AVX512 -D_CPU=avx512 -D_VL=16") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "logf-avx512_16") + +-set(FLAGS_TMP "${FLAGS} -mtune=knl -march=knl -D_CPU=knl -D_VL=16") ++set(FLAGS_TMP "${FLAGS} /tune:knl /D__knl /arch:AVX512 -D_CPU=knl -D_VL=16") + libmath_add_object_library("${SRCS_VECTOR}" "${FLAGS_TMP}" "${DEFINITIONS}" "logf-knl_16") + +diff --git a/runtime/libpgmath/lib/common/pow/fma3/CMakeLists.txt b/runtime/libpgmath/lib/common/pow/fma3/CMakeLists.txt +index b66f0f6d8..075e3cacc 100644 +--- a/runtime/libpgmath/lib/common/pow/fma3/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/pow/fma3/CMakeLists.txt +@@ -24,9 +24,9 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(SRCS + vdpow8.cpp + vspow16.cpp) +- set(FLAGS_AVX512 "${FLAGS} -march=skylake-avx512 -mtune=skylake-avx512") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:skylake-avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "pow-avx512") +- set(FLAGS_AVX512 "${FLAGS} -march=knl -mtune=knl") ++ set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:knl /D__knl") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "pow-knl") + endif() + elseif(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "ppc64le") +diff --git a/runtime/libpgmath/lib/common/powi/CMakeLists.txt b/runtime/libpgmath/lib/common/powi/CMakeLists.txt +index fa4ebe042..d952cfdcd 100644 +--- a/runtime/libpgmath/lib/common/powi/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/powi/CMakeLists.txt +@@ -13,11 +13,11 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + if(${LIBPGMATH_SYSTEM_NAME} MATCHES "Linux") + # Set source files + set(CORE2_SRCS fxpowi.c pxpowi.c) +- set_property(SOURCE ${CORE2_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "-march=core2 ") ++ set_property(SOURCE ${CORE2_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "") + set(SANDYBRIDGE_SRCS fypowi.c pypowi.c) +- set_property(SOURCE ${SANDYBRIDGE_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "-march=sandybridge ") ++ set_property(SOURCE ${SANDYBRIDGE_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "/arch:AVX ") + set(KNL_SRCS pzpowi.c) +- set_property(SOURCE ${KNL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=knl -march=knl ") ++ set_property(SOURCE ${KNL_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "/tune:knl /D__knl /arch:AVX512 ") + set(SRCS + ${CORE2_SRCS} + ${SANDYBRIDGE_SRCS} +diff --git a/runtime/libpgmath/lib/common/sincos/CMakeLists.txt b/runtime/libpgmath/lib/common/sincos/CMakeLists.txt +index 037bb0ce6..e6cd8412a 100644 +--- a/runtime/libpgmath/lib/common/sincos/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/sincos/CMakeLists.txt +@@ -22,19 +22,19 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + set_property(TARGET gssincos4 APPEND PROPERTY COMPILE_DEFINITIONS SINCOS=__mth_sincos PRECSIZE=4 VLEN=4) + libmath_add_object_library("${SRCS}" "${FLAGS}" "${DEFINITIONS}" "gdsincos2") + set_property(TARGET gdsincos2 APPEND PROPERTY COMPILE_DEFINITIONS SINCOS=__mth_dsincos PRECSIZE=8 VLEN=2) +- set_property(TARGET gssincos4 gdsincos2 APPEND_STRING PROPERTY COMPILE_FLAGS "-march=core2 ") ++ set_property(TARGET gssincos4 gdsincos2 APPEND_STRING PROPERTY COMPILE_FLAGS "") + + libmath_add_object_library("${SRCS}" "${FLAGS}" "${DEFINITIONS}" "gssincos8") + set_property(TARGET gssincos8 APPEND PROPERTY COMPILE_DEFINITIONS SINCOS=__mth_sincos PRECSIZE=4 VLEN=8) + libmath_add_object_library("${SRCS}" "${FLAGS}" "${DEFINITIONS}" "gdsincos4") + set_property(TARGET gdsincos4 APPEND PROPERTY COMPILE_DEFINITIONS SINCOS=__mth_dsincos PRECSIZE=8 VLEN=4) +- set_property(TARGET gssincos8 gdsincos4 APPEND_STRING PROPERTY COMPILE_FLAGS "-march=sandybridge ") ++ set_property(TARGET gssincos8 gdsincos4 APPEND_STRING PROPERTY COMPILE_FLAGS "/arch:AVX ") + + libmath_add_object_library("${SRCS}" "${FLAGS}" "${DEFINITIONS}" "gssincos16") + set_property(TARGET gssincos16 APPEND PROPERTY COMPILE_DEFINITIONS SINCOS=__mth_sincos PRECSIZE=4 VLEN=16) + libmath_add_object_library("${SRCS}" "${FLAGS}" "${DEFINITIONS}" "gdsincos8") + set_property(TARGET gdsincos8 APPEND PROPERTY COMPILE_DEFINITIONS SINCOS=__mth_dsincos PRECSIZE=8 VLEN=8) +- set_property(TARGET gssincos16 gdsincos8 APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=knl -march=knl ") ++ set_property(TARGET gssincos16 gdsincos8 APPEND_STRING PROPERTY COMPILE_FLAGS "/tune:knl /D__knl /arch:AVX512 ") + + # Set source files and compilation flags + set(FLAGS "${FLAGS} -Wno-attributes") +@@ -42,9 +42,9 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(SRC_VECTOR fd_sincos_vector.cpp) + set(SRC_SCALAR fd_sincos_scalar.cpp) + +- set(AVX2_FLAGS "${FLAGS} -mtune=core-avx2 -march=core-avx2") +- set(AVX512_FLAGS "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512") +- set(KNL_FLAGS "${FLAGS} -mtune=knl -march=knl") ++ set(AVX2_FLAGS "${FLAGS} /tune:core-avx2 /arch:AVX2") ++ set(AVX512_FLAGS "${FLAGS} /tune:skylake-avx512 /arch:AVX512") ++ set(KNL_FLAGS "${FLAGS} /tune:knl /D__knl /arch:AVX512") + + # SINCOS + libmath_add_object_library("${SRC_SCALAR}" "${AVX2_FLAGS}" "${DEFINITIONS} -DSINCOS" "fd_sincos_1_avx2") +@@ -90,9 +90,9 @@ if(${LIBPGMATH_SYSTEM_PROCESSOR} MATCHES "x86_64") + set(SRC_VECTOR fd_sincos_vector.cpp) + set(SRC_SCALAR fd_sincos_scalar.cpp) + +- set(AVX2_FLAGS "${FLAGS} -mtune=core-avx2 -march=core-avx2") +- set(AVX512_FLAGS "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512") +- set(KNL_FLAGS "${FLAGS} -mtune=knl -march=knl") ++ set(AVX2_FLAGS "${FLAGS} /tune:core-avx2 /arch:AVX2") ++ set(AVX512_FLAGS "${FLAGS} /tune:skylake-avx512 /arch:AVX512") ++ set(KNL_FLAGS "${FLAGS} /tune:knl /D__knl /arch:AVX512") + + # SINCOS + libmath_add_object_library("${SRC_SCALAR}" "${AVX2_FLAGS}" "${DEFINITIONS} -DSINCOS" "fd_sincos_1_avx2") +diff --git a/runtime/libpgmath/lib/common/sincosf/CMakeLists.txt b/runtime/libpgmath/lib/common/sincosf/CMakeLists.txt +index 583c82320..2d2c6edf9 100644 +--- a/runtime/libpgmath/lib/common/sincosf/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/sincosf/CMakeLists.txt +@@ -13,9 +13,9 @@ set(DEFINITIONS "${DEFINITIONS} -DPGI") + set(SRC_VECTOR fs_sincos_vector.cpp) + set(SRC_SCALAR fs_sincos_scalar.cpp) + +-set(AVX2_FLAGS "${FLAGS} -mtune=core-avx2 -march=core-avx2") +-set(AVX512_FLAGS "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512") +-set(KNL_FLAGS "${FLAGS} -mtune=knl -march=knl") ++set(AVX2_FLAGS "${FLAGS} /tune:core-avx2 /arch:AVX2") ++set(AVX512_FLAGS "${FLAGS} /tune:skylake-avx512 /arch:AVX512") ++set(KNL_FLAGS "${FLAGS} /tune:knl /D__knl /arch:AVX512") + + # SINCOS + libmath_add_object_library("${SRC_SCALAR}" "${AVX2_FLAGS}" "${DEFINITIONS} -DSINCOS" "fs_sincos_1_avx2") +diff --git a/runtime/libpgmath/lib/common/tanf/CMakeLists.txt b/runtime/libpgmath/lib/common/tanf/CMakeLists.txt +index 2ead60f2a..9b94dec81 100644 +--- a/runtime/libpgmath/lib/common/tanf/CMakeLists.txt ++++ b/runtime/libpgmath/lib/common/tanf/CMakeLists.txt +@@ -10,9 +10,9 @@ get_property(FLAGS GLOBAL PROPERTY "FLAGS_L1") + + # Set source files and compilation flags + set(COREAVX2_SRCS fs_tan_1_avx2.cpp fs_tan_4_avx2.cpp fs_tan_8_avx2.cpp) +-set_property(SOURCE ${COREAVX2_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=core-avx2 -march=core-avx2 ") ++set_property(SOURCE ${COREAVX2_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "/tune:core-avx2 /arch:AVX2 ") + set(SKYLAKE_SRCS fs_tan_16_avx512.cpp) +-set_property(SOURCE ${SKYLAKE_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "-mtune=skylake-avx512 -march=skylake-avx512 ") ++set_property(SOURCE ${SKYLAKE_SRCS} APPEND_STRING PROPERTY COMPILE_FLAGS "/tune:skylake-avx512 /arch:AVX512 ") + + # Set source files + set(SRCS +diff --git a/runtime/libpgmath/lib/x86_64/atan/fma3/CMakeLists.txt b/runtime/libpgmath/lib/x86_64/atan/fma3/CMakeLists.txt +index f70feb16e..8a00261e5 100644 +--- a/runtime/libpgmath/lib/x86_64/atan/fma3/CMakeLists.txt ++++ b/runtime/libpgmath/lib/x86_64/atan/fma3/CMakeLists.txt +@@ -17,7 +17,7 @@ set(SRCS + libmath_add_object_library("${SRCS}" "${FLAGS} -mfma -mavx2" "${DEFINITIONS}" "") + set(SRCS + vsatan16.cpp) +-set(FLAGS_AVX512 "${FLAGS} -march=skylake-avx512 -mtune=skylake-avx512") ++set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:skylake-avx512") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "atan-avx512") +-set(FLAGS_AVX512 "${FLAGS} -march=knl -mtune=knl") ++set(FLAGS_AVX512 "${FLAGS} /arch:AVX512 /tune:knl /D__knl") + libmath_add_object_library("${SRCS}" "${FLAGS_AVX512}" "${DEFINITIONS}" "atan-knl") +diff --git a/runtime/libpgmath/lib/x86_64/fast/CMakeLists.txt b/runtime/libpgmath/lib/x86_64/fast/CMakeLists.txt +index 1a5b39b9a..e1e39fa84 100644 +--- a/runtime/libpgmath/lib/x86_64/fast/CMakeLists.txt ++++ b/runtime/libpgmath/lib/x86_64/fast/CMakeLists.txt +@@ -12,7 +12,7 @@ get_property(FLAGS GLOBAL PROPERTY "FLAGS_X8664_L2") + set(SRCS + fastcdiv.S + fastmod.S) +-libmath_add_object_library("${SRCS}" "${FLAGS} -mtune=skylake-avx512 -march=skylake-avx512" "${DEFINITIONS}" "") ++libmath_add_object_library("${SRCS}" "${FLAGS} /tune:skylake-avx512 /arch:AVX512" "${DEFINITIONS}" "") + + set(TARGET_NAME "mthdecls") + list(APPEND PREPROCESSOR "${CMAKE_C_COMPILER} -E -DMTH_CMPLX_C99_ABI -DMTH_NO_STD_MATH_HDRS -dM ${CMAKE_CURRENT_SOURCE_DIR}/../${TARGET_NAME}.h") +@@ -40,5 +40,5 @@ endif() + include_directories(${CMAKE_CURRENT_BINARY_DIR}) + set(SRCS + fastmath.S) +-libmath_add_object_library("${SRCS}" "-m64 -O3 -mtune=skylake-avx512 -march=skylake-avx512" "${DEFINITIONS}" "fastmath") ++libmath_add_object_library("${SRCS}" "-m64 -O3 /tune:skylake-avx512 /arch:AVX512" "${DEFINITIONS}" "fastmath") + add_dependencies(fastmath mthdecls) diff --git a/ports/pgmath/portfile.cmake b/ports/pgmath/portfile.cmake index e46843374c3b6a..bf499cf7a58412 100644 --- a/ports/pgmath/portfile.cmake +++ b/ports/pgmath/portfile.cmake @@ -7,12 +7,17 @@ vcpkg_download_distfile( SHA512 4a795e59c1c930a1f19963336881134037332eadc8bdd3206205f8affdbac938a177db603bfd03f0783a84be38818e21c8ec09a0f1089252e1328cecd8f26ff1 ) +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + set(PATCHES clang-cl-flags.patch) +endif() + vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO flang-compiler/flang REF 0df85a22ae141078658569a0e1b3745afd702e45 SHA512 f7195fbf0885dd767ff7f8ab48688586f4c9995dc81d619d4a315e3a3a8b1af019232410aa4eff1e85ed910281338dc6ebb54f55d34534c3d92766b6e1a74149 PATCHES "${PGMATH_PATCH}" + ${PATCHES} build_only_one_kind.patch werror.patch ) diff --git a/ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake index 7e605816735872..f18af7ca5fc10f 100644 --- a/ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake +++ b/ports/vcpkg-fortran/x_vcpkg_find_fortran.cmake @@ -31,4 +31,5 @@ vcpkg_configure_cmake(... #]===] function(x_vcpkg_find_fortran) cmake_parse_arguments(PARSE_ARGV 0 "arg" "" "OUT_OPTIONS;OUT_OPTIONS_RELEASE;OUT_OPTIONS_DEBUG" "") + set(${arg_OUT_OPTIONS} "-DVCPKG_SETUP_CMAKE_PROGRAM_PATH:BOOL=OFF" PARENT_SCOPE) # to avoid flang from llvm to be picked up endfunction() From 36aa42c2da6b72b10e4e1badf1abf8a36a719bfa Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 13 May 2022 17:54:15 +0200 Subject: [PATCH 117/141] but osx pgmath on baseline --- scripts/ci.baseline.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 1db0a2b13a4c72..7575712a1612da 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -886,6 +886,7 @@ pfring:x64-osx=fail # pfring on Linux currently fails because its build scripts enable warnings as # errors, and warnings trigger with the Linux kernel headers in the Azure images. pfring:x64-linux=fail +pgmath:x64-osx=fail pixman:arm-uwp=fail platform-folders:arm-uwp=fail platform-folders:x64-uwp=fail From 23486eb7683a4f903ce8a5771dfc78a4206eedc9 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 13 May 2022 17:54:52 +0200 Subject: [PATCH 118/141] version stuff --- versions/p-/pgmath.json | 2 +- versions/v-/vcpkg-fortran.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/versions/p-/pgmath.json b/versions/p-/pgmath.json index 1313c6233db499..cc92eee21056f7 100644 --- a/versions/p-/pgmath.json +++ b/versions/p-/pgmath.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "b6b4d0b26f1ec639f0fbf6a94ce99d84877fb1dc", + "git-tree": "6f681ce3b6e748ed291c18c6594b3844fcd74aed", "version-date": "2022-04-23", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index a86170420a059d..e2c94d6dc67576 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "5e41b4ae727265d23e89042f7958849f62ad8bd1", + "git-tree": "38a8094e00dc5440adca7eeb80f86f3109ea16a7", "version-date": "2022-02-22", "port-version": 0 } From c6dd4fec61b5e5f8383566afdd031ecdd8131980 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 13 May 2022 23:35:40 +0200 Subject: [PATCH 119/141] regression fixes --- ports/lapack-reference/portfile.cmake | 11 +++++++++++ scripts/ci.baseline.txt | 3 +++ 2 files changed, 14 insertions(+) diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index e06c5019e792a3..8033d0c8a85401 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -100,6 +100,17 @@ if("cblas" IN_LIST FEATURES) endif() vcpkg_fixup_pkgconfig() +set(pcfile "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/lapack.pc") +if(EXISTS "${pcfile}") + # This means some other port is supplying lapack + file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc") +endif() +set(pcfile "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/blas.pc") +if(EXISTS "${pcfile}") + # This means some other port is supplying blas + file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc") +endif() + # Handle copyright file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index 7575712a1612da..9fd7556ee7c2a0 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -886,7 +886,10 @@ pfring:x64-osx=fail # pfring on Linux currently fails because its build scripts enable warnings as # errors, and warnings trigger with the Linux kernel headers in the Azure images. pfring:x64-linux=fail +# Some WError build failure pgmath:x64-osx=fail +# For some reason sometimes flaky in CI. (Not required on UWP any way) +pgmath:x64-uwp=skip pixman:arm-uwp=fail platform-folders:arm-uwp=fail platform-folders:x64-uwp=fail From 80ff6f8ff4849401ce77f072b4eb1e4fe0e6c61c Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 13 May 2022 23:36:00 +0200 Subject: [PATCH 120/141] version stuff --- versions/l-/lapack-reference.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index 8341db042d7ee0..728769093aea2e 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "2d6641367b0c21de9dc6685d47c486d0b9ebd05d", + "git-tree": "953bb01efbd2004efb2492e64ba1b07b628aa8f9", "version": "3.10.0", "port-version": 2 }, From 35707388b938c394e67411bbe7e3cf1ef8d86d86 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 14 May 2022 11:14:08 +0200 Subject: [PATCH 121/141] handle pc files correctly by moving it all into the metaports --- ports/blas/portfile.cmake | 11 ++++----- ports/lapack-reference/portfile.cmake | 17 +++++++------- ports/lapack/lapack.pc.in | 5 ++-- ports/lapack/portfile.cmake | 5 ++++ .../portfile.cmake | 23 +++++++++++++++++++ .../vcpkg-fortran-flang-classic.pc.in | 8 +++++++ ports/vcpkg-fortran-ifort/portfile.cmake | 7 ++++++ .../vcpkg-fortran-ifort.pc.in | 8 +++++++ ports/vcpkg-fortran/portfile.cmake | 5 ++++ ports/vcpkg-fortran/vcpkg-fortran.pc.in | 9 ++++++++ 10 files changed, 81 insertions(+), 17 deletions(-) create mode 100644 ports/vcpkg-fortran-flang-classic/vcpkg-fortran-flang-classic.pc.in create mode 100644 ports/vcpkg-fortran-ifort/vcpkg-fortran-ifort.pc.in create mode 100644 ports/vcpkg-fortran/vcpkg-fortran.pc.in diff --git a/ports/blas/portfile.cmake b/ports/blas/portfile.cmake index faf556b1eccd71..df49db31493306 100644 --- a/ports/blas/portfile.cmake +++ b/ports/blas/portfile.cmake @@ -12,18 +12,15 @@ if(ver_str STREQUAL "default") set(cflags "-framework Accelerate") elseif(VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm64") set(BLA_VENDOR Generic) - set(requires "") - set(NO_PC_INSTALL TRUE) + set(requires "blas-reference vcpkg-fortran") else() set(BLA_VENDOR OpenBLAS) set(requires openblas) endif() - if(NOT NO_PC_INSTALL) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) - if(NOT VCPKG_BUILD_TYPE) - configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) - endif() + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/blas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" @ONLY) endif() # For possible overlays: diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 8033d0c8a85401..61054427600d9c 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -100,15 +100,16 @@ if("cblas" IN_LIST FEATURES) endif() vcpkg_fixup_pkgconfig() -set(pcfile "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/lapack.pc") -if(EXISTS "${pcfile}") - # This means some other port is supplying lapack - file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc") +file(RENAME "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack-reference.pc") +if(NOT VCPKG_BUILD_TYPE) + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack-reference.pc") endif() -set(pcfile "${CURRENT_INSTALLED_DIR}/lib/pkgconfig/blas.pc") -if(EXISTS "${pcfile}") - # This means some other port is supplying blas - file(REMOVE "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc") + +if(NOT "noblas" IN_LIST FEATURES) + file(RENAME "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/blas.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas-reference.pc") + if(NOT VCPKG_BUILD_TYPE) + file(RENAME "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas.pc" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/blas-reference.pc") + endif() endif() # Handle copyright diff --git a/ports/lapack/lapack.pc.in b/ports/lapack/lapack.pc.in index 49f7f103dc1420..055123058520b5 100644 --- a/ports/lapack/lapack.pc.in +++ b/ports/lapack/lapack.pc.in @@ -1,7 +1,8 @@ prefix=${pcfiledir}/../.. +libdir=${prefix}/lib -Name: BLAS -Description: Implementation of BLAS +Name: LAPACK +Description: Implementation of LAPACK Version: Requires: @requires@ Libs: @libs@ diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 33884457c0a086..6e751628814ccc 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -35,5 +35,10 @@ if(ver_str STREQUAL "default") else() configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) + set(requires "vcpkg-fortran lapack-reference") + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" @ONLY) + if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" @ONLY) + endif() endif() endif() \ No newline at end of file diff --git a/ports/vcpkg-fortran-flang-classic/portfile.cmake b/ports/vcpkg-fortran-flang-classic/portfile.cmake index e057ac2f9fcc7a..1f1cba4d67966b 100644 --- a/ports/vcpkg-fortran-flang-classic/portfile.cmake +++ b/ports/vcpkg-fortran-flang-classic/portfile.cmake @@ -15,3 +15,26 @@ file(COPY configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) +find_library(PGMATH NAMES libpgmath pgmath PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) +cmake_path(GET PGMATH FILENAME pgmathlibname) +find_library(flanglib NAMES libflang flang PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) +cmake_path(GET flanglib FILENAME flanglibname) +find_library(flangrtilib NAMES libflangrti flangrti PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) +cmake_path(GET flangrtilib FILENAME flangrtilibname) +if(VCPKG_OPENMP) + find_library(omplib NAMES libomp omp PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET omplib FILENAME omplibname) +else() + find_library(omplib NAMES libompstub ompstub PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) + cmake_path(GET omplib FILENAME omplibname) +endif() +find_library(flangmainlib NAMES libflangmain flangmain PATHS "${CURRENT_INSTALLED_DIR}/lib" NO_DEFAULT_PATHS) +cmake_path(GET flangmainlib FILENAME flangmainlibname) + +vcpkg_list(SET flang_compile_libs "") +vcpkg_list(SET libs "-l${flanglibname} -l${flangrtilibname} -l${pgmathlibname} -l${omplibname}") + +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-fortran-flang-classic.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/vcpkg-fortran-flang-classic.pc" @ONLY) +if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-fortran-flang-classic.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/vcpkg-fortran-flang-classic.pc" @ONLY) +endif() diff --git a/ports/vcpkg-fortran-flang-classic/vcpkg-fortran-flang-classic.pc.in b/ports/vcpkg-fortran-flang-classic/vcpkg-fortran-flang-classic.pc.in new file mode 100644 index 00000000000000..d03004e4b659fa --- /dev/null +++ b/ports/vcpkg-fortran-flang-classic/vcpkg-fortran-flang-classic.pc.in @@ -0,0 +1,8 @@ +prefix=${pcfiledir}/../.. +libdir=${prefix}/lib + +Name: vcpkg-fortran-flang-classic +Description: Helper for adding required flags for flang-classic. +Version: +Libs: -L"${libdir}" @libs@ +Cflags: @cflags@ diff --git a/ports/vcpkg-fortran-ifort/portfile.cmake b/ports/vcpkg-fortran-ifort/portfile.cmake index a14f6c83ada542..453408591bc616 100644 --- a/ports/vcpkg-fortran-ifort/portfile.cmake +++ b/ports/vcpkg-fortran-ifort/portfile.cmake @@ -14,3 +14,10 @@ file(COPY configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) + +set(LIBDIR "\${prefix}/share/ifort") +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-fortran-ifort.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/vcpkg-fortran-ifort.pc" @ONLY) +if(NOT VCPKG_BUILD_TYPE) + set(LIBDIR "\${prefix}/../share/ifort") + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-fortran-ifort.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/vcpkg-fortran-ifort.pc" @ONLY) +endif() diff --git a/ports/vcpkg-fortran-ifort/vcpkg-fortran-ifort.pc.in b/ports/vcpkg-fortran-ifort/vcpkg-fortran-ifort.pc.in new file mode 100644 index 00000000000000..2e40619eadae4c --- /dev/null +++ b/ports/vcpkg-fortran-ifort/vcpkg-fortran-ifort.pc.in @@ -0,0 +1,8 @@ +prefix=${pcfiledir}/../.. +libdir=@LIBDIR@ + +Name: vcpkg-fortran-ifort +Description: Helper for adding required flags for ifort. +Version: +Libs: -L"${libdir}" @libs@ +Cflags: @cflags@ diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake index 4d0e90b78c0caf..d9195b685c3848 100644 --- a/ports/vcpkg-fortran/portfile.cmake +++ b/ports/vcpkg-fortran/portfile.cmake @@ -10,3 +10,8 @@ file(COPY "${CMAKE_CURRENT_LIST_DIR}/${FUNCTION_NAME}.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") configure_file("${VCPKG_ROOT_DIR}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-port-config.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-port-config.cmake" @ONLY) +set(requires "${PORT_IMPL}") +configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-fortran.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/vcpkg-fortran.pc" @ONLY) +if(NOT VCPKG_BUILD_TYPE) + configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-fortran.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/vcpkg-fortran.pc" @ONLY) +endif() \ No newline at end of file diff --git a/ports/vcpkg-fortran/vcpkg-fortran.pc.in b/ports/vcpkg-fortran/vcpkg-fortran.pc.in new file mode 100644 index 00000000000000..b68342986b242a --- /dev/null +++ b/ports/vcpkg-fortran/vcpkg-fortran.pc.in @@ -0,0 +1,9 @@ +prefix=${pcfiledir}/../.. +libdir=${prefix}/lib + +Name: vcpkg-fortran +Description: Fortran helper pc file +Version: +Requires: @requires@ +Libs: @libs@ +Cflags: @cflags@ From 2c7af5cc0092d34a5b7a5d42e51583d8a91e7f14 Mon Sep 17 00:00:00 2001 From: Alexander Neumann Date: Sat, 14 May 2022 11:14:40 +0200 Subject: [PATCH 122/141] overwrite version --- versions/b-/blas.json | 2 +- versions/l-/lapack-reference.json | 2 +- versions/l-/lapack.json | 2 +- versions/v-/vcpkg-fortran-flang-classic.json | 2 +- versions/v-/vcpkg-fortran-ifort.json | 2 +- versions/v-/vcpkg-fortran.json | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/versions/b-/blas.json b/versions/b-/blas.json index 1b639ee8c2c258..34ee40ada8bdb2 100644 --- a/versions/b-/blas.json +++ b/versions/b-/blas.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "1c2e9dae2bd358b054e8c44df75b6606bea82981", + "git-tree": "8d747e78d764fcacf661fcad8bc428dbd1c45f32", "version-string": "default", "port-version": 0 }, diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index 728769093aea2e..c932b27013b526 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "953bb01efbd2004efb2492e64ba1b07b628aa8f9", + "git-tree": "fad3e640d4b4a583ba648eb5103eb4e0c8d24e7d", "version": "3.10.0", "port-version": 2 }, diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index 1fa731cc03fe7e..fa78fb4c2be6f4 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "42ca5126e8f624955a32610f3cf74faf8a022d92", + "git-tree": "844fc0972cc094e338d8675c204c3bfafff908a6", "version-string": "default", "port-version": 0 }, diff --git a/versions/v-/vcpkg-fortran-flang-classic.json b/versions/v-/vcpkg-fortran-flang-classic.json index a663562686e2aa..ea5f83ccf73812 100644 --- a/versions/v-/vcpkg-fortran-flang-classic.json +++ b/versions/v-/vcpkg-fortran-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "82f5bcc9165736802cc9718b4c1b0c5f45a49966", + "git-tree": "d2591d7bff50c685db27d6d12486e18616b8f9ec", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran-ifort.json b/versions/v-/vcpkg-fortran-ifort.json index 56a23c0ee81595..139c0dc2d5af78 100644 --- a/versions/v-/vcpkg-fortran-ifort.json +++ b/versions/v-/vcpkg-fortran-ifort.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "2b27db4ea3cdb41fd0c68e1e7681bc878f5dd810", + "git-tree": "0cf660ee35a4b141631a0aa991a84e1d0d1ee974", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index e2c94d6dc67576..b8a51c8b9d92d8 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "38a8094e00dc5440adca7eeb80f86f3109ea16a7", + "git-tree": "a2481bc5b5a27b09666938228f6b65c2105073f3", "version-date": "2022-02-22", "port-version": 0 } From 84b566bf4ea0a13501a7e3191e7ef3a2e0b25677 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 16 May 2022 12:03:00 +0200 Subject: [PATCH 123/141] lapack update. --- ports/lapack-reference/portfile.cmake | 11 +++++++++-- ports/lapack-reference/vcpkg.json | 3 +-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 61054427600d9c..083fcdf0218540 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -10,7 +10,7 @@ endif() SET(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) -set(lapack_ver 3.10.0) +set(lapack_ver 3.10.1) x_vcpkg_find_fortran(OUT_OPTIONS Fortran_opts OUT_OPTIONS_RELEASE Fortran_opts_rel @@ -24,7 +24,7 @@ vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO "Reference-LAPACK/lapack" REF "v${lapack_ver}" - SHA512 56055000c241bab8f318ebd79249ea012c33be0c4c3eca6a78e247f35ad9e8088f46605a0ba52fd5ad3e7898be3b7bc6c50ceb3af327c4986a266b06fe768cbf + SHA512 0500bbbb48483208c0a35b74972ff0059c389da6032824a2079637266a99fa980882eedf7f1fc490219ee4ff27812ac8c6afe118e25f40a9c2387e7b997762fb HEAD_REF master PATCHES ${PATCHES} ) @@ -46,6 +46,11 @@ if("noblas" IN_LIST FEATURES) set(USE_OPTIMIZED_BLAS ON) endif() +# Python3 for testing summary. +#vcpkg_find_acquire_program(PYTHON3) +#get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY) +#vcpkg_add_to_path("${PYTHON3_DIR}") + vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS @@ -55,6 +60,8 @@ vcpkg_cmake_configure( "-DCMAKE_POLICY_DEFAULT_CMP0067=NEW" "-DCMAKE_POLICY_DEFAULT_CMP0083=NEW" ${Fortran_opts} + #"-DBUILD_TESTING:BOOL=ON" + #"-DPYTHON_EXECUTABLE=${PYTHON3}" OPTIONS_DEBUG ${Fortran_opts_rel} OPTIONS_RELEASE ${Fortran_opts_dbg} ) diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index e415b28edb7a88..2afe61754d6c4d 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -1,7 +1,6 @@ { "name": "lapack-reference", - "version": "3.10.0", - "port-version": 2, + "version": "3.10.1", "description": "LAPACK - Linear Algebra PACKage", "homepage": "http://www.netlib.org/lapack/", "license": "BSD-3-Clause-Open-MPI", From e1dc479b6d84e758262a0bf1025187bbce100248 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 16 May 2022 12:03:15 +0200 Subject: [PATCH 124/141] compiler flags tuning. --- .../vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake | 4 ++-- ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake | 6 +++++- ports/vcpkg-fortran/portfile.cmake | 2 +- ports/vcpkg-fortran/vcpkg.json | 6 +++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake index 958c37a79ca4eb..1f2d3ae0284ef8 100644 --- a/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake +++ b/ports/vcpkg-fortran-flang-classic/x_vcpkg_find_fortran.cmake @@ -105,14 +105,14 @@ function(x_vcpkg_find_fortran) "-DCMAKE_EXE_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flangmainlibname} ${flang_link_default_lib}" "-DCMAKE_SHARED_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flang_link_default_lib}" "-DCMAKE_STATIC_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flang_link_default_lib}" - "-DCMAKE_Fortran_FLAGS_INIT:STRING=${arch_flag} -Mreentrant -I ${CURRENT_INSTALLED_DIR}/include ${static_flang}${flang_compile_libs} -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${extra_uwp_flags}" + "-DCMAKE_Fortran_FLAGS_INIT:STRING=${arch_flag} -Mrecursive -nomp -I ${CURRENT_INSTALLED_DIR}/include ${static_flang}${flang_compile_libs} -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${extra_uwp_flags}" #"-DCMAKE_Fortran_LINKER_FLAGS_INIT=/LIBPATH:${CURRENT_INSTALLED_DIR}/lib ${flang_link_default_lib}" ) vcpkg_list(APPEND additional_cmake_args_dbg "-DCMAKE_EXE_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flangmainlibname} ${flang_link_default_lib}" "-DCMAKE_SHARED_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flang_link_default_lib}" "-DCMAKE_STATIC_LINKER_FLAGS_INIT:STRING=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flang_link_default_lib}" - "-DCMAKE_Fortran_FLAGS_INIT:STRING=${arch_flag} -Mreentrant -I ${CURRENT_INSTALLED_DIR}/include ${static_flang}${flang_compile_libs} -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${extra_uwp_flags}" + "-DCMAKE_Fortran_FLAGS_INIT:STRING=${arch_flag} -Mrecursive -nomp -I ${CURRENT_INSTALLED_DIR}/include ${static_flang}${flang_compile_libs} -Wl,/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${extra_uwp_flags}" #"-DCMAKE_Fortran_LINKER_FLAGS_INIT=/LIBPATH:${CURRENT_INSTALLED_DIR}/debug/lib ${flang_link_default_lib}" ) set(Z_VCPKG_USE_INTERNAL_Fortran TRUE CACHE INTERNAL "") diff --git a/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake index 48f8ad20accbed..de9add54878eab 100644 --- a/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake +++ b/ports/vcpkg-fortran-ifort/x_vcpkg_find_fortran.cmake @@ -42,8 +42,10 @@ function(x_vcpkg_find_fortran) if(WIN32) message(STATUS "Using internal Fortran Compiler ifort!") set(PATH_SUFFIX "bin/intel64") + set(mach_flag "/Qm64 /QxSSE4.2") if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") string(APPEND PATH_SUFFIX "_ia32") + set(mach_flag "/Qm32") endif() set(search_path "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/vcpkg-tool-ifort/Intel/Compiler/12.0") find_program(IFORT NAMES ifort${VCPKG_HOST_EXECUTABLE_SUFFIX} PATHS "${search_path}/compiler/2022.0.3/windows" PATH_SUFFIXES "${PATH_SUFFIX}" NO_DEFAULT_PATH) @@ -61,7 +63,9 @@ function(x_vcpkg_find_fortran) vcpkg_list(APPEND additional_cmake_args "-DCMAKE_TRY_COMPILE_PLATFORM_VARIABLES=CMAKE_Fortran_FLAGS;CMAKE_Fortran_FLAGS_RELEASE;CMAKE_Fortran_FLAGS_DEBUG;CMAKE_Fortran_STANDARD_LIBRARIES;CMAKE_EXE_LINKER_FLAGS;CMAKE_EXE_LINKER_FLAGS_RELEASE;CMAKE_EXE_LINKER_FLAGS_DEBUG;CMAKE_STATIC_LINKER_FLAGS;CMAKE_STATIC_LINKER_FLAGS_DEBUG;CMAKE_STATIC_LINKER_FLAGS_RELEASE;CMAKE_SHARED_LINKER_FLAGS;CMAKE_SHARED_LINKER_FLAGS_RELEASE;CMAKE_SHARED_LINKER_FLAGS_DEBUG;CMAKE_REQUIRED_LINK_OPTIONS" "-DCMAKE_Fortran_COMPILER=${IFORT}" - "-DCMAKE_Fortran_FLAGS_INIT:STRING=/Z7 /names:lowercase /assume:underscore /assume:protect_parens") + "-DCMAKE_Fortran_FLAGS_INIT:STRING=/Z7 /names:lowercase /assume:underscore /assume:protect_parens /fp:strict ${mach_flag} /Qopenmp-" + "-DCMAKE_Fortran_FLAGS_DEBUG_INIT:STRING=/Od /Ob0" + "-DCMAKE_Fortran_FLAGS_RELEASE_INIT:STRING=/O2 /Ot") set(Z_VCPKG_USE_INTERNAL_Fortran TRUE CACHE INTERNAL "") set(Z_VCPKG_IS_INTERNAL_Fortran_INTEL TRUE CACHE INTERNAL "") else() diff --git a/ports/vcpkg-fortran/portfile.cmake b/ports/vcpkg-fortran/portfile.cmake index d9195b685c3848..2625a58d3e043a 100644 --- a/ports/vcpkg-fortran/portfile.cmake +++ b/ports/vcpkg-fortran/portfile.cmake @@ -2,7 +2,7 @@ set(VCPKG_POLICY_CMAKE_HELPER_PORT enabled) set(FUNCTION_NAME x_vcpkg_find_fortran) if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) set(PORT_IMPL vcpkg-fortran-flang-classic) - if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") + if(VCPKG_TARGET_ARCHITECTURE MATCHES "(x86|x64)") set(PORT_IMPL vcpkg-fortran-ifort) endif() endif() diff --git a/ports/vcpkg-fortran/vcpkg.json b/ports/vcpkg-fortran/vcpkg.json index 18535fe51960a9..120894f5071885 100644 --- a/ports/vcpkg-fortran/vcpkg.json +++ b/ports/vcpkg-fortran/vcpkg.json @@ -7,15 +7,15 @@ "dependencies": [ { "name": "vcpkg-fortran-flang-classic", - "platform": "(windows & !mingw) & (x64 | arm64)" + "platform": "(windows & !mingw) & (arm64)" }, { "name": "vcpkg-fortran-ifort", - "platform": "(windows & !mingw) & x86" + "platform": "(windows & !mingw) & (x86|x64)" }, { "name": "vcpkg-ifort-libs", - "platform": "(windows & !mingw) & x86" + "platform": "(windows & !mingw) & (x86|x64)" } ] } From 30eb9ed8b9e4c4b630f1b97b48d212d1931f2a14 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 16 May 2022 12:04:14 +0200 Subject: [PATCH 125/141] format manifest --- ports/vcpkg-fortran/vcpkg.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-fortran/vcpkg.json b/ports/vcpkg-fortran/vcpkg.json index 120894f5071885..1397534b53a34b 100644 --- a/ports/vcpkg-fortran/vcpkg.json +++ b/ports/vcpkg-fortran/vcpkg.json @@ -7,15 +7,15 @@ "dependencies": [ { "name": "vcpkg-fortran-flang-classic", - "platform": "(windows & !mingw) & (arm64)" + "platform": "(windows & !mingw) & arm64" }, { "name": "vcpkg-fortran-ifort", - "platform": "(windows & !mingw) & (x86|x64)" + "platform": "(windows & !mingw) & (x86 | x64)" }, { "name": "vcpkg-ifort-libs", - "platform": "(windows & !mingw) & (x86|x64)" + "platform": "(windows & !mingw) & (x86 | x64)" } ] } From 825803fbf6e84950a43572bba0cf784bfdde9400 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 16 May 2022 12:04:30 +0200 Subject: [PATCH 126/141] version stuff --- versions/baseline.json | 4 ++-- versions/l-/lapack-reference.json | 6 +++--- versions/v-/vcpkg-fortran-flang-classic.json | 2 +- versions/v-/vcpkg-fortran-ifort.json | 2 +- versions/v-/vcpkg-fortran.json | 2 +- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/versions/baseline.json b/versions/baseline.json index c096f750f7c487..99d0062394e2b6 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -3337,8 +3337,8 @@ "port-version": 0 }, "lapack-reference": { - "baseline": "3.10.0", - "port-version": 2 + "baseline": "3.10.1", + "port-version": 0 }, "lastools": { "baseline": "2020-05-09", diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index c932b27013b526..5a43ecd8dedb2f 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,9 +1,9 @@ { "versions": [ { - "git-tree": "fad3e640d4b4a583ba648eb5103eb4e0c8d24e7d", - "version": "3.10.0", - "port-version": 2 + "git-tree": "8ceb6db1fdfd12d0f3af2d71a57d3e89ded8c9d8", + "version": "3.10.1", + "port-version": 0 }, { "git-tree": "da59cc546e4177caca786c3fcec9344c5cb6ad71", diff --git a/versions/v-/vcpkg-fortran-flang-classic.json b/versions/v-/vcpkg-fortran-flang-classic.json index ea5f83ccf73812..086e0f9b13b824 100644 --- a/versions/v-/vcpkg-fortran-flang-classic.json +++ b/versions/v-/vcpkg-fortran-flang-classic.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "d2591d7bff50c685db27d6d12486e18616b8f9ec", + "git-tree": "c768b17217a994a0080ff72ad95f3834bf4007b6", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran-ifort.json b/versions/v-/vcpkg-fortran-ifort.json index 139c0dc2d5af78..685a78c455532a 100644 --- a/versions/v-/vcpkg-fortran-ifort.json +++ b/versions/v-/vcpkg-fortran-ifort.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "0cf660ee35a4b141631a0aa991a84e1d0d1ee974", + "git-tree": "5fd35099ca870a6dbc0ff6c78eb9e3ae53be6781", "version-date": "2022-02-22", "port-version": 0 } diff --git a/versions/v-/vcpkg-fortran.json b/versions/v-/vcpkg-fortran.json index b8a51c8b9d92d8..5b134564375bab 100644 --- a/versions/v-/vcpkg-fortran.json +++ b/versions/v-/vcpkg-fortran.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "a2481bc5b5a27b09666938228f6b65c2105073f3", + "git-tree": "944f316368f6f72bccd2ae4274ba7f7fd6a627b7", "version-date": "2022-02-22", "port-version": 0 } From 7600a822b9b13797096fa8e27cea56ed98448e2a Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 16 May 2022 12:42:30 +0200 Subject: [PATCH 127/141] patch lapacke out --- ports/lapack-reference/lapacke.patch | 16 ++++++++++++++++ ports/lapack-reference/portfile.cmake | 1 + 2 files changed, 17 insertions(+) create mode 100644 ports/lapack-reference/lapacke.patch diff --git a/ports/lapack-reference/lapacke.patch b/ports/lapack-reference/lapacke.patch new file mode 100644 index 00000000000000..964f0e31927fce --- /dev/null +++ b/ports/lapack-reference/lapacke.patch @@ -0,0 +1,16 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1ee66f1..7cec7ca 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -392,8 +392,9 @@ endif() + set(LAPACK_INSTALL_EXPORT_NAME ${LAPACK_INSTALL_EXPORT_NAME_CACHE}) + unset(LAPACK_INSTALL_EXPORT_NAME_CACHE) + +-add_subdirectory(LAPACKE) +- ++if(LAPACKE) ++ add_subdirectory(LAPACKE) ++endif() + + #------------------------------------- + # BLAS++ / LAPACK++ diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 083fcdf0218540..d12e7a830cc523 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -27,6 +27,7 @@ vcpkg_from_github( SHA512 0500bbbb48483208c0a35b74972ff0059c389da6032824a2079637266a99fa980882eedf7f1fc490219ee4ff27812ac8c6afe118e25f40a9c2387e7b997762fb HEAD_REF master PATCHES ${PATCHES} + lapacke.patch ) if(NOT VCPKG_TARGET_IS_WINDOWS) From f90fe7121da2804b1cfece7989464c99f386cfbd Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 16 May 2022 12:42:49 +0200 Subject: [PATCH 128/141] verison stuff --- versions/l-/lapack-reference.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index 5a43ecd8dedb2f..a5d7965c2b5c9c 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,7 +1,7 @@ { "versions": [ { - "git-tree": "8ceb6db1fdfd12d0f3af2d71a57d3e89ded8c9d8", + "git-tree": "a225b24d98b0a2445417e4e9f2d4d18eab74b98a", "version": "3.10.1", "port-version": 0 }, From da524290496ca3afa42ea18a7a01ee239eee0873 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 17 Oct 2022 19:40:09 +0200 Subject: [PATCH 129/141] bump version --- ports/lapack-reference/vcpkg.json | 1 + ports/vcpkg-cmake-get-vars/vcpkg.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index 2afe61754d6c4d..2da85a42193546 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -1,6 +1,7 @@ { "name": "lapack-reference", "version": "3.10.1", + "port-version": 1, "description": "LAPACK - Linear Algebra PACKage", "homepage": "http://www.netlib.org/lapack/", "license": "BSD-3-Clause-Open-MPI", diff --git a/ports/vcpkg-cmake-get-vars/vcpkg.json b/ports/vcpkg-cmake-get-vars/vcpkg.json index 9638bae51b31dc..afbda167f332bc 100644 --- a/ports/vcpkg-cmake-get-vars/vcpkg.json +++ b/ports/vcpkg-cmake-get-vars/vcpkg.json @@ -1,6 +1,6 @@ { "name": "vcpkg-cmake-get-vars", - "version-date": "2022-09-04", + "version-date": "2022-10-17", "documentation": "https://vcpkg.io/en/docs/README.html", "license": "MIT", "dependencies": [ From 389e8f75335ceef33712c214068968841455e98c Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 17 Oct 2022 19:40:55 +0200 Subject: [PATCH 130/141] v db --- versions/baseline.json | 6 +++--- versions/g-/geogram.json | 5 +++++ versions/l-/lapack-reference.json | 5 +++++ versions/v-/vcpkg-cmake-get-vars.json | 5 +++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/versions/baseline.json b/versions/baseline.json index 888ca87a0b218d..17b9cf5856a90f 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2558,7 +2558,7 @@ }, "geogram": { "baseline": "1.7.6", - "port-version": 4 + "port-version": 5 }, "geographiclib": { "baseline": "2.1.1", @@ -3474,7 +3474,7 @@ }, "lapack-reference": { "baseline": "3.10.1", - "port-version": 0 + "port-version": 1 }, "lastools": { "baseline": "2020-05-09", @@ -7693,7 +7693,7 @@ "port-version": 1 }, "vcpkg-cmake-get-vars": { - "baseline": "2022-09-04", + "baseline": "2022-10-17", "port-version": 0 }, "vcpkg-get-python-packages": { diff --git a/versions/g-/geogram.json b/versions/g-/geogram.json index 5421809486cb85..cc5b7174b8e409 100644 --- a/versions/g-/geogram.json +++ b/versions/g-/geogram.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "a5171af35d79c7d4194cff3900ef6297d760be76", + "version": "1.7.6", + "port-version": 5 + }, { "git-tree": "902027c917fa8e2047dd0655721a753305432010", "version": "1.7.6", diff --git a/versions/l-/lapack-reference.json b/versions/l-/lapack-reference.json index c5f07c06b3d8d2..18de61042c8692 100644 --- a/versions/l-/lapack-reference.json +++ b/versions/l-/lapack-reference.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "8640cfff3c679b7ef9757f1cb75e9c963968b3b8", + "version": "3.10.1", + "port-version": 1 + }, { "git-tree": "44ad48321efe7014cd1dc7ab7b46516309e6c395", "version": "3.10.1", diff --git a/versions/v-/vcpkg-cmake-get-vars.json b/versions/v-/vcpkg-cmake-get-vars.json index 17841423d333ab..3f62a1cbcfb2cd 100644 --- a/versions/v-/vcpkg-cmake-get-vars.json +++ b/versions/v-/vcpkg-cmake-get-vars.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "377657ab9d51d5dba97680cd2d8bea4eb9096a44", + "version-date": "2022-10-17", + "port-version": 0 + }, { "git-tree": "898079c6021ced406d7c75f852e67a5e8861db9b", "version-date": "2022-09-04", From 7a8c57755b78a530a138f6465935437876b739c2 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 17 Oct 2022 19:50:32 +0200 Subject: [PATCH 131/141] remove _try_compile overwrite --- scripts/buildsystems/vcpkg.cmake | 41 -------------------------------- 1 file changed, 41 deletions(-) diff --git a/scripts/buildsystems/vcpkg.cmake b/scripts/buildsystems/vcpkg.cmake index 7450a23abc20d6..473efcc0ca8e73 100644 --- a/scripts/buildsystems/vcpkg.cmake +++ b/scripts/buildsystems/vcpkg.cmake @@ -576,47 +576,6 @@ endif() cmake_policy(POP) # Any policies applied to the below macros and functions leak into consumers -# Consumer policies are ignored for the below overriden functions since policies settings are recorded at the time function/macros are being defined - -# Need to override try_compile and try_run to pass some variables in project mode vs src mode -if(NOT Z_VCPKG_CMAKE_IN_TRY_COMPILE) - function(try_compile resultVar bindir srcdir) - cmake_policy(PUSH) - if(POLICY CMP0056) - cmake_policy(SET CMP0056 NEW) - endif() - if(POLICY CMP0067) - cmake_policy(SET CMP0067 NEW) - endif() - z_vcpkg_function_arguments(ARGS) - if(IS_DIRECTORY "${srcdir}") # project try_compile - cmake_parse_arguments(PARSE_ARGV 2 "arg" "" "OUTPUT_VARIABLE" "CMAKE_FLAGS") - if(DEFINED arg_CMAKE_FLAGS) - list(REMOVE_ITEM ARGS CMAKE_FLAGS ${arg_CMAKE_FLAGS}) - endif() - foreach(try_compile_var IN LISTS CMAKE_TRY_COMPILE_PLATFORM_VARIABLES) - if(${try_compile_var}) - list(APPEND arg_CMAKE_FLAGS "-D${try_compile_var}=${${try_compile_var}}") - endif() - endforeach() - if(arg_OUTPUT_VARIABLE) - list(REMOVE_ITEM ARGS OUTPUT_VARIABLE ${arg_OUTPUT_VARIABLE}) - _try_compile(${ARGS} CMAKE_FLAGS ${arg_CMAKE_FLAGS} OUTPUT_VARIABLE ${arg_OUTPUT_VARIABLE}) - else() - _try_compile(${ARGS} CMAKE_FLAGS ${arg_CMAKE_FLAGS}) - endif() - else() # source based try_compile - _try_compile(${ARGS}) - cmake_parse_arguments(PARSE_ARGV 2 "arg" "" "OUTPUT_VARIABLE" "") - endif() - - if(DEFINED arg_OUTPUT_VARIABLE) - set(${arg_OUTPUT_VARIABLE} ${${arg_OUTPUT_VARIABLE}} PARENT_SCOPE) - endif() - set(${resultVar} ${${resultVar}} PARENT_SCOPE) - cmake_policy(POP) - endfunction() -endif() function(add_executable) z_vcpkg_function_arguments(ARGS) From d230a6782e783c3bbd6cefaf08a75d1608c1278a Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 17 Oct 2022 19:53:22 +0200 Subject: [PATCH 132/141] set cmake_minimum_required --- scripts/toolchains/linux.cmake | 3 +++ scripts/toolchains/mingw.cmake | 3 +++ scripts/toolchains/osx.cmake | 3 +++ scripts/toolchains/uwp.cmake | 3 +++ scripts/toolchains/windows.cmake | 3 +++ 5 files changed, 15 insertions(+) diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake index b4485f4bbe6ccd..eb99bbca175057 100644 --- a/scripts/toolchains/linux.cmake +++ b/scripts/toolchains/linux.cmake @@ -1,4 +1,7 @@ if(NOT _VCPKG_LINUX_TOOLCHAIN) + +cmake_minimum_required(VESION 3.24) + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_C_FLAGS VCPKG_CXX_FLAGS VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG diff --git a/scripts/toolchains/mingw.cmake b/scripts/toolchains/mingw.cmake index 195e337f78c0f4..4681137813f251 100644 --- a/scripts/toolchains/mingw.cmake +++ b/scripts/toolchains/mingw.cmake @@ -1,4 +1,7 @@ if(NOT _VCPKG_MINGW_TOOLCHAIN) + +cmake_minimum_required(VESION 3.24) + set(_VCPKG_MINGW_TOOLCHAIN 1) if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") set(CMAKE_CROSSCOMPILING OFF CACHE BOOL "") diff --git a/scripts/toolchains/osx.cmake b/scripts/toolchains/osx.cmake index 959aa4a4ab1481..f38d3a250a9007 100644 --- a/scripts/toolchains/osx.cmake +++ b/scripts/toolchains/osx.cmake @@ -1,4 +1,7 @@ if(NOT _VCPKG_OSX_TOOLCHAIN) + +cmake_minimum_required(VESION 3.24) + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_C_FLAGS VCPKG_CXX_FLAGS VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG diff --git a/scripts/toolchains/uwp.cmake b/scripts/toolchains/uwp.cmake index 81857378384dd0..7536b988b6d11d 100644 --- a/scripts/toolchains/uwp.cmake +++ b/scripts/toolchains/uwp.cmake @@ -1,4 +1,7 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) + +cmake_minimum_required(VESION 3.24) + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG VCPKG_C_FLAGS VCPKG_CXX_FLAGS VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake index 01bcdab1a24fdf..a289723e8c9338 100644 --- a/scripts/toolchains/windows.cmake +++ b/scripts/toolchains/windows.cmake @@ -1,4 +1,7 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) + +cmake_minimum_required(VESION 3.24) + list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG VCPKG_C_FLAGS VCPKG_CXX_FLAGS VCPKG_C_FLAGS_DEBUG VCPKG_CXX_FLAGS_DEBUG From 1563233abe5397a9360b48629df3fdc9ed379d69 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 17 Oct 2022 20:02:58 +0200 Subject: [PATCH 133/141] v db --- versions/baseline.json | 54 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/versions/baseline.json b/versions/baseline.json index 17b9cf5856a90f..cea61cc43c1ca2 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -525,8 +525,8 @@ "port-version": 1 }, "blas": { - "baseline": "1", - "port-version": 1 + "baseline": "default", + "port-version": 0 }, "blaze": { "baseline": "3.8.1", @@ -1434,7 +1434,7 @@ }, "clapack": { "baseline": "3.2.1", - "port-version": 20 + "port-version": 21 }, "clara": { "baseline": "1.1.5", @@ -2316,6 +2316,10 @@ "baseline": "2022.03.21.00", "port-version": 1 }, + "flang-classic-fortran-runtime": { + "baseline": "2022-04-23", + "port-version": 0 + }, "flann": { "baseline": "2019-04-07", "port-version": 6 @@ -2494,7 +2498,7 @@ }, "g2o": { "baseline": "2020-02-07", - "port-version": 2 + "port-version": 3 }, "g3log": { "baseline": "1.3.4", @@ -3469,7 +3473,7 @@ "port-version": 0 }, "lapack": { - "baseline": "2022-02-22", + "baseline": "default", "port-version": 0 }, "lapack-reference": { @@ -5692,6 +5696,10 @@ "baseline": "2019-05-14", "port-version": 1 }, + "pgmath": { + "baseline": "2022-04-23", + "port-version": 0 + }, "phnt": { "baseline": "2020-12-21", "port-version": 0 @@ -7696,6 +7704,18 @@ "baseline": "2022-10-17", "port-version": 0 }, + "vcpkg-fortran": { + "baseline": "2022-02-22", + "port-version": 0 + }, + "vcpkg-fortran-flang-classic": { + "baseline": "2022-02-22", + "port-version": 0 + }, + "vcpkg-fortran-ifort": { + "baseline": "2022-02-22", + "port-version": 0 + }, "vcpkg-get-python-packages": { "baseline": "2022-06-30", "port-version": 0 @@ -7708,6 +7728,10 @@ "baseline": "2021-11-16", "port-version": 2 }, + "vcpkg-ifort-libs": { + "baseline": "2022-02-22", + "port-version": 0 + }, "vcpkg-pkgconfig-get-modules": { "baseline": "2022-02-10", "port-version": 1 @@ -7716,6 +7740,18 @@ "baseline": "2022-05-10", "port-version": 1 }, + "vcpkg-tool-7zip": { + "baseline": "21.07", + "port-version": 0 + }, + "vcpkg-tool-flang-classic": { + "baseline": "2022-04-23", + "port-version": 0 + }, + "vcpkg-tool-flang-classic-llvm": { + "baseline": "2022-04-23", + "port-version": 0 + }, "vcpkg-tool-gn": { "baseline": "2022-04-16", "port-version": 0 @@ -7724,10 +7760,18 @@ "baseline": "2022-03-04", "port-version": 0 }, + "vcpkg-tool-ifort": { + "baseline": "2022-05-08", + "port-version": 0 + }, "vcpkg-tool-lessmsi": { "baseline": "1.10.0", "port-version": 0 }, + "vcpkg-tool-llvm": { + "baseline": "14.0.3", + "port-version": 0 + }, "vcpkg-tool-meson": { "baseline": "0.63", "port-version": 0 From de665bda57758fead53cfee0da0900fcbf22c03b Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Tue, 18 Oct 2022 08:53:13 +0200 Subject: [PATCH 134/141] fix typo --- scripts/toolchains/linux.cmake | 2 +- scripts/toolchains/mingw.cmake | 2 +- scripts/toolchains/osx.cmake | 2 +- scripts/toolchains/uwp.cmake | 2 +- scripts/toolchains/windows.cmake | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake index eb99bbca175057..245b1987260eae 100644 --- a/scripts/toolchains/linux.cmake +++ b/scripts/toolchains/linux.cmake @@ -1,6 +1,6 @@ if(NOT _VCPKG_LINUX_TOOLCHAIN) -cmake_minimum_required(VESION 3.24) +cmake_minimum_required(VERSION 3.24) list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_C_FLAGS VCPKG_CXX_FLAGS diff --git a/scripts/toolchains/mingw.cmake b/scripts/toolchains/mingw.cmake index 4681137813f251..1601081ef2f499 100644 --- a/scripts/toolchains/mingw.cmake +++ b/scripts/toolchains/mingw.cmake @@ -1,6 +1,6 @@ if(NOT _VCPKG_MINGW_TOOLCHAIN) -cmake_minimum_required(VESION 3.24) +cmake_minimum_required(VERSION 3.24) set(_VCPKG_MINGW_TOOLCHAIN 1) if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") diff --git a/scripts/toolchains/osx.cmake b/scripts/toolchains/osx.cmake index f38d3a250a9007..130c9373eb8432 100644 --- a/scripts/toolchains/osx.cmake +++ b/scripts/toolchains/osx.cmake @@ -1,6 +1,6 @@ if(NOT _VCPKG_OSX_TOOLCHAIN) -cmake_minimum_required(VESION 3.24) +cmake_minimum_required(VERSION 3.24) list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_C_FLAGS VCPKG_CXX_FLAGS diff --git a/scripts/toolchains/uwp.cmake b/scripts/toolchains/uwp.cmake index 7536b988b6d11d..f2d888876eb9eb 100644 --- a/scripts/toolchains/uwp.cmake +++ b/scripts/toolchains/uwp.cmake @@ -1,6 +1,6 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) -cmake_minimum_required(VESION 3.24) +cmake_minimum_required(VERSION 3.24) list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG VCPKG_C_FLAGS VCPKG_CXX_FLAGS diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake index a289723e8c9338..7a53cbcbc9a6db 100644 --- a/scripts/toolchains/windows.cmake +++ b/scripts/toolchains/windows.cmake @@ -1,6 +1,6 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) -cmake_minimum_required(VESION 3.24) +cmake_minimum_required(VERSION 3.24) list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG VCPKG_C_FLAGS VCPKG_CXX_FLAGS From 96b6ba2293e17dd4c0b7e499faaeeb777ad1a8a8 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Mon, 24 Oct 2022 14:58:46 +0200 Subject: [PATCH 135/141] use policy instead of minimum_required --- scripts/toolchains/linux.cmake | 13 ++++++++++++- scripts/toolchains/mingw.cmake | 13 ++++++++++++- scripts/toolchains/osx.cmake | 13 ++++++++++++- scripts/toolchains/uwp.cmake | 13 ++++++++++++- scripts/toolchains/windows.cmake | 13 ++++++++++++- 5 files changed, 60 insertions(+), 5 deletions(-) diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake index 245b1987260eae..acbe9751003d5d 100644 --- a/scripts/toolchains/linux.cmake +++ b/scripts/toolchains/linux.cmake @@ -1,6 +1,17 @@ if(NOT _VCPKG_LINUX_TOOLCHAIN) -cmake_minimum_required(VERSION 3.24) +if(POLICY CMP0056) + cmake_policy(SET CMP0056 NEW) +endif() +if(POLICY CMP0066) + cmake_policy(SET CMP0066 NEW) +endif() +if(POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) +endif() +if(POLICY CMP0137) + cmake_policy(SET CMP0137 NEW) +endif()``` list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_C_FLAGS VCPKG_CXX_FLAGS diff --git a/scripts/toolchains/mingw.cmake b/scripts/toolchains/mingw.cmake index 1601081ef2f499..c8b8cd51748aeb 100644 --- a/scripts/toolchains/mingw.cmake +++ b/scripts/toolchains/mingw.cmake @@ -1,6 +1,17 @@ if(NOT _VCPKG_MINGW_TOOLCHAIN) -cmake_minimum_required(VERSION 3.24) +if(POLICY CMP0056) + cmake_policy(SET CMP0056 NEW) +endif() +if(POLICY CMP0066) + cmake_policy(SET CMP0066 NEW) +endif() +if(POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) +endif() +if(POLICY CMP0137) + cmake_policy(SET CMP0137 NEW) +endif() set(_VCPKG_MINGW_TOOLCHAIN 1) if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") diff --git a/scripts/toolchains/osx.cmake b/scripts/toolchains/osx.cmake index 130c9373eb8432..a7dc72f8549388 100644 --- a/scripts/toolchains/osx.cmake +++ b/scripts/toolchains/osx.cmake @@ -1,6 +1,17 @@ if(NOT _VCPKG_OSX_TOOLCHAIN) -cmake_minimum_required(VERSION 3.24) +if(POLICY CMP0056) + cmake_policy(SET CMP0056 NEW) +endif() +if(POLICY CMP0066) + cmake_policy(SET CMP0066 NEW) +endif() +if(POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) +endif() +if(POLICY CMP0137) + cmake_policy(SET CMP0137 NEW) +endif() list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_C_FLAGS VCPKG_CXX_FLAGS diff --git a/scripts/toolchains/uwp.cmake b/scripts/toolchains/uwp.cmake index f2d888876eb9eb..c1bf00b4d3e852 100644 --- a/scripts/toolchains/uwp.cmake +++ b/scripts/toolchains/uwp.cmake @@ -1,6 +1,17 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) -cmake_minimum_required(VERSION 3.24) +if(POLICY CMP0056) + cmake_policy(SET CMP0056 NEW) +endif() +if(POLICY CMP0066) + cmake_policy(SET CMP0066 NEW) +endif() +if(POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) +endif() +if(POLICY CMP0137) + cmake_policy(SET CMP0137 NEW) +endif() list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG VCPKG_C_FLAGS VCPKG_CXX_FLAGS diff --git a/scripts/toolchains/windows.cmake b/scripts/toolchains/windows.cmake index 7a53cbcbc9a6db..a97a5212236230 100644 --- a/scripts/toolchains/windows.cmake +++ b/scripts/toolchains/windows.cmake @@ -1,6 +1,17 @@ if(NOT _VCPKG_WINDOWS_TOOLCHAIN) -cmake_minimum_required(VERSION 3.24) +if(POLICY CMP0056) + cmake_policy(SET CMP0056 NEW) +endif() +if(POLICY CMP0066) + cmake_policy(SET CMP0066 NEW) +endif() +if(POLICY CMP0067) + cmake_policy(SET CMP0067 NEW) +endif() +if(POLICY CMP0137) + cmake_policy(SET CMP0137 NEW) +endif() list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_SET_CHARSET_FLAG VCPKG_C_FLAGS VCPKG_CXX_FLAGS From 1fd04a3720459c9998dd848129abcfd2981ee2d7 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Fri, 28 Oct 2022 13:47:18 +0200 Subject: [PATCH 136/141] fix c&p error --- scripts/toolchains/linux.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/toolchains/linux.cmake b/scripts/toolchains/linux.cmake index acbe9751003d5d..7b37d718467186 100644 --- a/scripts/toolchains/linux.cmake +++ b/scripts/toolchains/linux.cmake @@ -11,7 +11,7 @@ if(POLICY CMP0067) endif() if(POLICY CMP0137) cmake_policy(SET CMP0137 NEW) -endif()``` +endif() list(APPEND CMAKE_TRY_COMPILE_PLATFORM_VARIABLES VCPKG_CRT_LINKAGE VCPKG_TARGET_ARCHITECTURE VCPKG_C_FLAGS VCPKG_CXX_FLAGS From 68b3f4514b180696638047f3f8813511aff0442b Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 10 Nov 2022 19:08:37 +0100 Subject: [PATCH 137/141] move ifort binaries since libomp conflicts with llvm --- ports/vcpkg-ifort-libs/portfile.cmake | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-ifort-libs/portfile.cmake b/ports/vcpkg-ifort-libs/portfile.cmake index a1aa64d9e6d8e8..d5c28dcac33071 100644 --- a/ports/vcpkg-ifort-libs/portfile.cmake +++ b/ports/vcpkg-ifort-libs/portfile.cmake @@ -40,9 +40,9 @@ if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL) list(TRANSFORM IFORT_DLLS_DEBUG PREPEND "${IFORT_BASEPATH_DLLS}") list(TRANSFORM IFORT_DLLS_RELEASE PREPEND "${IFORT_BASEPATH_DLLS}") - file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin") - file(COPY ${IFORT_DLLS} ${IFORT_DLLS_RELEASE} DESTINATION "${CURRENT_PACKAGES_DIR}/bin") - file(COPY ${IFORT_DLLS} ${IFORT_DLLS_DEBUG} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin") + file(MAKE_DIRECTORY "${CURRENT_PACKAGES_DIR}/bin/ifort" "${CURRENT_PACKAGES_DIR}/debug/bin/ifort") + file(COPY ${IFORT_DLLS} ${IFORT_DLLS_RELEASE} DESTINATION "${CURRENT_PACKAGES_DIR}/bin/ifort") + file(COPY ${IFORT_DLLS} ${IFORT_DLLS_DEBUG} DESTINATION "${CURRENT_PACKAGES_DIR}/debug/bin/ifort") endif() file(INSTALL "${BASE_PATH}/licensing/fortran/third-party-programs.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled) # libs are at share/ifort and reflect how they are installed by the compiler instead of splitting them. From c3a4f3107b78e97448ee6cefd30911115480b5ce Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 26 Jan 2023 22:40:16 +0100 Subject: [PATCH 138/141] update stuff --- .../flang-classic-fortran-runtime/cross.patch | 4 +- .../fix-build.patch | 209 ++++++++++++++++++ .../portfile.cmake | 94 ++++---- .../sep_runtime_from_compiler.patch | 9 - ports/lapack-reference/portfile.cmake | 3 +- ports/lapack-reference/time_test.patch | 21 ++ ports/pgmath/portfile.cmake | 20 +- .../portfile.cmake | 38 +++- .../vcpkg-tool-flang-classic-llvm/vcpkg.json | 2 +- ports/vcpkg-tool-flang-classic/cross.patch | 4 +- .../vcpkg-tool-flang-classic/fix-build.patch | 209 ++++++++++++++++++ ports/vcpkg-tool-flang-classic/portfile.cmake | 88 ++++---- .../sep_runtime_from_compiler.patch | 9 - 13 files changed, 566 insertions(+), 144 deletions(-) create mode 100644 ports/flang-classic-fortran-runtime/fix-build.patch create mode 100644 ports/lapack-reference/time_test.patch create mode 100644 ports/vcpkg-tool-flang-classic/fix-build.patch diff --git a/ports/flang-classic-fortran-runtime/cross.patch b/ports/flang-classic-fortran-runtime/cross.patch index 7d107408e1db0a..379176c0461a48 100644 --- a/ports/flang-classic-fortran-runtime/cross.patch +++ b/ports/flang-classic-fortran-runtime/cross.patch @@ -20,15 +20,13 @@ index 850942b32..3ec95760e 100644 ) add_custom_command( -@@ -450,7 +450,7 @@ add_custom_command( +@@ -450,5 +450,5 @@ add_custom_command( COMMAND "${CMAKE_Fortran_COMPILER}" -E -DPGFLANG -cpp ${SEPARATED_CMAKE_Fortran_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/norm2.F95 > "norm2_1.F95" VERBATIM - DEPENDS flang1 flang2 + #DEPENDS flang1 flang2 ) - - # The files lists FTN_INTRINSICS_DESC_DEP and FTN_SUPPORT_DESC_DEP need to be compiled twice (with and without 'DESC_I8' compile definition). So an actual copy is made in a temp file on which this is done. @@ -662,18 +662,6 @@ target_include_directories(flang_shared ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/ports/flang-classic-fortran-runtime/fix-build.patch b/ports/flang-classic-fortran-runtime/fix-build.patch new file mode 100644 index 00000000000000..b5f8016af63ed8 --- /dev/null +++ b/ports/flang-classic-fortran-runtime/fix-build.patch @@ -0,0 +1,209 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a4ede76dc..f92f1bc8a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,11 @@ + + cmake_minimum_required(VERSION 3.3) + ++set(CMAKE_C_STANDARD 99) ++set(CMAKE_C_STANDARD_REQUIRED ON) ++set(CMAKE_CXX_STANDARD 14) ++set(CMAKE_CXX_STANDARD_REQUIRED ON) ++#add_compile_options(-std:c11 -D__STDC__=1 /D_CRT_INTERNAL_NONSTDC_NAMES /D_CRT_DECLARE_NONSTDC_NAMES) + # If we are not building as a part of LLVM, build Flang as a + # standalone project, using LLVM as an external library: + if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) +@@ -304,7 +309,7 @@ if (LLVM_COMPILER_IS_GCC_COMPATIBLE) + endif() + endif () + elseif(MSVC) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -mlong-double-128") ++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -mlong-double-128") + option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" ON) + if (WITH_WERROR) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wno-error=unused-but-set-variable -Wno-error=fortify-source -Wno-error=comment -Wno-error=array-bounds -Wno-error=tautological-constant-out-of-range-compare -Wno-error=switch -Wno-error=enum-compare -Wno-error=deprecated-register -Wno-error=char-subscripts -Wno-error=parentheses -Wno-error=format -Wno-error=incompatible-pointer-types -Wno-error=sign-compare -Wno-error=string-conversion -Wno-error=microsoft-enum-forward-reference -Wno-error=void-pointer-to-int-cast -Wno-error=implicit-function-declaration -Wno-error=missing-field-initializers -Wno-error=missing-braces -Wno-error=pointer-to-int-cast -Wno-error=unused-variable -Wno-error=inconsistent-dllimport -Wno-error=int-conversion -Wno-error=unused-function -Wno-error=int-to-pointer-cast -Wno-error=constant-conversion -Wno-error=macro-redefined -Wno-error=compare-distinct-pointer-types -Wno-error=pointer-sign -Wno-error=sometimes-uninitialized -Wno-error=return-type -Wno-error=unsequenced -Wno-error=infinite-recursion -Wno-error=shift-count-overflow") +diff --git a/include/fp-folding.h b/include/fp-folding.h +index 8378f6aa1..bbfbaae5a 100644 +--- a/include/fp-folding.h ++++ b/include/fp-folding.h +@@ -165,6 +165,7 @@ enum fold_status fold_real128_exp(float128_t *res, const float128_t *arg); + enum fold_status fold_real128_log(float128_t *res, const float128_t *arg); + enum fold_status fold_real128_log10(float128_t *res, const float128_t *arg); + ++#ifndef _MSC_VER + enum fold_status fold_complex32_pow(float complex *res, const float complex *x, + const float complex *y); + enum fold_status fold_complex64_pow(double complex *res, +@@ -173,7 +174,16 @@ enum fold_status fold_complex64_pow(double complex *res, + enum fold_status fold_complex128_pow(long double complex *res, + const long double complex *x, + const long double complex *y); +- ++#else ++enum fold_status fold_complex32_pow(_Fcomplex *res, const _Fcomplex *x, ++ const _Fcomplex *y); ++enum fold_status fold_complex64_pow(_Dcomplex *res, ++ const _Dcomplex *x, ++ const _Dcomplex *y); ++enum fold_status fold_complex128_pow(_Lcomplex *res, ++ const _Lcomplex *x, ++ const _Lcomplex *y); ++#endif + #ifdef __cplusplus + } + #endif +diff --git a/lib/scutil/host-fp-folding.c b/lib/scutil/host-fp-folding.c +index d4e04d1d9..f3eb06c5c 100644 +--- a/lib/scutil/host-fp-folding.c ++++ b/lib/scutil/host-fp-folding.c +@@ -908,6 +908,7 @@ fold_real128_log10(float128_t *res, const float128_t *arg) + return check_and_restore_floating_point_environment(&saved_fenv); + } + ++#ifndef _MSC_VER + enum fold_status + fold_complex32_pow(float complex *res, const float complex *x, const float complex *y) + { +@@ -936,3 +937,31 @@ fold_complex128_pow(long double complex *res, const long double complex *x, cons + *res = cpowl(*x, *y); + return check_and_restore_floating_point_environment(&saved_fenv); + } ++#else ++enum fold_status ++fold_complex32_pow(_Fcomplex *res, const _Fcomplex *x, const _Fcomplex *y) ++{ ++ fenv_t saved_fenv; ++ set_up_floating_point_environment(&saved_fenv); ++ *res = cpowf(*x, *y); ++ return check_and_restore_floating_point_environment(&saved_fenv); ++} ++ ++enum fold_status ++fold_complex64_pow(_Dcomplex *res, const _Dcomplex *x, const _Dcomplex *y) ++{ ++ fenv_t saved_fenv; ++ set_up_floating_point_environment(&saved_fenv); ++ *res = cpow(*x, *y); ++ return check_and_restore_floating_point_environment(&saved_fenv); ++} ++ ++enum fold_status ++fold_complex128_pow(_Lcomplex *res, const _Lcomplex *x, const _Lcomplex *y) ++{ ++ fenv_t saved_fenv; ++ set_up_floating_point_environment(&saved_fenv); ++ *res = cpowl(*x, *y); ++ return check_and_restore_floating_point_environment(&saved_fenv); ++} ++#endif +\ No newline at end of file +diff --git a/lib/scutil/legacy-folding-api.c b/lib/scutil/legacy-folding-api.c +index 2518484ea..648db1a46 100644 +--- a/lib/scutil/legacy-folding-api.c ++++ b/lib/scutil/legacy-folding-api.c +@@ -2436,7 +2436,11 @@ cprintf(char *buffer, const char *format, INT *val) + void + xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) + { ++#ifndef _MSC_VER + float complex x, y, z; ++#else ++ _Fcomplex x, y, z; ++#endif + float32_t rx, ix, ry, iy, rz, iz; + unwrap_f(&rx, &r1); + unwrap_f(&ix, &i1); +@@ -2446,8 +2450,13 @@ xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) + rz = 1.0; + iz = 0.0; + } else { ++#ifndef _MSC_VER + x = rx + ix * I; + y = ry + iy * I; ++#else ++ x = _FCbuild(rx,ix); ++ y = _FCbuild(ry,iy); ++#endif + check(fold_complex32_pow(&z, &x, &y)); + rz = crealf(z); + iz = cimagf(z); +@@ -2459,7 +2468,11 @@ xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) + void + xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) + { ++#ifndef _MSC_VER + double complex x, y, z; ++#else ++ _Dcomplex x, y, z; ++#endif + float64_t rx, ix, ry, iy, rz, iz; + unwrap_d(&rx, r1); + unwrap_d(&ix, i1); +@@ -2469,8 +2482,13 @@ xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) + rz = 1.0; + iz = 0.0; + } else { ++#ifndef _MSC_VER + x = rx + ix * I; + y = ry + iy * I; ++#else ++ x = _Cbuild(rx,ix); ++ y = _Cbuild(ry,iy); ++#endif + check(fold_complex64_pow(&z, &x, &y)); + rz = creal(z); + iz = cimag(z); +@@ -2482,7 +2500,11 @@ xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) + void + xcqpow(IEEE128 r1, IEEE128 i1, IEEE128 r2, IEEE128 i2, IEEE128 rr, IEEE128 ir) + { ++#ifndef _MSC_VER + long double complex x, y, z; ++#else ++ _Lcomplex x, y, z; ++#endif + float128_t rx, ix, ry, iy, rz, iz; + unwrap_q(&rx, r1); + unwrap_q(&ix, i1); +@@ -2492,8 +2514,13 @@ xcqpow(IEEE128 r1, IEEE128 i1, IEEE128 r2, IEEE128 i2, IEEE128 rr, IEEE128 ir) + rz = 1.0; + iz = 0.0; + } else { ++#ifndef _MSC_VER + x = rx + ix * I; + y = ry + iy * I; ++#else ++ x = _LCbuild(rx,ix); ++ y = _LCbuild(ry,iy); ++#endif + check(fold_complex128_pow(&z, &x, &y)); + rz = creall(z); + iz = cimagl(z); +diff --git a/lib/scutil/lockfile.c b/lib/scutil/lockfile.c +index 93c442804..d7a7e423c 100644 +--- a/lib/scutil/lockfile.c ++++ b/lib/scutil/lockfile.c +@@ -60,9 +61,6 @@ static char *udir = NULL; + */ + static long uwaiting; + +-#ifdef _WIN64 +-#define pid_t int +-#endif + int + __pg_make_lock_file(char *dir) + { +diff --git a/runtime/include/float128.h b/runtime/include/float128.h +index 61a01dc72..4bbf6b427 100644 +--- a/runtime/include/float128.h ++++ b/runtime/include/float128.h +@@ -8,7 +8,7 @@ + #ifndef _FLOAT128_H_ + #define _FLOAT128_H_ + +-#if defined(TARGET_POWER) || (defined(TARGET_X8664) && !defined(TARGET_WIN)) ++#if defined(TARGET_POWER) || (defined(TARGET_X8664) && !defined(TARGET_WIN)) + typedef __float128 float128_t; + #else + /* __float128 is not available on AArch64 or other generic targets; diff --git a/ports/flang-classic-fortran-runtime/portfile.cmake b/ports/flang-classic-fortran-runtime/portfile.cmake index fd48ccda93839a..aea19bd6409bc7 100644 --- a/ports/flang-classic-fortran-runtime/portfile.cmake +++ b/ports/flang-classic-fortran-runtime/portfile.cmake @@ -1,71 +1,72 @@ vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # unresolved symbol interr -vcpkg_download_distfile( - PATCH_572 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/572.diff" - FILENAME 572.diff - SHA512 7bc8038f548ab141c1d5d8e7a93ffd72b0412a5ce3978831de0dd06e7e33ac2839924f8d97b56563cf6bc7e7bda005bc936c51ae15c5ffc4a4aceccc3f55a995 -) +# Needs a rebase +#vcpkg_download_distfile( +# PATCH_1177 +# URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1177.diff" +# FILENAME 1177.diff +# SHA512 e00dfbf70449a407919cdf4737beeb87614e009519abe20dd9213117447485e551e094c33460104378b925f1ba889e112c6ce86cc994338a4a9e028d587a59e2 +#) -vcpkg_download_distfile( - PATCH_1163 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1163.diff" - FILENAME 1163.diff - SHA512 e6c7be92dc2fcbe77056e58647d9f2074cc3dac81b25d15241ec0cbdc5d45658000c4764b1828e997d93738d839b1cccc2cfe7806d77ad8b4d0ea6107a7a15dc +vcpkg_download_distfile( + PATCH_1346 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1346.diff" + FILENAME 1346.diff + SHA512 367fe2a6bfe36ef27b0a534f516a4bba20128967bae366dd5d3943913ad487faa83270adacecee1d42ba7e65d84a420a12ee9bb614e6eb4102f59f66b301608d ) -vcpkg_download_distfile( - PATCH_1165 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1165.diff" - FILENAME 1165.diff - SHA512 4202b5a9f9ea5c84525939e44bea6cf3514d1d948768d899fdf0db6f0d71ee45ce187bfea68742f7a332878335f43103df1e215fb70e1b60035f48d93f04db64 +vcpkg_download_distfile( + PATCH_1345 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1345.diff" + FILENAME 1345.diff + SHA512 6387c96c075428b389b71f701fb79f6e2f676014f86d4229dcb3bdc3b188191780dcc53b354281b064b618886b3281fa432ecfb01872d7ba73fdf3b3e4a234a3 ) -vcpkg_download_distfile( - PATCH_1166 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1166.diff" - FILENAME 1166.diff - SHA512 68cb37acbabd69285481c6baa38bb3ea61497268f39bb90e2384c6a6cbea9860d54554d5dd206ebfe77ef5610fd9dc93cd6da6000d6c22e274c2e635e23ff997 +vcpkg_download_distfile( + PATCH_1344 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1344.diff" + FILENAME 1344.diff + SHA512 0b7432949aaae1ade0927e1c2d4c320bddc64bc65a901aba8451eae21475f16f72b2171904f69827e277aeea2f0d9cc0a40cbf11c7b99e4d09860f6c093f997a ) -vcpkg_download_distfile( - PATCH_1168 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1168.diff" - FILENAME 1168.diff - SHA512 1efe6e8db18dd3834386801fb055bdcdb4a65987855a95175c6817ba30f3f34e8677e35836dc5b934edcd28e34ccf42273409970fa5bd6de85beb3e1d60d90d4 +vcpkg_download_distfile( + PATCH_1341 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1341.diff" + FILENAME 1341.diff + SHA512 ab3a2025d0e28b795d31e8907f1c36a4e282126751f7c74bc1896fa9176adc8574166d0facce25f7affa6f46e7c0636139ceeb08bc65b4d58c57d709d918875a ) -# Needs a rebase -#vcpkg_download_distfile( -# PATCH_1177 -# URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1177.diff" -# FILENAME 1177.diff -# SHA512 e00dfbf70449a407919cdf4737beeb87614e009519abe20dd9213117447485e551e094c33460104378b925f1ba889e112c6ce86cc994338a4a9e028d587a59e2 -#) +vcpkg_download_distfile( + PATCH_1340 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1340.diff" + FILENAME 1340.diff + SHA512 0843c91b957e7fd0680577e83c68ca8d68ea59775e59fdc4c2fd407d4a8f26dc8ea7335262636050783929e975ab0e548f6fdc770aa30996da1ec120c9619d6c +) -vcpkg_download_distfile( - PATCH_1178 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1178.diff" - FILENAME 1178.diff - SHA512 68b66f69c796cdfcf952e820ba47c02f9239ad0b59779fa364f7f58028e7771a3ca5b72c70386203f41ed3b85309473c7d2116d81c2c2ef15130ffa047ead863 +vcpkg_download_distfile( + PATCH_1335 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1335.diff" + FILENAME 1335.diff + SHA512 34b64481e97d1fc5b1e8739bba3af18d83b7d9905f078be4fd21ab1617806ba5f432975928de0d8fa9d512507a4324724900843f1db9b4479b0b974e6bd42cf2 ) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO flang-compiler/flang - REF 0df85a22ae141078658569a0e1b3745afd702e45 - SHA512 f7195fbf0885dd767ff7f8ab48688586f4c9995dc81d619d4a315e3a3a8b1af019232410aa4eff1e85ed910281338dc6ebb54f55d34534c3d92766b6e1a74149 + REF 2d211cfe258c23cdc197cba8c4df1e6a116b9764 + SHA512 a7b4c7959f086d0d0bbc6b775d714d6dbe355c3cd3a389f815df3e87aee6850f3a278896b2ba8ffb0a3b022d8c9a6bea6ebce0b5cc505fc41b511ebc033dc7d8 PATCHES awk.patch - "${PATCH_572}" - "${PATCH_1163}" - "${PATCH_1165}" - "${PATCH_1166}" - "${PATCH_1168}" "1177.diff" - "${PATCH_1178}" move_flang2.patch cross.patch sep_runtime_from_compiler.patch + ${PATCH_1335} + ${PATCH_1340} + ${PATCH_1341} + ${PATCH_1344} + #${PATCH_1345} + ${PATCH_1346} + #fix-build.patch ) set(NINJA "${CURRENT_HOST_INSTALLED_DIR}/tools/ninja/ninja${VCPKG_HOST_EXECUTABLE_SUFFIX}") @@ -109,6 +110,7 @@ endif() vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS + "-DWITH_WERROR:BOOL=OFF" #"-DLLVM_TARGETS_TO_BUILD=X86;AArch64" "-DFLANG_BUILD_RUNTIME=ON" "-DFLANG_LLVM_EXTENSIONS=ON" diff --git a/ports/flang-classic-fortran-runtime/sep_runtime_from_compiler.patch b/ports/flang-classic-fortran-runtime/sep_runtime_from_compiler.patch index f1b29916a5e6f4..d0c5869a484cd2 100644 --- a/ports/flang-classic-fortran-runtime/sep_runtime_from_compiler.patch +++ b/ports/flang-classic-fortran-runtime/sep_runtime_from_compiler.patch @@ -2,15 +2,6 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt index 000055e73..28a738269 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -292,7 +292,7 @@ endif() - # Add appropriate flags for GCC - if (LLVM_COMPILER_IS_GCC_COMPATIBLE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings") -- option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" ON) -+ option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) - elseif (MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14 -Woverloaded-virtual -Wno-long-long -Wno-unused-parameter -Wwrite-strings") - option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) @@ -350,6 +350,7 @@ include_directories(BEFORE set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include) diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index d12e7a830cc523..6f7210a48a44b5 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -28,6 +28,7 @@ vcpkg_from_github( HEAD_REF master PATCHES ${PATCHES} lapacke.patch + time_test.patch ) if(NOT VCPKG_TARGET_IS_WINDOWS) @@ -61,7 +62,7 @@ vcpkg_cmake_configure( "-DCMAKE_POLICY_DEFAULT_CMP0067=NEW" "-DCMAKE_POLICY_DEFAULT_CMP0083=NEW" ${Fortran_opts} - #"-DBUILD_TESTING:BOOL=ON" + "-DBUILD_TESTING:BOOL=ON" #"-DPYTHON_EXECUTABLE=${PYTHON3}" OPTIONS_DEBUG ${Fortran_opts_rel} OPTIONS_RELEASE ${Fortran_opts_dbg} diff --git a/ports/lapack-reference/time_test.patch b/ports/lapack-reference/time_test.patch new file mode 100644 index 00000000000000..5e14a192939526 --- /dev/null +++ b/ports/lapack-reference/time_test.patch @@ -0,0 +1,21 @@ +diff --git a/INSTALL/CMakeLists.txt b/INSTALL/CMakeLists.txt +index b6f6e838a..bb336fb72 100644 +--- a/INSTALL/CMakeLists.txt ++++ b/INSTALL/CMakeLists.txt +@@ -1,9 +1,9 @@ + cmake_minimum_required(VERSION 3.2) + project(TIMING Fortran) +-add_executable(secondtst_NONE second_NONE.f secondtst.f) +-add_executable(secondtst_EXT_ETIME second_EXT_ETIME.f secondtst.f) +-add_executable(secondtst_EXT_ETIME_ second_EXT_ETIME_.f secondtst.f) +-add_executable(secondtst_INT_ETIME second_INT_ETIME.f secondtst.f) +-add_executable(secondtst_INT_CPU_TIME second_INT_CPU_TIME.f secondtst.f) +-add_executable(testieee tstiee.f) +-add_executable(testversion ilaver.f LAPACK_version.f) ++add_library(secondtst_NONE STATIC second_NONE.f secondtst.f) ++add_library(secondtst_EXT_ETIME STATIC second_EXT_ETIME.f secondtst.f) ++add_executable(secondtst_EXT_ETIME_ second_EXT_ETIME_.f secondtst.f) ++add_library(secondtst_INT_ETIME STATIC second_INT_ETIME.f secondtst.f) ++add_library(secondtst_INT_CPU_TIME STATIC second_INT_CPU_TIME.f secondtst.f) ++add_library(testieee STATIC tstiee.f) ++add_library(testversion STATIC ilaver.f LAPACK_version.f) diff --git a/ports/pgmath/portfile.cmake b/ports/pgmath/portfile.cmake index bf499cf7a58412..1e71d8ee4a56ca 100644 --- a/ports/pgmath/portfile.cmake +++ b/ports/pgmath/portfile.cmake @@ -1,25 +1,17 @@ #vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # requires same linkage as vcpkg-tool-flang -vcpkg_download_distfile( - PGMATH_PATCH - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1167.diff" # stable? - FILENAME 1167.diff - SHA512 4a795e59c1c930a1f19963336881134037332eadc8bdd3206205f8affdbac938a177db603bfd03f0783a84be38818e21c8ec09a0f1089252e1328cecd8f26ff1 -) - if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) - set(PATCHES clang-cl-flags.patch) + #set(PATCHES clang-cl-flags.patch) endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO flang-compiler/flang - REF 0df85a22ae141078658569a0e1b3745afd702e45 - SHA512 f7195fbf0885dd767ff7f8ab48688586f4c9995dc81d619d4a315e3a3a8b1af019232410aa4eff1e85ed910281338dc6ebb54f55d34534c3d92766b6e1a74149 - PATCHES "${PGMATH_PATCH}" - ${PATCHES} + REF 2d211cfe258c23cdc197cba8c4df1e6a116b9764 + SHA512 a7b4c7959f086d0d0bbc6b775d714d6dbe355c3cd3a389f815df3e87aee6850f3a278896b2ba8ffb0a3b022d8c9a6bea6ebce0b5cc505fc41b511ebc033dc7d8 + PATCHES ${PATCHES} build_only_one_kind.patch - werror.patch + #werror.patch ) vcpkg_find_acquire_program(PYTHON3) @@ -61,7 +53,7 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}/runtime/libpgmath" DISABLE_PARALLEL_CONFIGURE OPTIONS ${OPTIONS} - "-DWITH_WERROR=OFF" + "-DWITH_WERROR:BOOL=OFF" MAYBE_UNUSED_VARIABLES WITH_WERROR diff --git a/ports/vcpkg-tool-flang-classic-llvm/portfile.cmake b/ports/vcpkg-tool-flang-classic-llvm/portfile.cmake index 512f9024e745de..3266009ce1dd65 100644 --- a/ports/vcpkg-tool-flang-classic-llvm/portfile.cmake +++ b/ports/vcpkg-tool-flang-classic-llvm/portfile.cmake @@ -1,18 +1,18 @@ -set(LLVM_VERSION "13.0.1") +set(LLVM_VERSION "15.0.1") vcpkg_check_linkage(ONLY_STATIC_LIBRARY) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO flang-compiler/classic-flang-llvm-project - REF eafb7696e6f1cbf00f19d3c418f71cdac574bad3 - SHA512 8008c11145cacd2d5237af3c5d00b86fba922d67a444b67a05fd5a20162dec4e8d187016a28c1bdc008ce42dfce0254fa5b0635a50bc8fc8af3281de97a76951 - HEAD_REF release_13x + REF 5c53824d84104bf9d409456b76b121365138fe7a + SHA512 557b3b57c85b2d8dbdc72713babd59f9e52110712dab414131fc91ee0a398742c2ada4894d9fd8d7d872c50869330106a17be03ede1b5923899a3ea697262110 + HEAD_REF release_15x PATCHES 0004-fix-dr-1734.patch - 0010-fix-libffi.patch - 0011-fix-libxml2.patch - 65.diff + #0010-fix-libffi.patch + #0011-fix-libxml2.patch + #65.diff ) # Force enable or disable external libraries @@ -36,6 +36,21 @@ get_filename_component(PERL_DIR "${PERL}" DIRECTORY) vcpkg_add_to_path("${PERL_DIR}") set(VCPKG_BUILD_TYPE release) # Only need release tools + +if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + z_vcpkg_get_cmake_vars(cmake_vars_file) + include("${cmake_vars_file}") + if(VCPKG_DETECTED_CMAKE_C_COMPILER_ID STREQUAL "MSVC") # VS ICEs when building libflang + vcpkg_find_acquire_program(CLANG) + cmake_path(GET CLANG PARENT_PATH CLANG_PARENT_PATH) + set(CLANG_CL "${CLANG_PARENT_PATH}/clang-cl.exe") + list(APPEND FEATURE_OPTIONS "-DCMAKE_C_COMPILER=${CLANG_CL}" + "-DCMAKE_CXX_COMPILER=${CLANG_CL}" + "-DCMAKE_LINKER=${VCPKG_DETECTED_CMAKE_LINKER}" + ) + endif() +endif() + set(CURRENT_PACKAGES_DIR_BAK "${CURRENT_PACKAGES_DIR}") set(CURRENT_PACKAGES_DIR "${CURRENT_PACKAGES_DIR}/manual-tools/llvm-flang-classic") vcpkg_cmake_configure( @@ -52,7 +67,7 @@ vcpkg_cmake_configure( -DLLVM_INSTALL_UTILS=ON -DLLVM_TOOL_BUGPOINT_BUILD=OFF -DLLVM_TOOL_BUGPOINT_PASSES_BUILD=OFF - -DLLVM_TOOL_DSYMÙTIL_BUILD=OFF + -DLLVM_TOOL_DSYMUTIL_BUILD=OFF -DLLVM_TOOL_GOLD_BUILD=OFF -DLLVM_TOOL_LLC_BUILD=OFF -DLLVM_TOOL_LLVM_AS_FUZZER_BUILD=OFF @@ -149,10 +164,10 @@ vcpkg_cmake_configure( -DLLVM_OPTIMIZED_TABLEGEN=ON #"-DLLVM_ENABLE_PROJECTS=${LLVM_ENABLE_PROJECTS}" -DLLVM_ENABLE_CLASSIC_FLANG=ON - "-DLLVM_ENABLE_PROJECTS=clang;flang;openmp" + "-DLLVM_ENABLE_PROJECTS=clang;openmp" "-DLLVM_TARGETS_TO_BUILD=X86;AArch64" - -DFLANG_BUILD_NEW_DRIVER=OFF - -DFLANG_INCLUDE_DOCS=OFF + #-DFLANG_BUILD_NEW_DRIVER=OFF + #-DFLANG_INCLUDE_DOCS=OFF #-DPACKAGE_VERSION=${LLVM_VERSION} # Limit the maximum number of concurrent link jobs to 1. This should fix low amount of memory issue for link. # Disable build LLVM-C.dll (Windows only) due to doesn't compile with CMAKE_DEBUG_POSTFIX @@ -162,7 +177,6 @@ vcpkg_cmake_configure( -DCMAKE_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR} ) - vcpkg_cmake_install(ADD_BIN_TO_PATH) function(llvm_cmake_package_config_fixup package_name) diff --git a/ports/vcpkg-tool-flang-classic-llvm/vcpkg.json b/ports/vcpkg-tool-flang-classic-llvm/vcpkg.json index 47baab879109ec..e95d46ce0421ec 100644 --- a/ports/vcpkg-tool-flang-classic-llvm/vcpkg.json +++ b/ports/vcpkg-tool-flang-classic-llvm/vcpkg.json @@ -1,6 +1,6 @@ { "name": "vcpkg-tool-flang-classic-llvm", - "version-date": "2022-04-23", + "version-date": "2022-12-17", "description": "The LLVM Compiler Infrastructure.", "homepage": "https://llvm.org", "license": "Apache-2.0", diff --git a/ports/vcpkg-tool-flang-classic/cross.patch b/ports/vcpkg-tool-flang-classic/cross.patch index 7d107408e1db0a..379176c0461a48 100644 --- a/ports/vcpkg-tool-flang-classic/cross.patch +++ b/ports/vcpkg-tool-flang-classic/cross.patch @@ -20,15 +20,13 @@ index 850942b32..3ec95760e 100644 ) add_custom_command( -@@ -450,7 +450,7 @@ add_custom_command( +@@ -450,5 +450,5 @@ add_custom_command( COMMAND "${CMAKE_Fortran_COMPILER}" -E -DPGFLANG -cpp ${SEPARATED_CMAKE_Fortran_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/norm2.F95 > "norm2_1.F95" VERBATIM - DEPENDS flang1 flang2 + #DEPENDS flang1 flang2 ) - - # The files lists FTN_INTRINSICS_DESC_DEP and FTN_SUPPORT_DESC_DEP need to be compiled twice (with and without 'DESC_I8' compile definition). So an actual copy is made in a temp file on which this is done. @@ -662,18 +662,6 @@ target_include_directories(flang_shared ${CMAKE_CURRENT_BINARY_DIR} ) diff --git a/ports/vcpkg-tool-flang-classic/fix-build.patch b/ports/vcpkg-tool-flang-classic/fix-build.patch new file mode 100644 index 00000000000000..e9f369141b0dcd --- /dev/null +++ b/ports/vcpkg-tool-flang-classic/fix-build.patch @@ -0,0 +1,209 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a4ede76dc..f92f1bc8a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,11 @@ + + cmake_minimum_required(VERSION 3.3) + ++set(CMAKE_C_STANDARD 99) ++set(CMAKE_C_STANDARD_REQUIRED ON) ++set(CMAKE_CXX_STANDARD 14) ++set(CMAKE_CXX_STANDARD_REQUIRED ON) ++add_compile_options(-std:c11 -D__STDC__=1 /D_CRT_INTERNAL_NONSTDC_NAMES /D_CRT_DECLARE_NONSTDC_NAMES) + # If we are not building as a part of LLVM, build Flang as a + # standalone project, using LLVM as an external library: + if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) +@@ -304,7 +309,7 @@ if (LLVM_COMPILER_IS_GCC_COMPATIBLE) + endif() + endif () + elseif(MSVC) +- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -mlong-double-128") ++ #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -mlong-double-128") + option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" ON) + if (WITH_WERROR) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wno-error=unused-but-set-variable -Wno-error=fortify-source -Wno-error=comment -Wno-error=array-bounds -Wno-error=tautological-constant-out-of-range-compare -Wno-error=switch -Wno-error=enum-compare -Wno-error=deprecated-register -Wno-error=char-subscripts -Wno-error=parentheses -Wno-error=format -Wno-error=incompatible-pointer-types -Wno-error=sign-compare -Wno-error=string-conversion -Wno-error=microsoft-enum-forward-reference -Wno-error=void-pointer-to-int-cast -Wno-error=implicit-function-declaration -Wno-error=missing-field-initializers -Wno-error=missing-braces -Wno-error=pointer-to-int-cast -Wno-error=unused-variable -Wno-error=inconsistent-dllimport -Wno-error=int-conversion -Wno-error=unused-function -Wno-error=int-to-pointer-cast -Wno-error=constant-conversion -Wno-error=macro-redefined -Wno-error=compare-distinct-pointer-types -Wno-error=pointer-sign -Wno-error=sometimes-uninitialized -Wno-error=return-type -Wno-error=unsequenced -Wno-error=infinite-recursion -Wno-error=shift-count-overflow") +diff --git a/include/fp-folding.h b/include/fp-folding.h +index 8378f6aa1..bbfbaae5a 100644 +--- a/include/fp-folding.h ++++ b/include/fp-folding.h +@@ -165,6 +165,7 @@ enum fold_status fold_real128_exp(float128_t *res, const float128_t *arg); + enum fold_status fold_real128_log(float128_t *res, const float128_t *arg); + enum fold_status fold_real128_log10(float128_t *res, const float128_t *arg); + ++#ifndef _MSC_VER + enum fold_status fold_complex32_pow(float complex *res, const float complex *x, + const float complex *y); + enum fold_status fold_complex64_pow(double complex *res, +@@ -173,7 +174,16 @@ enum fold_status fold_complex64_pow(double complex *res, + enum fold_status fold_complex128_pow(long double complex *res, + const long double complex *x, + const long double complex *y); +- ++#else ++enum fold_status fold_complex32_pow(_Fcomplex *res, const _Fcomplex *x, ++ const _Fcomplex *y); ++enum fold_status fold_complex64_pow(_Dcomplex *res, ++ const _Dcomplex *x, ++ const _Dcomplex *y); ++enum fold_status fold_complex128_pow(_Lcomplex *res, ++ const _Lcomplex *x, ++ const _Lcomplex *y); ++#endif + #ifdef __cplusplus + } + #endif +diff --git a/lib/scutil/host-fp-folding.c b/lib/scutil/host-fp-folding.c +index d4e04d1d9..f3eb06c5c 100644 +--- a/lib/scutil/host-fp-folding.c ++++ b/lib/scutil/host-fp-folding.c +@@ -908,6 +908,7 @@ fold_real128_log10(float128_t *res, const float128_t *arg) + return check_and_restore_floating_point_environment(&saved_fenv); + } + ++#ifndef _MSC_VER + enum fold_status + fold_complex32_pow(float complex *res, const float complex *x, const float complex *y) + { +@@ -936,3 +937,31 @@ fold_complex128_pow(long double complex *res, const long double complex *x, cons + *res = cpowl(*x, *y); + return check_and_restore_floating_point_environment(&saved_fenv); + } ++#else ++enum fold_status ++fold_complex32_pow(_Fcomplex *res, const _Fcomplex *x, const _Fcomplex *y) ++{ ++ fenv_t saved_fenv; ++ set_up_floating_point_environment(&saved_fenv); ++ *res = cpowf(*x, *y); ++ return check_and_restore_floating_point_environment(&saved_fenv); ++} ++ ++enum fold_status ++fold_complex64_pow(_Dcomplex *res, const _Dcomplex *x, const _Dcomplex *y) ++{ ++ fenv_t saved_fenv; ++ set_up_floating_point_environment(&saved_fenv); ++ *res = cpow(*x, *y); ++ return check_and_restore_floating_point_environment(&saved_fenv); ++} ++ ++enum fold_status ++fold_complex128_pow(_Lcomplex *res, const _Lcomplex *x, const _Lcomplex *y) ++{ ++ fenv_t saved_fenv; ++ set_up_floating_point_environment(&saved_fenv); ++ *res = cpowl(*x, *y); ++ return check_and_restore_floating_point_environment(&saved_fenv); ++} ++#endif +\ No newline at end of file +diff --git a/lib/scutil/legacy-folding-api.c b/lib/scutil/legacy-folding-api.c +index 2518484ea..648db1a46 100644 +--- a/lib/scutil/legacy-folding-api.c ++++ b/lib/scutil/legacy-folding-api.c +@@ -2436,7 +2436,11 @@ cprintf(char *buffer, const char *format, INT *val) + void + xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) + { ++#ifndef _MSC_VER + float complex x, y, z; ++#else ++ _Fcomplex x, y, z; ++#endif + float32_t rx, ix, ry, iy, rz, iz; + unwrap_f(&rx, &r1); + unwrap_f(&ix, &i1); +@@ -2446,8 +2450,13 @@ xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) + rz = 1.0; + iz = 0.0; + } else { ++#ifndef _MSC_VER + x = rx + ix * I; + y = ry + iy * I; ++#else ++ x = _FCbuild(rx,ix); ++ y = _FCbuild(ry,iy); ++#endif + check(fold_complex32_pow(&z, &x, &y)); + rz = crealf(z); + iz = cimagf(z); +@@ -2459,7 +2468,11 @@ xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) + void + xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) + { ++#ifndef _MSC_VER + double complex x, y, z; ++#else ++ _Dcomplex x, y, z; ++#endif + float64_t rx, ix, ry, iy, rz, iz; + unwrap_d(&rx, r1); + unwrap_d(&ix, i1); +@@ -2469,8 +2482,13 @@ xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) + rz = 1.0; + iz = 0.0; + } else { ++#ifndef _MSC_VER + x = rx + ix * I; + y = ry + iy * I; ++#else ++ x = _Cbuild(rx,ix); ++ y = _Cbuild(ry,iy); ++#endif + check(fold_complex64_pow(&z, &x, &y)); + rz = creal(z); + iz = cimag(z); +@@ -2482,7 +2500,11 @@ xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) + void + xcqpow(IEEE128 r1, IEEE128 i1, IEEE128 r2, IEEE128 i2, IEEE128 rr, IEEE128 ir) + { ++#ifndef _MSC_VER + long double complex x, y, z; ++#else ++ _Lcomplex x, y, z; ++#endif + float128_t rx, ix, ry, iy, rz, iz; + unwrap_q(&rx, r1); + unwrap_q(&ix, i1); +@@ -2492,8 +2514,13 @@ xcqpow(IEEE128 r1, IEEE128 i1, IEEE128 r2, IEEE128 i2, IEEE128 rr, IEEE128 ir) + rz = 1.0; + iz = 0.0; + } else { ++#ifndef _MSC_VER + x = rx + ix * I; + y = ry + iy * I; ++#else ++ x = _LCbuild(rx,ix); ++ y = _LCbuild(ry,iy); ++#endif + check(fold_complex128_pow(&z, &x, &y)); + rz = creall(z); + iz = cimagl(z); +diff --git a/lib/scutil/lockfile.c b/lib/scutil/lockfile.c +index 93c442804..d7a7e423c 100644 +--- a/lib/scutil/lockfile.c ++++ b/lib/scutil/lockfile.c +@@ -60,9 +61,6 @@ static char *udir = NULL; + */ + static long uwaiting; + +-#ifdef _WIN64 +-#define pid_t int +-#endif + int + __pg_make_lock_file(char *dir) + { +diff --git a/runtime/include/float128.h b/runtime/include/float128.h +index 61a01dc72..4bbf6b427 100644 +--- a/runtime/include/float128.h ++++ b/runtime/include/float128.h +@@ -8,7 +8,7 @@ + #ifndef _FLOAT128_H_ + #define _FLOAT128_H_ + +-#if defined(TARGET_POWER) || (defined(TARGET_X8664) && !defined(TARGET_WIN)) ++#if defined(TARGET_POWER) || (defined(TARGET_X8664)) + typedef __float128 float128_t; + #else + /* __float128 is not available on AArch64 or other generic targets; diff --git a/ports/vcpkg-tool-flang-classic/portfile.cmake b/ports/vcpkg-tool-flang-classic/portfile.cmake index 75fe7e3ec9d306..a00e96dbe6b564 100644 --- a/ports/vcpkg-tool-flang-classic/portfile.cmake +++ b/ports/vcpkg-tool-flang-classic/portfile.cmake @@ -1,72 +1,66 @@ vcpkg_check_linkage(ONLY_STATIC_LIBRARY) # unresolved symbol interr set(VCPKG_POLICY_EMPTY_PACKAGE enabled) -vcpkg_download_distfile( - PATCH_572 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/572.diff" - FILENAME 572.diff - SHA512 7bc8038f548ab141c1d5d8e7a93ffd72b0412a5ce3978831de0dd06e7e33ac2839924f8d97b56563cf6bc7e7bda005bc936c51ae15c5ffc4a4aceccc3f55a995 +vcpkg_download_distfile( + PATCH_1346 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1346.diff" + FILENAME 1346.diff + SHA512 367fe2a6bfe36ef27b0a534f516a4bba20128967bae366dd5d3943913ad487faa83270adacecee1d42ba7e65d84a420a12ee9bb614e6eb4102f59f66b301608d ) -vcpkg_download_distfile( - PATCH_1163 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1163.diff" - FILENAME 1163.diff - SHA512 e6c7be92dc2fcbe77056e58647d9f2074cc3dac81b25d15241ec0cbdc5d45658000c4764b1828e997d93738d839b1cccc2cfe7806d77ad8b4d0ea6107a7a15dc +vcpkg_download_distfile( + PATCH_1345 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1345.diff" + FILENAME 1345.diff + SHA512 6387c96c075428b389b71f701fb79f6e2f676014f86d4229dcb3bdc3b188191780dcc53b354281b064b618886b3281fa432ecfb01872d7ba73fdf3b3e4a234a3 ) -vcpkg_download_distfile( - PATCH_1165 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1165.diff" - FILENAME 1165.diff - SHA512 4202b5a9f9ea5c84525939e44bea6cf3514d1d948768d899fdf0db6f0d71ee45ce187bfea68742f7a332878335f43103df1e215fb70e1b60035f48d93f04db64 +vcpkg_download_distfile( + PATCH_1344 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1344.diff" + FILENAME 1344.diff + SHA512 0b7432949aaae1ade0927e1c2d4c320bddc64bc65a901aba8451eae21475f16f72b2171904f69827e277aeea2f0d9cc0a40cbf11c7b99e4d09860f6c093f997a ) -vcpkg_download_distfile( - PATCH_1166 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1166.diff" - FILENAME 1166.diff - SHA512 68cb37acbabd69285481c6baa38bb3ea61497268f39bb90e2384c6a6cbea9860d54554d5dd206ebfe77ef5610fd9dc93cd6da6000d6c22e274c2e635e23ff997 +vcpkg_download_distfile( + PATCH_1341 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1341.diff" + FILENAME 1341.diff + SHA512 ab3a2025d0e28b795d31e8907f1c36a4e282126751f7c74bc1896fa9176adc8574166d0facce25f7affa6f46e7c0636139ceeb08bc65b4d58c57d709d918875a ) -vcpkg_download_distfile( - PATCH_1168 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1168.diff" - FILENAME 1168.diff - SHA512 1efe6e8db18dd3834386801fb055bdcdb4a65987855a95175c6817ba30f3f34e8677e35836dc5b934edcd28e34ccf42273409970fa5bd6de85beb3e1d60d90d4 +vcpkg_download_distfile( + PATCH_1340 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1340.diff" + FILENAME 1340.diff + SHA512 0843c91b957e7fd0680577e83c68ca8d68ea59775e59fdc4c2fd407d4a8f26dc8ea7335262636050783929e975ab0e548f6fdc770aa30996da1ec120c9619d6c ) -# Needs a rebase -#vcpkg_download_distfile( -# PATCH_1177 -# URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1177.diff" -# FILENAME 1177.diff -# SHA512 e00dfbf70449a407919cdf4737beeb87614e009519abe20dd9213117447485e551e094c33460104378b925f1ba889e112c6ce86cc994338a4a9e028d587a59e2 -#) - -vcpkg_download_distfile( - PATCH_1178 - URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1178.diff" - FILENAME 1178.diff - SHA512 68b66f69c796cdfcf952e820ba47c02f9239ad0b59779fa364f7f58028e7771a3ca5b72c70386203f41ed3b85309473c7d2116d81c2c2ef15130ffa047ead863 +vcpkg_download_distfile( + PATCH_1335 + URLS "https://patch-diff.githubusercontent.com/raw/flang-compiler/flang/pull/1335.diff" + FILENAME 1335.diff + SHA512 34b64481e97d1fc5b1e8739bba3af18d83b7d9905f078be4fd21ab1617806ba5f432975928de0d8fa9d512507a4324724900843f1db9b4479b0b974e6bd42cf2 ) + vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO flang-compiler/flang - REF 0df85a22ae141078658569a0e1b3745afd702e45 - SHA512 f7195fbf0885dd767ff7f8ab48688586f4c9995dc81d619d4a315e3a3a8b1af019232410aa4eff1e85ed910281338dc6ebb54f55d34534c3d92766b6e1a74149 + REF 2d211cfe258c23cdc197cba8c4df1e6a116b9764 + SHA512 a7b4c7959f086d0d0bbc6b775d714d6dbe355c3cd3a389f815df3e87aee6850f3a278896b2ba8ffb0a3b022d8c9a6bea6ebce0b5cc505fc41b511ebc033dc7d8 PATCHES awk.patch - "${PATCH_572}" - "${PATCH_1163}" - "${PATCH_1165}" - "${PATCH_1166}" - "${PATCH_1168}" "1177.diff" - "${PATCH_1178}" move_flang2.patch cross.patch sep_runtime_from_compiler.patch + ${PATCH_1335} + ${PATCH_1340} + ${PATCH_1341} + ${PATCH_1344} + #${PATCH_1345} # already patched into + ${PATCH_1346} + #fix-build.patch ) vcpkg_find_acquire_program(PYTHON3) @@ -104,6 +98,7 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS #"-DLLVM_TARGETS_TO_BUILD=X86;AArch64" + "-DWITH_WERROR:BOOL=OFF" "-DFLANG_BUILD_RUNTIME=OFF" "-DTARGET_ARCHITECTURE=AMD64" "-DFLANG_LLVM_EXTENSIONS=ON" @@ -124,6 +119,7 @@ vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS #"-DLLVM_TARGETS_TO_BUILD=X86;AArch64" + "-DWITH_WERROR:BOOL=OFF" "-DFLANG_BUILD_RUNTIME=OFF" "-DTARGET_ARCHITECTURE=ARM64" "-DFLANG_LLVM_EXTENSIONS=ON" diff --git a/ports/vcpkg-tool-flang-classic/sep_runtime_from_compiler.patch b/ports/vcpkg-tool-flang-classic/sep_runtime_from_compiler.patch index f1b29916a5e6f4..d0c5869a484cd2 100644 --- a/ports/vcpkg-tool-flang-classic/sep_runtime_from_compiler.patch +++ b/ports/vcpkg-tool-flang-classic/sep_runtime_from_compiler.patch @@ -2,15 +2,6 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt index 000055e73..28a738269 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -292,7 +292,7 @@ endif() - # Add appropriate flags for GCC - if (LLVM_COMPILER_IS_GCC_COMPATIBLE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-common -Woverloaded-virtual -Wcast-qual -fno-strict-aliasing -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings") -- option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" ON) -+ option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) - elseif (MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++14 -Woverloaded-virtual -Wno-long-long -Wno-unused-parameter -Wwrite-strings") - option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" OFF) @@ -350,6 +350,7 @@ include_directories(BEFORE set(CMAKE_Fortran_MODULE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include) From dba9629f9f9774e037d9b307eb7307e1c205a43e Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Thu, 26 Jan 2023 23:25:23 +0100 Subject: [PATCH 139/141] fix build issues --- ports/lapack-reference/portfile.cmake | 26 +++++++++++++++++--------- ports/lapack-reference/time_test.patch | 21 --------------------- ports/lapack-reference/vcpkg.json | 3 +++ 3 files changed, 20 insertions(+), 30 deletions(-) delete mode 100644 ports/lapack-reference/time_test.patch diff --git a/ports/lapack-reference/portfile.cmake b/ports/lapack-reference/portfile.cmake index 9b09f3780f5902..131d2be80d86cd 100644 --- a/ports/lapack-reference/portfile.cmake +++ b/ports/lapack-reference/portfile.cmake @@ -11,14 +11,13 @@ endif() SET(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled) x_vcpkg_find_fortran(OUT_OPTIONS Fortran_opts - OUT_OPTIONS_RELEASE Fortran_opts_rel + OUT_OPTIONS_RELEASE Fortran_opts_rel OUT_OPTIONS_DEBUG Fortran_opts_dbg) if(Z_VCPKG_IS_INTERNAL_Fortran_INTEL OR VCPKG_DETECTED_CMAKE_Fortran_COMPILER MATCHES "ifort${VCPKG_HOST_EXECUTABLE_SUFFIX}") set(PATCHES intel.patch) endif() - vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO "Reference-LAPACK/lapack" @@ -28,7 +27,6 @@ vcpkg_from_github( PATCHES ${PATCHES} cmake-config.patch lapacke.patch - time_test.patch ) if(NOT VCPKG_TARGET_IS_WINDOWS) @@ -48,10 +46,19 @@ if("noblas" IN_LIST FEATURES) set(USE_OPTIMIZED_BLAS ON) endif() +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + "tests" BUILD_TESTING + ) + # Python3 for testing summary. -vcpkg_find_acquire_program(PYTHON3) -get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY) -vcpkg_add_to_path("${PYTHON3_DIR}") +if(BUILD_TESTING) + vcpkg_find_acquire_program(PYTHON3) + get_filename_component(PYTHON3_DIR "${PYTHON3}" DIRECTORY) + vcpkg_add_to_path("${PYTHON3_DIR}") + list(APPEND FEATURE_OPTIONS "-DPYTHON_EXECUTABLE=${PYTHON3}") + # export NO_STOP_MESSAGE=yes to avoid the signaling warning in the tests +endif() vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" @@ -62,10 +69,11 @@ vcpkg_cmake_configure( "-DCMAKE_POLICY_DEFAULT_CMP0065=NEW" "-DCMAKE_POLICY_DEFAULT_CMP0067=NEW" "-DCMAKE_POLICY_DEFAULT_CMP0083=NEW" + "-DTEST_FORTRAN_COMPILER=OFF" ${Fortran_opts} - "-DBUILD_TESTING:BOOL=ON" - "-DPYTHON_EXECUTABLE=${PYTHON3}" - OPTIONS_DEBUG ${Fortran_opts_rel} + ${FEATURE_OPTIONS} + OPTIONS_DEBUG ${Fortran_opts_dbg} + OPTIONS_RELEASE ${Fortran_opts_rel} MAYBE_UNUSED_VARIABLES CMAKE_REQUIRE_FIND_PACKAGE_BLAS ) diff --git a/ports/lapack-reference/time_test.patch b/ports/lapack-reference/time_test.patch deleted file mode 100644 index 5e14a192939526..00000000000000 --- a/ports/lapack-reference/time_test.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff --git a/INSTALL/CMakeLists.txt b/INSTALL/CMakeLists.txt -index b6f6e838a..bb336fb72 100644 ---- a/INSTALL/CMakeLists.txt -+++ b/INSTALL/CMakeLists.txt -@@ -1,9 +1,9 @@ - cmake_minimum_required(VERSION 3.2) - project(TIMING Fortran) --add_executable(secondtst_NONE second_NONE.f secondtst.f) --add_executable(secondtst_EXT_ETIME second_EXT_ETIME.f secondtst.f) --add_executable(secondtst_EXT_ETIME_ second_EXT_ETIME_.f secondtst.f) --add_executable(secondtst_INT_ETIME second_INT_ETIME.f secondtst.f) --add_executable(secondtst_INT_CPU_TIME second_INT_CPU_TIME.f secondtst.f) --add_executable(testieee tstiee.f) --add_executable(testversion ilaver.f LAPACK_version.f) -+add_library(secondtst_NONE STATIC second_NONE.f secondtst.f) -+add_library(secondtst_EXT_ETIME STATIC second_EXT_ETIME.f secondtst.f) -+add_executable(secondtst_EXT_ETIME_ second_EXT_ETIME_.f secondtst.f) -+add_library(secondtst_INT_ETIME STATIC second_INT_ETIME.f secondtst.f) -+add_library(secondtst_INT_CPU_TIME STATIC second_INT_CPU_TIME.f secondtst.f) -+add_library(testieee STATIC tstiee.f) -+add_library(testversion STATIC ilaver.f LAPACK_version.f) diff --git a/ports/lapack-reference/vcpkg.json b/ports/lapack-reference/vcpkg.json index 2a93779656046e..fa77960363e634 100644 --- a/ports/lapack-reference/vcpkg.json +++ b/ports/lapack-reference/vcpkg.json @@ -42,6 +42,9 @@ "dependencies": [ "blas" ] + }, + "tests": { + "description": "Enable the build of tests" } } } From a37c1c32c043be46184a5ff6a6782110fb5b411d Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Sat, 28 Jan 2023 20:04:38 +0100 Subject: [PATCH 140/141] fix build --- .../fix-build.patch | 209 ------------------ .../fix_win11_sdk.patch | 153 +++++++++++++ .../portfile.cmake | 2 +- 3 files changed, 154 insertions(+), 210 deletions(-) delete mode 100644 ports/flang-classic-fortran-runtime/fix-build.patch create mode 100644 ports/flang-classic-fortran-runtime/fix_win11_sdk.patch diff --git a/ports/flang-classic-fortran-runtime/fix-build.patch b/ports/flang-classic-fortran-runtime/fix-build.patch deleted file mode 100644 index b5f8016af63ed8..00000000000000 --- a/ports/flang-classic-fortran-runtime/fix-build.patch +++ /dev/null @@ -1,209 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index a4ede76dc..f92f1bc8a 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -6,6 +6,11 @@ - - cmake_minimum_required(VERSION 3.3) - -+set(CMAKE_C_STANDARD 99) -+set(CMAKE_C_STANDARD_REQUIRED ON) -+set(CMAKE_CXX_STANDARD 14) -+set(CMAKE_CXX_STANDARD_REQUIRED ON) -+#add_compile_options(-std:c11 -D__STDC__=1 /D_CRT_INTERNAL_NONSTDC_NAMES /D_CRT_DECLARE_NONSTDC_NAMES) - # If we are not building as a part of LLVM, build Flang as a - # standalone project, using LLVM as an external library: - if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) -@@ -304,7 +309,7 @@ if (LLVM_COMPILER_IS_GCC_COMPATIBLE) - endif() - endif () - elseif(MSVC) -- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -mlong-double-128") -+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Xclang -mlong-double-128") - option(WITH_WERROR "Compile with '-Werror' C/C++ compiler flag" ON) - if (WITH_WERROR) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror -Wno-error=unused-but-set-variable -Wno-error=fortify-source -Wno-error=comment -Wno-error=array-bounds -Wno-error=tautological-constant-out-of-range-compare -Wno-error=switch -Wno-error=enum-compare -Wno-error=deprecated-register -Wno-error=char-subscripts -Wno-error=parentheses -Wno-error=format -Wno-error=incompatible-pointer-types -Wno-error=sign-compare -Wno-error=string-conversion -Wno-error=microsoft-enum-forward-reference -Wno-error=void-pointer-to-int-cast -Wno-error=implicit-function-declaration -Wno-error=missing-field-initializers -Wno-error=missing-braces -Wno-error=pointer-to-int-cast -Wno-error=unused-variable -Wno-error=inconsistent-dllimport -Wno-error=int-conversion -Wno-error=unused-function -Wno-error=int-to-pointer-cast -Wno-error=constant-conversion -Wno-error=macro-redefined -Wno-error=compare-distinct-pointer-types -Wno-error=pointer-sign -Wno-error=sometimes-uninitialized -Wno-error=return-type -Wno-error=unsequenced -Wno-error=infinite-recursion -Wno-error=shift-count-overflow") -diff --git a/include/fp-folding.h b/include/fp-folding.h -index 8378f6aa1..bbfbaae5a 100644 ---- a/include/fp-folding.h -+++ b/include/fp-folding.h -@@ -165,6 +165,7 @@ enum fold_status fold_real128_exp(float128_t *res, const float128_t *arg); - enum fold_status fold_real128_log(float128_t *res, const float128_t *arg); - enum fold_status fold_real128_log10(float128_t *res, const float128_t *arg); - -+#ifndef _MSC_VER - enum fold_status fold_complex32_pow(float complex *res, const float complex *x, - const float complex *y); - enum fold_status fold_complex64_pow(double complex *res, -@@ -173,7 +174,16 @@ enum fold_status fold_complex64_pow(double complex *res, - enum fold_status fold_complex128_pow(long double complex *res, - const long double complex *x, - const long double complex *y); -- -+#else -+enum fold_status fold_complex32_pow(_Fcomplex *res, const _Fcomplex *x, -+ const _Fcomplex *y); -+enum fold_status fold_complex64_pow(_Dcomplex *res, -+ const _Dcomplex *x, -+ const _Dcomplex *y); -+enum fold_status fold_complex128_pow(_Lcomplex *res, -+ const _Lcomplex *x, -+ const _Lcomplex *y); -+#endif - #ifdef __cplusplus - } - #endif -diff --git a/lib/scutil/host-fp-folding.c b/lib/scutil/host-fp-folding.c -index d4e04d1d9..f3eb06c5c 100644 ---- a/lib/scutil/host-fp-folding.c -+++ b/lib/scutil/host-fp-folding.c -@@ -908,6 +908,7 @@ fold_real128_log10(float128_t *res, const float128_t *arg) - return check_and_restore_floating_point_environment(&saved_fenv); - } - -+#ifndef _MSC_VER - enum fold_status - fold_complex32_pow(float complex *res, const float complex *x, const float complex *y) - { -@@ -936,3 +937,31 @@ fold_complex128_pow(long double complex *res, const long double complex *x, cons - *res = cpowl(*x, *y); - return check_and_restore_floating_point_environment(&saved_fenv); - } -+#else -+enum fold_status -+fold_complex32_pow(_Fcomplex *res, const _Fcomplex *x, const _Fcomplex *y) -+{ -+ fenv_t saved_fenv; -+ set_up_floating_point_environment(&saved_fenv); -+ *res = cpowf(*x, *y); -+ return check_and_restore_floating_point_environment(&saved_fenv); -+} -+ -+enum fold_status -+fold_complex64_pow(_Dcomplex *res, const _Dcomplex *x, const _Dcomplex *y) -+{ -+ fenv_t saved_fenv; -+ set_up_floating_point_environment(&saved_fenv); -+ *res = cpow(*x, *y); -+ return check_and_restore_floating_point_environment(&saved_fenv); -+} -+ -+enum fold_status -+fold_complex128_pow(_Lcomplex *res, const _Lcomplex *x, const _Lcomplex *y) -+{ -+ fenv_t saved_fenv; -+ set_up_floating_point_environment(&saved_fenv); -+ *res = cpowl(*x, *y); -+ return check_and_restore_floating_point_environment(&saved_fenv); -+} -+#endif -\ No newline at end of file -diff --git a/lib/scutil/legacy-folding-api.c b/lib/scutil/legacy-folding-api.c -index 2518484ea..648db1a46 100644 ---- a/lib/scutil/legacy-folding-api.c -+++ b/lib/scutil/legacy-folding-api.c -@@ -2436,7 +2436,11 @@ cprintf(char *buffer, const char *format, INT *val) - void - xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) - { -+#ifndef _MSC_VER - float complex x, y, z; -+#else -+ _Fcomplex x, y, z; -+#endif - float32_t rx, ix, ry, iy, rz, iz; - unwrap_f(&rx, &r1); - unwrap_f(&ix, &i1); -@@ -2446,8 +2450,13 @@ xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) - rz = 1.0; - iz = 0.0; - } else { -+#ifndef _MSC_VER - x = rx + ix * I; - y = ry + iy * I; -+#else -+ x = _FCbuild(rx,ix); -+ y = _FCbuild(ry,iy); -+#endif - check(fold_complex32_pow(&z, &x, &y)); - rz = crealf(z); - iz = cimagf(z); -@@ -2459,7 +2468,11 @@ xcfpow(IEEE32 r1, IEEE32 i1, IEEE32 r2, IEEE32 i2, IEEE32 *rr, IEEE32 *ir) - void - xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) - { -+#ifndef _MSC_VER - double complex x, y, z; -+#else -+ _Dcomplex x, y, z; -+#endif - float64_t rx, ix, ry, iy, rz, iz; - unwrap_d(&rx, r1); - unwrap_d(&ix, i1); -@@ -2469,8 +2482,13 @@ xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) - rz = 1.0; - iz = 0.0; - } else { -+#ifndef _MSC_VER - x = rx + ix * I; - y = ry + iy * I; -+#else -+ x = _Cbuild(rx,ix); -+ y = _Cbuild(ry,iy); -+#endif - check(fold_complex64_pow(&z, &x, &y)); - rz = creal(z); - iz = cimag(z); -@@ -2482,7 +2500,11 @@ xcdpow(IEEE64 r1, IEEE64 i1, IEEE64 r2, IEEE64 i2, IEEE64 rr, IEEE64 ir) - void - xcqpow(IEEE128 r1, IEEE128 i1, IEEE128 r2, IEEE128 i2, IEEE128 rr, IEEE128 ir) - { -+#ifndef _MSC_VER - long double complex x, y, z; -+#else -+ _Lcomplex x, y, z; -+#endif - float128_t rx, ix, ry, iy, rz, iz; - unwrap_q(&rx, r1); - unwrap_q(&ix, i1); -@@ -2492,8 +2514,13 @@ xcqpow(IEEE128 r1, IEEE128 i1, IEEE128 r2, IEEE128 i2, IEEE128 rr, IEEE128 ir) - rz = 1.0; - iz = 0.0; - } else { -+#ifndef _MSC_VER - x = rx + ix * I; - y = ry + iy * I; -+#else -+ x = _LCbuild(rx,ix); -+ y = _LCbuild(ry,iy); -+#endif - check(fold_complex128_pow(&z, &x, &y)); - rz = creall(z); - iz = cimagl(z); -diff --git a/lib/scutil/lockfile.c b/lib/scutil/lockfile.c -index 93c442804..d7a7e423c 100644 ---- a/lib/scutil/lockfile.c -+++ b/lib/scutil/lockfile.c -@@ -60,9 +61,6 @@ static char *udir = NULL; - */ - static long uwaiting; - --#ifdef _WIN64 --#define pid_t int --#endif - int - __pg_make_lock_file(char *dir) - { -diff --git a/runtime/include/float128.h b/runtime/include/float128.h -index 61a01dc72..4bbf6b427 100644 ---- a/runtime/include/float128.h -+++ b/runtime/include/float128.h -@@ -8,7 +8,7 @@ - #ifndef _FLOAT128_H_ - #define _FLOAT128_H_ - --#if defined(TARGET_POWER) || (defined(TARGET_X8664) && !defined(TARGET_WIN)) -+#if defined(TARGET_POWER) || (defined(TARGET_X8664) && !defined(TARGET_WIN)) - typedef __float128 float128_t; - #else - /* __float128 is not available on AArch64 or other generic targets; diff --git a/ports/flang-classic-fortran-runtime/fix_win11_sdk.patch b/ports/flang-classic-fortran-runtime/fix_win11_sdk.patch new file mode 100644 index 00000000000000..72ba4a09a7b590 --- /dev/null +++ b/ports/flang-classic-fortran-runtime/fix_win11_sdk.patch @@ -0,0 +1,153 @@ +diff --git a/runtime/flang/async.c b/runtime/flang/async.c +index 982ed0cef..b96568b78 100644 +--- a/runtime/flang/async.c ++++ b/runtime/flang/async.c +@@ -250,7 +250,7 @@ Fio_asy_open(FILE *fp, struct asy **pasy) + asy->fp = fp; + asy->fd = __io_getfd(fp); + #if defined(TARGET_WIN) +- temp_handle = _get_osfhandle(asy->fd); ++ temp_handle = (void*)_get_osfhandle(asy->fd); + asy->handle = + ReOpenFile(temp_handle, GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_FLAG_OVERLAPPED); +diff --git a/runtime/flang/curdir.c b/runtime/flang/curdir.c +index 60f698f9f..0bb2dcb2d 100644 +--- a/runtime/flang/curdir.c ++++ b/runtime/flang/curdir.c +@@ -71,7 +71,7 @@ void __fort_getdir(char *curdir) + char path[MAXPATHLEN]; + char *p; + +- p = getcwd(path, MAXPATHLEN); ++ p = (char*)getcwd(path, MAXPATHLEN); + if (p == NULL) { + p = getenv("PWD"); + if (p == NULL) { +diff --git a/runtime/flang/getcwd3f.c b/runtime/flang/getcwd3f.c +index 2c4e6d9f6..bc5fdbc94 100644 +--- a/runtime/flang/getcwd3f.c ++++ b/runtime/flang/getcwd3f.c +@@ -15,7 +15,8 @@ + #include "utils3f.h" + #include "mpalloc.h" + +-#if defined(_WIN64) ++#if defined(_WIN32) ++#include + #define GETCWDM _getcwd /* getcwd deprecated in Windows in VC 2005 */ + #else + #define GETCWDM getcwd +diff --git a/runtime/flang/getdrivedirqq3f.c b/runtime/flang/getdrivedirqq3f.c +index c9c823534..56513bc53 100644 +--- a/runtime/flang/getdrivedirqq3f.c ++++ b/runtime/flang/getdrivedirqq3f.c +@@ -16,7 +16,8 @@ + #include "utils3f.h" + #include "mpalloc.h" + +-#if defined(_WIN64) ++#if defined(_WIN32) ++#include + #define GETCWDM _getcwd /* getcwd deprecated in Windows in VC 2005 */ + #else + #define GETCWDM getcwd +diff --git a/runtime/flang/getfileinfoqqi83f.c b/runtime/flang/getfileinfoqqi83f.c +index 0d1e28e41..5907ce82a 100644 +--- a/runtime/flang/getfileinfoqqi83f.c ++++ b/runtime/flang/getfileinfoqqi83f.c +@@ -22,7 +22,7 @@ + #define FILE$LAST -2 + #define FILE$ERROR -3 + +-#if defined(_WIN64) ++#if defined(_WIN32) + extern void __GetTimeToSecondsSince1970(ULARGE_INTEGER *fileTime, + unsigned int *out); + int ENT3F(GETFILEINFOQQI8, getfileinfoqqi8)(DCHAR(ffiles), char *buffer, +@@ -50,7 +50,7 @@ int ENT3F(GETFILEINFOQQI8, getfileinfoqqi8)(DCHAR(ffiles), char *buffer, + } + if (*handle <= 0) { + hFind = FindFirstFile(files, &FindFileData); +- *handle = hFind; ++ *handle = (int)hFind; + } else { + hFind = (HANDLE)*handle; + if (FindNextFile(hFind, &FindFileData) == 0) { +diff --git a/runtime/flang/global.h b/runtime/flang/global.h +index eebaca3b9..8a7499e8c 100644 +--- a/runtime/flang/global.h ++++ b/runtime/flang/global.h +@@ -42,7 +42,10 @@ typedef unsigned short WCHAR; + + #define VOID void + +-#if defined(_WIN64) ++#if defined(_WIN32) ++#if !defined(WIN_MSVCRT_IMP) && defined (_ACRTIMP) ++#define WIN_MSVCRT_IMP _ACRTIMP ++#endif + WIN_MSVCRT_IMP char *WIN_CDECL getenv(const char *); + WIN_MSVCRT_IMP long WIN_CDECL strtol(const char *, char **, int); + WIN_MSVCRT_IMP char *WIN_CDECL strerror(int); +diff --git a/runtime/flang/setfiletimeqq3f.c b/runtime/flang/setfiletimeqq3f.c +index 5328f0bb2..f256a0caa 100644 +--- a/runtime/flang/setfiletimeqq3f.c ++++ b/runtime/flang/setfiletimeqq3f.c +@@ -8,7 +8,8 @@ + /* clang-format off */ + + /* setfiletimeqq3f.c - Implements DFLIB setfiletimeqq subprogram. */ +-#if defined(_WIN64) ++#if defined(_WIN32) ++#define WIN32_LEAN_AND_MEAN + #include + #endif + #include +@@ -17,13 +18,14 @@ + #include "io3f.h" + #include "ent3f.h" + #include "utils3f.h" ++#include "mpalloc.h" + + #define FILE$FIRST -1 + #define FILE$LAST -2 + #define FILE$ERROR -3 + #define FILE$CURTIME -1 + +-#if defined(_WIN64) ++#if defined(_WIN32) + extern void __UnpackTime(unsigned int secsSince1970, ULARGE_INTEGER *fileTime); + extern int __GETFILEINFOQQ(DCHAR(ffiles), char *buffer, + int *handle DCLEN(ffiles)); +@@ -60,7 +62,7 @@ int ENT3F(SETFILETIMEQQ, setfiletimeqq)(DCHAR(ffile), + lastWrite->dwHighDateTime = fileTime->u.HighPart; + } + +- handle = FILE$FIRST; ++ handle = (void*)FILE$FIRST; + __GETFILEINFOQQ(CADR(ffile), (char *)&fileInfo, (int *)&handle, CLEN(ffile)); + while ((int)handle >= 0) { + __GETFILEINFOQQ(CADR(ffile), (char *)&fileInfo2, (int *)&handle, +diff --git a/runtime/flangrti/tempnam.c b/runtime/flangrti/tempnam.c +index d4a8609e4..a746abdef 100644 +--- a/runtime/flangrti/tempnam.c ++++ b/runtime/flangrti/tempnam.c +@@ -5,7 +5,7 @@ + * + */ + +-#if !defined(_WIN64) && !defined(USETEMPNAM) /* { */ ++#if !defined(_WIN32) || !defined(USETEMPNAM) /* { */ + #include + #include + +@@ -146,7 +146,7 @@ extern char *tempnam(char *, char *); + char * + __io_tempnam(char *dir, char *pfx) + { +-#if defined(_WIN64) ++#if defined(_WIN32) + return (_tempnam(dir, pfx)); + #else + return (tempnam(dir, pfx)); diff --git a/ports/flang-classic-fortran-runtime/portfile.cmake b/ports/flang-classic-fortran-runtime/portfile.cmake index aea19bd6409bc7..52c279be3b66e6 100644 --- a/ports/flang-classic-fortran-runtime/portfile.cmake +++ b/ports/flang-classic-fortran-runtime/portfile.cmake @@ -66,7 +66,7 @@ vcpkg_from_github( ${PATCH_1344} #${PATCH_1345} ${PATCH_1346} - #fix-build.patch + fix_win11_sdk.patch ) set(NINJA "${CURRENT_HOST_INSTALLED_DIR}/tools/ninja/ninja${VCPKG_HOST_EXECUTABLE_SUFFIX}") From e2b7713d2f49bbda5781f072fe21240e37cb3996 Mon Sep 17 00:00:00 2001 From: Alexander Neumann <30894796+Neumann-A@users.noreply.github.com> Date: Sat, 28 Jan 2023 20:15:10 +0100 Subject: [PATCH 141/141] updatte to 15.0.7 --- ports/vcpkg-tool-llvm/portfile.cmake | 4 ++-- ports/vcpkg-tool-llvm/vcpkg.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ports/vcpkg-tool-llvm/portfile.cmake b/ports/vcpkg-tool-llvm/portfile.cmake index 651467dcf0c017..5c97646d78bb14 100644 --- a/ports/vcpkg-tool-llvm/portfile.cmake +++ b/ports/vcpkg-tool-llvm/portfile.cmake @@ -10,11 +10,11 @@ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86") set(name LLVM-${version}-win32.exe) set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/${name}") - set(hash 82bebd0c0912fd000602f5961492ada913e3b6cb63001b63e2de3e070a168c65a628ebb1a443403b272210af131240f3a3032e03478037b5a8200cc243f27b74) + set(hash 0) elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64") set(name LLVM-${version}-win64.exe) set(url "https://github.com/llvm/llvm-project/releases/download/llvmorg-${version}/${name}") - set(hash 96916ef4838e2b43debbf6e92c3b3b1a862051348771df9de6c7c1b0d839ef04c057bddde7e59c2f08e1483d7609dd7a5e77616ed1072047404caa974841a668) + set(hash 5aa6f9345a194faf22cafbc3ad817232cf1250737ebbbbea89d7d064c81ad0b051ddd5346021772997c98fd477215d369a5b4644c89631856ac1718978fd4bd8) endif() vcpkg_download_distfile(archive_path URLS "${url}" diff --git a/ports/vcpkg-tool-llvm/vcpkg.json b/ports/vcpkg-tool-llvm/vcpkg.json index e460153aa4a8d2..00899850f4b54d 100644 --- a/ports/vcpkg-tool-llvm/vcpkg.json +++ b/ports/vcpkg-tool-llvm/vcpkg.json @@ -1,6 +1,6 @@ { "name": "vcpkg-tool-llvm", - "version": "14.0.3", + "version": "15.0.7", "description": "The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Note: the repository does not accept github pull requests at this moment. Please submit your patches at http://reviews.llvm.org. ", "homepage": "https://github.com/llvm/llvm-project", "license": null,