Use find module to link against OpenMP

Depending on the compiler in use, linking against OpenMP may require
passing specific compiler flags instead of linking against a library.
Use the CMake OpenMP find module to abstract OpenMP activation.

Change-Id: Ib43f576ac12e2c5e9598e9586df3dfa018e9c08b
This commit is contained in:
Sergiu Deitsch
2022-06-04 19:28:55 +02:00
parent b4803778c3
commit 69eddfb6da
2 changed files with 8 additions and 4 deletions
+1
View File
@@ -180,6 +180,7 @@ find_dependency(Threads)
# Optional dependencies
@SuiteSparse_DEPENDENCY@
@OpenMP_DEPENDENCY@
# As imported CMake targets are not re-exported when a dependent target is
# exported, we must invoke find_package(XXX) here to reload the definition
+7 -4
View File
@@ -33,11 +33,14 @@
if (CERES_THREADING_MODEL STREQUAL "CXX_THREADS")
set(CERES_PARALLEL_FOR_SRC parallel_for_cxx.cc thread_pool.cc)
elseif (CERES_THREADING_MODEL STREQUAL "OPENMP")
# OpenMP requires linking to the corresponding library.
find_package(OpenMP REQUIRED COMPONENTS CXX)
set(CERES_PARALLEL_FOR_SRC parallel_for_openmp.cc)
if (CMAKE_COMPILER_IS_GNUCXX)
# OpenMP in GCC requires the GNU OpenMP library.
list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES gomp)
endif()
list(APPEND CERES_LIBRARY_PRIVATE_DEPENDENCIES OpenMP::OpenMP_CXX)
# Make dependency visible to the parent CMakeLists.txt
set(OpenMP_DEPENDENCY "find_dependency (OpenMP ${OpenMP_CXX_VERSION} COMPONENTS CXX)" PARENT_SCOPE)
elseif (CERES_THREADING_MODEL STREQUAL "NO_THREADS")
set(CERES_PARALLEL_FOR_SRC parallel_for_nothreads.cc)
endif()