From 2b9bdf3947d98cfdad4cad42afa92b2fac53faca Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Tue, 1 Mar 2016 16:17:21 +0000 Subject: [PATCH] Only pass OpenMP flags to the linker when using GCC or Clang. Passing those flags to the linker when MSVC results in a warning about an unused flag. --- CMakeLists.txt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fb920040..7a1937f8e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -212,10 +212,18 @@ if (USE_OPENMP) endif() if (OPENMP_FOUND) list(APPEND Z3_COMPONENT_CXX_FLAGS ${OpenMP_CXX_FLAGS}) - # Targets linking against libz3 (or its individual components) - # will need to add these flags - list(APPEND Z3_DEPENDENT_EXTRA_CXX_LINK_FLAGS ${OpenMP_CXX_FLAGS}) - list(APPEND Z3_DEPENDENT_EXTRA_C_LINK_FLAGS ${OpenMP_C_FLAGS}) + # GCC and Clang need to have additional flags passed to the linker. + # We can't do ``target_link_libraries(libz3 INTERFACE ${OpenMP_CXX_FLAGS})`` + # because ``/openmp`` is interpreted as file name rather than a linker + # flag by MSVC and breaks the build + if (("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") OR + ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")) + list(APPEND Z3_DEPENDENT_EXTRA_CXX_LINK_FLAGS ${OpenMP_C_FLAGS}) + endif() + if (("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") OR + ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU")) + list(APPEND Z3_DEPENDENT_EXTRA_C_LINK_FLAGS ${OpenMP_CXX_FLAGS}) + endif() unset(CMAKE_REQUIRED_FLAGS) message(STATUS "Using OpenMP") else()