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")