cmake: CI fixes
[m6w6/libmemcached] / docs / CMakeLists.txt
1 find_package(Sphinx)
2
3 if(NOT SPHINX_EXECUTABLE)
4
5 message(WARNING "The sphinx-build command is required to build documentation.")
6
7 else()
8
9 if(NOT DEFINED SPHINX_OPTIONS)
10 set(SPHINX_OPTIONS)
11 endif()
12
13 if(NOT DEFINED SPHINX_THEME)
14 set(SPHINX_THEME sphinx_rtd_theme)
15 set(SPHINX_THEME_OPTIONS "'collapse_navigation':False, 'navigation_depth':2, 'titles_only':False, 'includehidden':False")
16 endif()
17
18 set(SPHINX_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/source")
19
20 # configured documentation tools and intermediate build results
21 set(SPHINX_BUILD_DIR "${CMAKE_CURRENT_BINARY_DIR}")
22
23 # Sphinx cache with pickled ReST documents
24 set(SPHINX_CACHE_DIR "${SPHINX_BUILD_DIR}/_doctrees")
25
26 # HTML output directory
27 set(SPHINX_HTML_DIR "${SPHINX_BUILD_DIR}/html")
28
29 # MAN output directory
30 set(SPHINX_MAN_DIR "${SPHINX_BUILD_DIR}/man")
31
32 configure_file("conf.py.in" "conf.py" @ONLY)
33 add_subdirectory(source)
34
35 file(GLOB_RECURSE DOCS_SOURCE
36 CONFIGURE_DEPENDS
37 "*.rst")
38
39 if(BUILD_DOCS_HTML)
40 add_custom_command(
41 OUTPUT "${SPHINX_HTML_DIR}"
42 COMMAND
43 ${SPHINX_EXECUTABLE}
44 -q -b html
45 -c "${SPHINX_BUILD_DIR}"
46 -d "${SPHINX_CACHE_DIR}"
47 ${SPHINX_OPTIONS}
48 "${SPHINX_SOURCE_DIR}"
49 "${SPHINX_HTML_DIR}"
50 COMMAND
51 ${CMAKE_COMMAND} -E touch "${SPHINX_HTML_DIR}"
52 BYPRODUCTS ${SPHINX_HTML_DIR}
53 DEPENDS "${DOCS_SOURCE}"
54 )
55 add_custom_target(html ALL DEPENDS "${SPHINX_HTML_DIR}")
56
57 install(DIRECTORY ${SPHINX_HTML_DIR}/
58 COMPONENT doc
59 DESTINATION ${CMAKE_INSTALL_DOCDIR}/html)
60 endif()
61
62 if(BUILD_DOCS_MAN)
63 add_custom_command(
64 OUTPUT ${SPHINX_MAN_DIR}
65 COMMAND
66 ${SPHINX_EXECUTABLE}
67 -q -b man
68 -c "${SPHINX_BUILD_DIR}"
69 -d "${SPHINX_CACHE_DIR}"
70 ${SPHINX_OPTIONS}
71 "${SPHINX_SOURCE_DIR}"
72 "${SPHINX_MAN_DIR}"
73 COMMAND
74 ${CMAKE_COMMAND} -E touch "${SPHINX_MAN_DIR}"
75 BYPRODUCTS ${SPHINX_MAN_DIR}
76 DEPENDS "${DOCS_SOURCE}"
77 )
78 add_custom_target(man ALL DEPENDS "${SPHINX_MAN_DIR}")
79
80 set(MAN_EXT "")
81 if(BUILD_DOCS_MANGZ)
82 find_program(PIGZ pigz)
83 if(PIGZ)
84 set(GZIP ${PIGZ})
85 else()
86 find_package(UnixCommands)
87 endif()
88 if(GZIP)
89 set(MAN_EXT ".gz")
90 add_custom_target(man_gz ALL
91 COMMAND ${GZIP} -kf
92 ${SPHINX_MAN_DIR}/*.1
93 ${SPHINX_MAN_DIR}/*.3
94 DEPENDS ${SPHINX_MAN_DIR}
95 ) # some shells do not support braced glob patterns
96 endif()
97 endif()
98
99 install(DIRECTORY ${SPHINX_MAN_DIR}/
100 COMPONENT doc
101 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
102 FILES_MATCHING PATTERN *.1${MAN_EXT}
103 )
104 install(DIRECTORY ${SPHINX_MAN_DIR}/
105 COMPONENT doc
106 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3
107 FILES_MATCHING PATTERN *.3${MAN_EXT}
108 )
109 endif()
110
111 endif()