@@ -77,6 +77,16 @@ set(SYMBOLPREFIX "" CACHE STRING "Add a prefix to all exported symbol names in
77
77
78
78
set (SYMBOLSUFFIX "" CACHE STRING "Add a suffix to all exported symbol names in the shared library, e.g. _64 for INTERFACE64 builds" )
79
79
80
+ if (CMAKE_SYSTEM_NAME MATCHES "Windows" AND BUILD_SHARED_LIBS AND NOT ("${SYMBOLPREFIX}${SYMBOLSUFFIX} " STREQUAL "" ))
81
+ if (NOT BUILD_STATIC_LIBS)
82
+ message (STATUS "forcing build of a temporary static library for symbol renaming" )
83
+ set (BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared library" FORCE)
84
+ set (BUILD_STATIC_LIBS ON CACHE BOOL "Build static library" FORCE)
85
+ set (DELETE_STATIC_LIBS 1)
86
+ endif ()
87
+ endif ()
88
+
89
+
80
90
#######
81
91
if (BUILD_WITHOUT_LAPACK)
82
92
set (NO_LAPACK 1)
@@ -379,7 +389,7 @@ if (BUILD_SHARED_LIBS AND BUILD_RELAPACK)
379
389
endif ()
380
390
endif ()
381
391
382
- if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "" )
392
+ if (BUILD_SHARED_LIBS OR DELETE_STATIC_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "" )
383
393
if (NOT DEFINED ARCH)
384
394
set (ARCH_IN "x86_64" )
385
395
else ()
@@ -467,10 +477,26 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
467
477
else ()
468
478
set (BZ 0)
469
479
endif ()
480
+
481
+ if (CMAKE_SYSTEM_NAME MATCHES "Windows" )
482
+ set (CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} /lib)
483
+ set (CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR} /lib)
484
+ #if (USE_PERL)
485
+ message (STATUS "adding postbuild instruction to rename syms" )
486
+ add_custom_command (TARGET ${OpenBLAS_LIBNAME} _static POST_BUILD
487
+ 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
488
+ 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
489
+ 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
490
+ #if (${REMOVE_STATIC_LIB})
491
+ #file (REMOVE $<TARGET_FILE_DIR:${OpenBLAS_LIBNAME}_static>/${OpenBLAS_LIBNAME}.lib)
492
+ #endif ()
493
+ )
494
+ #endif ()
495
+ else ()
470
496
if (NOT USE_PERL)
471
497
add_custom_command (TARGET ${OpenBLAS_LIBNAME} _shared POST_BUILD
472
- 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
473
- COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR} /objcopy.def ${PROJECT_BINARY_DIR} /lib/lib ${OpenBLAS_LIBNAME} .so
498
+ 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
499
+ COMMAND objcopy -v --redefine-syms ${PROJECT_BINARY_DIR} /objcopy.def ${PROJECT_BINARY_DIR} /lib/${OpenBLAS_LIBNAME} .so
474
500
COMMENT "renaming symbols"
475
501
)
476
502
else ()
@@ -481,6 +507,7 @@ if (BUILD_SHARED_LIBS AND NOT ${SYMBOLPREFIX}${SYMBOLSUFFIX} STREQUAL "")
481
507
)
482
508
endif ()
483
509
endif ()
510
+ endif ()
484
511
485
512
if (BUILD_BENCHMARKS)
486
513
#find_package(OpenMP REQUIRED)
@@ -650,4 +677,4 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PN}ConfigVersion.cmake
650
677
DESTINATION ${CMAKECONFIG_INSTALL_DIR} )
651
678
install (EXPORT "${PN}${SUFFIX64} Targets"
652
679
NAMESPACE "${PN}${SUFFIX64} ::"
653
- DESTINATION ${CMAKECONFIG_INSTALL_DIR} )
680
+ DESTINATION ${CMAKECONFIG_INSTALL_DIR} )
0 commit comments