Skip to content

Commit 1b0c0f0

Browse files
committed
CMake: Avoid mixed OpenMP linkage
1 parent 02fd1df commit 1b0c0f0

File tree

5 files changed

+6
-30
lines changed

5 files changed

+6
-30
lines changed

cmake/system.cmake

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,12 @@ if (USE_OPENMP)
377377
set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_OPENMP")
378378
if (NOT NOFORTRAN)
379379
find_package(OpenMP COMPONENTS Fortran REQUIRED)
380+
# Avoid mixed OpenMP linkage
381+
get_target_property(OMP_C_LIB OpenMP::OpenMP_C INTERFACE_LINK_LIBRARIES)
382+
get_target_property(OMP_Fortran_LIB OpenMP::OpenMP_Fortran INTERFACE_LINK_LIBRARIES)
383+
if (NOT OMP_C_LIB STREQUAL OMP_Fortran_LIB)
384+
message(FATAL_ERROR "Multiple OpenMP runtime libraries detected. Mixed OpenMP runtime linkage is dangerous. You may pass -DOpenMP_LANG_LIB_NAMES and -DOpenMP_omp_LIBRARY to manually choose the OpenMP library.")
385+
endif()
380386
endif ()
381387
endif ()
382388

ctest/CMakeLists.txt

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,6 @@ else()
4444
c_${float_char}blas1.c)
4545
endif()
4646
target_link_libraries(x${float_char}cblat1 ${OpenBLAS_LIBNAME})
47-
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
48-
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
49-
target_link_libraries(x${float_char}cblat1 omp pthread)
50-
endif()
5147
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
5248
target_link_libraries(x${float_char}cblat1 m)
5349
endif()
@@ -73,10 +69,6 @@ else()
7369
constant.c)
7470
endif()
7571
target_link_libraries(x${float_char}cblat2 ${OpenBLAS_LIBNAME})
76-
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
77-
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
78-
target_link_libraries(x${float_char}cblat2 omp pthread)
79-
endif()
8072
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
8173
target_link_libraries(x${float_char}cblat2 m)
8274
endif()
@@ -124,20 +116,12 @@ else()
124116
endif()
125117
endif()
126118
target_link_libraries(x${float_char}cblat3 ${OpenBLAS_LIBNAME})
127-
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
128-
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
129-
target_link_libraries(x${float_char}cblat3 omp pthread)
130-
endif()
131119
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
132120
target_link_libraries(x${float_char}cblat3 m)
133121
endif()
134122
if (USE_GEMM3M)
135123
if ((${float_char} STREQUAL "c") OR (${float_char} STREQUAL "z"))
136124
target_link_libraries(x${float_char}cblat3_3m ${OpenBLAS_LIBNAME})
137-
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
138-
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
139-
target_link_libraries(x${float_char}cblat3 omp pthread)
140-
endif()
141125
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
142126
target_link_libraries(x${float_char}cblat3_3m m)
143127
endif()

lapack-netlib/TESTING/EIG/CMakeLists.txt

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

lapack-netlib/TESTING/LIN/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -240,10 +240,6 @@ 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} ${LIBNAMEPREFIX}openblas${LIBNAMESUFFIX}${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()
247243
#${TMGLIB} ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES})
248244
endmacro()
249245

test/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@ endif ()
3434
foreach(test_bin ${OpenBLAS_Tests})
3535
add_executable(${test_bin} ${test_bin}.f)
3636
target_link_libraries(${test_bin} ${OpenBLAS_LIBNAME})
37-
if (USE_OPENMP AND (${CMAKE_Fortran_COMPILER_ID} STREQUAL GNU) AND (${CMAKE_C_COMPILER_ID} STREQUAL Clang))
38-
string(REGEX REPLACE "-fopenmp" "" CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}")
39-
target_link_libraries(${test_bin} omp pthread)
40-
endif()
4137
endforeach()
4238

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

0 commit comments

Comments
 (0)