aboutsummaryrefslogtreecommitdiffstats
path: root/cmake/modules
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2017-10-19 15:03:55 -0700
committerGerald Combs <gerald@wireshark.org>2018-02-11 18:22:09 +0000
commit94a0f7c6414cb83535e89557ce3cce47a1808fec (patch)
treec6e6f18ed0e324bed987ac2873571ffa9e6e7d74 /cmake/modules
parent5a674d05c900be0007b71d11ff52e7f972359b5d (diff)
Switch from AsciiDoc to Asciidoctor.
Switch the markup text processor for files in the docbook directory from AsciiDoc to Asciidoctor. Asciidoctor has several useful features (such as direct PDF output) and is actively developed. It's written in Ruby but that dependency can be sidestepped with AsciidoctorJ, a self-contained bundle that only depends on the JRE. The current toolchain targets require Python, AsciiDoc, DocBook XML, DocBook XSL, Java, FOP, xsltproc, lynx, and the HTMLHelp compiler: HTML: AsciiDoc → DocBook XML → xsltproc + DocBook XSL Chunked HTML: AsciiDoc → DocBook XML → xsltproc + DocBook XSL PDF: AsciiDoc → DocBook XML → xsltproc + DocBook XSL → FOP HTMLHelp: AsciiDoc → DocBook XML → xsltproc + DocBook XSL → HHC This change removes the AsciiDoc and FOP requirements and adds either AsciidoctorJ or Asciidoctor + Ruby: HTML: Asciidoctor → DocBook XML → xsltproc + DocBook XSL Chunked HTML: Asciidoctor → DocBook XML → xsltproc + DocBook XSL PDF: Asciidoctor HTMLHelp: Asciidoctor → DocBook XML → xsltproc + DocBook XSL → HHC Ideally we could generate all of these using AsciidoctorJ, Java, and lynx. Unfortunately we're not there yet. The release notes depend on several macros (ws-buglink, ws-salink, cve-idlink, sort-and-group). Add Asciidoctor (Ruby) equivalents. Remove the BUILD_xxx_GUIDES CMake options and add various output targets automatically. This means that you have to build the various documentation targets explicitly. Change-Id: I31930677a656b99b1c6839bb6c33a13db951eb9a Reviewed-on: https://code.wireshark.org/review/25668 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'cmake/modules')
-rw-r--r--cmake/modules/FindASCIIDOC.cmake262
-rw-r--r--cmake/modules/FindAsciidoctor.cmake146
-rw-r--r--cmake/modules/FindFOP.cmake37
-rw-r--r--cmake/modules/FindLYNX.cmake8
-rw-r--r--cmake/modules/FindXSLTPROC.cmake62
5 files changed, 161 insertions, 354 deletions
diff --git a/cmake/modules/FindASCIIDOC.cmake b/cmake/modules/FindASCIIDOC.cmake
deleted file mode 100644
index d8dff81c0a..0000000000
--- a/cmake/modules/FindASCIIDOC.cmake
+++ /dev/null
@@ -1,262 +0,0 @@
-#
-# - Find unix commands from cygwin
-# This module looks for some usual Unix commands.
-#
-
-INCLUDE(FindCygwin)
-
-FIND_PROGRAM(A2X_EXECUTABLE
- NAMES
- a2x
- PATHS
- ${CYGWIN_INSTALL_PATH}/bin
- /bin
- /usr/bin
- /usr/local/bin
- /sbin
-)
-
-string( TOLOWER "${CYGWIN_INSTALL_PATH}" l_cyg_path)
-string( TOLOWER "${A2X_EXECUTABLE}" l_a2x_ex)
-if (NOT "${CYGWIN_INSTALL_PATH}" STREQUAL "" AND "${l_a2x_ex}" MATCHES "${l_cyg_path}")
- message(STATUS "Using Cygwin a2x")
- # We have most likely found a symlink to a2x.py. This won't work from the Windows shell.
- FIND_PROGRAM(CYGPATH_EXECUTABLE
- NAMES cygpath
- PATHS ${CYGWIN_INSTALL_PATH}/bin
- )
-
- MACRO( TO_A2X_COMPATIBLE_PATH _cmake_path _result )
- execute_process(
- COMMAND ${CYGPATH_EXECUTABLE} -u ${_cmake_path}
- OUTPUT_VARIABLE _cygwin_path
- )
- # cygpath adds a linefeed.
- string(STRIP "${_cygwin_path}" _cygwin_path)
-
- set( ${_result} ${_cygwin_path} )
- ENDMACRO()
-
- TO_A2X_COMPATIBLE_PATH( ${CMAKE_SOURCE_DIR}/tools/runa2x.sh RUNA2X_CYGWIN_PATH )
-
- # It's difficult or impossible to call /usr/bin/a2x directly from
- # Windows because:
- # - /usr/bin/a2x, which is a symlink to /usr/bin/a2x.py.
- # - We need to set environment variables (LC_ALL, PATH, TZ, PYTHONHOME)
- # so we use a wrapper script.
- set( RUNA2X ${SH_EXECUTABLE} ${RUNA2X_CYGWIN_PATH} )
-else()
- # Make sure we don't get language specific quotes
- set( RUNA2X LC_ALL=C TZ=UTC ${A2X_EXECUTABLE} )
-
- MACRO( TO_A2X_COMPATIBLE_PATH _cmake_path _result )
- set( ${_result} ${_cmake_path} )
- ENDMACRO()
-endif()
-
-# Handle the QUIETLY and REQUIRED arguments and set ASCIIDOC_FOUND to TRUE if
-# all listed variables are TRUE
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(ASCIIDOC DEFAULT_MSG RUNA2X)
-
-MARK_AS_ADVANCED(RUNA2X)
-
-TO_A2X_COMPATIBLE_PATH( ${CMAKE_CURRENT_BINARY_DIR} _a2x_current_binary_dir )
-
-MACRO( ASCIIDOC2DOCBOOK _asciidocsource _conf_files _src_files _built_deps )
- GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
- set( A2X_HTML_OPTS --stylesheet=ws.css )
- set( _output_xml ${_source_base_name}.xml )
-
- foreach(_conf_file ${${_conf_files}})
- TO_A2X_COMPATIBLE_PATH ( ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file} _a2x_conf_file )
- set( _conf_opts_list ${_conf_opts_list} --conf-file=${_a2x_conf_file})
- endforeach()
- string( REPLACE ";" " " _conf_opts "${_conf_opts_list}")
-
- foreach(_conf_file ${${_conf_files}})
- set( _conf_deps ${_conf_deps} ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file})
- endforeach()
-
- foreach(_src_file ${${_src_files}})
- set( _src_deps ${_src_deps} ${CMAKE_CURRENT_SOURCE_DIR}/${_src_file})
- endforeach()
-
- TO_A2X_COMPATIBLE_PATH ( ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource} _a2x_asciidocsource )
-
- if(CMAKE_GENERATOR MATCHES "Visual Studio")
- # Workaround to prevent parallel msbuild builds from failing, see function
- # get_docbook_xml_depends in FindXSLTPROC.cmake for details. This command
- # updates the stamp file when the XML file is updated.
- set(_stamp_file "${CMAKE_CURRENT_BINARY_DIR}/${_output_xml}-stamp")
- set_property(SOURCE "${_stamp_file}" PROPERTY GENERATED)
- set(_command_touch_stamp COMMAND "${CMAKE_COMMAND}" -E touch "${_stamp_file}")
- else()
- set(_command_touch_stamp "")
- endif()
-
- add_custom_command(
- OUTPUT
- ${_output_xml}
- # XXX - Output to a specific directory, e.g. wsdg_generated_src
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- COMMAND ${RUNA2X}
- --verbose
- --attribute=build_dir=${_a2x_current_binary_dir}
- --attribute=docinfo
- --destination-dir=${_a2x_current_binary_dir}
- --asciidoc-opts=${_conf_opts}
- --no-xmllint
- --format=docbook
- --fop
- ${A2X_HTML_OPTS}
- ${_a2x_asciidocsource}
- ${_command_touch_stamp}
- DEPENDS
- ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
- ${_conf_deps}
- ${_src_deps}
- ${${_built_deps}}
- )
- add_custom_target(generate_${_output_xml} DEPENDS ${_output_xml})
- set_target_properties(generate_${_output_xml} PROPERTIES FOLDER "Docbook")
- unset(_src_deps)
- unset(_conf_deps)
- unset(_conf_opts_list)
-ENDMACRO()
-
-MACRO( ASCIIDOC2HTML _output _asciidocsource _conf_files )
- GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
- SET( A2X_HTML_OPTS --stylesheet=ws.css )
-
- SET( _conf_opts_list )
- FOREACH( _conf_file ${_conf_files} )
- TO_A2X_COMPATIBLE_PATH ( ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file} _a2x_conf_file )
- SET( _conf_opts_list ${_conf_opts_list} --conf-file=${_a2x_conf_file})
- ENDFOREACH()
- STRING( REPLACE ";" " " _conf_opts "${_conf_opts_list}" )
-
- SET( _conf_deps )
- FOREACH( _conf_file ${_conf_files} )
- SET( _conf_deps ${_conf_deps} ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file} )
- ENDFOREACH()
-
- TO_A2X_COMPATIBLE_PATH ( ${_asciidocsource} _a2x_asciidocsource )
-
- ADD_CUSTOM_COMMAND(
- OUTPUT
- ${_output}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- COMMAND ${RUNA2X}
- --format=xhtml
- --destination-dir=${_a2x_current_binary_dir}
- --asciidoc-opts=${_conf_opts}
- --fop
- ${A2X_HTML_OPTS}
- ${_a2x_asciidocsource}
- # Replacing file with itself will fail
- # COMMAND ${CMAKE_COMMAND} -E rename
- # ${CMAKE_CURRENT_BINARY_DIR}/${_source_base_name}.html
- # ${CMAKE_CURRENT_BINARY_DIR}/${_output}
- DEPENDS
- ${_asciidocsources}
- ${_conf_deps}
- ${_otherdependencies}
- )
- unset(_conf_deps)
- unset(_conf_opts_list)
-ENDMACRO()
-
-MACRO( ASCIIDOC2TXT _output _asciidocsource _conf_files )
- GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
- if( LYNX_EXECUTABLE MATCHES lynx )
- set( A2X_TEXT_OPTS --lynx )
- else()
- set( A2X_TEXT_OPTS )
- endif()
- SET( A2X_HTML_OPTS --stylesheet=ws.css )
-
- SET( _conf_opts_list )
- FOREACH( _conf_file ${_conf_files} )
- TO_A2X_COMPATIBLE_PATH ( ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file} _a2x_conf_file )
- SET( _conf_opts_list ${_conf_opts_list} --conf-file=${_a2x_conf_file})
- ENDFOREACH()
- STRING( REPLACE ";" " " _conf_opts "${_conf_opts_list}" )
-
- SET( _conf_deps )
- FOREACH( _conf_file ${_conf_files} )
- SET( _conf_deps ${_conf_deps} ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file} )
- ENDFOREACH()
-
- TO_A2X_COMPATIBLE_PATH ( ${_asciidocsource} _a2x_asciidocsource )
-
- ADD_CUSTOM_COMMAND(
- OUTPUT
- ${_output}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- COMMAND ${RUNA2X}
- --format=text
- --destination-dir=${_a2x_current_binary_dir}
- --asciidoc-opts=${_conf_opts}
- --fop
- ${A2X_TEXT_OPTS}
- # XXX This generates a CMake working but correcting it looks
- # messy.
- --xsltproc-opts '--stringparam generate.toc "article nop" '
- ${_a2x_asciidocsource}
- COMMAND ${CMAKE_COMMAND} -E rename
- ${CMAKE_CURRENT_BINARY_DIR}/${_source_base_name}.text
- ${CMAKE_CURRENT_BINARY_DIR}/${_output}
- DEPENDS
- ${_asciidocsource}
- ${_conf_deps}
- )
- unset(_conf_deps)
- unset(_conf_opts_list)
-ENDMACRO()
-
-# news: release-notes.txt
-# ${CMAKE_COMMAND} -E copy_if_different release-notes.txt ../NEWS
-
-MACRO( ASCIIDOC2PDF _output _asciidocsource _conf_files _paper )
- GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
- SET( A2X_HTML_OPTS --stylesheet=ws.css )
-
- SET( _conf_opts_list )
- FOREACH( _conf_file ${_conf_files} )
- TO_A2X_COMPATIBLE_PATH ( ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file} _a2x_conf_file )
- SET( _conf_opts_list ${_conf_opts_list} --conf-file=${_a2x_conf_file})
- ENDFOREACH()
- STRING( REPLACE ";" " " _conf_opts "${_conf_opts_list}")
-
- SET( _conf_deps )
- FOREACH( _conf_file ${_conf_files} )
- SET( _conf_deps ${_conf_deps} ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file} )
- ENDFOREACH()
-
- TO_A2X_COMPATIBLE_PATH ( ${_asciidocsource} _a2x_asciidocsource )
-
- ADD_CUSTOM_COMMAND(
- OUTPUT
- ${_output}
- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
- COMMAND ${RUNA2X}
- --format=pdf
- --destination-dir=${_a2x_current_binary_dir}
- --asciidoc-opts=${_conf_opts}
- --fop
- ${A2X_HTML_OPTS}
- --xsltproc-opts "--stringparam paper.type ${_paper} --nonet"
- --xsl-file=custom_layer_pdf.xsl
- ${_a2x_asciidocsource}
- COMMAND ${CMAKE_COMMAND} -E rename
- ${CMAKE_CURRENT_BINARY_DIR}/${_source_base_name}.pdf
- ${CMAKE_CURRENT_BINARY_DIR}/${_output}
- DEPENDS
- ${_asciidocsources}
- ${_conf_deps}
- ${_otherdependencies}
- )
- unset(_conf_deps)
- unset(_conf_opts_list)
-ENDMACRO()
diff --git a/cmake/modules/FindAsciidoctor.cmake b/cmake/modules/FindAsciidoctor.cmake
new file mode 100644
index 0000000000..f387432030
--- /dev/null
+++ b/cmake/modules/FindAsciidoctor.cmake
@@ -0,0 +1,146 @@
+#
+# - Find Asciidoctor
+# Sets:
+# ASCIIDOCTOR_EXECUTABLE
+#
+
+INCLUDE(FindChocolatey)
+
+FIND_PROGRAM(ASCIIDOCTOR_EXECUTABLE
+ NAMES
+ asciidoctorj
+ asciidoctor
+ PATHS
+ /bin
+ /usr/bin
+ /usr/local/bin
+ ${CHOCOLATEY_BIN_PATH}/bin
+ DOC "Path to Asciidoctor or AsciidoctorJ"
+)
+
+if(ASCIIDOCTOR_EXECUTABLE)
+ # The AsciidctorJ wrapper script sets -Xmx256m. This isn't enough
+ # for the User's Guide.
+ set(_asciidoctorj_opts "-Xmx800m $ENV{ASCIIDOCTORJ_OPTS}")
+ execute_process( COMMAND ${ASCIIDOCTOR_EXECUTABLE} --version OUTPUT_VARIABLE _ad_full_version )
+ separate_arguments(_ad_full_version)
+ list(GET _ad_full_version 1 ASCIIDOCTOR_VERSION)
+
+ function(set_asciidoctor_target_properties _target)
+ set_target_properties(${_target} PROPERTIES
+ FOLDER "Docbook"
+ EXCLUDE_FROM_DEFAULT_BUILD True
+ )
+ endfunction(set_asciidoctor_target_properties)
+
+ set (_asciidoctor_common_args
+ --attribute build_dir=${CMAKE_CURRENT_BINARY_DIR}
+ --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/commaize-block.rb
+ --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/cve_idlink-inline-macro.rb
+ --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/ws_buglink-inline-macro.rb
+ --require ${CMAKE_CURRENT_SOURCE_DIR}/asciidoctor-macros/ws_salink-inline-macro.rb
+ )
+
+ set(_asciidoctor_common_command ${CMAKE_COMMAND} -E
+ env TZ=UTC ASCIIDOCTORJ_OPTS="${_asciidoctorj_opts}"
+ ${ASCIIDOCTOR_EXECUTABLE}
+ ${_asciidoctor_common_args}
+ )
+
+ MACRO( ASCIIDOCTOR2DOCBOOK _asciidocsource )
+ GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
+ set( _output_xml ${_source_base_name}.xml )
+
+ add_custom_command(
+ OUTPUT
+ ${_output_xml}
+ COMMAND ${_asciidoctor_common_command}
+ --backend docbook
+ --out-file ${_output_xml}
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+ ${ARGN}
+ )
+ add_custom_target(generate_${_output_xml} DEPENDS ${_output_xml})
+ set_asciidoctor_target_properties(generate_${_output_xml})
+ unset(_output_xml)
+ ENDMACRO()
+
+ # Currently single page only.
+ MACRO( ASCIIDOCTOR2HTML _asciidocsource )
+ GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
+ set( _output_html ${_source_base_name}.html )
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT
+ ${_output_html}
+ COMMAND ${_asciidoctor_common_command}
+ --backend html
+ --out-file ${_output_html}
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+ ${ARGN}
+ )
+ add_custom_target(generate_${_output_html} DEPENDS ${_output_html})
+ set_asciidoctor_target_properties(generate_${_output_html})
+ unset(_output_html)
+ ENDMACRO()
+
+ MACRO( ASCIIDOCTOR2TXT _asciidocsource )
+ if( LYNX_EXECUTABLE )
+ GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
+ set( _output_html ${_source_base_name}.html )
+ set( _output_txt ${_source_base_name}.txt )
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT
+ ${_output_txt}
+ COMMAND ${LYNX_EXECUTABLE}
+ -dump
+ ${_output_html}
+ > ${_output_txt}
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+ ${_output_html}
+ ${ARGN}
+ )
+ unset(_output_html)
+ unset(_output_txt)
+ endif( LYNX_EXECUTABLE )
+ ENDMACRO()
+
+ # news: release-notes.txt
+ # ${CMAKE_COMMAND} -E copy_if_different release-notes.txt ../NEWS
+
+ MACRO( ASCIIDOCTOR2PDF _asciidocsource )
+ GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
+ set( _output_pdf ${_source_base_name}.pdf )
+
+ ADD_CUSTOM_COMMAND(
+ OUTPUT
+ ${_output_pdf}
+ COMMAND ${_asciidoctor_common_command}
+ --backend pdf
+ ${_asciidoctor_common_args}
+ --out-file ${_output_pdf}
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+ DEPENDS
+ ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
+ ${ARGN}
+ )
+ add_custom_target(generate_${_output_pdf} DEPENDS ${_output_pdf})
+ set_asciidoctor_target_properties(generate_${_output_pdf})
+ unset(_output_pdf)
+ ENDMACRO()
+
+endif(ASCIIDOCTOR_EXECUTABLE)
+
+include( FindPackageHandleStandardArgs )
+find_package_handle_standard_args( ASCIIDOCTOR
+ REQUIRED_VARS ASCIIDOCTOR_EXECUTABLE
+ VERSION_VAR ASCIIDOCTOR_VERSION
+ )
+
+mark_as_advanced( ASCIIDOCTOR_EXECUTABLE )
diff --git a/cmake/modules/FindFOP.cmake b/cmake/modules/FindFOP.cmake
deleted file mode 100644
index e504338fe6..0000000000
--- a/cmake/modules/FindFOP.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
-#
-# - Find unix commands from cygwin
-# This module looks for some usual Unix commands.
-#
-
-INCLUDE(FindCygwin)
-
-INCLUDE(FindWSWinLibs)
-FindWSWinLibs("fop-2.1" "FOP21_HINTS")
-FindWSWinLibs("fop-2.0" "FOP20_HINTS")
-FindWSWinLibs("fop-1.1" "FOP11_HINTS")
-FindWSWinLibs("fop-1.0" "FOP10_HINTS")
-
-FIND_PROGRAM(FOP_EXECUTABLE
- NAMES
- fop
- PATHS
- ${CYGWIN_INSTALL_PATH}/bin
- /bin
- /usr/bin
- /usr/local/bin
- /sbin
- HINTS
- ${FOP21_HINTS}
- ${FOP20_HINTS}
- ${FOP11_HINTS}
- ${FOP10_HINTS}
-)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(FOP DEFAULT_MSG FOP_EXECUTABLE)
-
-IF(${FOP_EXECUTABLE})
- SET(FOP_OPTS -Xmx256m)
- SET(FOP_EXECUTABLE FOP_OPTS=${FOP_OPTS} JAVA_OPTS=${FOP_OPTS} ${FOP_EXECUTABLE})
-ENDIF()
-MARK_AS_ADVANCED(FOP_EXECUTABLE)
diff --git a/cmake/modules/FindLYNX.cmake b/cmake/modules/FindLYNX.cmake
index 683b574ae5..654c9442e7 100644
--- a/cmake/modules/FindLYNX.cmake
+++ b/cmake/modules/FindLYNX.cmake
@@ -1,13 +1,15 @@
#
-# - Find unix commands from cygwin
-# This module looks for lynx (used by asciidoc)
+# This module looks for an HTML to plain text converter which accepts
+# a "-dump" argument.
+#
+# Lynx is preferred since it generates URL footnotes.
#
INCLUDE(FindCygwin)
FIND_PROGRAM(LYNX_EXECUTABLE
NAMES
- lynx
+ lynx w3m links
PATHS
${CYGWIN_INSTALL_PATH}/bin
/bin
diff --git a/cmake/modules/FindXSLTPROC.cmake b/cmake/modules/FindXSLTPROC.cmake
index 62d71af846..fb2d50a77a 100644
--- a/cmake/modules/FindXSLTPROC.cmake
+++ b/cmake/modules/FindXSLTPROC.cmake
@@ -5,13 +5,6 @@
include(FindCygwin)
-if(ENABLE_PDF_GUIDES)
- find_package(FOP)
- if(${FOP_EXECUTABLE} STREQUAL "FOP_EXECUTABLE-NOTFOUND")
- message(FATAL_ERROR "fop wasn't found, but is necessary for building PDFs." )
- endif()
-endif()
-
find_program(XSLTPROC_EXECUTABLE
NAMES
xsltproc
@@ -44,7 +37,6 @@ if (WIN32 AND NOT "${CYGWIN_INSTALL_PATH}" STREQUAL "" AND ${XSLTPROC_EXECUTABLE
NAMES cygpath
PATHS ${CYGWIN_INSTALL_PATH}/bin
)
- # XXX Duplicate of TO_A2X_COMPATIBLE_PATH
MACRO( TO_XSLTPROC_COMPATIBLE_PATH _cmake_path _result )
execute_process(
COMMAND ${CYGPATH_EXECUTABLE} -u ${_cmake_path}
@@ -103,13 +95,18 @@ MACRO(XML2HTML _target_dep _dir_pfx _mode _dbk_source _gfx_sources)
# We depend on the docbook target to avoid parallel builds.
SET(_dbk_dep ${_target_dep}_docbook)
+ # We can pass chunker.xxx parameters to customize the chunked output.
+ # We have to use a custom layer to customize the single-page output.
+ # Set the output encoding for both to UTF-8. Indent the single-page
+ # output because we sometimes need to copy and paste the release
+ # note contents.
IF(${_mode} STREQUAL "chunked")
SET(_basedir ${_dir_pfx}_html_chunked)
- SET(_STYLESHEET "http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
- SET(_modeparams --noout)
+ SET(_stylesheet "http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
+ SET(_modeparams --stringparam chunker.output.encoding UTF-8)
ELSE() # single-page
SET(_basedir ${_dir_pfx}_html)
- SET(_STYLESHEET "http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl")
+ SET(_stylesheet custom_layer_single_html.xsl)
SET(_modeparams --output ${_basedir}/index.html)
ENDIF()
@@ -121,11 +118,6 @@ MACRO(XML2HTML _target_dep _dir_pfx _mode _dbk_source _gfx_sources)
set(_gfx_deps ${CMAKE_CURRENT_SOURCE_DIR}/${_tmpgfx})
ENDFOREACH()
-# GET_FILENAME_COMPONENT(_GFXDIR ${_gfx} ABSOLUTE)
-# GET_FILENAME_COMPONENT(_GFXDIR ${_GFXDIR} PATH)
-# GET_FILENAME_COMPONENT(_OUTDIR ${_output} PATH)
-# SET(_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/${_OUTDIR})
-
SET(_gfx_dir ${_dir_pfx}_graphics)
ADD_CUSTOM_COMMAND(
OUTPUT
@@ -148,12 +140,13 @@ MACRO(XML2HTML _target_dep _dir_pfx _mode _dbk_source _gfx_sources)
${_common_xsltproc_args}
--stringparam admon.graphics.path ${_gfx_dir}/
${_modeparams}
- ${_STYLESHEET}
+ --noout ${_stylesheet}
${_dbk_source}
DEPENDS
${_dbk_xml_deps}
${_dbk_dep}
${_gfx_deps}
+ custom_layer_single_html.xsl
)
IF(NOT WIN32)
ADD_CUSTOM_COMMAND(
@@ -166,41 +159,6 @@ MACRO(XML2HTML _target_dep _dir_pfx _mode _dbk_source _gfx_sources)
ENDIF()
ENDMACRO(XML2HTML)
-# Translate XML to FO to PDF
-#XML2PDF(
-# user-guide-a4.fo or user-guide-us.fo
-# WSUG_SOURCE
-# custom_layer_pdf.xsl
-# A4 or letter
-#)
-MACRO(XML2PDF _target_dep _output _dbk_source _stylesheet)
- # We depend on the docbook target to avoid parallel builds.
- SET(_dbk_dep ${_target_dep}_docbook)
- file(RELATIVE_PATH _img_relative_path ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
- get_docbook_xml_depends(_dbk_xml_deps "${_dbk_source}")
- ADD_CUSTOM_COMMAND(
- OUTPUT
- ${_output}
- ${_output}.fo
- COMMAND ${XSLTPROC_EXECUTABLE}
- --path "${_xsltproc_path}"
- --stringparam img.src.path ${_img_relative_path}/
- --stringparam use.id.as.filename 1
- --stringparam admon.graphics.path ${_img_relative_path}/common_graphics/
- --nonet
- --output ${_output}.fo
- ${_stylesheet}
- ${_dbk_source}
- COMMAND ${FOP_EXECUTABLE}
- ${_output}.fo
- ${_output}
- DEPENDS
- ${_dbk_xml_deps}
- ${_dbk_dep}
- ${_stylesheet}
- )
-ENDMACRO(XML2PDF)
-
# Translate XML to HHP
#XML2HHP(
# wsug or wsdg