Merge pull request #4518 from martin-frbg/cmakefixes
Prevent mixed gomp/omp linking and enable INTERFACE64 for ARM64 and MIPS in CMAKE builds
This commit is contained in:
commit
00ae343db0
|
@ -64,6 +64,7 @@ else ()
|
||||||
"#define NEEDBUNDERSCORE 1\n")
|
"#define NEEDBUNDERSCORE 1\n")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (CMAKE_Fortran_COMPILER)
|
||||||
get_filename_component(F_COMPILER ${CMAKE_Fortran_COMPILER} NAME_WE)
|
get_filename_component(F_COMPILER ${CMAKE_Fortran_COMPILER} NAME_WE)
|
||||||
string(TOUPPER ${F_COMPILER} F_COMPILER)
|
string(TOUPPER ${F_COMPILER} F_COMPILER)
|
||||||
|
endif()
|
||||||
|
|
|
@ -6,9 +6,6 @@
|
||||||
if (${F_COMPILER} STREQUAL "FLANG" AND NOT CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang")
|
if (${F_COMPILER} STREQUAL "FLANG" AND NOT CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang")
|
||||||
# This is for classic Flang. LLVM Flang is handled with gfortran below.
|
# This is for classic Flang. LLVM Flang is handled with gfortran below.
|
||||||
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FLANG")
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FLANG")
|
||||||
if (BINARY64 AND INTERFACE64)
|
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -i8")
|
|
||||||
endif ()
|
|
||||||
if (USE_OPENMP)
|
if (USE_OPENMP)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -55,6 +52,9 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
|
||||||
if (MIPS64)
|
if (MIPS64)
|
||||||
if (BINARY64)
|
if (BINARY64)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64")
|
||||||
|
if (INTERFACE64)
|
||||||
|
set(FCOMMON_OPT "${FCOMMON_OPT} -fdefault-integer-8")
|
||||||
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=n32")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=n32")
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -83,6 +83,9 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
if (ARM64 AND INTERFACE64)
|
||||||
|
set(FCOMMON_OPT "${FCOMMON_OPT} -fdefault-integer-8")
|
||||||
|
endif ()
|
||||||
else ()
|
else ()
|
||||||
if (BINARY64)
|
if (BINARY64)
|
||||||
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")
|
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")
|
||||||
|
|
|
@ -40,6 +40,10 @@ else()
|
||||||
c_${float_char}blas1.c)
|
c_${float_char}blas1.c)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME})
|
target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME})
|
||||||
|
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
|
||||||
|
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
|
||||||
|
target_link_libraries(x${float_char}cblat1 omp pthread)
|
||||||
|
endif()
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
|
||||||
target_link_libraries(x${float_char}cblat1 m)
|
target_link_libraries(x${float_char}cblat1 m)
|
||||||
endif()
|
endif()
|
||||||
|
@ -65,6 +69,10 @@ else()
|
||||||
constant.c)
|
constant.c)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME})
|
target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME})
|
||||||
|
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
|
||||||
|
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
|
||||||
|
target_link_libraries(x${float_char}cblat2 omp pthread)
|
||||||
|
endif()
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
|
||||||
target_link_libraries(x${float_char}cblat2 m)
|
target_link_libraries(x${float_char}cblat2 m)
|
||||||
endif()
|
endif()
|
||||||
|
@ -90,6 +98,10 @@ else()
|
||||||
constant.c)
|
constant.c)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME})
|
target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME})
|
||||||
|
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
|
||||||
|
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
|
||||||
|
target_link_libraries(x${float_char}cblat3 omp pthread)
|
||||||
|
endif()
|
||||||
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
|
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
|
||||||
target_link_libraries(x${float_char}cblat3 m)
|
target_link_libraries(x${float_char}cblat3 m)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -107,6 +107,10 @@ set(ZDMDEIGTST zchkdmd.f90)
|
||||||
macro(add_eig_executable name)
|
macro(add_eig_executable name)
|
||||||
add_executable(${name} ${ARGN})
|
add_executable(${name} ${ARGN})
|
||||||
target_link_libraries(${name} openblas${SUFFIX64_UNDERSCORE})
|
target_link_libraries(${name} openblas${SUFFIX64_UNDERSCORE})
|
||||||
|
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
|
||||||
|
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
|
||||||
|
target_link_libraries(${name} omp pthread)
|
||||||
|
endif()
|
||||||
#${TMGLIB} ../${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
|
#${TMGLIB} ../${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
|
|
@ -240,6 +240,10 @@ set(ZLINTSTRFP zchkrfp.f zdrvrfp.f zdrvrf1.f zdrvrf2.f zdrvrf3.f zdrvrf4.f zerrr
|
||||||
macro(add_lin_executable name)
|
macro(add_lin_executable name)
|
||||||
add_executable(${name} ${ARGN})
|
add_executable(${name} ${ARGN})
|
||||||
target_link_libraries(${name} openblas${SUFFIX64_UNDERSCORE})
|
target_link_libraries(${name} openblas${SUFFIX64_UNDERSCORE})
|
||||||
|
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
|
||||||
|
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
|
||||||
|
target_link_libraries(${name} omp pthread)
|
||||||
|
endif()
|
||||||
#${TMGLIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
|
#${TMGLIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
|
|
@ -21,10 +21,14 @@ endif()
|
||||||
if (BUILD_COMPLEX16)
|
if (BUILD_COMPLEX16)
|
||||||
list (APPEND OpenBLAS_Tests zblat1 zblat2 zblat3)
|
list (APPEND OpenBLAS_Tests zblat1 zblat2 zblat3)
|
||||||
endif()
|
endif()
|
||||||
|
message (STATUS CCOMP ${CMAKE_C_COMPILER_ID} FCOMP ${CMAKE_Fortran_COMPILER_ID})
|
||||||
foreach(test_bin ${OpenBLAS_Tests})
|
foreach(test_bin ${OpenBLAS_Tests})
|
||||||
add_executable(${test_bin} ${test_bin}.f)
|
add_executable(${test_bin} ${test_bin}.f)
|
||||||
target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME})
|
target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME})
|
||||||
|
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
|
||||||
|
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
|
||||||
|
target_link_libraries(${test_bin} omp pthread)
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# $1 exec, $2 input, $3 output_result
|
# $1 exec, $2 input, $3 output_result
|
||||||
|
|
Loading…
Reference in New Issue