aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/openblas/portfile.cmake
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/openblas/portfile.cmake
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/openblas/portfile.cmake')
-rw-r--r--vcpkg/ports/openblas/portfile.cmake75
1 files changed, 75 insertions, 0 deletions
diff --git a/vcpkg/ports/openblas/portfile.cmake b/vcpkg/ports/openblas/portfile.cmake
new file mode 100644
index 0000000..07c9ad4
--- /dev/null
+++ b/vcpkg/ports/openblas/portfile.cmake
@@ -0,0 +1,75 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO OpenMathLib/OpenBLAS
+ REF "v${VERSION}"
+ SHA512 046316b4297460bffca09c890ecad17ea39d8b3db92ff445d03b547dd551663d37e40f38bce8ae11e2994374ff01e622b408da27aa8e40f4140185ee8f001a60
+ HEAD_REF develop
+ PATCHES
+ disable-testing.diff
+ getarch.diff
+ system-check-msvc.diff
+ win32-uwp.diff
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS OPTIONS
+ FEATURES
+ threads USE_THREAD
+ simplethread USE_SIMPLE_THREADED_LEVEL3
+ dynamic-arch DYNAMIC_ARCH
+)
+
+# If not explicitly configured for a cross build, OpenBLAS wants to run
+# getarch executables in order to optimize for the target.
+# Adapting this to vcpkg triplets:
+# - install-getarch.diff introduces and uses GETARCH_BINARY_DIR,
+# - architecture and system name are required to match for GETARCH_BINARY_DIR, but
+# - uwp (aka WindowsStore) may run windows getarch.
+string(REPLACE "WindowsStore_" "_" SYSTEM_KEY "${VCPKG_CMAKE_SYSTEM_NAME}_${VCPKG_TARGET_ARCHITECTURE}")
+set(GETARCH_BINARY_DIR "${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}/${SYSTEM_KEY}")
+if(EXISTS "${GETARCH_BINARY_DIR}")
+ message(STATUS "OpenBLAS cross build, but may use ${PORT}:${HOST_TRIPLET} getarch")
+ list(APPEND OPTIONS "-DGETARCH_BINARY_DIR=${GETARCH_BINARY_DIR}")
+elseif(VCPKG_CROSSCOMPILING)
+ message(STATUS "OpenBLAS cross build, may not be able to use getarch")
+else()
+ message(STATUS "OpenBLAS native build")
+endif()
+
+if(VCPKG_TARGET_IS_EMSCRIPTEN)
+ # Only the riscv64 kernel with riscv64_generic target is supported.
+ # Cf. https://github.com/OpenMathLib/OpenBLAS/issues/3640#issuecomment-1144029630 et al.
+ list(APPEND OPTIONS
+ -DEMSCRIPTEN_SYSTEM_PROCESSOR=riscv64
+ -DTARGET=RISCV64_GENERIC
+ )
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${OPTIONS}
+ "-DCMAKE_PROJECT_INCLUDE=${CURRENT_PORT_DIR}/cmake-project-include.cmake"
+ -DBUILD_TESTING=OFF
+ -DBUILD_WITHOUT_LAPACK=ON
+ -DNOFORTRAN=ON
+ MAYBE_UNUSED_VARIABLES
+ GETARCH_BINARY_DIR
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/OpenBLAS)
+vcpkg_fixup_pkgconfig()
+
+# Required from native builds, optional from cross builds.
+if(NOT VCPKG_CROSSCOMPILING OR EXISTS "${CURRENT_PACKAGES_DIR}/bin/getarch${VCPKG_TARGET_EXECUTABLE_SUFFIX}")
+ vcpkg_copy_tools(
+ TOOL_NAMES getarch getarch_2nd
+ DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/${SYSTEM_KEY}"
+ AUTO_CLEAN
+ )
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")