docMacros.cmake 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. MACRO(RUN_XSLTPROC _xsl _file _out _in_dir _out_dir )
  2. PARSE_ARGUMENTS(_XSLT "" "" ${ARGN})
  3. LIST(LENGTH _XSLT_DEFAULT_ARGS _XSLT_LEN)
  4. if( _XSLT_LEN )
  5. LIST(GET _XSLT_DEFAULT_ARGS 0 TARG)
  6. set(DIRS ${_XSLT_DEFAULT_ARGS})
  7. LIST(REMOVE_AT DIRS 0)
  8. LIST(LENGTH DIRS length)
  9. set(FILES "")
  10. if ( length )
  11. foreach( D ${DIRS} )
  12. file(GLOB_RECURSE _DB_INCLUDES ${D}/*.xml)
  13. set(FILES ${FILES} ${_DB_INCLUDES})
  14. endforeach()
  15. endif()
  16. endif()
  17. STRING(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" _file_base "${_file}")
  18. SET(_xsl ${_xsl})
  19. SET(_file ${_file})
  20. SET(_out ${_out})
  21. SET(_in_dir ${_in_dir})
  22. SET(_out_dir ${_out_dir})
  23. IF( TARG )
  24. SET(_xslt_target ${ARGN})
  25. SET(xinclude "-xinclude")
  26. ELSE()
  27. SET(_xslt_target)
  28. SET(xinclude)
  29. ENDIF()
  30. CONFIGURE_FILE(${HPCC_SOURCE_DIR}/docs/BuildTools/xsltproc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${_out}.cmake @ONLY)
  31. ADD_CUSTOM_COMMAND(
  32. COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/${_out}.cmake
  33. OUTPUT ${_out_dir}/${_out}
  34. DEPENDS docbook-expand ${_xsl} ${_in_dir}/${_file} ${_xslt_target} ${FILES} ${DOC_IMAGE_LIST}
  35. )
  36. set_source_files_properties(${_out_dir}/${_out} PROPERTIES GENERATED TRUE)
  37. ADD_CUSTOM_TARGET(${_out} DEPENDS ${_out_dir}/${_out} )
  38. ENDMACRO(RUN_XSLTPROC)
  39. MACRO(RUN_FOP _file _out)
  40. ADD_CUSTOM_COMMAND(
  41. COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs
  42. COMMAND ${FOP_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/${_file} -pdf ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${_out}
  43. OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${_out}
  44. DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}
  45. )
  46. set_source_files_properties(${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${_out} PROPERTIES GENERATED TRUE)
  47. ADD_CUSTOM_TARGET(${_out} DEPENDS ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${_out} )
  48. ENDMACRO(RUN_FOP)
  49. MACRO(CLEAN_REL_BOOK _file _version_dir _doc_dir _in_dir _out_dir)
  50. STRING(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" _file_base "${_file}")
  51. SET(_clean_target "clean_${_file}")
  52. SET(VERSION_DIR ${_version_dir})
  53. SET(ROOT "book")
  54. CONFIGURE_FILE(${HPCC_SOURCE_DIR}/docs/BuildTools/relrem.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl @ONLY)
  55. RUN_XSLTPROC( ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl ${_file} ${_file} ${_in_dir} ${_out_dir})
  56. set_source_files_properties(${_out_dir}/${_file} PROPERTIES GENERATED TRUE)
  57. ADD_CUSTOM_TARGET( ${_clean_target} DEPENDS ${_in_dir}/${_file} )
  58. ENDMACRO(CLEAN_REL_BOOK)
  59. MACRO(CLEAN_REL_SET _file _version_dir _doc_dir _in_dir _out_dir)
  60. STRING(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" _file_base "${_file}")
  61. SET(_clean_target "clean_${_file}")
  62. SET(VERSION_DIR ${_version_dir})
  63. SET(ROOT "set")
  64. CONFIGURE_FILE(${HPCC_SOURCE_DIR}/docs/BuildTools/relrem.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl @ONLY)
  65. RUN_XSLTPROC( ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl ${_file} ${_file} ${_in_dir} ${_out_dir})
  66. set_source_files_properties(${_out_dir}/${_file} PROPERTIES GENERATED TRUE)
  67. ADD_CUSTOM_TARGET( ${_clean_target} DEPENDS ${_in_dir}/${_file} )
  68. ENDMACRO(CLEAN_REL_SET)
  69. MACRO(DOCBOOK_TO_PDF _xsl _file _name)
  70. PARSE_ARGUMENTS(_DB "" "" ${ARGN})
  71. LIST(LENGTH _DB_DEFAULT_ARGS length)
  72. IF(MAKE_DOCS)
  73. STRING(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" _file_base "${_file}")
  74. SET(_fo_file ${_file_base}.fo)
  75. SET(_pdf_file ${_name}.pdf)
  76. SET( _docs_target "doc_${_pdf_file}") # File to Name of type.
  77. CLEAN_REL_BOOK(${_file} ${VERSION_DIR} ${DOC_IMAGES} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
  78. set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl PROPERTIES GENERATED TRUE)
  79. RUN_XSLTPROC(${_xsl} ${_file} ${_fo_file} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} "clean_${_file}" ${_DB_DEFAULT_ARGS})
  80. RUN_FOP(${_fo_file} ${_pdf_file})
  81. set_source_files_properties(${_pdf_file} PROPERTIES GENERATED TRUE)
  82. MESSAGE("-- Adding document: ${_pdf_file} - target: ${_docs_target}")
  83. ADD_CUSTOM_TARGET(${_docs_target} ALL DEPENDS ${_pdf_file})
  84. set_property(GLOBAL APPEND PROPERTY DOC_TARGETS "${_docs_target}")
  85. ENDIF(MAKE_DOCS)
  86. ENDMACRO(DOCBOOK_TO_PDF targetname_suffix srcfile outfile targetdir deps_list)
  87. MACRO(FILE_LIST_GENERATOR outxml filename linkname description)
  88. set(xmlout " <file>\n")
  89. set(xmlout "${xmlout} <name>${linkname}</name>\n")
  90. set(xmlout "${xmlout} <description>${description}</description>\n")
  91. set(xmlout "${xmlout} <filename>${filename}</filename>\n")
  92. set(xmlout "${xmlout} <version>${DOC_VERSION}</version>\n")
  93. set(xmlout "${xmlout} </file>\n")
  94. message("---- FILE_LIST_GENERATOR: Adding ${filename}")
  95. set(${outxml} "${${outxml}}${xmlout}")
  96. ENDMACRO(FILE_LIST_GENERATOR)