mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
If the option USE_VERSIONED_DIR is set to ON (default is OFF), then most files are installed in a ${suite}-${label}/ subdirectory (e.g. header files go in "/usr/include/opm-2013.03/"). This enables us to easily install backports of newer versions on systems which have a system package for an older one, without getting conflicts.
82 lines
3.6 KiB
CMake
82 lines
3.6 KiB
CMake
# - Setup documentation
|
|
#
|
|
# Assumes that a Doxyfile template is located in the project root
|
|
# directory, and that all documentation is going to be generated
|
|
# into its own Documentation/ directory. It will also generate an
|
|
# installation target for the documentation (not built by default)
|
|
#
|
|
# Requires the following variables to be set:
|
|
# ${opm}_NAME Name of the project
|
|
#
|
|
# Output the following variables:
|
|
# ${opm}_STYLESHEET_COPIED Location of stylesheet to be removed in distclean
|
|
|
|
macro (opm_doc opm doxy_dir)
|
|
# combine the template with local customization
|
|
file (READ ${OPM_MACROS_ROOT}/cmake/Templates/Doxyfile _doxy_templ)
|
|
string (REPLACE ";" "\\;" _doxy_templ "${_doxy_templ}")
|
|
if (EXISTS ${PROJECT_SOURCE_DIR}/${doxy_dir}/Doxylocal)
|
|
file (READ ${PROJECT_SOURCE_DIR}/${doxy_dir}/Doxylocal _doxy_local)
|
|
string (REPLACE ";" "\\;" _doxy_local "${_doxy_local}")
|
|
else (EXISTS ${PROJECT_SOURCE_DIR}/${doxy_dir}/Doxylocal)
|
|
set (_doxy_local)
|
|
endif (EXISTS ${PROJECT_SOURCE_DIR}/${doxy_dir}/Doxylocal)
|
|
file (MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/${doxy_dir})
|
|
file (WRITE ${PROJECT_BINARY_DIR}/${doxy_dir}/Doxyfile.in ${_doxy_templ} ${_doxy_local})
|
|
# set this generically named variable so even the custom file can be shared
|
|
set (src_DIR "${${opm}_DIR}")
|
|
# replace variables in this combined file
|
|
configure_file (
|
|
${PROJECT_BINARY_DIR}/${doxy_dir}/Doxyfile.in
|
|
${PROJECT_BINARY_DIR}/${doxy_dir}/Doxyfile
|
|
@ONLY
|
|
)
|
|
find_package (Doxygen)
|
|
if (DOXYGEN_FOUND)
|
|
add_custom_target (doc
|
|
COMMAND ${DOXYGEN_EXECUTABLE} ${PROJECT_BINARY_DIR}/${doxy_dir}/Doxyfile
|
|
SOURCES ${PROJECT_BINARY_DIR}/${doxy_dir}/Doxyfile
|
|
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${doxy_dir}
|
|
COMMENT "Generating API documentation with Doxygen"
|
|
VERBATIM
|
|
)
|
|
# distributions have various naming conventions; this enables the packager
|
|
# to direct where the install target should put the documentation. the names
|
|
# here are taken from GNUInstallDirs.cmake
|
|
set (CMAKE_INSTALL_DATAROOTDIR "share" CACHE STRING "Read-only arch.-indep. data root")
|
|
set (CMAKE_INSTALL_DOCDIR "${CMAKE_INSTALL_DATAROOTDIR}/doc${${opm}_VER_DIR}/${${opm}_NAME}" CACHE STRING "Documentation root")
|
|
set (_formats html)
|
|
foreach (format IN LISTS _formats)
|
|
string (TOUPPER ${format} FORMAT)
|
|
install (
|
|
DIRECTORY ${PROJECT_BINARY_DIR}/${doxy_dir}/${format}
|
|
DESTINATION ${CMAKE_INSTALL_DOCDIR}
|
|
COMPONENT ${format}
|
|
OPTIONAL
|
|
)
|
|
# target to install just HTML documentation
|
|
add_custom_target (install-${format}
|
|
COMMAND ${CMAKE_COMMAND} -DCOMPONENT=${format} -P cmake_install.cmake
|
|
COMMENT Installing ${FORMAT} documentation
|
|
VERBATIM
|
|
)
|
|
# since the documentation is optional, it is not automatically built
|
|
add_dependencies (install-${format} doc)
|
|
endforeach (format)
|
|
endif (DOXYGEN_FOUND)
|
|
|
|
# stylesheets must be specified with relative path in Doxyfile, or the
|
|
# full path (to the source directory!) will be put in the output HTML.
|
|
# thus, we'll need to copy the stylesheet to this path relative to where
|
|
# Doxygen will be run (in the output tree)
|
|
if ((NOT PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) AND (EXISTS ${PROJECT_SOURCE_DIR}/${doxy_dir}/style.css))
|
|
file (COPY ${PROJECT_SOURCE_DIR}/${doxy_dir}/style.css
|
|
DESTINATION ${PROJECT_BINARY_DIR}/${doxy_dir}
|
|
)
|
|
set (${opm}_STYLESHEET_COPIED "${doxy_dir}/style.css")
|
|
else ((NOT PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) AND (EXISTS ${PROJECT_SOURCE_DIR}/${doxy_dir}/style.css))
|
|
set (${opm}_STYLESHEET_COPIED "")
|
|
endif ((NOT PROJECT_SOURCE_DIR STREQUAL PROJECT_BINARY_DIR) AND (EXISTS ${PROJECT_SOURCE_DIR}/${doxy_dir}/style.css))
|
|
|
|
endmacro (opm_doc opm)
|