Remove hardcoded project names and directories
Everything is now set through variables, which means that we can change the name of the project by just altering the header.
This commit is contained in:
parent
39dd997dc1
commit
ae6e5314e3
|
@ -1,13 +1,17 @@
|
|||
# -*- 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:
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
project (opm-core)
|
||||
set (opm-core_NAME "opm-core")
|
||||
project (${opm-core_NAME})
|
||||
set (opm-core_VERSION_MAJOR 1)
|
||||
set (opm-core_VERSION_MINOR 0)
|
||||
enable_language (C)
|
||||
enable_language (CXX)
|
||||
set (opm-core_DESCRIPTION "Open Porous Media Initiative Core Library")
|
||||
|
||||
# source is located under this directory
|
||||
set (opm-core_DIR "opm/core")
|
||||
|
||||
# build debug by default
|
||||
if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
|
||||
set (CMAKE_BUILD_TYPE "Debug")
|
||||
|
@ -67,7 +71,7 @@ list (APPEND opm-core_DEPS
|
|||
# Ensembles-based Reservoir Tools (ERT)
|
||||
"ERT"
|
||||
)
|
||||
find_and_append_package_list (${opm-core_DEPS})
|
||||
find_and_append_package_list_to (opm-core ${opm-core_DEPS})
|
||||
|
||||
# put debug information into every executable
|
||||
include (UseDebugSymbols)
|
||||
|
@ -95,13 +99,13 @@ set (CMAKE_Fortran_MODULE_DIRECTORY "${PROJECT_BINARY_DIR}/CMakeFiles")
|
|||
# against using globs to enumerate source code, but if you list the
|
||||
# files explicitly you'll change the build files every time you add to
|
||||
# the project as well as having to rebuild completely anyway.
|
||||
file (GLOB_RECURSE opmcore_C_SOURCES "opm/core/[^.]*.c")
|
||||
file (GLOB_RECURSE opmcore_CXX_SOURCES "opm/core/[^.]*.cpp")
|
||||
file (GLOB_RECURSE opmcore_C_HEADERS "opm/core/[^.]*.h")
|
||||
file (GLOB_RECURSE opmcore_CXX_HEADERS "opm/core/[^.]*.hpp")
|
||||
file (GLOB_RECURSE opmcore_C_SOURCES "${opm-core_DIR}/[^.]*.c")
|
||||
file (GLOB_RECURSE opmcore_CXX_SOURCES "${opm-core_DIR}/[^.]*.cpp")
|
||||
file (GLOB_RECURSE opmcore_C_HEADERS "${opm-core_DIR}/[^.]*.h")
|
||||
file (GLOB_RECURSE opmcore_CXX_HEADERS "${opm-core_DIR}/[^.]*.hpp")
|
||||
|
||||
# remove pre-compile headers from output list
|
||||
set (opmcore_PRECOMP_CXX_HEADER "opm/core/opm-core-pch.hpp")
|
||||
set (opmcore_PRECOMP_CXX_HEADER "${opm-core_DIR}/${opm-core_NAME}-pch.hpp")
|
||||
list (REMOVE_ITEM opmcore_CXX_HEADERS
|
||||
${PROJECT_SOURCE_DIR}/${opmcore_PRECOMP_CXX_HEADER}
|
||||
)
|
||||
|
@ -120,40 +124,40 @@ endif (AGMG_FOUND)
|
|||
# these solvers are only compiled in if their dependency is found
|
||||
if (NOT AGMG_FOUND)
|
||||
list (REMOVE_ITEM opmcore_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/opm/core/linalg/LinearSolverAGMG.cpp
|
||||
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/linalg/LinearSolverAGMG.cpp
|
||||
)
|
||||
endif (NOT AGMG_FOUND)
|
||||
if (NOT dune-istl_FOUND)
|
||||
list (REMOVE_ITEM opmcore_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/opm/core/linalg/LinearSolverIstl.cpp
|
||||
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/linalg/LinearSolverIstl.cpp
|
||||
)
|
||||
endif (NOT dune-istl_FOUND)
|
||||
if (NOT SuiteSparse_FOUND)
|
||||
list (REMOVE_ITEM opmcore_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/opm/core/linalg/call_umfpack.c
|
||||
${PROJECT_SOURCE_DIR}/opm/core/linalg/LinearSolverUmfpack.cpp
|
||||
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/linalg/call_umfpack.c
|
||||
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/linalg/LinearSolverUmfpack.cpp
|
||||
)
|
||||
endif (NOT SuiteSparse_FOUND)
|
||||
|
||||
# these files are provided in source control, but can only compile with Matlab
|
||||
# available; we are not supposed to include the TinyXML test prog. regardless
|
||||
list (REMOVE_ITEM opmcore_SOURCES
|
||||
${PROJECT_SOURCE_DIR}/opm/core/grid/cpgpreprocess/mxgrdecl.c
|
||||
${PROJECT_SOURCE_DIR}/opm/core/grid/cpgpreprocess/processgrid.c
|
||||
${PROJECT_SOURCE_DIR}/opm/core/utility/parameters/tinyxml/xmltest.cpp
|
||||
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/grid/cpgpreprocess/mxgrdecl.c
|
||||
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/grid/cpgpreprocess/processgrid.c
|
||||
${PROJECT_SOURCE_DIR}/${opm-core_DIR}/utility/parameters/tinyxml/xmltest.cpp
|
||||
)
|
||||
|
||||
# remove inline TinyXML if a system version was found
|
||||
if (TinyXML_FOUND)
|
||||
file (GLOB_RECURSE _inline_tinyxml "opm/core/utility/parameters/tinyxml/*")
|
||||
file (GLOB_RECURSE _inline_tinyxml "${opm-core_DIR}/utility/parameters/tinyxml/*")
|
||||
foreach (_file IN LISTS _inline_tinyxml)
|
||||
list (REMOVE_ITEM opmcore_SOURCES ${_file})
|
||||
endforeach (_file)
|
||||
endif (TinyXML_FOUND)
|
||||
|
||||
# anyhow remove it from the header list (so it doesn't get installed)
|
||||
list (REMOVE_ITEM opmcore_HEADERS "opm/core/utility/parameters/tinyxml/tinystr.h")
|
||||
list (REMOVE_ITEM opmcore_HEADERS "opm/core/utility/parameters/tinyxml/tinyxml.h")
|
||||
list (REMOVE_ITEM opmcore_HEADERS "${opm-core_DIR}/utility/parameters/tinyxml/tinystr.h")
|
||||
list (REMOVE_ITEM opmcore_HEADERS "${opm-core_DIR}/utility/parameters/tinyxml/tinyxml.h")
|
||||
|
||||
# HAVE_ERT is used as an #ifdef, not as an #if in the source code, if it
|
||||
# is not true, then it should be unset altogether
|
||||
|
@ -194,16 +198,16 @@ if (DEFINED BUILD_SHARED_LIBS)
|
|||
else (DEFINED BUILD_SHARED_LIBS)
|
||||
set (_shared_def OFF)
|
||||
endif (DEFINED BUILD_SHARED_LIBS)
|
||||
option (BUILD_opm-core_SHARED "Build opm-core as a shared library" ${_shared_def})
|
||||
if (BUILD_opm-core_SHARED)
|
||||
option (BUILD_${opm-core_NAME}_SHARED "Build ${opm-core_NAME} as a shared library" ${_shared_def})
|
||||
if (BUILD_${opm-core_NAME}_SHARED)
|
||||
set (opm-core_LIBRARY_TYPE SHARED)
|
||||
else (BUILD_opm-core_SHARED)
|
||||
else (BUILD_${opm-core_NAME}_SHARED)
|
||||
set (opm-core_LIBRARY_TYPE STATIC)
|
||||
endif (BUILD_opm-core_SHARED)
|
||||
endif (BUILD_${opm-core_NAME}_SHARED)
|
||||
|
||||
# name of the library should not contain dashes, as CMake will
|
||||
# define a symbol with that name, and those cannot contain dashes
|
||||
string (REPLACE "-" "" opm-core_TARGET "${PROJECT_NAME}")
|
||||
string (REPLACE "-" "" opm-core_TARGET "${opm-core_NAME}")
|
||||
|
||||
# create this library
|
||||
include_directories (${opm-core_INCLUDE_DIRS})
|
||||
|
@ -276,15 +280,15 @@ else (SYSTEM_DEBUG)
|
|||
endif (SYSTEM_DEBUG)
|
||||
# static libraries don't have their debug info stripped, so there is
|
||||
# only a separate file when we are building shared objects
|
||||
if (BUILD_opm-core_SHARED)
|
||||
if (opm-core_LIBRARY_TYPE STREQUAL "SHARED")
|
||||
install (
|
||||
FILES ${PROJECT_BINARY_DIR}/${opm-core_DEBUG}
|
||||
DESTINATION ${_dbg_prefix}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
|
||||
)
|
||||
endif (BUILD_opm-core_SHARED)
|
||||
endif (opm-core_LIBRARY_TYPE STREQUAL "SHARED")
|
||||
install (
|
||||
FILES ${PROJECT_SOURCE_DIR}/dune.module
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR_NOARCH}/dunecontrol/opm-core
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR_NOARCH}/dunecontrol/${opm-core_NAME}
|
||||
)
|
||||
message (STATUS "This build defaults to installing in ${CMAKE_INSTALL_PREFIX}")
|
||||
|
||||
|
@ -417,7 +421,7 @@ if (DOXYGEN_FOUND)
|
|||
string (TOUPPER ${format} FORMAT)
|
||||
install (
|
||||
DIRECTORY ${PROJECT_BINARY_DIR}/${docu_dir}/${format}
|
||||
DESTINATION share/doc/${PROJECT_NAME}/
|
||||
DESTINATION share/doc/${opm-core_NAME}/
|
||||
COMPONENT ${format}
|
||||
OPTIONAL
|
||||
)
|
||||
|
@ -456,13 +460,13 @@ set (DISTCLEAN_FILES
|
|||
CMakeCache.txt
|
||||
cmake_install.cmake
|
||||
Makefile
|
||||
config.h
|
||||
opm-core-config.cmake
|
||||
opm-core-config-version.cmake
|
||||
opm-core-install.cmake
|
||||
opm-core.pc
|
||||
opm-core-install.pc
|
||||
Doxyfile
|
||||
config.h
|
||||
${opm-core_NAME}-config.cmake
|
||||
${opm-core_NAME}-config-version.cmake
|
||||
${opm-core_NAME}-install.cmake
|
||||
${opm-core_NAME}.pc
|
||||
${opm-core_NAME}-install.pc
|
||||
Doxyfile
|
||||
CTestTestfile.cmake
|
||||
DartConfiguration.tcl
|
||||
GNUmakefile
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
set(CTEST_PROJECT_NAME "opm-core")
|
||||
# this is included after opm-core_NAME is set
|
||||
set(CTEST_PROJECT_NAME "${opm-core_NAME}")
|
||||
set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
|
||||
set(CTEST_DROP_METHOD "http")
|
||||
set(CTEST_DROP_SITE "opm-project.org")
|
||||
set(CTEST_DROP_LOCATION "/CDash/submit.php?project=opm-core")
|
||||
set(CTEST_DROP_LOCATION "/CDash/submit.php?project=${opm-core_NAME}")
|
||||
set(CTEST_DROP_SITE_CDASH TRUE)
|
||||
|
|
|
@ -22,7 +22,7 @@ function (configure_pc_file name source dest prefix libdir includedir)
|
|||
unseparate_args (defs "" "${${name}_DEFINITIONS}")
|
||||
|
||||
# necessary to make these variables visible to configure_file
|
||||
set (name "${PROJECT_NAME}")
|
||||
set (name "${${name}_NAME}")
|
||||
set (description "${${name}_DESCRIPTION}")
|
||||
set (target "${${name}_LIBRARY}")
|
||||
set (major "${${name}_VERSION_MAJOR}")
|
||||
|
@ -52,12 +52,12 @@ function (configure_cmake_file name variant version)
|
|||
foreach (suffix IN LISTS variable_suffices)
|
||||
set (opm-project_${suffix} "${${name}_${suffix}}")
|
||||
endforeach (suffix)
|
||||
set (opm-project_NAME "${PROJECT_NAME}")
|
||||
set (opm-project_NAME "${${name}_NAME}")
|
||||
|
||||
# make the file substitutions
|
||||
configure_file (
|
||||
${template_dir}/opm-project-config${version}.cmake.in
|
||||
${PROJECT_BINARY_DIR}/${name}-${variant}${version}.cmake
|
||||
${PROJECT_BINARY_DIR}/${${name}_NAME}-${variant}${version}.cmake
|
||||
@ONLY
|
||||
)
|
||||
endfunction (configure_cmake_file name)
|
||||
|
@ -73,7 +73,7 @@ function (opm_cmake_config name)
|
|||
configure_cmake_file (${name} "config" "")
|
||||
configure_cmake_file (${name} "config" "-version")
|
||||
configure_vars (
|
||||
FILE CMAKE "${PROJECT_BINARY_DIR}/${name}-config.cmake"
|
||||
FILE CMAKE "${PROJECT_BINARY_DIR}/${${name}_NAME}-config.cmake"
|
||||
APPEND "${${name}_CONFIG_VARS}"
|
||||
)
|
||||
|
||||
|
@ -81,7 +81,7 @@ function (opm_cmake_config name)
|
|||
configure_pc_file (
|
||||
${name}
|
||||
${template_dir}/opm-project.pc.in
|
||||
${PROJECT_BINARY_DIR}/${name}.pc
|
||||
${PROJECT_BINARY_DIR}/${${name}_NAME}.pc
|
||||
${PROJECT_BINARY_DIR}
|
||||
${CMAKE_LIBRARY_OUTPUT_DIRECTORY}
|
||||
${PROJECT_SOURCE_DIR}
|
||||
|
@ -108,26 +108,26 @@ function (opm_cmake_config name)
|
|||
# of the build directory (using the same input template)
|
||||
configure_cmake_file (${name} "install" "")
|
||||
configure_vars (
|
||||
FILE CMAKE "${PROJECT_BINARY_DIR}/${name}-install.cmake"
|
||||
FILE CMAKE "${PROJECT_BINARY_DIR}/${${name}_NAME}-install.cmake"
|
||||
APPEND "${${name}_CONFIG_VARS}"
|
||||
)
|
||||
# this file gets copied to the final installation directory
|
||||
install (
|
||||
FILES ${PROJECT_BINARY_DIR}/${name}-install.cmake
|
||||
DESTINATION share/cmake/${name}
|
||||
RENAME ${name}-config.cmake
|
||||
FILES ${PROJECT_BINARY_DIR}/${${name}_NAME}-install.cmake
|
||||
DESTINATION share/cmake/${${name}_NAME}
|
||||
RENAME ${${name}_NAME}-config.cmake
|
||||
)
|
||||
# assume that there exists a version file already
|
||||
install (
|
||||
FILES ${PROJECT_BINARY_DIR}/${name}-config-version.cmake
|
||||
DESTINATION share/cmake/${name}
|
||||
FILES ${PROJECT_BINARY_DIR}/${${name}_NAME}-config-version.cmake
|
||||
DESTINATION share/cmake/${${name}_NAME}
|
||||
)
|
||||
|
||||
# find-mode .pc file; use this to locate system installation
|
||||
configure_pc_file (
|
||||
${name}
|
||||
${template_dir}/opm-project.pc.in
|
||||
${PROJECT_BINARY_DIR}/${name}-install.pc
|
||||
${PROJECT_BINARY_DIR}/${${name}_NAME}-install.pc
|
||||
${CMAKE_INSTALL_PREFIX}
|
||||
${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}
|
||||
${CMAKE_INSTALL_PREFIX}/include
|
||||
|
@ -135,8 +135,8 @@ function (opm_cmake_config name)
|
|||
|
||||
# put this in the right system location; assume that we have binaries
|
||||
install (
|
||||
FILES ${PROJECT_BINARY_DIR}/${name}-install.pc
|
||||
FILES ${PROJECT_BINARY_DIR}/${${name}_NAME}-install.pc
|
||||
DESTINATION ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/pkgconfig/
|
||||
RENAME ${name}.pc
|
||||
RENAME ${${name}_NAME}.pc
|
||||
)
|
||||
endfunction (opm_cmake_config name)
|
||||
|
|
Loading…
Reference in New Issue
Block a user