# -*- mode: cmake; tab-width: 2; indent-tabs-mode: t; truncate-lines: t; compile-command: "cmake -Wdev" -*- # vim: set filetype=cmake autoindent tabstop=2 shiftwidth=2 noexpandtab softtabstop=2 nowrap: ########################################################################### # # # Note: The bulk of the build system is located in the cmake/ directory. # # This file only contains the specializations for this particular # # project. Most likely you are interested in editing one of these # # files instead: # # # # dune.module Name and version number # # CMakeLists_files.cmake Path of source files # # cmake/Modules/${project}-prereqs.cmake Dependencies # # # ########################################################################### cmake_minimum_required (VERSION 2.8) set( OPM_COMMON_ROOT "" CACHE PATH "Root directory containing OPM related cmake modules") option(SIBLING_SEARCH "Search for other modules in sibling directories?" ON) set( USE_OPENMP_DEFAULT OFF ) # Use of OpenMP is considered experimental if(NOT OPM_COMMON_ROOT) find_package(opm-common QUIET) endif() if (opm-common_FOUND) include(OpmInit) else() unset(opm-common_FOUND) if (NOT OPM_COMMON_ROOT AND SIBLING_SEARCH) set(OPM_COMMON_ROOT ${PROJECT_SOURCE_DIR}/../opm-common) endif() if (OPM_COMMON_ROOT) list( APPEND CMAKE_MODULE_PATH "${OPM_COMMON_ROOT}/cmake/Modules") include (OpmInit OPTIONAL RESULT_VARIABLE OPM_INIT) set( OPM_MACROS_ROOT ${OPM_COMMON_ROOT} ) endif() if (NOT OPM_INIT) message( "" ) message( " /---------------------------------------------------------------------------------\\") message( " | Could not locate the opm build macros. The opm build macros |") message( " | are in a separate repository - instructions to proceed: |") message( " | |") message( " | 1. Clone the repository: git clone git@github.com:OPM/opm-common.git |") message( " | |") message( " | 2. Run cmake in the current project with -DOPM_COMMON_ROOT=/opm-common |") message( " | |") message( " \\---------------------------------------------------------------------------------/") message( "" ) message( FATAL_ERROR "Could not find OPM Macros") endif() endif() # not the same location as most of the other projects? this hook overrides macro (dir_hook) endmacro (dir_hook) # project information is in dune.module. Read this file and set variables. # we cannot generate dune.module since it is read by dunecontrol before # the build starts, so it makes sense to keep the data there then. include (OpmInit) # Look for the opm-data repository; if found the variable # HAVE_OPM_DATA will be set to true. include( Findopm-data ) # list of prerequisites for this particular project; this is in a # separate file (in cmake/Modules sub-directory) because it is shared # with the find module include ("${project}-prereqs") # read the list of components from this file (in the project directory); # it should set various lists with the names of the files to include include (CMakeLists_files.cmake) macro (config_hook) opm_need_version_of ("dune-common") opm_need_version_of ("dune-istl") endmacro (config_hook) macro (prereqs_hook) endmacro (prereqs_hook) macro (sources_hook) if(OPM_GRID_FOUND OR opm-grid_FOUND) list (APPEND examples_SOURCES ${PROJECT_SOURCE_DIR}/examples/flow_mpi.cpp ${PROJECT_SOURCE_DIR}/examples/flow_multisegment_mpi.cpp ) list (APPEND examples_SOURCES_DIST ${PROJECT_SOURCE_DIR}/examples/flow_mpi.cpp ) endif() endmacro (sources_hook) macro (fortran_hook) endmacro (fortran_hook) macro (files_hook) endmacro (files_hook) macro (tests_hook) endmacro (tests_hook) # all setup common to the OPM library modules is done here include (OpmLibMain) # download Eigen if user doesn't have the correct version if (NOT EIGEN3_FOUND) message (STATUS "Downloading Eigen3") include (ExternalProject) externalProject_Add (Eigen3 GIT_REPOSITORY git://github.com/OPM/eigen3 UPDATE_COMMAND git checkout 9e788db99d73f3199ade74bfda8d9f73fdfbbe4c CMAKE_ARGS -DEIGEN_TEST_NO_OPENGL=1 -DEIGEN_BUILD_PKGCONFIG=0 -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/eigen3-installed ) include_directories (${CMAKE_BINARY_DIR}/eigen3-installed/include/eigen3) add_dependencies (opmsimulators Eigen3) endif (NOT EIGEN3_FOUND) if (HAVE_OPM_DATA) add_test( NAME flow_SPE1 COMMAND flow ${OPM_DATA_ROOT}/spe1/SPE1CASE1.DATA ) add_test( NAME flow_SPE1CASE2 COMMAND flow ${OPM_DATA_ROOT}/spe1/SPE1CASE2.DATA ) add_test( NAME flow_SPE1CASE2_restart COMMAND flow ${OPM_DATA_ROOT}/spe1/SPE1CASE2_RESTART.DATA ) set_tests_properties(flow_SPE1CASE2_restart PROPERTIES DEPENDS flow_SPE1CASE2) # Dependes on the restart file from test flow_SPE1CASE2 add_executable( test_restart tests/test_restart.cpp ) target_link_libraries( test_restart opmsimulators ${Boost_LIBRARIES}) add_test( compare_restart_files ${CMAKE_BINARY_DIR}/bin/test_restart SPE1CASE2.UNRST SPE1CASE2_RESTART.UNRST # Restart from step 60 120 ) set_tests_properties(compare_restart_files PROPERTIES DEPENDS flow_SPE1CASE2_restart) # Compares the restart files from tests flow_SPE1CASE2_restart and flow_SPE1CASE2 endif()