4 # ASCIIDOCTOR_EXECUTABLE
7 INCLUDE(FindChocolatey)
9 FIND_PROGRAM(ASCIIDOCTOR_EXECUTABLE
18 ${CHOCOLATEY_BIN_PATH}
19 DOC "Path to Asciidoctor or AsciidoctorJ"
22 if(ASCIIDOCTOR_EXECUTABLE)
23 # The AsciidctorJ wrapper script sets -Xmx256m. This isn't enough
24 # for the User's Guide.
25 set(_asciidoctorj_opts -Xmx800m $ENV{ASCIIDOCTORJ_OPTS})
26 execute_process( COMMAND ${ASCIIDOCTOR_EXECUTABLE} --version OUTPUT_VARIABLE _ad_full_version )
27 separate_arguments(_ad_full_version)
28 list(GET _ad_full_version 1 ASCIIDOCTOR_VERSION)
30 function(set_asciidoctor_target_properties _target)
31 set_target_properties(${_target} PROPERTIES
33 EXCLUDE_FROM_DEFAULT_BUILD True
35 endfunction(set_asciidoctor_target_properties)
37 set (_asciidoctor_common_args
38 --attribute build_dir=${CMAKE_CURRENT_BINARY_DIR}
39 --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/commaize-block.rb
40 --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/cveidlink-inline-macro.rb
41 --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/wsbuglink-inline-macro.rb
42 --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/wssalink-inline-macro.rb
45 set(_asciidoctor_common_command
46 ${CMAKE_COMMAND} -E env TZ=UTC ASCIIDOCTORJ_OPTS="${_asciidoctorj_opts}"
47 ${ASCIIDOCTOR_EXECUTABLE}
48 ${_asciidoctor_common_args}
51 MACRO( ASCIIDOCTOR2DOCBOOK _asciidocsource )
52 GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
53 set( _output_xml ${_source_base_name}.xml )
58 COMMAND ${_asciidoctor_common_command}
60 --out-file ${_output_xml}
61 ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
63 ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
66 add_custom_target(generate_${_output_xml} DEPENDS ${_output_xml})
67 set_asciidoctor_target_properties(generate_${_output_xml})
71 # Currently single page only.
72 MACRO( ASCIIDOCTOR2HTML _asciidocsource )
73 GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
74 set( _output_html ${_source_base_name}.html )
79 COMMAND ${_asciidoctor_common_command}
81 --out-file ${_output_html}
82 ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
84 ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
87 add_custom_target(generate_${_output_html} DEPENDS ${_output_html})
88 set_asciidoctor_target_properties(generate_${_output_html})
92 MACRO( ASCIIDOCTOR2TXT _asciidocsource )
93 GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
94 set( _output_html ${_source_base_name}.html )
95 set( _output_txt ${_source_base_name}.txt )
100 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/html2text.py
104 ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
112 # news: release-notes.txt
113 # ${CMAKE_COMMAND} -E copy_if_different release-notes.txt ../NEWS
115 FIND_PROGRAM(ASCIIDOCTOR_PDF_EXECUTABLE
123 ${CHOCOLATEY_BIN_PATH}
124 DOC "Path to Asciidoctor PDF or AsciidoctorJ"
127 if(ASCIIDOCTOR_PDF_EXECUTABLE)
129 set(_asciidoctor_pdf_common_command
130 ${CMAKE_COMMAND} -E env TZ=UTC ASCIIDOCTORJ_OPTS="${_asciidoctorj_opts}"
131 ${ASCIIDOCTOR_PDF_EXECUTABLE}
132 --require asciidoctor-pdf
134 ${_asciidoctor_common_args}
137 MACRO( ASCIIDOCTOR2PDF _asciidocsource )
138 GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
139 set( _output_pdf ${_source_base_name}.pdf )
144 COMMAND ${_asciidoctor_pdf_common_command}
145 --out-file ${_output_pdf}
146 ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
148 ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
151 add_custom_target(generate_${_output_pdf} DEPENDS ${_output_pdf})
152 set_asciidoctor_target_properties(generate_${_output_pdf})
156 else(ASCIIDOCTOR_PDF_EXECUTABLE)
158 MACRO( ASCIIDOCTOR2PDF _asciidocsource )
161 endif(ASCIIDOCTOR_PDF_EXECUTABLE)
163 endif(ASCIIDOCTOR_EXECUTABLE)
165 include( FindPackageHandleStandardArgs )
166 find_package_handle_standard_args( ASCIIDOCTOR
167 REQUIRED_VARS ASCIIDOCTOR_EXECUTABLE
168 VERSION_VAR ASCIIDOCTOR_VERSION
171 mark_as_advanced( ASCIIDOCTOR_EXECUTABLE )