Skip to content

Commit 00ae343

Browse files
authored
Merge pull request #4518 from martin-frbg/cmakefixes
Prevent mixed gomp/omp linking and enable INTERFACE64 for ARM64 and MIPS in CMAKE builds
2 parents 5e8722a + be20588 commit 00ae343

File tree

6 files changed

+33
-5
lines changed

6 files changed

+33
-5
lines changed

cmake/f_check.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ else ()
6464
"#define NEEDBUNDERSCORE 1\n")
6565
endif()
6666

67+
if (CMAKE_Fortran_COMPILER)
6768
get_filename_component(F_COMPILER ${CMAKE_Fortran_COMPILER} NAME_WE)
6869
string(TOUPPER ${F_COMPILER} F_COMPILER)
69-
70+
endif()

cmake/fc.cmake

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@
66
if (${F_COMPILER} STREQUAL "FLANG" AND NOT CMAKE_Fortran_COMPILER_ID STREQUAL "LLVMFlang")
77
# This is for classic Flang. LLVM Flang is handled with gfortran below.
88
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FLANG")
9-
if (BINARY64 AND INTERFACE64)
10-
set(FCOMMON_OPT "${FCOMMON_OPT} -i8")
11-
endif ()
129
if (USE_OPENMP)
1310
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
1411
endif ()
@@ -55,6 +52,9 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
5552
if (MIPS64)
5653
if (BINARY64)
5754
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=64")
55+
if (INTERFACE64)
56+
set(FCOMMON_OPT "${FCOMMON_OPT} -fdefault-integer-8")
57+
endif ()
5858
else ()
5959
set(FCOMMON_OPT "${FCOMMON_OPT} -mabi=n32")
6060
endif ()
@@ -83,6 +83,9 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
8383
endif ()
8484
endif ()
8585
endif ()
86+
if (ARM64 AND INTERFACE64)
87+
set(FCOMMON_OPT "${FCOMMON_OPT} -fdefault-integer-8")
88+
endif ()
8689
else ()
8790
if (BINARY64)
8891
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")

ctest/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ else()
4040
c_${float_char}blas1.c)
4141
endif()
4242
target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME})
43+
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
44+
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
45+
target_link_libraries(x${float_char}cblat1 omp pthread)
46+
endif()
4347
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
4448
target_link_libraries(x${float_char}cblat1 m)
4549
endif()
@@ -65,6 +69,10 @@ else()
6569
constant.c)
6670
endif()
6771
target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME})
72+
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
73+
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
74+
target_link_libraries(x${float_char}cblat2 omp pthread)
75+
endif()
6876
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
6977
target_link_libraries(x${float_char}cblat2 m)
7078
endif()
@@ -90,6 +98,10 @@ else()
9098
constant.c)
9199
endif()
92100
target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME})
101+
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
102+
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
103+
target_link_libraries(x${float_char}cblat3 omp pthread)
104+
endif()
93105
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
94106
target_link_libraries(x${float_char}cblat3 m)
95107
endif()

lapack-netlib/TESTING/EIG/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ set(ZDMDEIGTST zchkdmd.f90)
107107
macro(add_eig_executable name)
108108
add_executable(${name} ${ARGN})
109109
target_link_libraries(${name} openblas${SUFFIX64_UNDERSCORE})
110+
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
111+
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
112+
target_link_libraries(${name} omp pthread)
113+
endif()
110114
#${TMGLIB} ../${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
111115
endmacro()
112116

lapack-netlib/TESTING/LIN/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,10 @@ set(ZLINTSTRFP zchkrfp.f zdrvrfp.f zdrvrf1.f zdrvrf2.f zdrvrf3.f zdrvrf4.f zerrr
240240
macro(add_lin_executable name)
241241
add_executable(${name} ${ARGN})
242242
target_link_libraries(${name} openblas${SUFFIX64_UNDERSCORE})
243+
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
244+
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
245+
target_link_libraries(${name} omp pthread)
246+
endif()
243247
#${TMGLIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
244248
endmacro()
245249

test/CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,14 @@ endif()
2121
if (BUILD_COMPLEX16)
2222
list (APPEND OpenBLAS_Tests zblat1 zblat2 zblat3)
2323
endif()
24-
24+
message (STATUS CCOMP ${CMAKE_C_COMPILER_ID} FCOMP ${CMAKE_Fortran_COMPILER_ID})
2525
foreach(test_bin ${OpenBLAS_Tests})
2626
add_executable(${test_bin} ${test_bin}.f)
2727
target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME})
28+
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
29+
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
30+
target_link_libraries(${test_bin} omp pthread)
31+
endif()
2832
endforeach()
2933

3034
# $1 exec, $2 input, $3 output_result

0 commit comments

Comments
 (0)