From f9f79ccdc489cd677480d42c7d88820a159556ea Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Fri, 27 Apr 2012 15:25:20 +0200
Subject: [PATCH] Introduced CMake compiler variables COMPILER_IS_... (see
 scripts/cmake/CompilerSetup.cmake).

Fixed OpenMP build on Windows.
---
 scripts/cmake/CompilerSetup.cmake | 22 ++++++++++++++++------
 scripts/cmake/Find.cmake          |  2 +-
 scripts/cmake/FindMetis.cmake     |  2 ++
 3 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/scripts/cmake/CompilerSetup.cmake b/scripts/cmake/CompilerSetup.cmake
index 49bdd260c29..9de02148abe 100644
--- a/scripts/cmake/CompilerSetup.cmake
+++ b/scripts/cmake/CompilerSetup.cmake
@@ -3,8 +3,19 @@ INCLUDE(SetDefaultBuildType)
 SET_DEFAULT_BUILD_TYPE(Debug)
 INCLUDE(MSVCMultipleProcessCompile) # /MP switch (multi processor) for VS
 
-### GNU C/CXX compiler
+# Set compiler helper variables
+IF (CMAKE_CXX_COMPILER MATCHES ".*clang")
+	SET(COMPILER_IS_CLANG 1)
+ENDIF ()
 IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+	SET(COMPILER_IS_GCC 1)
+ENDIF ()
+IF (${CMAKE_C_COMPILER} MATCHES "icc.*$" OR ${CMAKE_CXX_COMPILER} MATCHES "icpc.*$")
+	SET(COMPILER_IS_INTEL)
+ENDIF ()
+
+### GNU C/CXX compiler
+IF(COMPILER_IS_GCC)
 		get_gcc_version(GCC_VERSION)
         IF( NOT CMAKE_BUILD_TYPE STREQUAL "Debug" )
                 MESSAGE(STATUS "Set GCC release flags")
@@ -19,17 +30,16 @@ IF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
         # -g
         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wall -Wextra -fno-nonansi-builtins")
         ADD_DEFINITIONS( -DGCC )
-ENDIF(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_GNUCC)
+ENDIF() # COMPILER_IS_GCC
 
 ### Intel compiler
-IF (${CMAKE_C_COMPILER} MATCHES "icc.*$" OR ${CMAKE_CXX_COMPILER} MATCHES "icpc.*$")
+IF (COMPILER_IS_INTEL)
         IF( NOT CMAKE_BUILD_TYPE STREQUAL "Debug" )
                 MESSAGE(STATUS "Set Intel release flags")
                 SET(CMAKE_CXX_FLAGS "-O3 -DNDEBUG")
         ENDIF()
         SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated -Wall")
-ENDIF(${CMAKE_C_COMPILER} MATCHES "icc.*$" OR ${CMAKE_CXX_COMPILER} MATCHES
-"icpc.*$")
+ENDIF() # COMPILER_IS_INTEL
 
 # Profiling
 IF (OGS_PROFILE)
@@ -38,7 +48,7 @@ IF (OGS_PROFILE)
 	ENDIF()
 	SET(PROFILE_FLAGS "-pg -fno-omit-frame-pointer -O2 -DNDEBUG")
 	# clang compiler does not know the following flags
-	IF(CMAKE_CXX_COMPILER MATCHES "!clang")
+	IF(NOT COMPILER_IS_CLANG)
 		SET(PROFILE_FLAGS "${PROFILE_FLAGS} -fno-inline-functions-called-once -fno-optimize-sibling-calls")
 	ENDIF()
 	SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PROFILE_FLAGS}")
diff --git a/scripts/cmake/Find.cmake b/scripts/cmake/Find.cmake
index 0765e55d11d..dc96a893f09 100644
--- a/scripts/cmake/Find.cmake
+++ b/scripts/cmake/Find.cmake
@@ -18,7 +18,7 @@ FIND_PACKAGE(cppcheck)
 ######################
 
 # Clang does not have OpenMP support atm, see https://github.com/ufz/ogs/issues/8
-IF(CMAKE_CXX_COMPILER MATCHES "!clang")
+IF(NOT COMPILER_IS_CLANG)
 	FIND_PACKAGE(OpenMP)
 ENDIF () # !clang
 IF(OPENMP_FOUND)
diff --git a/scripts/cmake/FindMetis.cmake b/scripts/cmake/FindMetis.cmake
index f368791f09e..c9518513c27 100644
--- a/scripts/cmake/FindMetis.cmake
+++ b/scripts/cmake/FindMetis.cmake
@@ -23,5 +23,7 @@ FIND_LIBRARY(METIS_LIBRARY metis
 	${CMAKE_SOURCE_DIR}/../libs/lib
 )
 
+SET(METIS_LIBRARIES ${METIS_LIBRARY})
+
 INCLUDE(FindPackageHandleStandardArgs)
 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Metis DEFAULT_MSG METIS_LIBRARY METIS_INCLUDE_DIR)
-- 
GitLab