openblas: Use flang to build lapack on clang64.

This commit is contained in:
مهدي شينون (Mehdi Chinoune) 2023-02-24 11:48:52 +01:00 committed by مهدي شينون (Mehdi Chinoune)
parent e436988f77
commit fd6b60e652

View File

@ -6,7 +6,7 @@ pkgbase=mingw-w64-openblas
pkgname=("${MINGW_PACKAGE_PREFIX}-openblas"
$([[ "${CARCH}" == "i686" ]] || echo "${MINGW_PACKAGE_PREFIX}-openblas64"))
pkgver=0.3.28
pkgrel=1
pkgrel=2
pkgdesc="An optimized BLAS library based on GotoBLAS2 1.13 BSD, providing optimized blas, lapack, and cblas (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
@ -24,7 +24,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
makedepends=("${MINGW_PACKAGE_PREFIX}-cc"
"${MINGW_PACKAGE_PREFIX}-cmake"
"${MINGW_PACKAGE_PREFIX}-ninja"
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-fc")
"${MINGW_PACKAGE_PREFIX}-fc"
"dos2unix")
options=('!buildflags')
source=(https://github.com/OpenMathLib/OpenBLAS/releases/download/v${pkgver}/${_realname}-${pkgver}.tar.gz
@ -64,10 +64,6 @@ _build_openblas() {
_extra_config+=("-DCMAKE_BUILD_TYPE=Debug")
fi
if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then
_extra_config+=("-DC_LAPACK=ON")
fi
if [[ ${CARCH} == aarch64 ]]; then
# Clang wasn't able to compile all the kernels inside the arm64 folder,
# Enable only the cores known to run Windows on ARM
@ -76,12 +72,18 @@ _build_openblas() {
_extra_config+=("-DTARGET=CORE2" "-DDYNAMIC_ARCH=ON")
fi
if [[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]]; then
_extra_config+=("-DOpenMP_Fortran_FLAGS=-fopenmp" "-DOpenMP_Fortran_LIB_NAMES=omp")
export FFLAGS="-I${MINGW_PREFIX}/include"
fi
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
${MINGW_PREFIX}/bin/cmake \
-G"Ninja" \
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \
-DUSE_THREAD=ON \
-DNUM_THREADS=64 \
-DUSE_OPENMP=ON \
@ -108,11 +110,15 @@ build() {
check() {
cd "${srcdir}"/build-${MSYSTEM}-32
ctest
${MINGW_PREFIX}/bin/cmake -DBUILD_TESTING=ON ../${_realname}-${pkgver}
${MINGW_PREFIX}/bin/cmake --build .
${MINGW_PREFIX}/bin/ctest
if [ "${CARCH}" != "i686" ]; then
cd "${srcdir}"/build-${MSYSTEM}-64
ctest
cd "${srcdir}/build-${MSYSTEM}-64"
${MINGW_PREFIX}/bin/cmake -DBUILD_TESTING=ON ../${_realname}-${pkgver}
${MINGW_PREFIX}/bin/cmake --build .
${MINGW_PREFIX}/bin/ctest
fi
}
@ -123,6 +129,11 @@ package_openblas() {
DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake --install .
local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
for _f in "${pkgdir}${MINGW_PREFIX}"/lib/cmake/OpenBLAS/*.cmake; do
sed -e "s|${PREFIX_WIN}|\$\{_IMPORT_PREFIX\}|g" -i ${_f}
done
# Install License
install -Dm0644 "${srcdir}"/${_realname}-${pkgver}/LICENSE "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE
install -Dm0644 "${srcdir}"/${_realname}-${pkgver}/lapack-netlib/LICENSE "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE-lapack
@ -138,6 +149,11 @@ package_openblas64() {
DESTDIR=${pkgdir} ${MINGW_PREFIX}/bin/cmake --install .
local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX})
for _f in "${pkgdir}${MINGW_PREFIX}"/lib/cmake/OpenBLAS64/*.cmake; do
sed -e "s|${PREFIX_WIN}|\$\{_IMPORT_PREFIX\}|g" -i ${_f}
done
# Install License
install -Dm0644 "${srcdir}"/${_realname}-${pkgver}/LICENSE "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}64/LICENSE
install -Dm0644 "${srcdir}"/${_realname}-${pkgver}/lapack-netlib/LICENSE "${pkgdir}"${MINGW_PREFIX}/share/licenses/${_realname}64/LICENSE-lapack