diff --git a/CMakeLists.txt b/CMakeLists.txt index 9577f513..131a909a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ set (${project}_DEPS # Ensembles-based Reservoir Tools (ERT) "ERT" # DUNE dependency + "dune-common" "dune-istl" ) @@ -55,6 +56,17 @@ enable_language (CXX) set (${project}_MODULE_DIR "${PROJECT_SOURCE_DIR}/cmake/Modules") list (APPEND CMAKE_MODULE_PATH ${${project}_MODULE_DIR}) +# include special +if (CMAKE_VERSION VERSION_LESS "2.8.5") + message (STATUS "Enabling compatibility modules for CMake 2.8.5") + list (APPEND CMAKE_MODULE_PATH "${${project}_MODULE_DIR}/compat-2.8.5") +endif (CMAKE_VERSION VERSION_LESS "2.8.5") + +if (CMAKE_VERSION VERSION_LESS "2.8.7") + message (STATUS "Enabling compatibility modules for CMake 2.8.7") + list (APPEND CMAKE_MODULE_PATH "${${project}_MODULE_DIR}/compat-2.8.7") +endif (CMAKE_VERSION VERSION_LESS "2.8.7") + # print system information to better pinpoint issues from log alone include (UseSystemInfo) system_info () @@ -67,12 +79,6 @@ vcs_info () include (UseCompVer) compiler_info () -# include special -if (CMAKE_VERSION VERSION_LESS "2.8.7") - message (STATUS "Enabling backward compatibility modules for CMake ${CMAKE_VERSION}") - list (APPEND CMAKE_MODULE_PATH "${${project}_MODULE_DIR}/compat-2.8.7") -endif (CMAKE_VERSION VERSION_LESS "2.8.7") - # default settings: build static debug library include (OpmDefaults) opm_defaults (${project}) diff --git a/cmake/Modules/DuneCompat.cmake b/cmake/Modules/DuneCompat.cmake index 1b16fbd8..a9cd6884 100644 --- a/cmake/Modules/DuneCompat.cmake +++ b/cmake/Modules/DuneCompat.cmake @@ -23,9 +23,15 @@ if (CMAKE_GENERATOR MATCHES "Unix Makefiles") endif (CMAKE_GENERATOR MATCHES "Unix Makefiles") # dunecontrol refuses to use a build tree as module directory unless -# there is a dune.module in it -if (NOT PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) +# there is a dune.module in it. however, if we are in a sub-dir. of +# the source, we are probably using dunecontrol with a --build-dir +# argument, and won't call dunecontrol from the parent (which is the +# source dir and most likely doesn't contain other projects) anyway, +# i.e. we only copy if we are truly out-of-source +string (LENGTH "${PROJECT_SOURCE_DIR}/" _src_dir_len) +string (SUBSTRING "${PROJECT_BINARY_DIR}/" 0 ${_src_dir_len} _proj_prefix) +if (NOT "${PROJECT_SOURCE_DIR}/" STREQUAL "${_proj_prefix}") execute_process (COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PROJECT_SOURCE_DIR}/dune.module ${PROJECT_BINARY_DIR}/dune.module ) -endif (NOT PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) +endif (NOT "${PROJECT_SOURCE_DIR}/" STREQUAL "${_proj_prefix}") diff --git a/cmake/Modules/FindSuiteSparse.cmake b/cmake/Modules/FindSuiteSparse.cmake index fb7a4f7b..d5fb546a 100644 --- a/cmake/Modules/FindSuiteSparse.cmake +++ b/cmake/Modules/FindSuiteSparse.cmake @@ -67,7 +67,10 @@ endif (NOT BLAS_FOUND) if (NOT LAPACK_FOUND) find_package (LAPACK ${SuiteSparse_QUIET} REQUIRED) endif (NOT LAPACK_FOUND) -set (SuiteSparse_EXTRA_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES}) + +# we also need the math part of the runtime library +find_library (MATH_LIBRARY NAMES "m") +set (SuiteSparse_EXTRA_LIBS ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} ${MATH_LIBRARY}) # search paths for the library outside of standard system paths. these are the # paths in which the package managers on various distros put the files @@ -178,21 +181,26 @@ if (UMFPACK_LIBRARY) if (HAVE_UMFPACK_WITHOUT_CHOLMOD) list (APPEND UMFPACK_EXTRA_LIBS ${AMD_LIBRARIES}) else (HAVE_UMFPACK_WITHOUT_CHOLMOD) - try_compile_umfpack (HAVE_UMFPACK_WITH_CHOLMOD ${CHOLMOD_LIBRARIES}) - if (HAVE_UMFPACK_WITH_CHOLMOD) - list (APPEND UMFPACK_EXTRA_LIBS ${CHOLMOD_LIBRARIES}) - else (HAVE_UMFPACK_WITH_CHOLMOD) + if (CHOLMOD_LIBRARIES) + try_compile_umfpack (HAVE_UMFPACK_WITH_CHOLMOD ${CHOLMOD_LIBRARIES}) + if (HAVE_UMFPACK_WITH_CHOLMOD) + list (APPEND UMFPACK_EXTRA_LIBS ${CHOLMOD_LIBRARIES}) + else (HAVE_UMFPACK_WITH_CHOLMOD) + set (UMFPACK_EXTRA_LIBS "-NOTFOUND") + endif (HAVE_UMFPACK_WITH_CHOLMOD) + else (CHOLMOD_LIBRARIES) + # if we don't have cholmod, then we certainly cannot have umfpack with cholmod set (UMFPACK_EXTRA_LIBS "-NOTFOUND") - endif (HAVE_UMFPACK_WITH_CHOLMOD) + endif (CHOLMOD_LIBRARIES) endif (HAVE_UMFPACK_WITHOUT_CHOLMOD) # test if umfpack is underlinked (CentOS 5.9), i.e. doesn't specify # that it depends on amd. in that case, force amd to be linked - if ((CMAKE_CXX_PLATFORM_ID STREQUAL "Linux") AND CMAKE_COMPILER_IS_GNUCC) + if (UMFPACK_EXTRA_LIBS AND (CMAKE_CXX_PLATFORM_ID STREQUAL "Linux") AND CMAKE_COMPILER_IS_GNUCC) try_compile_umfpack (HAVE_UMFPACK_NOT_UNDERLINKED "-Wl,--as-needed" ${UMFPACK_EXTRA_LIBS}) if (NOT HAVE_UMFPACK_NOT_UNDERLINKED) list (APPEND UMFPACK_LINKER_FLAGS "-Wl,--no-as-needed") endif (NOT HAVE_UMFPACK_NOT_UNDERLINKED) - endif ((CMAKE_CXX_PLATFORM_ID STREQUAL "Linux") AND CMAKE_COMPILER_IS_GNUCC) + endif (UMFPACK_EXTRA_LIBS AND (CMAKE_CXX_PLATFORM_ID STREQUAL "Linux") AND CMAKE_COMPILER_IS_GNUCC) list (APPEND UMFPACK_LIBRARIES ${UMFPACK_EXTRA_LIBS}) list (REVERSE UMFPACK_LIBRARIES) list (REMOVE_DUPLICATES UMFPACK_LIBRARIES) diff --git a/cmake/Modules/compat-2.8.5/FindGit.cmake b/cmake/Modules/compat-2.8.5/FindGit.cmake new file mode 100644 index 00000000..af316d81 --- /dev/null +++ b/cmake/Modules/compat-2.8.5/FindGit.cmake @@ -0,0 +1,47 @@ +# The module defines the following variables: +# GIT_EXECUTABLE - path to git command line client +# GIT_FOUND - true if the command line client was found +# Example usage: +# find_package(Git) +# if(GIT_FOUND) +# message("git found: ${GIT_EXECUTABLE}") +# endif() + +#============================================================================= +# Copyright 2010 Kitware, Inc. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= +# (To distribute this file outside of CMake, substitute the full +# License text for the above reference.) + +# Look for 'git' or 'eg' (easy git) +# +set(git_names git eg) + +# Prefer .cmd variants on Windows unless running in a Makefile +# in the MSYS shell. +# +if(WIN32) + if(NOT CMAKE_GENERATOR MATCHES "MSYS") + set(git_names git.cmd git eg.cmd eg) + endif() +endif() + +find_program(GIT_EXECUTABLE + NAMES ${git_names} + PATH_SUFFIXES Git/cmd Git/bin + DOC "git command line client" + ) +mark_as_advanced(GIT_EXECUTABLE) + +# Handle the QUIETLY and REQUIRED arguments and set GIT_FOUND to TRUE if +# all listed variables are TRUE + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Git DEFAULT_MSG GIT_EXECUTABLE)