Skip to content
Snippets Groups Projects
Commit a5e49b88 authored by Markus Blatt's avatar Markus Blatt
Browse files

Package configuration files and find_package use the regular dune

modul name (lower case with dashes).

These leads to kind of weired variabable names (dune-common_DIR,
dune-common_LIBRARIES, etc.) but finds non-installes modules
easier. You just sets CMAKE_PREFIX_PATH to the directory containing
the modules.

[[Imported from SVN: r6724]]
parent 842de567
Branches
Tags
No related merge requests found
......@@ -26,4 +26,3 @@ export(TARGETS dunecommon FILE DuneCommonTargets.cmake)
# finalize the dune project, e.g. generating config.h etc.
finalize_dune_project()
include(CPack)
test_dep()
#import the target
include("@CMAKE_BINARY_DIR@/@DUNE_MOD_NAME_CMAKE@Targets.cmake")
#report other information
set(@DUNE_MOD_NAME_CMAKE@_PREFIX "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME_CMAKE@_INCLUDE_DIRS "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
set(@DUNE_MOD_NAME_CMAKE@_LIBRARIES "dunecommon")
set(@DUNE_MOD_NAME_CMAKE@_SCRIPT_DIR "@CMAKE_SOURCE_DIR@/cmake/scripts")
set(DOXYSTYLE_FILE "@CMAKE_SOURCE_DIR@/doc/doxygen/Doxystyle")
\ No newline at end of file
......@@ -463,7 +463,7 @@ cat> "$PROJECT/CMakeLists.txt" << M_DELIM
cmake_minimum_required(VERSION 2.8)
project($PROJECT CXX)
# for this tow work you will have to modify the CMAKE_MODULE_PATH
# for this to work you will have to modify the CMAKE_MODULE_PATH
#set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules")
#include the dune macros
......@@ -834,49 +834,46 @@ cat> "$PROJECT/config.h.cmake" <<EOF
EOF
## done
CMAKE_NAME=`echo $NAME | sed "s/^\\(\\w\\)/\\U\\1/
s/[_-]\\(\\w\)/\\U\\1/g"`
echo "- $PROJECT/$CMAKE_NAME""Config.cmake.in"
cat> "$PROJECT/$CMAKE_NAME""Config.cmake.in" <<EOF
echo "- $PROJECT/$PROJECT""-config.cmake.in"
cat> "$PROJECT/$PROJECT""-config.cmake.in" <<EOF
#import the target
#include("@CMAKE_BINARY_DIR@/@DUNE_MOD_NAME_CMAKE@Targets.cmake")
#include("@CMAKE_BINARY_DIR@/@DUNE_MOD_NAME@-targets.cmake")
#report other information
set(@DUNE_MOD_NAME_CMAKE@_PREFIX "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME_CMAKE@_INCLUDE_DIRS "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
set(@DUNE_MOD_NAME_CMAKE@_LIBRARIES "")
set(@DUNE_MOD_NAME@_PREFIX "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME@_INCLUDE_DIRS "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
set(@DUNE_MOD_NAME@_LIBRARIES "")
EOF
mkdir "$PROJECT/cmake"
mkdir "$PROJECT/cmake/modules"
mkdir "$PROJECT/cmake/pkg"
echo "- $PROJECT/cmake/pkg/$CMAKE_NAME""Config.cmake.in"
cat> "$PROJECT/cmake/pkg/$CMAKE_NAME""Config.cmake.in" <<EOF
echo "- $PROJECT/cmake/pkg/$PROJECT""-config.cmake.in"
cat> "$PROJECT/cmake/pkg/$PROJECT""-config.cmake.in" <<EOF
#compute installation prefix relative to this file
get_filename_component(_dir "\${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_prefix "\${_dir}/../../.." ABSOLUTE)
#import the target
#include("\${_prefix}/lib/cmake/@DUNE_MOD_NAME_CMAKE@Targets.cmake")
#include("\${_prefix}/lib/cmake/@DUNE_MOD_NAME@-targets.cmake")
#report other information
set(@DUNE_MOD_NAME_CMAKE@_INCLUDE_DIRS "\${_prefix}/include")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
set(@DUNE_MOD_NAME@_INCLUDE_DIRS "\${_prefix}/include")
set(@DUNE_MOD_NAME@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
EOF
echo "- $PROJECT/$CMAKE_NAME""Version.cmake.in"
cat> "$PROJECT/$CMAKE_NAME""Version.cmake.in" <<EOF
echo "- $PROJECT/$PROJECT""-version.cmake.in"
cat> "$PROJECT/$PROJECT""-version.cmake.in" <<EOF
set(PACKAGE_VERSION "@DUNE_MOD_VERSION@")
if(NOT "\${PACKAGE_FIND_VERSION}" VERSION_GREATER "@DUNE_MOD_VERSION@")
......
......@@ -203,16 +203,16 @@ macro(dune_project)
include(${_mod_cmake})
endif(_mod_cmake)
# Find the module
find_package(${_cmake_mod_name})
find_package(${_mod})
# set includes
dune_module_to_uppercase(_upper_case "${_mod}")
include_directories("${${_cmake_mod_name}_INCLUDE_DIRS}")
message(STATUS "Setting ${_cmake_mod_name}_LIBRARIES=${${_cmake_mod_name}_LIBRARIES}")
if(${_cmake_mod_name}_LIBRARIES)
foreach(_lib ${${_cmake_mod_name}_LIBRARIES})
include_directories("${${_mod}_INCLUDE_DIRS}")
message(STATUS "Setting ${_mod}_LIBRARIES=${${_mod}_LIBRARIES}")
if(${_mod}_LIBRARIES)
foreach(_lib ${${_mod}_LIBRARIES})
list(APPEND DUNE_DEFAULT_LIBS "${_lib}")
endforeach(_lib ${${_cmake_mod_name}_LIBRARIES})
endif(${_cmake_mod_name}_LIBRARIES)
endforeach(_lib ${${_mod}_LIBRARIES})
endif(${_mod}_LIBRARIES)
endforeach(_mod DEPENDENCY_TREE)
# Search for cmake files containing tests and directives
......@@ -248,8 +248,7 @@ macro(dune_regenerate_config_cmake)
# add previous module specific section
file(APPEND ${CONFIG_H_CMAKE_FILE} "\n${_tfile}")
foreach(_dep ${DEPENDENCY_TREE})
dune_module_to_macro(_dep_macro ${_dep})
foreach(_mod_conf_file ${${_dep_macro}_PREFIX}/config.h.cmake
foreach(_mod_conf_file ${${_dep}_PREFIX}/config.h.cmake
${${_dep_macro}_PREFIX}/share/${_dep}/config.h.cmake)
if(EXISTS ${_mod_conf_file})
file(READ "${_mod_conf_file}" _file)
......@@ -271,25 +270,25 @@ macro(finalize_dune_project)
#create cmake-config files for build tree
configure_file(
${PROJECT_SOURCE_DIR}/${DUNE_MOD_NAME_CMAKE}Config.cmake.in
${PROJECT_BINARY_DIR}/${DUNE_MOD_NAME_CMAKE}Config.cmake @ONLY)
${PROJECT_SOURCE_DIR}/${DUNE_MOD_NAME}-config.cmake.in
${PROJECT_BINARY_DIR}/${DUNE_MOD_NAME}-config.cmake @ONLY)
#create cmake-config files for installation tree
configure_file(
${PROJECT_SOURCE_DIR}/cmake/pkg/${DUNE_MOD_NAME_CMAKE}Config.cmake.in
${PROJECT_BINARY_DIR}/cmake/pkg/${DUNE_MOD_NAME_CMAKE}Config.cmake @ONLY)
${PROJECT_SOURCE_DIR}/cmake/pkg/${DUNE_MOD_NAME}-config.cmake.in
${PROJECT_BINARY_DIR}/cmake/pkg/${DUNE_MOD_NAME}-config.cmake @ONLY)
configure_file(
${PROJECT_SOURCE_DIR}/${DUNE_MOD_NAME_CMAKE}Version.cmake.in
${PROJECT_BINARY_DIR}/${DUNE_MOD_NAME_CMAKE}Version.cmake @ONLY)
${PROJECT_SOURCE_DIR}/${DUNE_MOD_NAME}-version.cmake.in
${PROJECT_BINARY_DIR}/${DUNE_MOD_NAME}-version.cmake @ONLY)
#install dune.module file
install(FILES dune.module DESTINATION lib/dunecontrol/${DUNE_MOD_NAME})
#install cmake-config files
install(FILES ${PROJECT_BINARY_DIR}/cmake/pkg/${DUNE_MOD_NAME_CMAKE}Config.cmake
${PROJECT_BINARY_DIR}/${DUNE_MOD_NAME_CMAKE}Version.cmake
DESTINATION lib/cmake/${DUNE_MOD_NAME_CMAKE})
install(FILES ${PROJECT_BINARY_DIR}/cmake/pkg/${DUNE_MOD_NAME}-config.cmake
${PROJECT_BINARY_DIR}/${DUNE_MOD_NAME}-version.cmake
DESTINATION lib/cmake/${DUNE_MOD_NAME})
#install config.h
install(FILES config.h.cmake DESTINATION share/${DUNE_MOD_NAME})
......@@ -311,6 +310,8 @@ macro(finalize_dune_project)
# actually write the config.h file to disk
configure_file(config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h)
endif("${ARGC}" EQUAL "1")
test_dep()
endmacro(finalize_dune_project)
macro(target_link_dune_default_libraries _target)
......@@ -326,7 +327,7 @@ macro(dune_common_script_dir _script_dir)
if("${CMAKE_PROJECT_NAME}" STREQUAL "dune-common")
set(${_script_dir} ${CMAKE_SOURCE_DIR}/cmake/scripts)
else("${CMAKE_PROJECT_NAME}" STREQUAL "dune-common")
set(${_script_dir} ${DuneCommon_SCRIPT_DIR})
set(${_script_dir} ${dune-common_SCRIPT_DIR})
endif("${CMAKE_PROJECT_NAME}" STREQUAL "dune-common")
endmacro(dune_common_script_dir)
......@@ -335,6 +336,6 @@ macro(dune_common_script_source_dir _script_dir)
if("${CMAKE_PROJECT_NAME}" STREQUAL "dune-common")
set(${_script_dir} ${CMAKE_SOURCE_DIR}/cmake/scripts)
else("${CMAKE_PROJECT_NAME}" STREQUAL "dune-common")
set(${_script_dir} ${DuneCommon_SCRIPT_SOURCE_DIR})
set(${_script_dir} ${dune-ommon_SCRIPT_SOURCE_DIR})
endif("${CMAKE_PROJECT_NAME}" STREQUAL "dune-common")
endmacro(dune_common_script_source_dir)
......@@ -15,6 +15,15 @@ MACRO(get_directory_test_target _target _dir)
string(REPLACE "/" "_" ${_target} "${_relative_dir}")
ENDMACRO(get_directory_test_target _target _dir)
#
# - Create a custom target for building
# the tests in the current directory.
#
# The target name will be the path of the
# current directory relative to ${CMAKE_BINARY_DIR}
# with all slashes replaced by underlines.
# E.g. for dune/ist/test the target will be dune_istl_test.
#
MACRO(add_directory_test_target _target)
get_directory_test_target(${_target} "${CMAKE_CURRENT_BINARY_DIR}")
add_custom_target(${${_target}})
......
#compute installation prefix relative to this file
get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_prefix "${_dir}/../../.." ABSOLUTE)
#import the target
include("${_prefix}/lib/cmake/@DUNE_MOD_NAME_CMAKE@Targets.cmake")
#report other information
set(@DUNE_MOD_NAME_CMAKE@_PREFIX "${_prefix}")
set(@DUNE_MOD_NAME_CMAKE@_INCLUDE_DIRS "${_prefix}/include")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME_CMAKE@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
set(@DUNE_MOD_NAME_CMAKE@_LIBRARIES "dunecommon")
set(@DUNE_MOD_NAME_CMAKE@_SCRIPT_DIR "${_prefix}/share/cmake/scripts")
set(@DUNE_MOD_NAME_CMAKE@_SCRIPT_SOURCE_DIR "${_prefix}/share/cmake/scripts")
set(DOXYSTYLE_FILE "${_prefix}/share/dune-common/doc/doxygen/Doxystyle")
\ No newline at end of file
#compute installation prefix relative to this file
get_filename_component(_dir "${CMAKE_CURRENT_LIST_FILE}" PATH)
get_filename_component(_prefix "${_dir}/../../.." ABSOLUTE)
#import the target
include("${_prefix}/lib/cmake/@DUNE_MOD_NAME@-targets.cmake")
#report other information
set(@DUNE_MOD_NAME@_PREFIX "${_prefix}")
set(@DUNE_MOD_NAME@_INCLUDE_DIRS "${_prefix}/include")
set(@DUNE_MOD_NAME@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
set(@DUNE_MOD_NAME@_LIBRARIES "dunecommon")
set(@DUNE_MOD_NAME@_SCRIPT_DIR "${_prefix}/share/cmake/scripts")
set(@DUNE_MOD_NAME@_SCRIPT_SOURCE_DIR "${_prefix}/share/cmake/scripts")
set(DOXYSTYLE_FILE "${_prefix}/share/dune-common/doc/doxygen/Doxystyle")
\ No newline at end of file
#import the target
include("@CMAKE_BINARY_DIR@/@DUNE_MOD_NAME@-targets.cmake")
#report other information
set(@DUNE_MOD_NAME@_PREFIX "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME@_INCLUDE_DIRS "@CMAKE_SOURCE_DIR@")
set(@DUNE_MOD_NAME@_CXX_FLAGS "@CMAKE_CXX_FLAGS@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_DEBUG "@CMAKE_CXX_FLAGS_DEBUG@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_MINSIZEREL "@CMAKE_CXX_FLAGS_MINSIZEREL@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELEASE "@CMAKE_CXX_FLAGS_RELEASE@")
set(@DUNE_MOD_NAME@_CXX_FLAGS_RELWITHDEBINFO "@CMAKE_CXX_FLAGS_RELWITHDEBINFO@")
set(@DUNE_MOD_NAME@_LIBRARIES "dunecommon")
set(@DUNE_MOD_NAME@_SCRIPT_DIR "@CMAKE_SOURCE_DIR@/cmake/scripts")
set(DOXYSTYLE_FILE "@CMAKE_SOURCE_DIR@/doc/doxygen/Doxystyle")
\ No newline at end of file
File moved
......@@ -12,9 +12,13 @@ add_library("dunecommon"
stdstreams.cc)
target_link_libraries("dunecommon" ${LAPACK_LIBRARIES})
install(TARGETS dunecommon EXPORT DuneCommonTargets DESTINATION lib)
install(EXPORT DuneCommonTargets
install(TARGETS dunecommon EXPORT dune-common-targets DESTINATION lib)
install(EXPORT dune-common-targets
DESTINATION lib/cmake)
#Make targets available in build tree
export(TARGETS dunecommon FILE ${PROJECT_BINARY_DIR}/${DUNE_MOD_NAME}-targets.cmake)
# build the library in lib
set_target_properties(dunecommon PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment