docMacros.cmake 4.6 KB

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