diff --git a/3rdParty/MuParser/CMakeLists.txt b/3rdParty/MuParser/CMakeLists.txt index 49aa3ac25552f6050de4eb5ae08928fddb8a6cf4..a77276825e3280ae298eced80ea0b498e27d4bf2 100644 --- a/3rdParty/MuParser/CMakeLists.txt +++ b/3rdParty/MuParser/CMakeLists.txt @@ -14,15 +14,9 @@ set(MUPARSER_VERSION ${MUPARSER_VERSION_MAJOR}.${MUPARSER_VERSION_MINOR}.${MUPAR # Build options option(ENABLE_SAMPLES "Build the samples" OFF) -option(ENABLE_OPENMP "Enable OpenMP for multithreading" ON) +#option(ENABLE_OPENMP "Enable OpenMP for multithreading" ON) #option(BUILD_SHARED_LIBS "Build shared/static libs" ON) -if(ENABLE_OPENMP) - find_package(OpenMP REQUIRED) - set(CMAKE_CXX_FLAGS "${OpenMP_CXX_FLAGS} ${CMAKE_CXX_FLAGS}") - set(CMAKE_SHARED_LIBRARY_CXX_FLAGS "${OpenMP_CXX_FLAGS} ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") -endif() - # Credit: https://stackoverflow.com/questions/2368811/how-to-set-warning-level-in-cmake/3818084 if(MSVC) @@ -50,7 +44,7 @@ add_library(muparser src/muParserTokenReader.cpp ) -target_link_libraries(muparser PUBLIC OpenMP::OpenMP_CXX) +linkOpenMP(muparser) target_include_directories(muparser PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) # this compiles the "DLL" interface (C API) @@ -66,7 +60,7 @@ if (CMAKE_BUILD_TYPE STREQUAL Debug) target_compile_definitions(muparser PRIVATE _DEBUG) endif () -if(ENABLE_OPENMP) +if(USE_OPENMP) target_compile_definitions(muparser PRIVATE MUP_USE_OPENMP) endif() set_target_properties(muparser PROPERTIES diff --git a/CMake/3rd/OpenMP.cmake b/CMake/3rd/OpenMP.cmake index bd7781b959907eedb2b5475d6ea106d03641cbe3..45465ba4bf43dd5cf7687b83ac1d368332614582 100644 --- a/CMake/3rd/OpenMP.cmake +++ b/CMake/3rd/OpenMP.cmake @@ -1,10 +1,13 @@ -function (linkOpenMP) +function (linkOpenMP targetName) + + if(NOT USE_OPENMP) + return() + endif() find_package(OpenMP REQUIRED) if(OpenMP_CXX_FOUND) - vf_get_library_name(library_name) - target_link_libraries(${library_name} PUBLIC OpenMP::OpenMP_CXX) + target_link_libraries(${targetName} PUBLIC OpenMP::OpenMP_CXX) endif() endfunction() \ No newline at end of file diff --git a/CMake/VirtualFluidsMacros.cmake b/CMake/VirtualFluidsMacros.cmake index edb407e7c70d8623aebe0f8525d4ae94f0538797..033a4aad9a06d64634df0fcdfd4de4c403e5d9ea 100644 --- a/CMake/VirtualFluidsMacros.cmake +++ b/CMake/VirtualFluidsMacros.cmake @@ -105,6 +105,11 @@ function(vf_add_library) # enable clang tidy for this target if(BUILD_VF_CLANG_TIDY) find_program(CLANG_TIDY_COMMAND NAMES clang-tidy) + + if(NOT CLANG_TIDY_COMMAND) + message(FATAL_ERROR "Clang-tidy command not found.") + endif() + set(CMAKE_CXX_CLANG_TIDY "${CLANG_TIDY_COMMAND}") endif() diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ca84ca3f9045f45344943c24a4d83570c4beeb5..c644b97869050b8c5a00ae43583997ca49ef325c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,8 @@ option(BUILD_VF_CLANG_TIDY "Add the clang tidy checks to the targets" OFF) option(BUILD_SHARED_LIBS "" ON) +option(USE_OPENMP "Include OpenMP support" ON) + ################################################################################# # CMAKE POLICIES ################################################################################# diff --git a/src/cpu/VirtualFluidsCore/CMakeLists.txt b/src/cpu/VirtualFluidsCore/CMakeLists.txt index 032ce414c5a005acb1a84d89a4d5b51dd44a4595..a6293e64a9a521d487d0929f28ffc24b8e0ec31b 100644 --- a/src/cpu/VirtualFluidsCore/CMakeLists.txt +++ b/src/cpu/VirtualFluidsCore/CMakeLists.txt @@ -27,6 +27,8 @@ vf_add_library(BUILDTYPE static PUBLIC_LINK basics muparser ${CAB_ADDITIONAL_LIN vf_get_library_name(library_name) +linkOpenMP(${library_name}) + target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/BoundaryConditions) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Connectors) target_include_directories(${library_name} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/Data) diff --git a/src/gpu/GksGpu/CMakeLists.txt b/src/gpu/GksGpu/CMakeLists.txt index 3bb439da1eaf72a24b5e9338a83e01a7b8d85a32..88df905d3eb847c1ed5e9b5bc5a1ec68c549e313 100644 --- a/src/gpu/GksGpu/CMakeLists.txt +++ b/src/gpu/GksGpu/CMakeLists.txt @@ -3,4 +3,6 @@ vf_add_library(BUILDTYPE shared PRIVATE_LINK basics GksMeshAdapter) linkCUDA() linkMPI() -linkOpenMP() + +vf_get_library_name(library_name) +linkOpenMP(${library_name}) diff --git a/src/gpu/GridGenerator/CMakeLists.txt b/src/gpu/GridGenerator/CMakeLists.txt index aee5018a99a6749c13fda1459c3d3d6ce6b5e77d..aaabd6d5de07940194e8428f0d3c9a18a741ae33 100644 --- a/src/gpu/GridGenerator/CMakeLists.txt +++ b/src/gpu/GridGenerator/CMakeLists.txt @@ -1,9 +1,9 @@ vf_add_library(BUILDTYPE shared PRIVATE_LINK basics) +vf_get_library_name(library_name) linkCUDA() -linkOpenMP() +linkOpenMP(${library_name}) -vf_get_library_name(library_name) set_target_properties(${library_name} PROPERTIES CUDA_SEPARABLE_COMPILATION ON) \ No newline at end of file