Merge branch 'docs' into v1.0
[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 manpages.")
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(
33 "${SPHINX_SOURCE_DIR}/conf.py.in"
34 "${SPHINX_BUILD_DIR}/conf.py"
35 @ONLY)
36
37 if(BUILD_DOCS_HTML)
38 add_custom_target(html
39 ${SPHINX_EXECUTABLE}
40 -q -b html
41 -c "${SPHINX_BUILD_DIR}"
42 -d "${SPHINX_CACHE_DIR}"
43 ${SPHINX_OPTIONS}
44 "${SPHINX_SOURCE_DIR}"
45 "${SPHINX_HTML_DIR}"
46 BYPRODUCTS ${SPHINX_HTML_DIR}
47 )
48 endif()
49
50 if(BUILD_DOCS_MAN)
51 add_custom_target(man ALL
52 ${SPHINX_EXECUTABLE}
53 -q -b man
54 -c "${SPHINX_BUILD_DIR}"
55 -d "${SPHINX_CACHE_DIR}"
56 ${SPHINX_OPTIONS}
57 "${SPHINX_SOURCE_DIR}"
58 "${SPHINX_MAN_DIR}"
59 BYPRODUCTS ${SPHINX_MAN_DIR}
60 )
61
62 set(MAN_EXT "")
63 if(BUILD_DOCS_MANGZ)
64 find_program(PIGZ pigz)
65 if(PIGZ)
66 set(GZIP ${PIGZ})
67 else()
68 find_package(UnixCommands)
69 endif()
70 if(GZIP)
71 set(MAN_EXT ".gz")
72 add_custom_target(man_gz ALL
73 ${GZIP} -kf ${SPHINX_MAN_DIR}/*.{1,3}
74 DEPENDS man
75 )
76 endif()
77 endif()
78
79 install(DIRECTORY ${SPHINX_MAN_DIR}/
80 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
81 FILES_MATCHING PATTERN *.1${MAN_EXT}
82 )
83 install(DIRECTORY ${SPHINX_MAN_DIR}/
84 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3
85 FILES_MATCHING PATTERN *.3${MAN_EXT}
86 )
87 endif()
88
89 endif()