From d5036ab66da0d57adc25e5d30aff508a706d3d53 Mon Sep 17 00:00:00 2001 From: akva Date: Tue, 13 Dec 2011 13:27:19 +0000 Subject: [PATCH] changed: check GoTools version and bail if < 3.0.0 also moves c++0x check into FindGoTools where it belongs (it's GoTools requiring it, not us) git-svn-id: http://svn.sintef.no/trondheim/IFEM/trunk@1348 e10b68d5-8a6e-419e-a041-bce267b0401d --- CMakeLists.txt | 21 ++++++++------------- cmake/Modules/FindGoTools.cmake | 26 ++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0992486d..181d943b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,19 +21,6 @@ ELSE(CMAKE_CXX_COMPILER MATCHES icpc) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_CBLAS") ENDIF(CMAKE_CXX_COMPILER MATCHES icpc) -INCLUDE(CheckCXXCompilerFlag) - -IF(CMAKE_CXX_COMPILER_ID MATCHES GNU) -# check if compiler supports c++-0x - CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" HAVE_0x) - IF(HAVE_0x) - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x") - ELSE(HAVE_0x) - MESSAGE("A compiler with c++-0x support is needed") - EXIT(1) - ENDIF(HAVE_0x) -ENDIF(CMAKE_CXX_COMPILER_ID MATCHES GNU) - ENABLE_TESTING() # Add local modules @@ -46,6 +33,11 @@ FIND_PACKAGE(GoTrivariate REQUIRED) FIND_PACKAGE(LAPACK REQUIRED) FIND_PACKAGE(ARPACK REQUIRED) +# Mimimum GoTools version +IF(GoTools_VERSION_MAJOR LESS 3 OR NOT GoTools_VERSION_MAJOR) + MESSAGE(FATAL_ERROR "GoTools >= 3.0.0 required. bailing") +ENDIF(GoTools_VERSION_MAJOR LESS 3 OR NOT GoTools_VERSION_MAJOR) + # Optional packages IF(${ENABLE_PETSC}) FIND_PACKAGE(Petsc) @@ -167,6 +159,9 @@ IF(NOT WIN32) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-parentheses") ENDIF(NOT WIN32) +# GoTools compile flags +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GoTools_CXX_FLAGS}") + # Make the IFEM library FILE(GLOB_RECURSE IFEM_SRCS ${PROJECT_SOURCE_DIR}/src/*.[Cf] ${PROJECT_SOURCE_DIR}/3rdparty/*.C diff --git a/cmake/Modules/FindGoTools.cmake b/cmake/Modules/FindGoTools.cmake index 3586447a..f5347c49 100644 --- a/cmake/Modules/FindGoTools.cmake +++ b/cmake/Modules/FindGoTools.cmake @@ -17,6 +17,32 @@ FIND_LIBRARY(GoTools_LIBRARIES PATH_SUFFIXES GoTools ) +# Check for newer GoTools +EXECUTE_PROCESS(COMMAND cat "${GoTools_INCLUDE_DIRS}/GoTools/geometry/GoTools.h" OUTPUT_VARIABLE GOTOOLS_HEADER) +STRING(REGEX MATCH "GO_VERSION_MAJOR ([0-9]+)" GoTools_VERSION_MAJOR ${GOTOOLS_HEADER}) +STRING(REGEX REPLACE "GO_VERSION_MAJOR ([0-9]+)" "\\1" GoTools_VERSION_MAJOR "${GoTools_VERSION_MAJOR}") +STRING(REGEX MATCH "GO_VERSION_MINOR ([0-9]+)" GoTools_VERSION_MINOR ${GOTOOLS_HEADER}) +STRING(REGEX REPLACE "GO_VERSION_MINOR ([0-9]+)" "\\1" GoTools_VERSION_MINOR "${GoTools_VERSION_MINOR}") +STRING(REGEX MATCH "GO_VERSION_PATCH ([0-9]+)" GoTools_VERSION_PATCH ${GOTOOLS_HEADER}) +STRING(REGEX REPLACE "GO_VERSION_PATCH ([0-9]+)" "\\1" GoTools_VERSION_PATCH "${GoTools_VERSION_PATCH}") + +IF (GoTools_VERSION_MAJOR GREATER 2) + INCLUDE(CheckCXXCompilerFlag) + IF(CMAKE_CXX_COMPILER_ID MATCHES GNU) + # check if compiler supports c++-0x + CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" HAVE_0x) + IF(HAVE_0x) + SET(GoTools_CXX_FLAGS "-std=gnu++0x") + ELSE(HAVE_0x) + MESSAGE("A compiler with c++-0x support is needed") + EXIT(1) + ENDIF(HAVE_0x) + ELSE(CMAKE_CXX_COMPILER_ID MATCHES GNU) + MESSAGE("Cannot verify that compiler supports c++-0x, bailing") + EXIT(1) + ENDIF(CMAKE_CXX_COMPILER_ID MATCHES GNU) +ENDIF (GoTools_VERSION_MAJOR GREATER 2) + INCLUDE(FindPackageHandleStandardArgs) IF(GoTools_LIBRARIES) find_package_handle_standard_args(GoTools DEFAULT_MSG