@@ -2,20 +2,21 @@ cmake_minimum_required(VERSION 3.16)
22project (multik_jni)
33
44set (CMAKE_CXX_STANDARD 14)
5+ set (CMAKE_CXX_EXTENSIONS OFF )
6+ set (CMAKE_CXX_STANDARD_REQUIRED ON )
57set (PLATFORM ${CMAKE_SYSTEM_NAME } -${CMAKE_SYSTEM_PROCESSOR } )
68
79if (NOT DEFINED TARGET_OS)
810 set (TARGET_OS ${PLATFORM} )
911endif ()
1012
1113#### PARAMETERS FOR OPENBLAS ####
12- set (OPENBLAS_VERSION 0.3.23 )
14+ set (OPENBLAS_VERSION 0.3.26 )
1315
1416if (${TARGET_OS} STREQUAL "mingwX64" OR ${CMAKE_SYSTEM_NAME } STREQUAL "Windows" )
15- set (URL_OPENBLAS "https://github.com/xianyi /OpenBLAS/releases/download/v${OPENBLAS_VERSION} /OpenBLAS-${OPENBLAS_VERSION} -x64.zip" )
17+ set (URL_OPENBLAS "https://github.com/OpenMathLib /OpenBLAS/releases/download/v${OPENBLAS_VERSION} /OpenBLAS-${OPENBLAS_VERSION} -x64.zip" )
1618else ()
17- # set(URL_OPENBLAS "https://github.com/xianyi/OpenBLAS/archive/refs/heads/develop.zip") # TODO(switch to stable version)
18- set (URL_OPENBLAS "https://github.com/xianyi/OpenBLAS/archive/v${OPENBLAS_VERSION} .zip" )
19+ set (URL_OPENBLAS "https://github.com/OpenMathLib/OpenBLAS/archive/v${OPENBLAS_VERSION} .zip" )
1920endif ()
2021
2122set (CC ${CMAKE_C_COMPILER } )
@@ -27,26 +28,26 @@ set(USE_OPENMP 0)
2728set (NUM_THREADS 64)
2829set (DYNAMIC_LIST )
2930
30- if (${TARGET_OS} MATCHES "androidArm64" )
31+ if (${TARGET_OS} STREQUAL "androidArm64" )
3132 set (suffix androidArm64)
3233 set (CC aarch64-linux -android -gcc)
3334 set (FC aarch64-linux -android -gfortran)
3435 set (CROSS_SUFFIX aarch64-linux -android -)
3536 set (NO_AVX512 1)
36- elseif (${TARGET_OS} MATCHES "linuxX64" )
37+ set (DYNAMIC_LIST ARM8)
38+ elseif (${TARGET_OS} STREQUAL "linuxX64" )
3739 set (suffix linuxX64)
3840 set (FC "gfortran -m64" )
3941 set (FEXTRALIB -lgfortran)
4042 set (NO_AVX512 0)
4143 set (DYNAMIC_ARCH 1)
42- elseif (${TARGET_OS} MATCHES "macosArm64" OR ${PLATFORM} MATCHES "Darwin-arm64" )
44+ elseif (${TARGET_OS} STREQUAL "macosArm64" OR ${PLATFORM} MATCHES "Darwin-arm64" )
4345 set (suffix macosArm64)
4446 set (FC "gfortran" )
4547 set (FEXTRALIB "-lgfortran" )
4648 set (NO_AVX512 1)
47- # set(DYNAMIC_ARCH 1)
48- set (DYNAMIC_LIST "ARMV8 CORTEXA55 CORTEXA72 CORTEXA78" ) # TODO(XCODE workaround)
49- elseif (${TARGET_OS} MATCHES "macosX64" OR ${PLATFORM} MATCHES "Darwin-x86_64" )
49+ set (DYNAMIC_ARCH 1)
50+ elseif (${TARGET_OS} STREQUAL "macosX64" OR ${PLATFORM} MATCHES "Darwin-x86_64" )
5051 set (suffix macosX64)
5152 set (FC "gfortran" )
5253 set (FEXTRALIB "-lgfortran" )
@@ -59,7 +60,7 @@ elseif (${TARGET_OS} MATCHES "mingwX64")
5960 set (NO_AVX512 1)
6061 set (DYNAMIC_ARCH 1)
6162else ()
62- message (SEND_ERROR "Platform ${PLATFORM} is not supported" )
63+ message (WARNING "Platform ${PLATFORM} is not supported" )
6364 return ()
6465endif ()
6566########################
@@ -74,6 +75,7 @@ if (${TARGET_OS} STREQUAL "mingwX64")
7475 CONFIGURE_COMMAND ""
7576 BUILD_COMMAND ""
7677 INSTALL_COMMAND ""
78+ # DOWNLOAD_EXTRACT_TIMESTAMP TRUE
7779 )
7880 #### INCLUDE OPENBLAS ####
7981 ExternalProject_Get_property (openblas SOURCE_DIR )
@@ -101,6 +103,7 @@ else ()
101103 DYNAMIC_LIST=${DYNAMIC_LIST}
102104 NUM_THREADS=${NUM_THREADS}
103105 INSTALL_COMMAND ${MAKE_EXE} -C <SOURCE_DIR > install PREFIX =<INSTALL_DIR > CC=${CC}
106+ # DOWNLOAD_EXTRACT_TIMESTAMP TRUE
104107 )
105108 #### INCLUDE OPENBLAS ####
106109 ExternalProject_Get_property (openblas INSTALL_DIR )
@@ -129,8 +132,8 @@ set(SRC_FILES_FOR_STATIC
129132########################
130133
131134### FIND GFORTRAN AND QUADMATH LIBRARIES ###
132- if (${ GCC_LIB_PATH} )
133- message ("Path to gcc libs does not defined" )
135+ if (NOT DEFINED GCC_LIB_PATH)
136+ message (WARNING "Path to gcc libs is not defined" )
134137endif ()
135138if (${CMAKE_SYSTEM_NAME } STREQUAL "Linux" )
136139 set (LIB_GFORTRAN -static-libgfortran)
@@ -165,16 +168,20 @@ endif ()
165168set (LIB_NAME multik_jni-${suffix} )
166169
167170add_library (${LIB_NAME} SHARED ${SRC_FILES_FOR_SHARED} )
168- target_compile_options (${LIB_NAME} PRIVATE -std=c++14
169- -fPIC
170- -O3
171- -fno-exceptions
172- -ffast-math )
171+ target_compile_features (${LIB_NAME} PRIVATE cxx_std_14 )
172+ target_compile_options (${LIB_NAME} PRIVATE
173+ -fPIC
174+ -O3
175+ -fno-exceptions
176+ -ffast-math
177+ -flto
178+ -funroll-loops
179+ )
173180target_include_directories (${LIB_NAME} PUBLIC ${JNI_INCLUDE_DIRS} )
174181target_link_libraries (${LIB_NAME} optimized
175182 ${STATIC_OPENBLAS}
176183 ${LIB_GFORTRAN}
177184# ${LIB_QUADMATH}
178185 ${LIB_GCC}
179- )
186+ )
180187add_dependencies (${LIB_NAME} openblas )
0 commit comments