Przeglądaj źródła

cmake: Better handling of doc generation dependencies

Xenofon Karamanos 5 miesięcy temu
rodzic
commit
08bfcad2c3
2 zmienionych plików z 86 dodań i 80 usunięć
  1. 62 80
      cmake/modules-docs.cmake
  2. 24 0
      src/CMakeLists.txt

+ 62 - 80
cmake/modules-docs.cmake

@@ -1,20 +1,3 @@
-option(BUILD_DOC "Build documentation" ON)
-
-# Readme file and man page
-find_program(XSLTPROC_EXECUTABLE xsltproc QUIET)
-find_program(LYNX_EXECUTABLE lynx QUIET)
-find_program(DOCBOOK2X_EXECUTABLE docbook2x-man QUIET)
-
-if(BUILD_DOC AND (NOT XSLTPROC_EXECUTABLE OR NOT LYNX_EXECUTABLE))
-  message(STATUS "xsltproc or lynx not found but required for doc generation.")
-  set(BUILD_DOC OFF)
-endif()
-
-if(BUILD_DOC AND (NOT DOCBOOK2X_EXECUTABLE))
-  message(STATUS "docbook2x-man not found but required for man generation.")
-  set(BUILD_DOC OFF)
-endif()
-
 option(DOCS_XSL_VAIDATION "Docbook document validation" OFF)
 option(DOCS_XSL_VAIDATION "Docbook document validation" OFF)
 option(DOCS_NOCATALOG "ON: Use standard catalog from OS | OFF: Use custom catalog " OFF)
 option(DOCS_NOCATALOG "ON: Use standard catalog from OS | OFF: Use custom catalog " OFF)
 
 
@@ -123,69 +106,68 @@ function(docs_add_module group_name module_name)
 
 
   # Each version has seperate custon commands for not recompiling all if 1 gets
   # Each version has seperate custon commands for not recompiling all if 1 gets
   # changed.
   # changed.
-  if(XSLTPROC_EXECUTABLE)
-    if(LYNX_EXECUTABLE)
-      add_custom_command(
-        OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
-        COMMAND
-          # TXT version - just plain text
-          ${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS} --xinclude ${TXT_XSL}
-          ${module_name}.xml | ${LYNX_EXECUTABLE} ${DOCS_LYNX_FLAGS} -stdin -dump >
-          ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
-        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml ${TXT_XSL}
-                # ${SINGLE_HTML_XSL}
-        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc
-        COMMENT "Generating text documentation with for ${module_name}"
-      )
-
-      # Add custom command to copy the README file after the readme target is
-      # built. The readme target depends on doc_text so it will regenerate if
-      # it's input changed.
-      add_custom_command(
-        TARGET ${module_name}_readme
-        POST_BUILD
-        COMMAND
-          ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
-          ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/README
-        COMMENT "Copying README file to source tree for ${module_name}"
-      )
-
-      add_custom_command(
-        OUTPUT ${DOCS_OUTPUT_DIR}/${module_name}.html
-        COMMAND
-          # HTML version
-          ${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS} --xinclude --stringparam
-          base.dir ${DOCS_OUTPUT_DIR} --stringparam root.filename ${module_name} --stringparam
-          html.stylesheet ${DOCS_HTML_CSS} --stringparam html.ext ".html" ${SINGLE_HTML_XSL}
-          ${module_name}.xml
-        DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml ${SINGLE_HTML_XSL}
-        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc
-        COMMENT "Generating html documentation for ${module_name}"
-      )
-    endif()
-
-    add_custom_command(
-      # man version
-      OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.7
-      COMMAND ${DOCBOOK2X_EXECUTABLE} -s ${STYLESHEET_DIR}/serdoc2man.xsl ${module_name}.xml
-      DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml
-              ${STYLESHEET_DIR}/serdoc2man.xsl
-      WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}
-      COMMENT "Processing target ${module_name}_man"
-    )
+  # if(XSLTPROC_EXECUTABLE)
+  #   if(LYNX_EXECUTABLE)
+  add_custom_command(
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
+    COMMAND
+      # TXT version - just plain text
+      ${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS} --xinclude ${TXT_XSL}
+      ${module_name}.xml | ${LYNX_EXECUTABLE} ${DOCS_LYNX_FLAGS} -stdin -dump >
+      ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml ${TXT_XSL}
+            # ${SINGLE_HTML_XSL}
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc
+    COMMENT "Generating text documentation with for ${module_name}"
+  )
 
 
-    install(
-      FILES ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/README
-      RENAME README.${module_name}
-      DESTINATION ${CMAKE_INSTALL_DOCDIR}/modules
-      COMPONENT ${group_name}
-    )
+  # Add custom command to copy the README file after the readme target is
+  # built. The readme target depends on doc_text so it will regenerate if
+  # it's input changed.
+  add_custom_command(
+    TARGET ${module_name}_readme
+    POST_BUILD
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.txt
+            ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/README
+    COMMENT "Copying README file to source tree for ${module_name}"
+  )
 
 
-    install(
-      FILES ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/${module_name}.7
-      DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man7
-      COMPONENT ${group_name}
-      OPTIONAL
-    )
-  endif()
+  add_custom_command(
+    OUTPUT ${DOCS_OUTPUT_DIR}/${module_name}.html
+    COMMAND
+      # HTML version
+      ${XMLCATATLOGX} ${XSLTPROC_EXECUTABLE} ${DOCS_XSLTPROC_FLAGS} --xinclude --stringparam
+      base.dir ${DOCS_OUTPUT_DIR} --stringparam root.filename ${module_name} --stringparam
+      html.stylesheet ${DOCS_HTML_CSS} --stringparam html.ext ".html" ${SINGLE_HTML_XSL}
+      ${module_name}.xml
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml ${SINGLE_HTML_XSL}
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc
+    COMMENT "Generating html documentation for ${module_name}"
+  )
+  # endif()
+
+  add_custom_command(
+    # man version
+    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${module_name}/${module_name}.7
+    COMMAND ${DOCBOOK2X_EXECUTABLE} -s ${STYLESHEET_DIR}/serdoc2man.xsl ${module_name}.xml
+    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/doc/${module_name}.xml
+            ${STYLESHEET_DIR}/serdoc2man.xsl
+    WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}
+    COMMENT "Processing target ${module_name}_man"
+  )
+
+  install(
+    FILES ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/README
+    RENAME README.${module_name}
+    DESTINATION ${CMAKE_INSTALL_DOCDIR}/modules
+    COMPONENT ${group_name}
+  )
+
+  install(
+    FILES ${CMAKE_CURRENT_SOURCE_DIR}/${module_name}/${module_name}.7
+    DESTINATION ${CMAKE_INSTALL_DATADIR}/man/man7
+    COMPONENT ${group_name}
+    OPTIONAL
+  )
+  # endif()
 endfunction()
 endfunction()

+ 24 - 0
src/CMakeLists.txt

@@ -74,6 +74,30 @@ else()
   )
   )
 endif()
 endif()
 
 
+option(BUILD_DOC "Build documentation" ON)
+# Readme file and man page
+find_program(XSLTPROC_EXECUTABLE xsltproc QUIET)
+find_program(LYNX_EXECUTABLE lynx QUIET)
+find_program(DOCBOOK2X_EXECUTABLE docbook2x-man QUIET)
+
+if(BUILD_DOC AND (NOT XSLTPROC_EXECUTABLE OR NOT LYNX_EXECUTABLE))
+  message(
+    WARNING "BUILD_DOC set to ON but xsltproc or lynx not found and are required for doc generation.
+      Disabling documentation and man page generation.
+      You can safely ignore this warning."
+  )
+  set(BUILD_DOC OFF)
+endif()
+
+if(BUILD_DOC AND (NOT DOCBOOK2X_EXECUTABLE))
+  message(
+    WARNING "BUILD_DOC set to ON but docbook2x-man not found and is required for man generation.
+                 Disabling documentation and man page generation.
+                 You can safely ignore this warning"
+  )
+  set(BUILD_DOC OFF)
+endif()
+
 if(BUILD_DOC)
 if(BUILD_DOC)
   set(docs_in_all_target ALL)
   set(docs_in_all_target ALL)
 else()
 else()