docMacros.cmake 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  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} ${XSLTPROC_DEPENDENCIES}
  36. )
  37. set_source_files_properties(${_out_dir}/${_out} PROPERTIES GENERATED TRUE)
  38. ADD_CUSTOM_TARGET(${_out}_${DOC_LANG} DEPENDS ${_out_dir}/${_out} )
  39. SET(XSLTPROC_DEPENDENCIES)
  40. ENDMACRO(RUN_XSLTPROC)
  41. MACRO(RUN_FOP _file _out)
  42. ADD_CUSTOM_COMMAND(
  43. COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${DOC_LANG}
  44. COMMAND ${FOP_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/${_file} -pdf ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${DOC_LANG}/${_out}
  45. OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${DOC_LANG}/${_out}
  46. DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_file}
  47. )
  48. set_source_files_properties(${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${DOC_LANG}/${_out} PROPERTIES GENERATED TRUE)
  49. ADD_CUSTOM_TARGET(${_out} DEPENDS ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}/docs/${DOC_LANG}/${_out} )
  50. ENDMACRO(RUN_FOP)
  51. MACRO(CLEAN_REL_BOOK _file _version_dir _doc_dir _in_dir _out_dir)
  52. STRING(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" _file_base "${_file}")
  53. SET(_clean_target "clean_${_file}_${DOC_LANG}")
  54. SET(VERSION_DIR ${_version_dir})
  55. SET(ROOT "book")
  56. CONFIGURE_FILE(${HPCC_SOURCE_DIR}/docs/BuildTools/relrem.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl @ONLY)
  57. RUN_XSLTPROC( ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl ${_file} ${_file} ${_in_dir} ${_out_dir})
  58. set_source_files_properties(${_out_dir}/${_file} PROPERTIES GENERATED TRUE)
  59. ADD_CUSTOM_TARGET( ${_clean_target} DEPENDS ${_in_dir}/${_file} )
  60. ENDMACRO(CLEAN_REL_BOOK)
  61. MACRO(CLEAN_REL_SET _file _version_dir _doc_dir _in_dir _out_dir)
  62. STRING(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" _file_base "${_file}")
  63. SET(_clean_target "clean_${_file}_${DOC_LANG}")
  64. SET(VERSION_DIR ${_version_dir})
  65. SET(ROOT "set")
  66. CONFIGURE_FILE(${HPCC_SOURCE_DIR}/docs/BuildTools/relrem.xsl.in ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl @ONLY)
  67. RUN_XSLTPROC( ${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl ${_file} ${_file} ${_in_dir} ${_out_dir})
  68. set_source_files_properties(${_out_dir}/${_file} PROPERTIES GENERATED TRUE)
  69. ADD_CUSTOM_TARGET( ${_clean_target} DEPENDS ${_in_dir}/${_file} )
  70. ENDMACRO(CLEAN_REL_SET)
  71. MACRO(DOCBOOK_TO_PDF _xsl _file _name)
  72. PARSE_ARGUMENTS(_DB "" "" ${ARGN})
  73. LIST(LENGTH _DB_DEFAULT_ARGS length)
  74. IF(MAKE_DOCS)
  75. STRING(REGEX REPLACE "([0-9a-z_-]*).xml" "\\1" _file_base "${_file}")
  76. SET(_fo_file ${_file_base}.fo)
  77. SET(_pdf_file ${_name}-${DOC_VERSION_ONLY}.pdf)
  78. SET( _docs_target "doc_${_pdf_file}") # File to Name of type.
  79. CLEAN_REL_BOOK(${_file} ${VERSION_DIR} ${DOC_IMAGES} ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
  80. set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/${_file_base}.xsl PROPERTIES GENERATED TRUE)
  81. RUN_XSLTPROC(${_xsl} ${_file} ${_fo_file} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} "clean_${_file}_${DOC_LANG}" ${_DB_DEFAULT_ARGS})
  82. IF (DISABLE_PDF)
  83. SET(DISABLE_PDF)
  84. SET(_target_file ${_fo_file})
  85. ELSE()
  86. RUN_FOP(${_fo_file} ${_pdf_file})
  87. set_source_files_properties(${_pdf_file} PROPERTIES GENERATED TRUE)
  88. SET(_target_file ${_pdf_file})
  89. ENDIF()
  90. MESSAGE("-- Adding document: ${_target_file} - target: ${_docs_target}")
  91. ADD_CUSTOM_TARGET(${_docs_target} ALL DEPENDS ${_target_file} )
  92. set_property(GLOBAL APPEND PROPERTY DOC_TARGETS "${_docs_target}")
  93. ENDIF(MAKE_DOCS)
  94. ENDMACRO(DOCBOOK_TO_PDF targetname_suffix srcfile outfile targetdir deps_list)
  95. MACRO(DOCBOOK_TO_HTML _xsl_file _xml_file _out_dir _html_target _css_path _zip_target)
  96. IF(MAKE_DOCS)
  97. if("${_html_target}" STREQUAL "")
  98. set(_html_target "_generate_html_files")
  99. endif()
  100. if("${_css_path}" STREQUAL "")
  101. set(_css_path "${HPCC_SOURCE_DIR}/docs/common/eclipsehelp.css")
  102. endif()
  103. get_filename_component(css_file_name ${_css_path} NAME)
  104. STRING(REGEX REPLACE "(.+)/([^/]+)$" "\\1" _out_dir1 "${_out_dir}")
  105. STRING(REGEX REPLACE ".+/([^/]+)$" "\\1" _out_dir2 "${_out_dir}")
  106. if(NOT "${_zip_target}" STREQUAL "")
  107. SET(_zip_file ${_html_target}-${DOC_VERSION_ONLY}.zip)
  108. endif()
  109. ADD_CUSTOM_COMMAND(
  110. COMMAND mkdir -p ${_out_dir}
  111. COMMAND cp ${_css_path} ${_out_dir}/
  112. OUTPUT ${_out_dir}/${css_file_name}
  113. )
  114. ADD_CUSTOM_TARGET(${_html_target}
  115. COMMAND ${XSLTPROC_EXECUTABLE} --nonet --xinclude --stringparam html.stylesheet ${css_file_name} --stringparam generate.toc "book toc" --param chapter.autolabel 0 ${_xsl_file} ${_xml_file}
  116. WORKING_DIRECTORY ${_out_dir}
  117. DEPENDS docbook-expand ${_out_dir}/${css_file_name} ${HELP_DEPENDENCIES}
  118. #SOURCES ${_xsl_file}
  119. )
  120. SET(HELP_DEPENDENCIES)
  121. if(NOT "${_zip_target}" STREQUAL "")
  122. ADD_CUSTOM_COMMAND(
  123. COMMAND zip -r ${_zip_file} ${_out_dir2}
  124. WORKING_DIRECTORY ${_out_dir1}
  125. OUTPUT ${_zip_file}
  126. )
  127. ADD_CUSTOM_TARGET(${_zip_target} ALL DEPENDS ${_html_target} ${_zip_file})
  128. set_property(GLOBAL APPEND PROPERTY DOC_TARGETS ${_zip_target})
  129. else()
  130. set_property(GLOBAL APPEND PROPERTY DOC_TARGETS ${_html_target})
  131. endif()
  132. ENDIF(MAKE_DOCS)
  133. ENDMACRO(DOCBOOK_TO_HTML)
  134. MACRO(FILE_LIST_GENERATOR outxml filename linkname description)
  135. set(xmlout " <file>\n")
  136. set(xmlout "${xmlout} <name>${linkname}</name>\n")
  137. set(xmlout "${xmlout} <description>${description}</description>\n")
  138. set(xmlout "${xmlout} <filename>${filename}</filename>\n")
  139. set(xmlout "${xmlout} <version>${DOC_VERSION}</version>\n")
  140. set(xmlout "${xmlout} </file>\n")
  141. message("---- FILE_LIST_GENERATOR: Adding ${filename}")
  142. set(${outxml} "${${outxml}}${xmlout}")
  143. ENDMACRO(FILE_LIST_GENERATOR)
  144. MACRO(XSD_TO_XML _xsd_files _in_dir _out_dir)
  145. set(_xml_files)
  146. ADD_CUSTOM_COMMAND(
  147. COMMAND mkdir -p ${_out_dir}
  148. OUTPUT ${_out_dir}
  149. )
  150. foreach(_xsd_file ${_xsd_files})
  151. #STRING(REGEX REPLACE "(.*).xsd" "\\1.xml" _xml_file "${_xsd_file}")
  152. set (_xml_file "${_xsd_file}.mod.xml")
  153. ADD_CUSTOM_COMMAND(
  154. COMMAND ${SAXON_EXECUTABLE} -o:${_out_dir}/${_xml_file} -xsl:${HPCC_SOURCE_DIR}/docs/BuildTools/xsdattr2htmltable.xsl2 -s:${_in_dir}/${_xsd_file}
  155. OUTPUT ${_out_dir}/${_xml_file}
  156. WORKING_DIRECTORY ${_out_dir}
  157. DEPENDS ${_out_dir} ${_in_dir}/${_xsd_file} ${_in_dir}/environment.xsd
  158. )
  159. list(APPEND _xml_files ${_out_dir}/${_xml_file})
  160. endforeach()
  161. ADD_CUSTOM_TARGET("xsd_to_xml" ALL DEPENDS ${_out_dir} ${_xml_files} )
  162. set_property(GLOBAL APPEND PROPERTY DOC_TARGETS "xsd_to_xml")
  163. ENDMACRO(XSD_TO_XML)