modules_docs.cmake 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. option(BUILD_DOC "Build documentation" ON)
  2. # Readme file and man page
  3. find_program(XSLTPROC_EXECUTABLE xsltproc QUIET)
  4. find_program(PANDOC_EXECUTABLE pandoc QUIET)
  5. # Function to add a module docs entry
  6. function(docs_add_module MODULE_NAME)
  7. # message(STATUS "Adding documentation for module ${MODULE_NAME}")
  8. if(BUILD_DOC)
  9. set(MODULE_PATH "${MODULES_DIR}/${MODULE_NAME}")
  10. set(MODULE_DOC_PATH "${MODULE_PATH}/doc")
  11. # Check if the module has a 'doc' directory and if it contains a file named
  12. # MODULE_NAME.xml
  13. if(XSLTPROC_EXECUTABLE)
  14. add_custom_command(
  15. OUTPUT # ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.md
  16. # ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.txt
  17. ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/README
  18. # ${MODULE_NAME}_doc The following command is used to generate the
  19. # documentation in html format from the xml file
  20. COMMAND
  21. ${XSLTPROC_EXECUTABLE} --novalid --xinclude
  22. # -o ${CMAKE_CURRENT_BINARY_DIR}/xprint2.xml
  23. ${CMAKE_SOURCE_DIR}/doc/docbook/html.xsl
  24. ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_NAME}/doc/${MODULE_NAME}.xml
  25. COMMAND
  26. ${PANDOC_EXECUTABLE} -s -f html -t markdown_strict --output
  27. ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.md
  28. ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/index.html
  29. COMMAND
  30. ${PANDOC_EXECUTABLE} -s -f html -t plain --output
  31. # ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_NAME}/README
  32. ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.txt
  33. ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/index.html
  34. COMMAND
  35. ${CMAKE_COMMAND} -E copy
  36. ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.txt
  37. ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_NAME}/README
  38. DEPENDS
  39. ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_NAME}/doc/${MODULE_NAME}.xml
  40. ${CMAKE_SOURCE_DIR}/doc/docbook/html.xsl
  41. WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}
  42. COMMENT "Generating documentation with xsltproc for ${MODULE_NAME}"
  43. )
  44. add_custom_target(
  45. ${MODULE_NAME}_doc
  46. DEPENDS # ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.md
  47. # ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.txt
  48. ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/README
  49. )
  50. install(
  51. FILES ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_NAME}/README
  52. RENAME README.${MODULE_NAME}
  53. DESTINATION ${CMAKE_INSTALL_DOCDIR}/modules
  54. COMPONENT kamailio_docs
  55. # OPTIONAL
  56. )
  57. # if(IS_DIRECTORY ${MODULE_DOC_PATH} AND EXISTS
  58. # ${MODULE_DOC_PATH}/${MODULE_NAME}.xml ) install( FILES
  59. # ${CMAKE_CURRENT_BINARY_DIR}/${MODULE_NAME}/${MODULE_NAME}.md DESTINATION
  60. # ${CMAKE_INSTALL_DOCDIR}/modules COMPONENT kamailio-docs OPTIONAL ) #
  61. # endif()
  62. # endif()
  63. endif()
  64. endif()
  65. endfunction()