1# Documentation-related CMake configuration
2
3set(doc_dir "${PROJECT_SOURCE_DIR}/doc")
4set(DOC_INSTALL_DIR "share/doc/libogdf" CACHE PATH "Installation path of OGDF documentation")
5mark_as_advanced(DOC_INSTALL_DIR)
6
7file(GLOB_RECURSE example_files "${doc_dir}/*.txt" "${doc_dir}/*.bench" "${doc_dir}/*.gml")
8install(DIRECTORY doc/examples/
9  DESTINATION ${EXAMPLES_INSTALL_DIR}
10  FILES_MATCHING
11    PATTERN "*.cpp"
12    PATTERN "*.txt"
13    PATTERN "*.gml"
14    PATTERN "*.bench"
15    PATTERN "output-*" EXCLUDE)
16
17find_package(Doxygen)
18if(DOXYGEN_FOUND)
19  if(DOXYGEN_VERSION VERSION_LESS 1.8.6)
20    message(WARNING "Doxygen version >= 1.8.6 is necessary to build the documentation correctly.")
21  endif()
22
23  add_custom_target(doc ${DOXYGEN_EXECUTABLE} ${doc_dir}/ogdf-doxygen.cfg WORKING_DIRECTORY ${doc_dir})
24  option(DOC_INSTALL "Whether we want to install documentation. Makes doc part of the default target." OFF)
25
26  if(DOC_INSTALL)
27    set(doxystamp "${PROJECT_BINARY_DIR}/doxygen.stamp")
28    file(GLOB_RECURSE doc_files ${doc_dir}/*.md ${doc_dir}/*.dox)
29    add_custom_command(OUTPUT "${doxystamp}"
30      DEPENDS ${doc_files} ${ogdf_headers}
31              ${doc_dir}/ogdf-doxygen.cfg ${doc_dir}/ogdf-footer.html ${doc_dir}/ogdf-header.html ${doc_dir}/ogdf-layout.xml
32      COMMAND cmake --build . --target doc
33      COMMAND cmake -E touch "${doxystamp}"
34      COMMENT "Generating documentation if necessary"
35      VERBATIM)
36    add_custom_target(doc-check ALL DEPENDS "${doxystamp}")
37
38    install(DIRECTORY doc/html DESTINATION "${DOC_INSTALL_DIR}")
39    install(FILES LICENSE.txt LICENSE_GPL_v2.txt LICENSE_GPL_v3.txt DESTINATION "${DOC_INSTALL_DIR}")
40  endif()
41else()
42  message(WARNING "Doxygen not found. Documentation cannot be built.")
43endif()
44