diff options
Diffstat (limited to 'vcpkg/ports/openblas/portfile.cmake')
| -rw-r--r-- | vcpkg/ports/openblas/portfile.cmake | 75 |
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") |