b712c27532315c372c34c468aa93bb6d022a07c1
[platform/upstream/cmake.git] / Utilities / Doxygen / CMakeLists.txt
1 # Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
2 # file Copyright.txt or https://cmake.org/licensing for details.
3
4 if(NOT CMake_SOURCE_DIR)
5   set(CMakeDeveloperReference_STANDALONE 1)
6   cmake_minimum_required(VERSION 3.13...3.22 FATAL_ERROR)
7   get_filename_component(tmp "${CMAKE_CURRENT_SOURCE_DIR}" PATH)
8   get_filename_component(CMake_SOURCE_DIR "${tmp}" PATH)
9   include(${CMake_SOURCE_DIR}/Modules/CTestUseLaunchers.cmake)
10   include(${CMake_SOURCE_DIR}/Source/CMakeVersion.cmake)
11   include(${CMake_SOURCE_DIR}/Source/CMakeInstallDestinations.cmake)
12   unset(CMAKE_DATA_DIR)
13   unset(CMAKE_DATA_DIR CACHE)
14   macro(CMake_OPTIONAL_COMPONENT)
15     set(COMPONENT "")
16   endmacro()
17 endif()
18
19 project(CMakeDeveloperReference NONE)
20
21 #
22 # Build the reference
23 #
24
25 if (CMake_BUILD_DEVELOPER_REFERENCE OR CMakeDeveloperReference_STANDALONE)
26
27   find_package(Doxygen REQUIRED)
28
29   #
30   ## Output formats
31   #
32
33   option(CMake_BUILD_DEVELOPER_REFERENCE_HTML "Build CMake Developer Reference - HTML format" ON)
34   mark_as_advanced(CMake_BUILD_DEVELOPER_REFERENCE_HTML)
35   if(CMake_BUILD_DEVELOPER_REFERENCE_HTML)
36     set(GENERATE_HTML YES)
37   else()
38     set(GENERATE_HTML NO)
39   endif()
40
41   option(CMake_BUILD_DEVELOPER_REFERENCE_QTHELP "Build CMake Developer Reference - QtHelp format" OFF)
42   mark_as_advanced(CMake_BUILD_DEVELOPER_REFERENCE_QTHELP)
43   if(CMake_BUILD_DEVELOPER_REFERENCE_QTHELP)
44     set(GENERATE_QHP YES)
45     find_program(QHELPGENERATOR_EXECUTABLE
46       NAMES qhelpgenerator
47       DOC "qhelpgenerator tool"
48       )
49     if(NOT QHELPGENERATOR_EXECUTABLE)
50       message(FATAL_ERROR "QHELPGENERATOR_EXECUTABLE (qhelpgenerator) not found!")
51     endif()
52   else()
53     set(GENERATE_QHP NO)
54   endif()
55
56   #
57   # Configure the script and the doxyfile, then add target
58   #
59
60   if(DOXYGEN_DOT_FOUND)
61     set(HAVE_DOT YES)
62   else()
63     set(HAVE_DOT NO)
64   endif()
65
66   if(NOT DOT_PATH)
67     get_filename_component(DOT_PATH ${DOXYGEN_DOT_EXECUTABLE} PATH)
68   endif()
69
70   configure_file(doxyfile.in doxyfile @ONLY)
71
72   add_custom_target(cmake-developer-reference-all
73     ${DOXYGEN_EXECUTABLE} doxyfile
74     WORKING_DIRECTORY ${CMakeDeveloperReference_BINARY_DIR})
75
76   add_custom_target(cmake-developer-reference ALL DEPENDS cmake-developer-reference-all)
77
78   #
79   # Installation
80   #
81
82   if(CMake_BUILD_DEVELOPER_REFERENCE_HTML)
83     CMake_OPTIONAL_COMPONENT(cmake-developer-reference-html)
84     install(DIRECTORY "${CMakeDeveloperReference_BINARY_DIR}/developer-reference/html"
85       DESTINATION ${CMAKE_DOC_DIR}/developer-reference
86       ${COMPONENT})
87   endif()
88
89   if(CMake_BUILD_DEVELOPER_REFERENCE_QTHELP)
90     CMake_OPTIONAL_COMPONENT(cmake-developer-reference-qthelp)
91     install(FILES "${CMakeDeveloperReference_BINARY_DIR}/developer-reference/CMakeDeveloperReference-${CMake_VERSION_MAJOR}${CMake_VERSION_MINOR}${CMake_VERSION_PATCH}.qch"
92       DESTINATION ${CMAKE_DOC_DIR}/developer-reference
93       ${COMPONENT})
94   endif()
95
96 endif ()