forked from microsoft/vcpkg
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[blas/lapack] force vendor (microsoft#24327)
Co-authored-by: Alexander Neumann <[email protected]> Co-authored-by: Billy Robert O'Neal III <[email protected]>
- Loading branch information
1 parent
5fa0f07
commit 0bc3f04
Showing
44 changed files
with
1,226 additions
and
1,018 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
prefix=${pcfiledir}/../.. | ||
|
||
Name: BLAS | ||
Description: Implementation of BLAS | ||
Version: | ||
Requires: @requires@ | ||
Libs: @libs@ | ||
Cflags: @cflags@ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,72 @@ | ||
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) | ||
|
||
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/blas") | ||
|
||
# Make sure BLAS can be found | ||
vcpkg_list(SET CMAKE_IGNORE_PATH) | ||
if(NOT DEFINED ENV{MKLROOT}) | ||
list(APPEND CMAKE_IGNORE_PATH "${CURRENT_INSTALLED_DIR}/lib/intel64") | ||
endif() | ||
vcpkg_cmake_configure( | ||
SOURCE_PATH "${CURRENT_PORT_DIR}" | ||
OPTIONS | ||
"-DCMAKE_PREFIX_PATH=${CURRENT_PACKAGES_DIR}" | ||
"-DCMAKE_IGNORE_PATH=${CMAKE_IGNORE_PATH}" | ||
) | ||
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) | ||
|
||
# Due to the interaction between BLAS and LAPACK, we need to choose implementations consistent with | ||
# each other. | ||
# | ||
# First, if we are on Apple, we use the Accelerate framework. | ||
# | ||
# Then, we prefer to use openblas and lapack-reference for blas and lapack, respectively, but | ||
# sometimes are unable. | ||
# | ||
# If we are on Windows and arm or uwp, that we use gfortran as our fortran compiler creates an issue | ||
# because there is no available libgfortran. This means ew can't use lapack-reference at all. | ||
# | ||
# If we are on Windows and static, there is a linking problem caused by static gfortran in the same | ||
# link as openblas, so we have to use the blas implementation from lapack-reference. | ||
# | ||
# That results in roughly the following decision tree: | ||
# | ||
# no_libgfortran = (uwp || (windows && arm)) | ||
# can_link_mixed_static_libgfortran = !windows || !static | ||
# | ||
# if (no_libgfortran) { | ||
# return { | ||
# "blas": "openblas", | ||
# "lapack": "clapack" | ||
# }; | ||
# } else if (can_link_mixed_static_libgfortran) { | ||
# return { | ||
# "blas": "openblas", | ||
# "lapack": "lapack-reference[noblas]" | ||
# }; | ||
# } else { | ||
# return { | ||
# "blas": "lapack-reference[blas]", | ||
# "lapack": "lapack-reference[blas]" | ||
# }; | ||
# } | ||
# | ||
# Scoping this to just the 'can use openblas' question, we get: | ||
# uwp || (windows && arm) || !windows || !static | ||
# and for lapack-reference[blas], the DeMorgan'd inverse of that: | ||
# !uwp && !(windows && arm) && windows && static | ||
|
||
if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) | ||
# Use Apple's accelerate framework where available | ||
set(BLA_VENDOR Apple) | ||
set(requires "") | ||
set(libs "-framework Accelerate") | ||
set(cflags "-framework Accelerate") | ||
elseif(VCPKG_TARGET_IS_UWP | ||
OR (VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") | ||
OR NOT VCPKG_TARGET_IS_WINDOWS | ||
OR NOT (VCPKG_LIBRARY_LINKAGE STREQUAL "static")) | ||
set(BLA_VENDOR OpenBLAS) | ||
set(requires openblas) | ||
else() | ||
set(BLA_VENDOR Generic) | ||
set(requires "blas-reference") | ||
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() | ||
|
||
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) |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
# BLA_VENDOR and BLA_STATIC are documented at: | ||
# * https://cmake.org/cmake/help/latest/module/FindBLAS.html | ||
# * https://cmake.org/cmake/help/latest/module/FindLAPACK.html | ||
|
||
set(BLA_VENDOR @BLA_VENDOR@) | ||
set(BLA_STATIC @BLA_STATIC@) | ||
_find_package(${ARGS}) | ||
unset(BLA_VENDOR) | ||
unset(BLA_STATIC) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
prefix=${pcfiledir}/../.. | ||
|
||
Name: CBLAS | ||
Description: Implementation of CBLAS | ||
Version: | ||
Requires: @requires@ | ||
Libs: @libs@ | ||
Cflags: @cflags@ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) | ||
|
||
# This block should be kept in sync with the port 'blas' | ||
if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) | ||
# Use Apple's accelerate framework where available | ||
set(BLA_VENDOR Apple) | ||
set(requires "") | ||
set(libs "-framework Accelerate") | ||
set(cflags "-framework Accelerate") | ||
elseif(VCPKG_TARGET_IS_UWP | ||
OR (VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") | ||
OR NOT VCPKG_TARGET_IS_WINDOWS | ||
OR NOT (VCPKG_LIBRARY_LINKAGE STREQUAL "static")) | ||
set(BLA_VENDOR OpenBLAS) | ||
set(requires openblas) | ||
else() | ||
set(BLA_VENDOR Generic) | ||
set(requires "cblas-reference") | ||
endif() | ||
|
||
configure_file("${CMAKE_CURRENT_LIST_DIR}/cblas.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/cblas.pc" @ONLY) | ||
if(NOT VCPKG_BUILD_TYPE) | ||
configure_file("${CMAKE_CURRENT_LIST_DIR}/cblas.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/cblas.pc" @ONLY) | ||
endif() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
{ | ||
"$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", | ||
"name": "cblas", | ||
"version-date": "2024-03-19", | ||
"description": "Metapackage for packages which provide CBLAS", | ||
"license": null, | ||
"dependencies": [ | ||
{ | ||
"name": "lapack-reference", | ||
"features": [ | ||
"cblas" | ||
], | ||
"platform": "!osx & !ios & !uwp & !(windows & arm) & windows & static" | ||
}, | ||
{ | ||
"name": "openblas", | ||
"platform": "!osx & !ios & (uwp | (windows & arm) | !windows | !static)" | ||
}, | ||
{ | ||
"name": "vcpkg-cmake", | ||
"host": true | ||
} | ||
] | ||
} |
Oops, something went wrong.