aboutsummaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2015-08-07 18:17:04 -0700
committerGerald Combs <gerald@wireshark.org>2015-08-08 21:51:56 +0000
commit0626e766cfb029e4cf84ecab838054cfdfc7257f (patch)
tree1e1e7593c579f5a3ab05c4714243e2328f3f9c15 /cmake
parent11e5422e7194ab683b84307bbb2328df9304088d (diff)
CMake: Try to fix generated docbook dependencies.
Add custom {developer,user}_guide_docbook targets for docbook output. Make sure the HTML, PDF, and CHM outputs depend on their associated docbook target and not on the output .xml file. This keeps us from running a2x instances in parallel. Change-Id: I73b0db50ae92f62eb08ae284d498cdf2d697ac00 Reviewed-on: https://code.wireshark.org/review/9920 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'cmake')
-rw-r--r--cmake/modules/FindASCIIDOC.cmake12
-rw-r--r--cmake/modules/FindXMLLINT.cmake1
-rw-r--r--cmake/modules/FindXSLTPROC.cmake73
3 files changed, 46 insertions, 40 deletions
diff --git a/cmake/modules/FindASCIIDOC.cmake b/cmake/modules/FindASCIIDOC.cmake
index 73d29f16e6..a0d89ae62d 100644
--- a/cmake/modules/FindASCIIDOC.cmake
+++ b/cmake/modules/FindASCIIDOC.cmake
@@ -63,22 +63,26 @@ MARK_AS_ADVANCED(RUNA2X)
TO_A2X_COMPATIBLE_PATH( ${CMAKE_CURRENT_BINARY_DIR} _a2x_current_binary_dir )
-MACRO( ASCIIDOC2DOCBOOK _asciidocsource _conf_files )
+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 )
set( _output_dbk ${_source_base_name}.dbk )
- foreach(_conf_file ${_conf_files})
+ 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})
+ 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 )
ADD_CUSTOM_COMMAND(
@@ -100,6 +104,8 @@ MACRO( ASCIIDOC2DOCBOOK _asciidocsource _conf_files )
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
${_conf_deps}
+ ${_src_deps}
+ ${${_built_deps}}
)
ENDMACRO()
diff --git a/cmake/modules/FindXMLLINT.cmake b/cmake/modules/FindXMLLINT.cmake
index ccc93f38bb..aee58c80ff 100644
--- a/cmake/modules/FindXMLLINT.cmake
+++ b/cmake/modules/FindXMLLINT.cmake
@@ -47,6 +47,7 @@ else()
endif()
# Validate XML
+# XXX Unused?
MACRO(VALIDATE_XML _validated _sources)
# FIXME: How do I extract the first element of a variable containing a
# list of values? Isn't there a "cleaner" solution?
diff --git a/cmake/modules/FindXSLTPROC.cmake b/cmake/modules/FindXSLTPROC.cmake
index 2a2993ae1e..e7565eb9bc 100644
--- a/cmake/modules/FindXSLTPROC.cmake
+++ b/cmake/modules/FindXSLTPROC.cmake
@@ -72,71 +72,68 @@ endif()
# WSUG_FILES
# WSUG_GRAPHICS
#)
-MACRO(XML2HTML _guide _mode _xmlsources _gfxsources)
- SET(_validated ${_guide}.validated)
+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)
+ #SET(_validated ${_dir_pfx}.validated)
IF(${_mode} STREQUAL "chunked")
- SET(_basedir ${_guide}_html_chunked)
+ SET(_basedir ${_dir_pfx}_html_chunked)
SET(_STYLESHEET "http://docbook.sourceforge.net/release/xsl/current/xhtml5/chunk.xsl")
SET(_modeparams --stringparam html.ext .html --noout)
ELSE() # single-page
- SET(_basedir ${_guide}_html)
+ SET(_basedir ${_dir_pfx}_html)
SET(_STYLESHEET "http://docbook.sourceforge.net/release/xsl/current/xhtml5/docbook.xsl")
SET(_modeparams --output ${_basedir}/index.html)
ENDIF()
- SET(_outdir ${CMAKE_CURRENT_BINARY_DIR}/${_basedir})
+ SET(_out_dir ${CMAKE_CURRENT_BINARY_DIR}/${_basedir})
SET(_output ${_basedir}/index.html)
-# FOREACH(_tmpgfx ${${_gfxsources}})
-# set(_gfx ${_tmpgfx})
-# BREAK()
-# ENDFOREACH()
+ FOREACH(_tmpgfx ${${_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})
- FOREACH(_tmpsource ${${_xmlsources}})
- set(_source ${_tmpsource})
- BREAK()
- ENDFOREACH()
-
- SET(_gfxdir ${_guide}_graphics)
+ SET(_gfx_dir ${_dir_pfx}_graphics)
ADD_CUSTOM_COMMAND(
OUTPUT
${_output}
COMMAND ${CMAKE_COMMAND}
- -E make_directory ${_outdir}
+ -E make_directory ${_out_dir}
COMMAND ${CMAKE_COMMAND}
- -E make_directory ${_outdir}/${_gfxdir}/toolbar
+ -E make_directory ${_out_dir}/${_gfx_dir}/toolbar
COMMAND ${CMAKE_COMMAND}
- -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${_gfxdir} ${_outdir}/${_gfxdir}
+ -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${_gfx_dir} ${_out_dir}/${_gfx_dir}
COMMAND ${CMAKE_COMMAND}
- -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/common_graphics ${_outdir}/${_gfxdir}
+ -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/common_graphics ${_out_dir}/${_gfx_dir}
COMMAND ${CMAKE_COMMAND}
- -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${_gfxdir}/toolbar ${_outdir}/${_gfxdir}/toolbar
+ -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${_gfx_dir}/toolbar ${_out_dir}/${_gfx_dir}/toolbar
COMMAND ${CMAKE_COMMAND}
- -E copy ${CMAKE_CURRENT_SOURCE_DIR}/ws.css ${_outdir}
+ -E copy ${CMAKE_CURRENT_SOURCE_DIR}/ws.css ${_out_dir}
COMMAND ${XSLTPROC_EXECUTABLE}
--path "${_xsltproc_path}"
--stringparam base.dir ${_basedir}/
${_common_xsltproc_args}
- --stringparam admon.graphics.path ${_gfxdir}/
+ --stringparam admon.graphics.path ${_gfx_dir}/
${_modeparams}
${_STYLESHEET}
- ${_source}
+ ${_dbk_source}
DEPENDS
- ${_validated}
- ${${_xmlsources}}
- ${${_gfxsources}}
+ ${_dbk_dep}
+ #${_validated}
+ ${_gfx_deps}
)
IF(NOT WIN32)
ADD_CUSTOM_COMMAND(
OUTPUT
${_output}
COMMAND chmod
- -R og+rX ${_outdir}
+ -R og+rX ${_out_dir}
APPEND
)
ENDIF()
@@ -149,15 +146,13 @@ ENDMACRO(XML2HTML)
# custom_layer_pdf.xsl
# A4 or letter
#)
-MACRO(XML2PDF _output _sources _stylesheet _paper)
- FOREACH(_tmpsource ${${_sources}})
- set(_source ${_tmpsource})
- BREAK()
- ENDFOREACH()
-
+MACRO(XML2PDF _target_dep _output _dbk_source _stylesheet _paper)
+ # We depend on the docbook target to avoid parallel builds.
+ SET(_dbk_dep ${_target_dep}_docbook)
ADD_CUSTOM_COMMAND(
OUTPUT
${_output}
+ ${_output}.fo
COMMAND ${XSLTPROC_EXECUTABLE}
--path "${_xsltproc_path}"
--stringparam paper.type ${_paper}
@@ -169,12 +164,12 @@ MACRO(XML2PDF _output _sources _stylesheet _paper)
--nonet
--output ${_output}.fo
${_stylesheet}
- ${_source}
+ ${_dbk_source}
COMMAND ${FOP_EXECUTABLE}
${_output}.fo
${_output}
DEPENDS
- ${${_sources}}
+ ${_dbk_dep}
${_stylesheet}
)
ENDMACRO(XML2PDF)
@@ -184,7 +179,9 @@ ENDMACRO(XML2PDF)
# wsug or wsdg
# user-guide.xml or developer-guide.xml
#)
-MACRO(XML2HHP _guide _docbooksource)
+MACRO(XML2HHP _target_dep _guide _docbooksource)
+ # We depend on the docbook target to avoid parallel builds.
+ SET(_dbk_dep ${_target_dep}_docbook)
GET_FILENAME_COMPONENT( _source_base_name ${_docbooksource} NAME_WE )
set( _output_chm ${_source_base_name}.chm )
set( _output_hhp ${_source_base_name}.hhp )
@@ -196,6 +193,7 @@ MACRO(XML2HHP _guide _docbooksource)
ADD_CUSTOM_COMMAND(
OUTPUT
${_output_hhp}
+ ${_output_toc_hhc}
COMMAND ${CMAKE_COMMAND} -E make_directory ${_basedir}
COMMAND ${CMAKE_COMMAND} -E make_directory ${_basedir}/${_gfxdir}
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/${_gfxdir} ${_basedir}/${_gfxdir}
@@ -216,9 +214,10 @@ MACRO(XML2HHP _guide _docbooksource)
--nonet custom_layer_chm.xsl
${_docbook_plain_title}
DEPENDS
+ ${_dbk_dep}
# AsciiDoc uses UTF-8 by default, which is unsupported by HTML
# Help. We may want to render an ISO-8859-1 version, or get rid
# of HTML Help.
- ${_docbooksource}
+ custom_layer_chm.xsl
)
ENDMACRO(XML2HHP)