xref: /aosp_15_r20/external/eigen/doc/CMakeLists.txt (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1project(EigenDoc)
2
3set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL TRUE)
4
5project(EigenDoc)
6
7if(CMAKE_COMPILER_IS_GNUCXX)
8  if(CMAKE_SYSTEM_NAME MATCHES Linux)
9    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O1 -g1")
10  endif()
11endif()
12
13# some examples and snippets needs c++11, so let's check it once
14check_cxx_compiler_flag("-std=c++11" EIGEN_COMPILER_SUPPORT_CPP11)
15
16option(EIGEN_INTERNAL_DOCUMENTATION "Build internal documentation" OFF)
17option(EIGEN_DOC_USE_MATHJAX "Use MathJax for rendering math in HTML docs" ON)
18
19# Set some Doxygen flags
20set(EIGEN_DOXY_PROJECT_NAME             "Eigen")
21set(EIGEN_DOXY_OUTPUT_DIRECTORY_SUFFIX  "")
22set(EIGEN_DOXY_INPUT                    "\"${Eigen_SOURCE_DIR}/Eigen\" \"${Eigen_SOURCE_DIR}/doc\"")
23set(EIGEN_DOXY_HTML_COLORSTYLE_HUE      "220")
24set(EIGEN_DOXY_TAGFILES                 "")
25
26if(EIGEN_INTERNAL_DOCUMENTATION)
27  set(EIGEN_DOXY_INTERNAL                 "YES")
28else()
29  set(EIGEN_DOXY_INTERNAL                 "NO")
30endif()
31
32if (EIGEN_DOC_USE_MATHJAX)
33  set(EIGEN_DOXY_USE_MATHJAX "YES")
34else ()
35  set(EIGEN_DOXY_USE_MATHJAX "NO")
36endif()
37
38configure_file(
39  ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
40  ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
41)
42
43set(EIGEN_DOXY_PROJECT_NAME             "Eigen-unsupported")
44set(EIGEN_DOXY_OUTPUT_DIRECTORY_SUFFIX  "/unsupported")
45set(EIGEN_DOXY_INPUT                    "\"${Eigen_SOURCE_DIR}/unsupported/Eigen\" \"${Eigen_SOURCE_DIR}/unsupported/doc\"")
46set(EIGEN_DOXY_HTML_COLORSTYLE_HUE      "0")
47set(EIGEN_DOXY_TAGFILES                 "\"${Eigen_BINARY_DIR}/doc/Eigen.doxytags=..\"")
48#set(EIGEN_DOXY_TAGFILES                 "")
49
50configure_file(
51  ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
52  ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile-unsupported
53)
54
55configure_file(
56  ${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_header.html.in
57  ${CMAKE_CURRENT_BINARY_DIR}/eigendoxy_header.html
58)
59
60configure_file(
61  ${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_footer.html.in
62  ${CMAKE_CURRENT_BINARY_DIR}/eigendoxy_footer.html
63)
64
65configure_file(
66  ${CMAKE_CURRENT_SOURCE_DIR}/eigendoxy_layout.xml.in
67  ${CMAKE_CURRENT_BINARY_DIR}/eigendoxy_layout.xml
68)
69
70configure_file(
71  ${Eigen_SOURCE_DIR}/unsupported/doc/eigendoxy_layout.xml.in
72  ${Eigen_BINARY_DIR}/doc/unsupported/eigendoxy_layout.xml
73)
74
75set(examples_targets "")
76set(snippets_targets "")
77
78add_definitions("-DEIGEN_MAKING_DOCS")
79add_custom_target(all_examples)
80
81add_subdirectory(examples)
82add_subdirectory(special_examples)
83add_subdirectory(snippets)
84
85add_custom_target(
86  doc-eigen-prerequisites
87  ALL
88  COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/html/
89  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/eigen_navtree_hacks.js           ${CMAKE_CURRENT_BINARY_DIR}/html/
90  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Eigen_Silly_Professor_64x64.png  ${CMAKE_CURRENT_BINARY_DIR}/html/
91  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/ftv2pnode.png                    ${CMAKE_CURRENT_BINARY_DIR}/html/
92  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/ftv2node.png                     ${CMAKE_CURRENT_BINARY_DIR}/html/
93  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/AsciiQuickReference.txt          ${CMAKE_CURRENT_BINARY_DIR}/html/
94  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
95)
96
97add_custom_target(
98  doc-unsupported-prerequisites
99  ALL
100  COMMAND ${CMAKE_COMMAND} -E make_directory ${Eigen_BINARY_DIR}/doc/html/unsupported
101  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/eigen_navtree_hacks.js           ${CMAKE_CURRENT_BINARY_DIR}/html/unsupported/
102  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/Eigen_Silly_Professor_64x64.png  ${CMAKE_CURRENT_BINARY_DIR}/html/unsupported/
103  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/ftv2pnode.png                    ${CMAKE_CURRENT_BINARY_DIR}/html/unsupported/
104  COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/ftv2node.png                     ${CMAKE_CURRENT_BINARY_DIR}/html/unsupported/
105  WORKING_DIRECTORY ${Eigen_BINARY_DIR}/doc
106)
107
108add_dependencies(doc-eigen-prerequisites all_snippets all_examples)
109add_dependencies(doc-unsupported-prerequisites unsupported_snippets unsupported_examples)
110
111add_custom_target(doc ALL
112  COMMAND doxygen
113  COMMAND doxygen Doxyfile-unsupported
114  COMMAND ${CMAKE_COMMAND} -E copy ${Eigen_BINARY_DIR}/doc/html/group__TopicUnalignedArrayAssert.html ${Eigen_BINARY_DIR}/doc/html/TopicUnalignedArrayAssert.html
115  COMMAND ${CMAKE_COMMAND} -E rename html eigen-doc
116  COMMAND ${CMAKE_COMMAND} -E remove eigen-doc/eigen-doc.tgz eigen-doc/unsupported/_formulas.log eigen-doc/_formulas.log
117  COMMAND ${CMAKE_COMMAND} -E tar cfz eigen-doc.tgz eigen-doc
118  COMMAND ${CMAKE_COMMAND} -E rename eigen-doc.tgz eigen-doc/eigen-doc.tgz
119  COMMAND ${CMAKE_COMMAND} -E rename eigen-doc html
120  WORKING_DIRECTORY ${Eigen_BINARY_DIR}/doc)
121
122add_dependencies(doc doc-eigen-prerequisites doc-unsupported-prerequisites)
123