blob: 0f9ef23824fe16dfcecdfa618aa139d85a725b74 [file] [log] [blame]
Brian Silverman72890c22015-09-19 14:37:37 -04001project(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")
Austin Schuhc55b0172022-02-20 17:52:35 -080010 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)
Brian Silverman72890c22015-09-19 14:37:37 -040015
Austin Schuh189376f2018-12-20 22:11:15 +110016option(EIGEN_INTERNAL_DOCUMENTATION "Build internal documentation" OFF)
Austin Schuhc55b0172022-02-20 17:52:35 -080017option(EIGEN_DOC_USE_MATHJAX "Use MathJax for rendering math in HTML docs" ON)
Austin Schuh189376f2018-12-20 22:11:15 +110018
Brian Silverman72890c22015-09-19 14:37:37 -040019# 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 "")
Austin Schuhc55b0172022-02-20 17:52:35 -080025
Austin Schuh189376f2018-12-20 22:11:15 +110026if(EIGEN_INTERNAL_DOCUMENTATION)
27 set(EIGEN_DOXY_INTERNAL "YES")
Austin Schuhc55b0172022-02-20 17:52:35 -080028else()
Austin Schuh189376f2018-12-20 22:11:15 +110029 set(EIGEN_DOXY_INTERNAL "NO")
Austin Schuhc55b0172022-02-20 17:52:35 -080030endif()
31
32if (EIGEN_DOC_USE_MATHJAX)
33 set(EIGEN_DOXY_USE_MATHJAX "YES")
34else ()
35 set(EIGEN_DOXY_USE_MATHJAX "NO")
36endif()
Brian Silverman72890c22015-09-19 14:37:37 -040037
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")
Austin Schuh189376f2018-12-20 22:11:15 +110047set(EIGEN_DOXY_TAGFILES "\"${Eigen_BINARY_DIR}/doc/Eigen.doxytags=..\"")
48#set(EIGEN_DOXY_TAGFILES "")
Brian Silverman72890c22015-09-19 14:37:37 -040049
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/
Austin Schuh189376f2018-12-20 22:11:15 +110091 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/
Brian Silverman72890c22015-09-19 14:37:37 -040093 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/
Austin Schuh189376f2018-12-20 22:11:15 +1100103 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/
Brian Silverman72890c22015-09-19 14:37:37 -0400105 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
Austin Schuh189376f2018-12-20 22:11:15 +1100114 COMMAND ${CMAKE_COMMAND} -E copy ${Eigen_BINARY_DIR}/doc/html/group__TopicUnalignedArrayAssert.html ${Eigen_BINARY_DIR}/doc/html/TopicUnalignedArrayAssert.html
Brian Silverman72890c22015-09-19 14:37:37 -0400115 COMMAND ${CMAKE_COMMAND} -E rename html eigen-doc
Austin Schuhc55b0172022-02-20 17:52:35 -0800116 COMMAND ${CMAKE_COMMAND} -E remove eigen-doc/eigen-doc.tgz eigen-doc/unsupported/_formulas.log eigen-doc/_formulas.log
Brian Silverman72890c22015-09-19 14:37:37 -0400117 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)