Skip to content

Commit 52792f6

Browse files
authored
Revert "CMake: Pass OpenMP compiler and linker flags through CMake targets"
1 parent d23680b commit 52792f6

File tree

15 files changed

+68
-66
lines changed

15 files changed

+68
-66
lines changed

.github/workflows/apple_m.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,6 @@ jobs:
108108
mkdir build && cd build
109109
cmake -DDYNAMIC_ARCH=1 \
110110
-DUSE_OPENMP=${{matrix.openmp}} \
111-
-DOpenMP_Fortran_LIB_NAMES=omp \
112111
-DINTERFACE64=${{matrix.ilp64}} \
113112
-DNOFORTRAN=0 \
114113
-DBUILD_WITHOUT_LAPACK=0 \

CMakeLists.txt

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,10 @@ endif()
121121

122122
message(WARNING "CMake support is experimental. It does not yet support all build options and may not produce the same Makefiles that OpenBLAS ships with.")
123123

124+
if (USE_OPENMP)
125+
find_package(OpenMP REQUIRED)
126+
endif ()
127+
124128
include("${PROJECT_SOURCE_DIR}/cmake/utils.cmake")
125129
include("${PROJECT_SOURCE_DIR}/cmake/system.cmake")
126130

@@ -246,12 +250,6 @@ endif ()
246250
# add objects to the openblas lib
247251
if(NOT NO_LAPACK)
248252
add_library(LAPACK_OVERRIDES OBJECT ${LA_SOURCES})
249-
if (USE_OPENMP AND (NOT NOFORTRAN))
250-
# Disable OpenMP for LAPACK Fortran codes on Windows.
251-
if(NOT ${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
252-
target_link_libraries(LAPACK_OVERRIDES OpenMP::OpenMP_Fortran)
253-
endif()
254-
endif()
255253
list(APPEND TARGET_OBJS "$<TARGET_OBJECTS:LAPACK_OVERRIDES>")
256254
endif()
257255
if(NOT NO_LAPACKE)
@@ -293,18 +291,10 @@ endif()
293291

294292
if (USE_OPENMP)
295293
if(BUILD_STATIC_LIBS)
296-
if(NOFORTRAN)
297-
target_link_libraries(${OpenBLAS_LIBNAME}_static OpenMP::OpenMP_C)
298-
else()
299-
target_link_libraries(${OpenBLAS_LIBNAME}_static OpenMP::OpenMP_C OpenMP::OpenMP_Fortran)
300-
endif()
294+
target_link_libraries(${OpenBLAS_LIBNAME}_static OpenMP::OpenMP_C)
301295
endif()
302296
if(BUILD_SHARED_LIBS)
303-
if(NOFORTRAN)
304-
target_link_libraries(${OpenBLAS_LIBNAME}_shared OpenMP::OpenMP_C)
305-
else()
306-
target_link_libraries(${OpenBLAS_LIBNAME}_shared OpenMP::OpenMP_C OpenMP::OpenMP_Fortran)
307-
endif()
297+
target_link_libraries(${OpenBLAS_LIBNAME}_shared OpenMP::OpenMP_C)
308298
endif()
309299
endif()
310300

cmake/arch.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,17 @@ if (${CMAKE_C_COMPILER_ID} STREQUAL "Intel")
3131
set(CCOMMON_OPT "${CCOMMON_OPT} -wd981")
3232
endif ()
3333

34+
if (USE_OPENMP)
35+
# USE_SIMPLE_THREADED_LEVEL3 = 1
36+
# NO_AFFINITY = 1
37+
find_package(OpenMP REQUIRED)
38+
if (OpenMP_FOUND)
39+
set(CCOMMON_OPT "${CCOMMON_OPT} ${OpenMP_C_FLAGS} -DUSE_OPENMP")
40+
set(FCOMMON_OPT "${FCOMMON_OPT} ${OpenMP_Fortran_FLAGS}")
41+
endif()
42+
endif ()
43+
44+
3445
if (DYNAMIC_ARCH)
3546
if (ARM64)
3647
set(DYNAMIC_CORE ARMV8 CORTEXA53 CORTEXA57 THUNDERX THUNDERX2T99 TSV110 EMAG8180 NEOVERSEN1 THUNDERX3T110)

cmake/fc.cmake

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ if (${F_COMPILER} STREQUAL "FLANG" AND NOT CMAKE_Fortran_COMPILER_ID STREQUAL "L
77
# This is for classic Flang. LLVM Flang is handled with gfortran below.
88
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FLANG")
99
if (USE_OPENMP)
10-
set(OpenMP_Fortran_FLAGS "-fopenmp" CACHE STRING "OpenMP Fortran compiler flags")
10+
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
1111
endif ()
1212
set(FCOMMON_OPT "${FCOMMON_OPT} -Mrecursive -Kieee")
1313
endif ()
@@ -117,7 +117,7 @@ if (${F_COMPILER} STREQUAL "GFORTRAN" OR ${F_COMPILER} STREQUAL "F95" OR CMAKE_F
117117
endif ()
118118

119119
if (USE_OPENMP)
120-
set(OpenMP_Fortran_FLAGS "-fopenmp" CACHE STRING "OpenMP Fortran compiler flags")
120+
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
121121
endif ()
122122
endif ()
123123

@@ -128,14 +128,14 @@ if (${F_COMPILER} STREQUAL "INTEL" OR CMAKE_Fortran_COMPILER_ID MATCHES "Intel")
128128
endif ()
129129
set(FCOMMON_OPT "${FCOMMON_OPT} -recursive -fp-model=consistent")
130130
if (USE_OPENMP)
131-
set(OpenMP_Fortran_FLAGS "-openmp" CACHE STRING "OpenMP Fortran compiler flags")
131+
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")
132132
endif ()
133133
endif ()
134134

135135
if (${F_COMPILER} STREQUAL "FUJITSU")
136136
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_FUJITSU")
137137
if (USE_OPENMP)
138-
set(OpenMP_Fortran_FLAGS "-openmp" CACHE STRING "OpenMP Fortran compiler flags")
138+
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")
139139
endif ()
140140
endif ()
141141

@@ -151,7 +151,7 @@ if (${F_COMPILER} STREQUAL "IBM")
151151
set(FCOMMON_OPT "${FCOMMON_OPT} -q32")
152152
endif ()
153153
if (USE_OPENMP)
154-
set(OpenMP_Fortran_FLAGS "-openmp" CACHE STRING "OpenMP Fortran compiler flags")
154+
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")
155155
endif ()
156156
endif ()
157157

@@ -168,7 +168,7 @@ if (${F_COMPILER} STREQUAL "PGI" OR ${F_COMPILER} STREQUAL "PGF95")
168168
endif ()
169169
set(FCOMMON_OPT "${FCOMMON_OPT} -Mrecursive")
170170
if (USE_OPENMP)
171-
set(OpenMP_Fortran_FLAGS "-mp" CACHE STRING "OpenMP Fortran compiler flags")
171+
set(FCOMMON_OPT "${FCOMMON_OPT} -mp")
172172
endif ()
173173
endif ()
174174

@@ -195,7 +195,7 @@ if (${F_COMPILER} STREQUAL "PATHSCALE")
195195
endif ()
196196

197197
if (USE_OPENMP)
198-
set(OpenMP_Fortran_FLAGS "-mp" CACHE STRING "OpenMP Fortran compiler flags")
198+
set(FCOMMON_OPT "${FCOMMON_OPT} -mp")
199199
endif ()
200200
endif ()
201201

@@ -233,7 +233,7 @@ if (${F_COMPILER} STREQUAL "OPEN64")
233233

234234
if (USE_OPENMP)
235235
set(FEXTRALIB "${FEXTRALIB} -lstdc++")
236-
set(OpenMP_Fortran_FLAGS "-mp" CACHE STRING "OpenMP Fortran compiler flags")
236+
set(FCOMMON_OPT "${FCOMMON_OPT} -mp")
237237
endif ()
238238
endif ()
239239

@@ -245,14 +245,14 @@ if (${F_COMPILER} STREQUAL "SUN")
245245
set(FCOMMON_OPT "${FCOMMON_OPT} -m64")
246246
endif ()
247247
if (USE_OPENMP)
248-
set(OpenMP_Fortran_FLAGS "-xopenmp=parallel" CACHE STRING "OpenMP Fortran compiler flags")
248+
set(FCOMMON_OPT "${FCOMMON_OPT} -xopenmp=parallel")
249249
endif ()
250250
endif ()
251251

252252
if (${F_COMPILER} STREQUAL "COMPAQ")
253253
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_COMPAQ")
254254
if (USE_OPENMP)
255-
set(OpenMP_Fortran_FLAGS "-openmp" CACHE STRING "OpenMP Fortran compiler flags")
255+
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")
256256
endif ()
257257
endif ()
258258

@@ -265,7 +265,7 @@ if (${F_COMPILER} STREQUAL "CRAY")
265265
if (NOT USE_OPENMP)
266266
set(FCOMMON_OPT "${FCOMMON_OPT} -fno-openmp")
267267
else ()
268-
set(OpenMP_Fortran_FLAGS "-fopenmp" CACHE STRING "OpenMP Fortran compiler flags")
268+
set(FCOMMON_OPT "${FCOMMON_OPT} -fopenmp")
269269
endif ()
270270
endif ()
271271

@@ -290,7 +290,7 @@ if (${F_COMPILER} STREQUAL "NAGFOR")
290290
# -w=unused: Suppress warning messages about unused variables
291291
set(FCOMMON_OPT "${FCOMMON_OPT} -w=x77 -w=ques -w=unused")
292292
if (USE_OPENMP)
293-
set(OpenMP_Fortran_FLAGS "-openmp" CACHE STRING "OpenMP Fortran compiler flags")
293+
set(FCOMMON_OPT "${FCOMMON_OPT} -openmp")
294294
endif ()
295295
endif ()
296296

cmake/system.cmake

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -412,20 +412,6 @@ else ()
412412
endif ()
413413
endif ()
414414

415-
if (USE_OPENMP)
416-
find_package(OpenMP COMPONENTS C REQUIRED)
417-
set(CCOMMON_OPT "${CCOMMON_OPT} -DUSE_OPENMP")
418-
if (NOT NOFORTRAN)
419-
find_package(OpenMP COMPONENTS Fortran REQUIRED)
420-
# Avoid mixed OpenMP linkage
421-
get_target_property(OMP_C_LIB OpenMP::OpenMP_C INTERFACE_LINK_LIBRARIES)
422-
get_target_property(OMP_Fortran_LIB OpenMP::OpenMP_Fortran INTERFACE_LINK_LIBRARIES)
423-
if (NOT OMP_C_LIB STREQUAL OMP_Fortran_LIB)
424-
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.")
425-
endif()
426-
endif ()
427-
endif ()
428-
429415
if (BINARY64)
430416
if (INTERFACE64)
431417
# CCOMMON_OPT += -DUSE64BITINT
@@ -724,6 +710,15 @@ if (LAPACK_STRLEN)
724710
endif()
725711
set(LAPACK_FPFLAGS "${LAPACK_FPFLAGS} ${FPFLAGS}")
726712

713+
#Disable -fopenmp for LAPACK Fortran codes on Windows.
714+
if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
715+
set(FILTER_FLAGS "-fopenmp;-mp;-openmp;-xopenmp=parallel")
716+
foreach (FILTER_FLAG ${FILTER_FLAGS})
717+
string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
718+
string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})
719+
endforeach ()
720+
endif ()
721+
727722
if (CMAKE_Fortran_COMPILER)
728723
if ("${F_COMPILER}" STREQUAL "NAGFOR" OR "${F_COMPILER}" STREQUAL "CRAY" OR CMAKE_Fortran_COMPILER_ID MATCHES "LLVMFlang.*")
729724
set(FILTER_FLAGS "-msse3;-mssse3;-msse4.1;-mavx;-mavx2,-mskylake-avx512")

ctest/CMakeLists.txt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@ 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()
4751
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
4852
target_link_libraries(x${float_char}cblat1 m)
4953
endif()
@@ -69,6 +73,10 @@ else()
6973
constant.c)
7074
endif()
7175
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()
7280
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
7381
target_link_libraries(x${float_char}cblat2 m)
7482
endif()
@@ -116,12 +124,20 @@ else()
116124
endif()
117125
endif()
118126
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()
119131
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
120132
target_link_libraries(x${float_char}cblat3 m)
121133
endif()
122134
if (USE_GEMM3M)
123135
if ((${float_char} STREQUAL "c") OR (${float_char} STREQUAL "z"))
124136
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()
125141
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux" OR ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" OR ${CMAKE_SYSTEM_NAME} MATCHES "QNX")
126142
target_link_libraries(x${float_char}cblat3_3m m)
127143
endif()

driver/level2/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,3 @@ if (USE_THREAD)
223223
endif ()
224224

225225
add_library(driver_level2 OBJECT ${OPENBLAS_SRC})
226-
227-
if (USE_OPENMP)
228-
target_link_libraries(driver_level2 OpenMP::OpenMP_C)
229-
endif()

driver/level3/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,3 @@ endforeach ()
178178
#
179179

180180
add_library(driver_level3 OBJECT ${OPENBLAS_SRC})
181-
182-
if (USE_OPENMP)
183-
target_link_libraries(driver_level3 OpenMP::OpenMP_C)
184-
endif()

driver/others/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,3 @@ endif ()
8888
#endif
8989

9090
add_library(driver_others OBJECT ${OPENBLAS_SRC} ${MEMORY} ${SMP_SOURCES} ${COMMON_SOURCES})
91-
92-
if (USE_OPENMP)
93-
target_link_libraries(driver_others OpenMP::OpenMP_C)
94-
endif()

interface/CMakeLists.txt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,3 @@ if ( BUILD_BFLOAT16 AND NO_FBLAS )
289289
endif()
290290

291291
add_library(interface OBJECT ${OPENBLAS_SRC})
292-
293-
if (USE_OPENMP)
294-
target_link_libraries(interface OpenMP::OpenMP_C)
295-
endif()

0 commit comments

Comments
 (0)