summaryrefslogtreecommitdiff
path: root/cmake/doc.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/doc.cmake')
-rw-r--r--cmake/doc.cmake64
1 files changed, 64 insertions, 0 deletions
diff --git a/cmake/doc.cmake b/cmake/doc.cmake
new file mode 100644
index 00000000..16991f82
--- /dev/null
+++ b/cmake/doc.cmake
@@ -0,0 +1,64 @@
+set(DOC_SOURCE_DIR "${CMAKE_SOURCE_DIR}/doc")
+set(DOC_BINARY_DIR "${CMAKE_BINARY_DIR}/doc")
+
+set(MAN_NAMES
+ # Add man page sources here
+ flow_accept.3
+ flow_alloc.3
+ flow_dealloc.3
+ flow_read.3
+ flow_write.3
+ fccntl.3
+ fqueue.3
+ fqueue_create.3
+ fqueue_destroy.3
+ fqueue_next.3
+ fevent.3
+ fset.3
+ fset_create.3
+ fset_destroy.3
+ fset_zero.3
+ fset_add.3
+ fset_del.3
+ fset_has.3
+ ouroboros-glossary.7
+ ouroboros-tutorial.7
+ ouroboros.8
+ irmd.8
+ irm.8
+ )
+
+macro(INSTALL_MAN __mans)
+ foreach (_man ${ARGV})
+ string(REGEX REPLACE "^.+[.]([1-9]).gz" "\\1" _mansect ${_man})
+ install(FILES ${_man} DESTINATION "${CMAKE_INSTALL_MANDIR}/man${_mansect}")
+ endforeach (_man)
+endmacro(INSTALL_MAN __mans)
+
+find_program(GZIP_EXECUTABLE
+ NAMES gzip
+ DOC "Will gzip the man pages")
+
+mark_as_advanced(GZIP_EXECUTABLE)
+
+if (GZIP_EXECUTABLE)
+ # Create the doc output directory
+ file(MAKE_DIRECTORY ${DOC_BINARY_DIR})
+
+ foreach (m ${MAN_NAMES})
+ set(md ${DOC_BINARY_DIR}/${m}.gz)
+
+ add_custom_command(
+ OUTPUT ${md}
+ COMMAND ${GZIP_EXECUTABLE}
+ ARGS -c ${DOC_SOURCE_DIR}/man/${m} > ${md}
+ COMMENT "Compressing manpage ${m}"
+ VERBATIM)
+
+ set(MAN_FILES ${MAN_FILES} ${md})
+ endforeach ()
+
+ add_custom_target(man ALL DEPENDS ${MAN_FILES})
+
+ INSTALL_MAN(${MAN_FILES})
+endif ()