diff options
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r-- | CMakeLists.txt | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 10c2f65e84a..039a745070d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,6 +267,10 @@ if(NOT WITH_AUDASPACE) endif() option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON) +if(UNIX AND NOT APPLE) + option(WITH_OPENMP_STATIC "Link OpenMP statically (only used by the release environment)" OFF) + mark_as_advanced(WITH_OPENMP_STATIC) +endif() if(WITH_X11) option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON) @@ -865,13 +869,9 @@ endif() if(UNIX AND NOT APPLE) macro(find_package_wrapper) if(WITH_STATIC_LIBS) - set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES}) - set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) - endif() - find_package(${ARGV}) - if(WITH_STATIC_LIBS) - set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back}) - unset(_cmake_find_library_suffixes_back) + find_package_static(${ARGV}) + else() + find_package(${ARGV}) endif() endmacro() @@ -2458,8 +2458,18 @@ endif() if(WITH_OPENMP) find_package(OpenMP) if(OPENMP_FOUND) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + if(NOT WITH_OPENMP_STATIC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") + else() + # Typically avoid adding flags as defines but we can't + # ass OpenMP flags to the linker for static builds, meaning + # we can't add any OpenMP related flags to CFLAGS variables + # since they're passed to the linker as well. + add_definitions("${OpenMP_C_FLAGS}") + + find_library_static(OpenMP_LIBRARIES gomp) + endif() else() set(WITH_OPENMP OFF) endif() |