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:
Roland Kaufmann 2013-02-07 22:50:38 +01:00
parent 39dd997dc1
commit ae6e5314e3
3 changed files with 54 additions and 49 deletions

View File

@ -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

View File

@ -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)

View File

@ -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)