Merge pull request #9778 from MehdiChinoune/openblas-cmake
openblas: use cmake to fix building on clang32
This commit is contained in:
31
mingw-w64-openblas/006-fix-cmake-detect-clang-64-bits.patch
Normal file
31
mingw-w64-openblas/006-fix-cmake-detect-clang-64-bits.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
From efd7ac241dc7de94b3a6e660599df795e2320828 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=D9=85=D9=87=D8=AF=D9=8A=20=D8=B4=D9=8A=D9=86=D9=88=D9=86?=
|
||||
=?UTF-8?q?=20=28Mehdi=20Chinoune=29?=
|
||||
<79349457+MehdiChinoune@users.noreply.github.com>
|
||||
Date: Sat, 16 Oct 2021 07:55:10 +0100
|
||||
Subject: [PATCH] Fix MinGW/Clang 64 bits detection.
|
||||
|
||||
CMAKE_COMPILER_IS_GNUCC is only valid for GCC.
|
||||
---
|
||||
cmake/system_check.cmake | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/cmake/system_check.cmake b/cmake/system_check.cmake
|
||||
index 8d0558c0e..72c48db37 100644
|
||||
--- a/cmake/system_check.cmake
|
||||
+++ b/cmake/system_check.cmake
|
||||
@@ -20,11 +20,11 @@ endif()
|
||||
|
||||
|
||||
|
||||
-if(CMAKE_COMPILER_IS_GNUCC AND WIN32)
|
||||
+if(MINGW)
|
||||
execute_process(COMMAND ${CMAKE_C_COMPILER} -dumpmachine
|
||||
- OUTPUT_VARIABLE OPENBLAS_GCC_TARGET_MACHINE
|
||||
+ OUTPUT_VARIABLE OPENBLAS_MINGW_TARGET_MACHINE
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
- if(OPENBLAS_GCC_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64")
|
||||
+ if(OPENBLAS_MINGW_TARGET_MACHINE MATCHES "amd64|x86_64|AMD64")
|
||||
set(MINGW64 1)
|
||||
endif()
|
||||
endif()
|
||||
176
mingw-w64-openblas/007-support-building-both-static-shared.patch
Normal file
176
mingw-w64-openblas/007-support-building-both-static-shared.patch
Normal file
@@ -0,0 +1,176 @@
|
||||
From 5e1ed25c9a45f2a76348e2d6dae3f93ba6f84008 Mon Sep 17 00:00:00 2001
|
||||
From: Mehdi Chinoune <mehdi.chinoune@hotmail.com>
|
||||
Date: Sat, 16 Oct 2021 08:33:47 +0100
|
||||
Subject: [PATCH] Support building both static and shared libraries
|
||||
|
||||
---
|
||||
CMakeLists.txt | 89 ++++++++++++++++++++++++++++++++++++++++----------
|
||||
1 file changed, 71 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index a18a7adc3..61d8cc895 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -34,6 +34,10 @@ set(NO_AFFINITY 1)
|
||||
endif()
|
||||
option(CPP_THREAD_SAFETY_TEST "Run a massively parallel DGEMM test to confirm thread safety of the library (requires OpenMP and about 1.3GB of RAM)" OFF)
|
||||
option(CPP_THREAD_SAFETY_GEMV "Run a massively parallel DGEMV test to confirm thread safety of the library (requires OpenMP)" OFF)
|
||||
+option(BUILD_STATIC_LIBS "Build static library" ON)
|
||||
+if(NOT BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS)
|
||||
+ set(BUILD_STATIC_LIBS ON CACHE BOOL "Build static library" FORCE)
|
||||
+endif()
|
||||
|
||||
# Add a prefix or suffix to all exported symbol names in the shared library.
|
||||
# Avoids conflicts with other BLAS libraries, especially when using
|
||||
@@ -183,12 +187,45 @@ if (${DYNAMIC_ARCH})
|
||||
endif ()
|
||||
|
||||
# add objects to the openblas lib
|
||||
-add_library(${OpenBLAS_LIBNAME} ${LA_SOURCES} ${LAPACKE_SOURCES} ${RELA_SOURCES} ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})
|
||||
-target_include_directories(${OpenBLAS_LIBNAME} INTERFACE $<INSTALL_INTERFACE:include/openblas${SUFFIX64}>)
|
||||
+if(NOT NO_LAPACK)
|
||||
+ add_library(LAPACK OBJECT ${LA_SOURCES})
|
||||
+ list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACK>")
|
||||
+endif()
|
||||
+if(NOT NO_LAPACKE)
|
||||
+ add_library(LAPACKE OBJECT ${LAPACKE_SOURCES})
|
||||
+ list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACKE>")
|
||||
+endif()
|
||||
+if(BUILD_RELAPACK)
|
||||
+ add_library(RELAPACK OBJECT ${RELA_SOURCES})
|
||||
+ list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:RELAPACK>")
|
||||
+endif()
|
||||
+set(OpenBLAS_LIBS "")
|
||||
+if(BUILD_STATIC_LIBS)
|
||||
+ add_library(${OpenBLAS_LIBNAME}_static STATIC ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})
|
||||
+ target_include_directories(${OpenBLAS_LIBNAME}_static INTERFACE $<INSTALL_INTERFACE:include/openblas${SUFFIX64}>)
|
||||
+ list(APPEND OpenBLAS_LIBS ${OpenBLAS_LIBNAME}_static)
|
||||
+endif()
|
||||
+if(BUILD_SHARED_LIBS)
|
||||
+ add_library(${OpenBLAS_LIBNAME}_shared SHARED ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})
|
||||
+ target_include_directories(${OpenBLAS_LIBNAME}_shared INTERFACE $<INSTALL_INTERFACE:include/openblas${SUFFIX64}>)
|
||||
+ list(APPEND OpenBLAS_LIBS ${OpenBLAS_LIBNAME}_shared)
|
||||
+endif()
|
||||
+if(BUILD_STATIC_LIBS)
|
||||
+ add_library(${OpenBLAS_LIBNAME} ALIAS ${OpenBLAS_LIBNAME}_static)
|
||||
+else()
|
||||
+ add_library(${OpenBLAS_LIBNAME} ALIAS ${OpenBLAS_LIBNAME}_shared)
|
||||
+endif()
|
||||
+
|
||||
+set_target_properties(${OpenBLAS_LIBS} PROPERTIES OUTPUT_NAME ${OpenBLAS_LIBNAME})
|
||||
|
||||
# Android needs to explicitly link against libm
|
||||
if(ANDROID)
|
||||
- target_link_libraries(${OpenBLAS_LIBNAME} m)
|
||||
+ if(BUILD_STATIC_LIBS)
|
||||
+ target_link_libraries(${OpenBLAS_LIBNAME}_static m)
|
||||
+ endif()
|
||||
+ if(BUILD_SHARED_LIBS)
|
||||
+ target_link_libraries(${OpenBLAS_LIBNAME}_shared m)
|
||||
+ endif()
|
||||
endif()
|
||||
|
||||
# Handle MSVC exports
|
||||
@@ -197,21 +234,21 @@ if(MSVC AND BUILD_SHARED_LIBS)
|
||||
include("${PROJECT_SOURCE_DIR}/cmake/export.cmake")
|
||||
else()
|
||||
# Creates verbose .def file (51KB vs 18KB)
|
||||
- set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true)
|
||||
+ set_target_properties(${OpenBLAS_LIBNAME}_shared PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS true)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Set output for libopenblas
|
||||
-set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||
-set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES LIBRARY_OUTPUT_NAME_DEBUG "${OpenBLAS_LIBNAME}_d")
|
||||
-set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES EXPORT_NAME "OpenBLAS")
|
||||
+set_target_properties( ${OpenBLAS_LIBS} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
|
||||
+set_target_properties( ${OpenBLAS_LIBS} PROPERTIES LIBRARY_OUTPUT_NAME_DEBUG "${OpenBLAS_LIBNAME}_d")
|
||||
+set_target_properties( ${OpenBLAS_LIBS} PROPERTIES EXPORT_NAME "OpenBLAS")
|
||||
|
||||
foreach (OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES})
|
||||
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
|
||||
|
||||
- set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} )
|
||||
- set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} )
|
||||
- set_target_properties( ${OpenBLAS_LIBNAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} )
|
||||
+ set_target_properties( ${OpenBLAS_LIBS} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} )
|
||||
+ set_target_properties( ${OpenBLAS_LIBS} PROPERTIES LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} )
|
||||
+ set_target_properties( ${OpenBLAS_LIBS} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${PROJECT_BINARY_DIR}/lib/${OUTPUTCONFIG} )
|
||||
endforeach()
|
||||
|
||||
enable_testing()
|
||||
@@ -220,10 +257,21 @@ if (USE_THREAD)
|
||||
# Add threading library to linker
|
||||
find_package(Threads)
|
||||
if (THREADS_HAVE_PTHREAD_ARG)
|
||||
- set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY COMPILE_OPTIONS "-pthread")
|
||||
- set_property(TARGET ${OpenBLAS_LIBNAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
|
||||
+ if(BUILD_STATIC_LIBS)
|
||||
+ set_property(TARGET ${OpenBLAS_LIBNAME}_static PROPERTY COMPILE_OPTIONS "-pthread")
|
||||
+ set_property(TARGET ${OpenBLAS_LIBNAME}_static PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
|
||||
+ endif()
|
||||
+ if(BUILD_SHARED_LIBS)
|
||||
+ set_property(TARGET ${OpenBLAS_LIBNAME}_shared PROPERTY COMPILE_OPTIONS "-pthread")
|
||||
+ set_property(TARGET ${OpenBLAS_LIBNAME}_shared PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread")
|
||||
+ endif()
|
||||
+ endif()
|
||||
+ if(BUILD_STATIC_LIBS)
|
||||
+ target_link_libraries(${OpenBLAS_LIBNAME}_static ${CMAKE_THREAD_LIBS_INIT})
|
||||
+ endif()
|
||||
+ if(BUILD_SHARED_LIBS)
|
||||
+ target_link_libraries(${OpenBLAS_LIBNAME}_shared ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
- target_link_libraries(${OpenBLAS_LIBNAME} ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
|
||||
#if (MSVC OR NOT NOFORTRAN)
|
||||
@@ -244,14 +292,14 @@ if (NOT NOFORTRAN)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
-set_target_properties(${OpenBLAS_LIBNAME} PROPERTIES
|
||||
+set_target_properties(${OpenBLAS_LIBS} PROPERTIES
|
||||
VERSION ${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}
|
||||
SOVERSION ${OpenBLAS_MAJOR_VERSION}
|
||||
)
|
||||
|
||||
if (BUILD_SHARED_LIBS AND BUILD_RELAPACK)
|
||||
if (NOT MSVC)
|
||||
- target_link_libraries(${OpenBLAS_LIBNAME} "-Wl,-allow-multiple-definition")
|
||||
+ target_link_libraries(${OpenBLAS_LIBNAME}_shared "-Wl,-allow-multiple-definition")
|
||||
else()
|
||||
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /FORCE:MULTIPLE")
|
||||
endif()
|
||||
@@ -314,7 +362,7 @@ endif()
|
||||
if (NOT ${SYMBOLSUFFIX} STREQUAL "")
|
||||
message(STATUS "adding suffix ${SYMBOLSUFFIX} to names of exported symbols in ${OpenBLAS_LIBNAME}")
|
||||
endif()
|
||||
- add_custom_command(TARGET ${OpenBLAS_LIBNAME} POST_BUILD
|
||||
+ add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD
|
||||
COMMAND perl ${PROJECT_SOURCE_DIR}/exports/gensymbol "objcopy" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" \"${SYMBOLPREFIX}\" \"${SYMBOLSUFFIX}\" "${BUILD_LAPACK_DEPRECATED}" > ${PROJECT_BINARY_DIR}/objcopy.def
|
||||
COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so
|
||||
COMMENT "renaming symbols"
|
||||
@@ -325,7 +373,7 @@ endif()
|
||||
# Install project
|
||||
|
||||
# Install libraries
|
||||
-install(TARGETS ${OpenBLAS_LIBNAME}
|
||||
+install(TARGETS ${OpenBLAS_LIBS}
|
||||
EXPORT "OpenBLAS${SUFFIX64}Targets"
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
@@ -387,7 +435,12 @@ endif()
|
||||
|
||||
if(NOT NO_LAPACKE)
|
||||
message (STATUS "Copying LAPACKE header files to ${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
- add_dependencies( ${OpenBLAS_LIBNAME} genlapacke)
|
||||
+ if(BUILD_STATIC_LIBS)
|
||||
+ add_dependencies( ${OpenBLAS_LIBNAME}_static genlapacke)
|
||||
+ endif()
|
||||
+ if(BUILD_SHARED_LIBS)
|
||||
+ add_dependencies( ${OpenBLAS_LIBNAME}_shared genlapacke)
|
||||
+ endif()
|
||||
FILE(GLOB_RECURSE INCLUDE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/lapack-netlib/LAPACKE/*.h")
|
||||
install (FILES ${INCLUDE_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
|
||||
@@ -5,7 +5,7 @@ _realname=OpenBLAS
|
||||
pkgbase=mingw-w64-openblas
|
||||
pkgname="${MINGW_PACKAGE_PREFIX}-openblas"
|
||||
pkgver=0.3.18
|
||||
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' 'clang32')
|
||||
@@ -19,8 +19,8 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs"
|
||||
"${MINGW_PACKAGE_PREFIX}-libwinpthread"
|
||||
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-libgfortran")
|
||||
)
|
||||
makedepends=("perl"
|
||||
#"${MINGW_PACKAGE_PREFIX}-cmake"
|
||||
makedepends=("${MINGW_PACKAGE_PREFIX}-cmake"
|
||||
"${MINGW_PACKAGE_PREFIX}-ninja"
|
||||
$([[ ${MINGW_PACKAGE_PREFIX} == *-clang-* ]] || echo "${MINGW_PACKAGE_PREFIX}-gcc-fortran")
|
||||
)
|
||||
options=('!buildflags')
|
||||
@@ -28,109 +28,75 @@ source=(${_realname}-${pkgver}.tar.gz::https://github.com/xianyi/OpenBLAS/archiv
|
||||
001-defaultlib-not-for-gcc.patch
|
||||
002-lgfortran-requires-lquadmath.patch
|
||||
004-fix-generate-cmake-config.patch
|
||||
005-fix-clang32-compile-flags.patch)
|
||||
005-fix-clang32-compile-flags.patch
|
||||
006-fix-cmake-detect-clang-64-bits.patch
|
||||
007-support-building-both-static-shared.patch)
|
||||
install=${_realname}.install
|
||||
sha256sums=('1632c1e8cca62d8bed064b37747e331a1796fc46f688626337362bf0d16aeadb'
|
||||
'6a73ee677d8d37509cd08f380b0359ee7fac2595fd64695dd054e838380a6a33'
|
||||
'bad670a1a7b6482c9c4264c4457e34307b084e7e1a1dabb9ddbfcf49346bc705'
|
||||
'cdef4aa30254b23a682ae90fd6db1e03f77c8f073fc00892371745d07ffc79a2'
|
||||
'7c7910039746b505ae182ef5f0e6f18c7ffdfc47e9d11f529840cda25fefc367')
|
||||
'7c7910039746b505ae182ef5f0e6f18c7ffdfc47e9d11f529840cda25fefc367'
|
||||
'238c57cd3d72c04d8322ba0e9dd148c68f5665776b3fcd51a047c45573d8baf4'
|
||||
'5db3d553b5cd9539f03b0a5d9820a6da91d4f57e5501ba565741a12a4efeeb8b')
|
||||
|
||||
# Helper macros to help make tasks easier #
|
||||
apply_patch_with_msg() {
|
||||
for _patch in "$@"
|
||||
do
|
||||
msg2 "Applying $_patch"
|
||||
patch -Np1 -i "${srcdir}/$_patch"
|
||||
done
|
||||
}
|
||||
|
||||
prepare() {
|
||||
cd ${srcdir}/${_realname}-${pkgver}
|
||||
patch -p1 -i ${srcdir}/001-defaultlib-not-for-gcc.patch
|
||||
patch -p1 -i ${srcdir}/002-lgfortran-requires-lquadmath.patch
|
||||
patch -p1 -i ${srcdir}/004-fix-generate-cmake-config.patch
|
||||
patch -p1 -i ${srcdir}/005-fix-clang32-compile-flags.patch
|
||||
apply_patch_with_msg \
|
||||
001-defaultlib-not-for-gcc.patch \
|
||||
002-lgfortran-requires-lquadmath.patch \
|
||||
004-fix-generate-cmake-config.patch \
|
||||
005-fix-clang32-compile-flags.patch
|
||||
# https://github.com/xianyi/OpenBLAS/pull/3410
|
||||
apply_patch_with_msg \
|
||||
006-fix-cmake-detect-clang-64-bits.patch
|
||||
# https://github.com/xianyi/OpenBLAS/pull/3411
|
||||
apply_patch_with_msg \
|
||||
007-support-building-both-static-shared.patch
|
||||
}
|
||||
|
||||
build() {
|
||||
cp -rf "${srcdir}"/${_realname}-${pkgver} "${srcdir}"/build-${MSYSTEM}
|
||||
cd "${srcdir}"/build-${MSYSTEM}
|
||||
[[ -d "${srcdir}/build-${MSYSTEM}" ]] && rm -rf "${srcdir}/build-${MSYSTEM}"
|
||||
mkdir -p "${srcdir}/build-${MSYSTEM}" && cd "${srcdir}/build-${MSYSTEM}"
|
||||
|
||||
declare -a _build_type
|
||||
if check_option "debug" "n"; then
|
||||
_build_type+=("Release")
|
||||
else
|
||||
_build_type+=("Debug")
|
||||
fi
|
||||
|
||||
unset CFLAGS
|
||||
unset CXXFLAGS
|
||||
|
||||
local -a _no_lapack
|
||||
local -a _c_compiler
|
||||
if [[ ${MINGW_PACKAGE_PREFIX} != *-clang-* ]]; then
|
||||
_no_lapack=0
|
||||
_c_compiler=gcc
|
||||
export FC=${MINGW_PREFIX}/bin/gfortran
|
||||
else
|
||||
_no_lapack=1
|
||||
_c_compiler=clang
|
||||
fi
|
||||
MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
|
||||
${MINGW_PREFIX}/bin/cmake \
|
||||
-G"Ninja" \
|
||||
-DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
|
||||
-DCMAKE_BUILD_TYPE=${_build_type} \
|
||||
-DBUILD_SHARED_LIBS=ON \
|
||||
-DDYNAMIC_ARCH=ON \
|
||||
-DUSE_THREAD=ON \
|
||||
-DNUM_THREADS=64 \
|
||||
-DTARGET=CORE2 \
|
||||
../${_realname}-${pkgver}
|
||||
|
||||
make LIBNAME=libopenblasp.a NO_LAPACK=${_no_lapack} DYNAMIC_ARCH=1 \
|
||||
CC=${MINGW_PREFIX}/bin/${_c_compiler} \
|
||||
OPENBLAS_INCLUDE_DIR=${MINGW_PREFIX}/include/${_realname} \
|
||||
USE_THREAD=1 NUM_THREADS=64 TARGET=CORE2
|
||||
|
||||
# [[ -d build-${MSYSTEM} ]] && rm -rf build-${MSYSTEM}
|
||||
# mkdir -p build-${MSYSTEM} && cd build-${MSYSTEM}
|
||||
|
||||
# MSYS2_ARG_CONV_EXCL="-DCMAKE_INSTALL_PREFIX=" \
|
||||
# ${MINGW_PREFIX}/bin/cmake \
|
||||
# -G"MSYS Makefiles" \
|
||||
# -DCMAKE_INSTALL_PREFIX=${MINGW_PREFIX} \
|
||||
# -DDYNAMIC_ARCH=ON \
|
||||
# -DCMAKE_BUILD_TYPE=Release \
|
||||
# ../${_realname}-${pkgver}
|
||||
# make
|
||||
cmake --build .
|
||||
}
|
||||
|
||||
package() {
|
||||
cd "${srcdir}"/build-${MSYSTEM}
|
||||
#make DESTDIR=${pkgdir} install
|
||||
|
||||
if [ -f libopenblas.dll ]; then
|
||||
if [ -f exports/libopenblas.def ]; then
|
||||
dlltool -D libopenblas.dll -d exports/libopenblas.def -l libopenblas.dll.a
|
||||
else
|
||||
echo "Cannot build export library" >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "DLL not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
mkdir -p "${pkgdir}${MINGW_PREFIX}/bin"
|
||||
mkdir -p "${pkgdir}${MINGW_PREFIX}/lib"
|
||||
|
||||
make LIBNAME=libopenblasp.a \
|
||||
DESTDIR="${pkgdir}" PREFIX="${MINGW_PREFIX}" \
|
||||
OPENBLAS_INCLUDE_DIR=${MINGW_PREFIX}/include/${_realname} \
|
||||
install
|
||||
|
||||
if [ -f libopenblas.dll ]; then
|
||||
cp -f libopenblas.dll "${pkgdir}${MINGW_PREFIX}/bin/"
|
||||
else
|
||||
echo "DLL not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f libopenblas.dll.a ]; then
|
||||
cp -f libopenblas.dll.a "${pkgdir}${MINGW_PREFIX}/lib/"
|
||||
else
|
||||
echo "Export library not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -f libopenblasp.a ]; then
|
||||
rm -f "${pkgdir}${MINGW_PREFIX}/lib/libopenblasp.a"
|
||||
rm -f "${pkgdir}${MINGW_PREFIX}/lib/libopenblas.a"
|
||||
cp -f libopenblasp.a "${pkgdir}${MINGW_PREFIX}/lib/libopenblas.a"
|
||||
else
|
||||
echo "Static library not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
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}
|
||||
sed -e "s|${MINGW_PREFIX}|\$\{_IMPORT_PREFIX\}|g" -i ${_f}
|
||||
done
|
||||
DESTDIR=${pkgdir} cmake --install .
|
||||
|
||||
# Install License
|
||||
install -Dm0644 ${srcdir}/${_realname}-${pkgver}/LICENSE ${pkgdir}${MINGW_PREFIX}/share/licenses/${_realname}/LICENSE
|
||||
|
||||
Reference in New Issue
Block a user