Skip to content

Commit f4194fc

Browse files
authored
Merge branch 'develop' into la64_fixed_cscal_zscal
2 parents 2da86b8 + fe220a0 commit f4194fc

File tree

217 files changed

+9187
-6311
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

217 files changed

+9187
-6311
lines changed

.cirrus.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ task:
5858
- export VALID_ARCHS="i386 x86_64"
5959
- xcrun --sdk macosx --show-sdk-path
6060
- xcodebuild -version
61-
- export CC=/Applications/Xcode_15.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
62-
- export CFLAGS="-O2 -unwindlib=none -Wno-macro-redefined -isysroot /Applications/Xcode_15.4.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.5.sdk -arch x86_64"
61+
- export CC=/Applications/Xcode_16.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
62+
- export CFLAGS="-O2 -unwindlib=none -Wno-macro-redefined -isysroot /Applications/Xcode_16.3.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk -arch x86_64"
6363
- make TARGET=CORE2 DYNAMIC_ARCH=1 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1 RANLIB="ls -l"
6464
always:
6565
config_artifacts:
@@ -78,8 +78,8 @@ task:
7878
- export #PATH=/opt/homebrew/opt/llvm/bin:$PATH
7979
- export #LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
8080
- export #CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
81-
- export CC=/Applications/Xcode_15.4.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
82-
- export CFLAGS="-O2 -unwindlib=none -Wno-macro-redefined -isysroot /Applications/Xcode_15.4.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS17.5.sdk -arch arm64 -miphoneos-version-min=10.0"
81+
- export CC=/Applications/Xcode_16.3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
82+
- export CFLAGS="-O2 -unwindlib=none -Wno-macro-redefined -isysroot /Applications/Xcode_16.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.4.sdk -arch arm64 -miphoneos-version-min=10.0"
8383
- xcrun --sdk iphoneos --show-sdk-path
8484
- ls -l /Applications
8585
- make TARGET=ARMV8 NUM_THREADS=32 HOSTCC=clang NOFORTRAN=1 CROSS=1
@@ -127,7 +127,7 @@ task:
127127
FreeBSD_task:
128128
name: FreeBSD-gcc
129129
freebsd_instance:
130-
image_family: freebsd-14-1
130+
image_family: freebsd-14-2
131131
install_script:
132132
- pkg update -f && pkg upgrade -y && pkg install -y gmake gcc
133133
compile_script:
@@ -138,7 +138,7 @@ FreeBSD_task:
138138
FreeBSD_task:
139139
name: freebsd-gcc-ilp64
140140
freebsd_instance:
141-
image_family: freebsd-14-1
141+
image_family: freebsd-14-2
142142
install_script:
143143
- pkg update -f && pkg upgrade -y && pkg install -y gmake gcc
144144
compile_script:
@@ -148,7 +148,7 @@ FreeBSD_task:
148148
FreeBSD_task:
149149
name: FreeBSD-clang-openmp
150150
freebsd_instance:
151-
image_family: freebsd-14-1
151+
image_family: freebsd-14-2
152152
install_script:
153153
- pkg update -f && pkg upgrade -y && pkg install -y gmake gcc
154154
- ln -s /usr/local/lib/gcc13/libgfortran.so.5.0.0 /usr/lib/libgfortran.so

.github/workflows/apple_m.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ jobs:
102102
mkdir build && cd build
103103
cmake -DDYNAMIC_ARCH=1 \
104104
-DUSE_OPENMP=${{matrix.openmp}} \
105+
-DOpenMP_Fortran_LIB_NAMES=omp \
105106
-DINTERFACE64=${{matrix.ilp64}} \
106107
-DNOFORTRAN=0 \
107108
-DBUILD_WITHOUT_LAPACK=0 \

.github/workflows/c910v.yml

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ jobs:
3131

3232
steps:
3333
- name: Checkout repository
34-
uses: actions/checkout@v3
34+
uses: actions/checkout@v4
3535

3636
- name: install build deps
3737
run: |
@@ -40,18 +40,18 @@ jobs:
4040
gcc-${{ matrix.apt_triple }} gfortran-${{ matrix.apt_triple }} libgomp1-riscv64-cross libglib2.0-dev
4141
4242
- name: checkout qemu
43-
uses: actions/checkout@v3
43+
uses: actions/checkout@v4
4444
with:
45-
repository: T-head-Semi/qemu
45+
repository: XUANTIE-RV/qemu
4646
path: qemu
47-
ref: 1e692ebb43d396c52352406323fc782c1ac99a42
47+
ref: e0ace167effcd36d1f82c7ccb4522b3126011479 # xuantie-qemu-9.0
4848

4949
- name: build qemu
5050
run: |
5151
# Force use c910v qemu-user
52-
wget https://github.com/revyos/qemu/commit/5164bca5a4bcde4534dc1a9aa3a7f619719874cf.patch
52+
wget https://github.com/revyos/qemu/commit/222729c7455784dd855216d7a2bec4bd8f2a6800.patch
5353
cd qemu
54-
patch -p1 < ../5164bca5a4bcde4534dc1a9aa3a7f619719874cf.patch
54+
patch -p1 < ../222729c7455784dd855216d7a2bec4bd8f2a6800.patch
5555
export CXXFLAGS="-Wno-error"; export CFLAGS="-Wno-error"
5656
./configure --prefix=$GITHUB_WORKSPACE/qemu-install --target-list=riscv64-linux-user --disable-system
5757
make -j$(nproc)
@@ -83,9 +83,39 @@ jobs:
8383
8484
- name: test
8585
run: |
86-
export PATH=$GITHUB_WORKSPACE/qemu-install/bin/:$PATH
87-
qemu-riscv64 ./utest/openblas_utest
88-
qemu-riscv64 ./utest/openblas_utest_ext
86+
run_with_retry() {
87+
local cmd="$1"
88+
local time_out=10
89+
local retries=10
90+
local attempt=0
91+
92+
for ((i=1; i<=retries; i++)); do
93+
attempt=$((i))
94+
if timeout -s 12 --preserve-status $time_out $cmd; then
95+
echo "Command succeeded on attempt $i."
96+
return 0
97+
else
98+
local exit_code=$?
99+
if [ $exit_code -eq 140 ]; then
100+
echo "Attempt $i timed out (retrying...)"
101+
time_out=$((time_out + 5))
102+
else
103+
echo "Attempt $i failed with exit code $exit_code. Aborting workflow."
104+
exit $exit_code
105+
fi
106+
fi
107+
done
108+
echo "All $retries attempts failed, giving up."
109+
echo "Final failure was due to timeout."
110+
echo "Aborting workflow."
111+
exit $exit_code
112+
}
113+
export PATH=$GITHUB_WORKSPACE/qemu-install/bin:$PATH
114+
which qemu-riscv64
115+
export QEMU_BIN=$(which qemu-riscv64)
116+
run_with_retry "$QEMU_BIN ./utest/openblas_utest"
117+
run_with_retry "$QEMU_BIN ./utest/openblas_utest_ext"
118+
89119
OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xscblat1
90120
OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xdcblat1
91121
OPENBLAS_NUM_THREADS=2 qemu-riscv64 ./ctest/xccblat1

.github/workflows/dynamic_arch.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,3 +356,23 @@ jobs:
356356
- name: Build OpenBLAS
357357
run: |
358358
make -j$(nproc) HOSTCC="ccache gcc" CC="ccache ${{ matrix.triple }}-gcc" FC="ccache ${{ matrix.triple }}-gfortran" ARCH=${{ matrix.target }} ${{ matrix.opts }}
359+
360+
neoverse_build:
361+
if: "github.repository == 'OpenMathLib/OpenBLAS'"
362+
runs-on: ubuntu-24.04-arm
363+
364+
steps:
365+
- name: Checkout repository
366+
uses: actions/checkout@v3
367+
368+
- name: Install Dependencies
369+
run: |
370+
sudo apt-get update
371+
sudo apt-get install -y gcc gfortran make
372+
373+
- name: Build OpenBLAS
374+
run: |
375+
make -j${nproc}
376+
make -j${nproc} lapack-test
377+
378+

.github/workflows/mips64.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ jobs:
5959
6060
- name: Compilation cache
6161
uses: actions/cache@v3
62-
with: path: ~/.ccache
62+
with:
63+
path: ~/.ccache
6364
key: ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}-${{ github.sha }}
6465
restore-keys: |
6566
ccache-${{ runner.os }}-${{ matrix.target }}-${{ github.ref }}

CMakeLists.txt

Lines changed: 106 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ include(CMakePackageConfigHelpers)
2121
#######
2222
option(BUILD_WITHOUT_LAPACK "Do not build LAPACK and LAPACKE (Only BLAS or CBLAS)" OFF)
2323

24+
option(BUILD_WITHOUT_LAPACKE "Do not build the C interface to LAPACK)" OFF)
25+
2426
option(BUILD_LAPACK_DEPRECATED "When building LAPACK, include also some older, deprecated routines" ON)
2527

2628
set(LAPACK_STRLEN "" CACHE STRING "When building LAPACK, use this type (e.g. \"int\") for character lengths (defaults to size_t)")
@@ -60,6 +62,7 @@ option(CPP_THREAD_SAFETY_TEST "Run a massively parallel DGEMM test to confirm th
6062

6163
option(CPP_THREAD_SAFETY_GEMV "Run a massively parallel DGEMV test to confirm thread safety of the library (requires OpenMP)" OFF)
6264
option(BUILD_STATIC_LIBS "Build static library" OFF)
65+
option(BUILD_SHARED_LIBS "Build shared library" OFF)
6366
if(NOT BUILD_STATIC_LIBS AND NOT BUILD_SHARED_LIBS)
6467
set(BUILD_STATIC_LIBS ON CACHE BOOL "Build static library" FORCE)
6568
endif()
@@ -75,12 +78,27 @@ set(SYMBOLPREFIX "" CACHE STRING "Add a prefix to all exported symbol names in
7578

7679
set(SYMBOLSUFFIX "" CACHE STRING "Add a suffix to all exported symbol names in the shared library, e.g. _64 for INTERFACE64 builds" )
7780

81+
if (CMAKE_SYSTEM_NAME MATCHES "Windows" AND BUILD_SHARED_LIBS AND NOT ("${SYMBOLPREFIX}${SYMBOLSUFFIX}" STREQUAL ""))
82+
set (DELETE_STATIC_LIBS "")
83+
if (NOT BUILD_STATIC_LIBS)
84+
message (STATUS "forcing build of a temporary static library for symbol renaming")
85+
set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared library" FORCE)
86+
set (BUILD_STATIC_LIBS ON CACHE BOOL "Build static library" FORCE)
87+
set (DELETE_STATIC_LIBS file (REMOVE $<TARGET_FILE_DIR:${OpenBLAS_LIBNAME}_static>/${OpenBLAS_LIBNAME}.lib))
88+
endif ()
89+
endif()
90+
91+
7892
#######
7993
if(BUILD_WITHOUT_LAPACK)
8094
set(NO_LAPACK 1)
8195
set(NO_LAPACKE 1)
8296
endif()
8397

98+
if (BUILD_WITHOUT_LAPACKE)
99+
set(NO_LAPACKE 1)
100+
endif()
101+
84102
if(BUILD_WITHOUT_CBLAS)
85103
set(NO_CBLAS 1)
86104
endif()
@@ -103,14 +121,15 @@ endif()
103121

104122
message(WARNING "CMake support is experimental. It does not yet support all build options and may not produce the same Makefiles that OpenBLAS ships with.")
105123

106-
if (USE_OPENMP)
107-
find_package(OpenMP REQUIRED)
108-
endif ()
109-
110124
include("${PROJECT_SOURCE_DIR}/cmake/utils.cmake")
111125
include("${PROJECT_SOURCE_DIR}/cmake/system.cmake")
112126

113-
set(OpenBLAS_LIBNAME ${LIBNAMEPREFIX}openblas${LIBNAMESUFFIX}${SUFFIX64_UNDERSCORE})
127+
string(FIND "${LIBNAMESUFFIX}" "${SUFFIX64_UNDERSCORE}" HAVE64)
128+
if (${HAVE64} GREATER -1)
129+
set(OpenBLAS_LIBNAME ${LIBNAMEPREFIX}openblas${LIBNAMESUFFIX})
130+
else ()
131+
set(OpenBLAS_LIBNAME ${LIBNAMEPREFIX}openblas${LIBNAMESUFFIX}${SUFFIX64_UNDERSCORE})
132+
endif ()
114133

115134
set(BLASDIRS interface driver/level2 driver/level3 driver/others)
116135

@@ -224,6 +243,12 @@ endif ()
224243
# add objects to the openblas lib
225244
if(NOT NO_LAPACK)
226245
add_library(LAPACK_OVERRIDES OBJECT ${LA_SOURCES})
246+
if (USE_OPENMP AND (NOT NOFORTRAN))
247+
# Disable OpenMP for LAPACK Fortran codes on Windows.
248+
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
249+
target_link_libraries(LAPACK_OVERRIDES OpenMP::OpenMP_Fortran)
250+
endif()
251+
endif()
227252
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACK_OVERRIDES>")
228253
endif()
229254
if(NOT NO_LAPACKE)
@@ -265,30 +290,59 @@ endif()
265290

266291
if (USE_OPENMP)
267292
if(BUILD_STATIC_LIBS)
268-
target_link_libraries(${OpenBLAS_LIBNAME}_static OpenMP::OpenMP_C)
293+
if(NOFORTRAN)
294+
target_link_libraries(${OpenBLAS_LIBNAME}_static OpenMP::OpenMP_C)
295+
else()
296+
target_link_libraries(${OpenBLAS_LIBNAME}_static OpenMP::OpenMP_C OpenMP::OpenMP_Fortran)
297+
endif()
269298
endif()
270299
if(BUILD_SHARED_LIBS)
271-
target_link_libraries(${OpenBLAS_LIBNAME}_shared OpenMP::OpenMP_C)
300+
if(NOFORTRAN)
301+
target_link_libraries(${OpenBLAS_LIBNAME}_shared OpenMP::OpenMP_C)
302+
else()
303+
target_link_libraries(${OpenBLAS_LIBNAME}_shared OpenMP::OpenMP_C OpenMP::OpenMP_Fortran)
304+
endif()
272305
endif()
273306
endif()
274307

275-
# Seems that this hack doesn't required since macOS 11 Big Sur
276-
if (APPLE AND BUILD_SHARED_LIBS AND CMAKE_HOST_SYSTEM_VERSION VERSION_LESS 20)
277-
set (CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
278-
if (NOT NOFORTRAN)
279-
set (CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1)
280-
set (CMAKE_Fortran_CREATE_SHARED_LIBRARY
281-
"sh -c 'cat ${CMAKE_BINARY_DIR}/CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ${CMAKE_AR} -ru libopenblas.a && exit 0' "
282-
"sh -c '${CMAKE_AR} -rs libopenblas.a ${CMAKE_BINARY_DIR}/driver/others/CMakeFiles/driver_others.dir/xerbla.c.o && exit 0' "
283-
"sh -c 'echo \"\" | ${CMAKE_Fortran_COMPILER} -o dummy.o -c -x f95-cpp-input - '"
284-
"sh -c '${CMAKE_Fortran_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,libopenblas.a -Wl,-noall_load dummy.o -o ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenblas.${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.dylib'"
285-
"sh -c 'ls -l ${CMAKE_BINARY_DIR}/lib'")
286-
else ()
287-
set (CMAKE_C_CREATE_SHARED_LIBRARY
288-
"sh -c 'cat ${CMAKE_BINARY_DIR}/CMakeFiles/openblas_shared.dir/objects*.rsp | xargs -n 1024 ${CMAKE_AR} -ru libopenblas.a && exit 0' "
289-
"sh -c '${CMAKE_AR} -rs libopenblas.a ${CMAKE_BINARY_DIR}/driver/others/CMakeFiles/driver_others.dir/xerbla.c.o && exit 0' "
290-
"sh -c '${CMAKE_C_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,libopenblas.a -Wl,-noall_load -o ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenblas.${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.dylib'")
291-
endif ()
308+
# Fix "Argument list too long" for macOS with Intel CPUs and DYNAMIC_ARCH turned on
309+
if(APPLE AND DYNAMIC_ARCH AND (NOT CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "arm64"))
310+
# Use response files
311+
set(CMAKE_C_USE_RESPONSE_FILE_FOR_OBJECTS 1)
312+
# Always build static library first
313+
if(BUILD_STATIC_LIBS)
314+
set(STATIC_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/lib${OpenBLAS_LIBNAME}.a")
315+
else()
316+
add_library(${OpenBLAS_LIBNAME}_static STATIC ${TARGET_OBJS} ${OpenBLAS_DEF_FILE})
317+
set(STATIC_PATH "lib${OpenBLAS_LIBNAME}.a")
318+
endif()
319+
set(CREATE_STATIC_LIBRARY_COMMAND
320+
"sh -c 'cat ${CMAKE_BINARY_DIR}/CMakeFiles/${OpenBLAS_LIBNAME}_static.dir/objects*.rsp | xargs -n 1024 ${CMAKE_AR} -ru ${STATIC_PATH} && exit 0' "
321+
"sh -c '${CMAKE_AR} -rs ${STATIC_PATH} ${CMAKE_BINARY_DIR}/driver/others/CMakeFiles/driver_others.dir/xerbla.c.o && exit 0' ")
322+
if(BUILD_SHARED_LIBS)
323+
add_dependencies(${OpenBLAS_LIBNAME}_shared ${OpenBLAS_LIBNAME}_static)
324+
set(SHARED_PATH "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/libopenblas.${OpenBLAS_MAJOR_VERSION}.${OpenBLAS_MINOR_VERSION}.dylib")
325+
endif()
326+
if(USE_OPENMP)
327+
get_target_property(OMP_LIB OpenMP::OpenMP_C INTERFACE_LINK_LIBRARIES)
328+
else()
329+
set(OMP_LIB "")
330+
endif()
331+
if(NOT NOFORTRAN)
332+
set(CMAKE_Fortran_USE_RESPONSE_FILE_FOR_OBJECTS 1)
333+
set(CMAKE_Fortran_CREATE_STATIC_LIBRARY ${CREATE_STATIC_LIBRARY_COMMAND})
334+
if(BUILD_SHARED_LIBS)
335+
set(CMAKE_Fortran_CREATE_SHARED_LIBRARY
336+
"sh -c 'echo \"\" | ${CMAKE_Fortran_COMPILER} -o dummy.o -c -x f95-cpp-input - '"
337+
"sh -c '${CMAKE_Fortran_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,${STATIC_PATH} dummy.o -o ${SHARED_PATH} ${OMP_LIB}'")
338+
endif()
339+
else()
340+
set(CMAKE_C_CREATE_STATIC_LIBRARY ${CREATE_STATIC_LIBRARY_COMMAND})
341+
if(BUILD_SHARED_LIBS)
342+
set(CMAKE_C_CREATE_SHARED_LIBRARY
343+
"sh -c '${CMAKE_C_COMPILER} -fpic -shared -Wl,-all_load -Wl,-force_load,${STATIC_PATH} -o ${SHARED_PATH} ${OMP_LIB}'")
344+
endif()
345+
endif()
292346
endif()
293347

294348
# Handle MSVC exports
@@ -373,7 +427,7 @@ if (BUILD_SHARED_LIBS AND BUILD_RELAPACK)
373427
endif()
374428
endif()
375429

376-
if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
430+
if (BUILD_SHARED_LIBS OR DELETE_STATIC_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
377431
if (NOT DEFINED ARCH)
378432
set(ARCH_IN "x86_64")
379433
else()
@@ -461,10 +515,33 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
461515
else ()
462516
set (BZ 0)
463517
endif()
518+
519+
if (CMAKE_SYSTEM_NAME MATCHES "Windows")
520+
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
521+
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
522+
if (CMAKE_BUILD_TYPE MATCHES "Debug")
523+
set (CRTLIB msvcrtd)
524+
set (PDBOPT -debug -pdb:$<TARGET_FILE_DIR:${OpenBLAS_LIBNAME}_static>/${OpenBLAS_LIBNAME}.pdb)
525+
set (PDB_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib)
526+
else ()
527+
set (CRTLIB msvcrt)
528+
set (PDBOPT "")
529+
endif()
530+
#if (USE_PERL)
531+
message(STATUS "adding postbuild instruction to rename syms")
532+
add_custom_command(TARGET ${OpenBLAS_LIBNAME}_static POST_BUILD
533+
COMMAND perl ${PROJECT_SOURCE_DIR}/exports/gensymbol.pl "win2k" "${ARCH}" "${BU}" "${EXPRECISION_IN}" "${NO_CBLAS_IN}" "${NO_LAPACK_IN}" "${NO_LAPACKE_IN}" "${NEED2UNDERSCORES_IN}" "${ONLY_CBLAS_IN}" "${SYMBOLPREFIX}" "${SYMBOLSUFFIX}" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/renamesyms.def
534+
COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAGS} -I${PROJECT_SOURCE_DIR} -I${PROJECT_BINARY_DIR} -c -o ${PROJECT_BINARY_DIR}/dllinit.o ${PROJECT_SOURCE_DIR}/exports/dllinit.c
535+
COMMAND lld-link -nodefaultlib:libcmt -defaultlib:${CRTLIB} ${CMAKE_LINKER_FLAGS} -errorlimit:0 -def:${PROJECT_BINARY_DIR}/renamesyms.def ${PROJECT_BINARY_DIR}/dllinit.o $<TARGET_FILE:${OpenBLAS_LIBNAME}_static> -wholearchive:$<TARGET_FILE:${OpenBLAS_LIBNAME}_static> -dll -out:$<TARGET_FILE_DIR:${OpenBLAS_LIBNAME}_static>/${OpenBLAS_LIBNAME}.dll -implib:$<TARGET_FILE_DIR:${OpenBLAS_LIBNAME}_static>/${OpenBLAS_LIBNAME}.dll.a ${PDBOPT}
536+
#COMMAND lld-link -nodefaultlib:libcmt -defaultlib:msvcrt ${CMAKE_LINKER_FLAGS} -errorlimit:0 -def:${PROJECT_BINARY_DIR}/renamesyms.def ${PROJECT_BINARY_DIR}/dllinit.o $<TARGET_FILE:${OpenBLAS_LIBNAME}_static> -wholearchive:$<TARGET_FILE:${OpenBLAS_LIBNAME}_static> -dll -out:$<TARGET_FILE_DIR:${OpenBLAS_LIBNAME}_static>/${OpenBLAS_LIBNAME}.dll -implib:$<TARGET_FILE_DIR:${OpenBLAS_LIBNAME}_static>/${OpenBLAS_LIBNAME}.dll.a
537+
${REMOVE_STATIC_LIB} VERBATIM
538+
)
539+
#endif ()
540+
else ()
464541
if (NOT USE_PERL)
465542
add_custom_command(TARGET ${OpenBLAS_LIBNAME}_shared POST_BUILD
466-
COMMAND ${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}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def
467-
COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/lib${OpenBLAS_LIBNAME}.so
543+
COMMAND sh ${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}\" "${BLD}" "${BBF16}" "${BS}" "${BD}" "${BC}" "${BZ}" > ${PROJECT_BINARY_DIR}/objcopy.def
544+
COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR}/objcopy.def ${PROJECT_BINARY_DIR}/lib/${OpenBLAS_LIBNAME}.so
468545
COMMENT "renaming symbols"
469546
)
470547
else()
@@ -475,6 +552,7 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
475552
)
476553
endif()
477554
endif()
555+
endif()
478556
479557
if (BUILD_BENCHMARKS)
480558
#find_package(OpenMP REQUIRED)
@@ -645,3 +723,4 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PN}ConfigVersion.cmake
645723
install(EXPORT "${PN}${SUFFIX64}Targets"
646724
NAMESPACE "${PN}${SUFFIX64}::"
647725
DESTINATION ${CMAKECONFIG_INSTALL_DIR})
726+

0 commit comments

Comments
 (0)