summaryrefslogtreecommitdiff
path: root/cmake/doc.cmake
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2025-12-23 11:59:45 +0100
committerSander Vrijders <sander@ouroboros.rocks>2026-01-07 10:00:06 +0100
commit48c294105f5123dc876fbad199ec1e0166d82a18 (patch)
treec49ce8ac75a7d63c10ea1ff960eeff750c680a8e /cmake/doc.cmake
parent145be13e8c18fcb39476d8f65fed23d82320f22f (diff)
downloadouroboros-48c294105f5123dc876fbad199ec1e0166d82a18.tar.gz
ouroboros-48c294105f5123dc876fbad199ec1e0166d82a18.zip
build: Refactor CMake modules
This moves the CMake build logic out of the source tree and splits it up into a more modular form. The tests now have a CMakeLists.txt file in their respective source directory. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
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 ()