Changed logic for finding cmake modules.

The loading of opm related cmake modules now follows the following
logic:

 1. Try include( OpmInit )
 2. Update the cmake load path with OPM_CMAKE_ROOT and try again.
 3. Bail out.
This commit is contained in:
Joakim Hove 2015-03-06 12:33:43 +01:00
parent f9dbdb000e
commit 9cb13141ba

View File

@ -16,29 +16,60 @@
cmake_minimum_required (VERSION 2.8)
# additional search modules
find_path (OPM_MACROS_ROOT cmake/Modules/OpmInit.cmake
PATHS ${opm-macros_ROOT}
${CMAKE_CURRENT_SOURCE_DIR}
DOC "Path to build system macros and scripts"
NO_DEFAULT_PATH
)
list (APPEND CMAKE_MODULE_PATH "${OPM_MACROS_ROOT}/cmake/Modules")
# 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.
set( OPM_CMAKE_ROOT "" CACHE PATH "Root directory containing OPM related cmake modules")
include (OpmInit OPTIONAL RESULT_VARIABLE OPM_INIT)
if (OPM_INIT)
# We actually found the OpmInit module without using the OPM_CMAKE_ROOT variable.
# The build needs the variable $OPM_MACROS_ROOT to be set, so here we infer it
# by backtracing from the location of the OpmInit module.
get_filename_component( TMP1 ${OPM_INIT} PATH )
get_filename_component( TMP2 ${TMP1} PATH )
get_filename_component( OPM_MACROS_ROOT ${TMP2} PATH )
else()
if (OPM_CMAKE_ROOT)
list( APPEND CMAKE_MODULE_PATH "${OPM_CMAKE_ROOT}/cmake/Modules")
include (OpmInit OPTIONAL RESULT_VARIABLE OPM_INIT)
set( OPM_MACROS_ROOT ${OPM_CMAKE_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-cmake.git |")
message( " | |")
message( " | 2. Run cmake in the current project with -DOPM_CMAKE_ROOT=<path>/opm-cmake |")
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)
set (doxy_dir "Documentation")
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)
# 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)
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