Almost working out-of-tree builds for the documentation,

with a few hacks right now:
- The tip.png, warning.png and note.png images are missing from the
  pdfs and I have no idea how to tell fop how to find them.
- Disabling/enabling building the guides via option currently doesn't
  work (probably too many macros :-), so comment out the subdir instead.
- Right now, in order to build the devleopers guide we need to do the
  following in the source docbook directory:
  touch wsdg_graphics/toolbar/dummy.dummy

Apart from these: The build works with a pristine docbook dir
(svn status --no-ignore).

svn path=/trunk/; revision=32004
This commit is contained in:
Jörg Mayer 2010-02-25 12:30:44 +00:00
parent 480582e8e9
commit 914983a0dc
6 changed files with 183 additions and 163 deletions

View File

@ -24,6 +24,7 @@
project(Wireshark C)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_BACKWARDS_COMPATIBILITY 2.6)
#Where to find local cmake scripts
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
@ -69,10 +70,11 @@ option(AUTOGEN_pidl "Autogenerate pidl dissectors" OFF)
option(DISABLE_WERROR "Do not treat Warnings as errors" OFF)
option(ENABLE_EXTRA_GCC_CHECKS "Do additional -W checks in GCC (disables -Werror)" OFF)
option(ENABLE_AIRPCAP "Enable Airpcap support" ON)
# todo
option(ENABLE_STATIC "Build a static version of Wireshark (not yet working)" OFF)
option(ENABLE_PLUGINS "Build with plugins" ON)
# todo
option(ENABLE_GUIDES "Build Guides (not yet implemented)" OFF)
option(ENABLE_GUIDES "Build Guides" ON)
option(ENABLE_ADNS "Build with adns support" ON)
option(ENABLE_PCRE "Build with pcre support" ON)
@ -355,9 +357,12 @@ add_subdirectory( wiretap )
add_subdirectory( wsutil )
if(ENABLE_GUIDES)
add_subdirectory( docbook )
# FIXME: Disabling the build via option currently doesn't work
# add_subdirectory( docbook )
endif()
find_package(POD)
#Platform specific
if(UNIX)
set(WS_VAR_IMPORT "extern")
@ -805,8 +810,6 @@ ADD_CUSTOM_COMMAND(
tshark
)
find_package(POD)
pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/capinfos 1 )
pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dumpcap 1 )
pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/editcap 1 )

View File

@ -21,5 +21,9 @@ FIND_PROGRAM(FOP_EXECUTABLE
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)

View File

@ -32,7 +32,7 @@ FIND_PROGRAM(POD2HTML_EXECUTABLE
# handle the QUIETLY and REQUIRED arguments and set POD2HTML_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(POD2HTML DEFAULT_MSG POD2MAN_EXECUTABLE POD2HTML_EXECUTABLE)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(POD DEFAULT_MSG POD2MAN_EXECUTABLE POD2HTML_EXECUTABLE)
MARK_AS_ADVANCED(
POD2MAN_EXECUTABLE

View File

@ -25,24 +25,25 @@ MARK_AS_ADVANCED(XMLLINT_EXECUTABLE)
# Validate XML
MACRO(VALIDATE_XML _validated _sources)
message(STATUS "Source(s): ${${_sources}}")
# FIXME: How do I extract the first element of a variable containing a
# list of values? Isn't there a "cleaner" solution?
FOREACH(_source ${${_sources}})
# Oh, and I have no idea why I can't directly use _source instead of
# having to introduce _tmpsource.
FOREACH(_tmpsource ${${_sources}})
set(_source ${_tmpsource})
BREAK()
ENDFOREACH()
ADD_CUSTOM_COMMAND(
OUTPUT
${CMAKE_CURRENT_BINARY_DIR}/${_validated}
COMMAND ${XMLLINT_EXECUTABLE}
OUTPUT
${_validated}
COMMAND ${XMLLINT_EXECUTABLE}
--path "${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_BINARY_DIR}/wsluarm_src"
--valid
--noout
--path "${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_SOURCE_DIR}"
${_source}
COMMAND touch
${CMAKE_CURRENT_BINARY_DIR}/${_validated}
DEPENDS
${_source}
svn_version.xml
${_source}
COMMAND touch
${_validated}
DEPENDS
${${_sources}}
)
ENDMACRO(VALIDATE_XML)

View File

@ -25,91 +25,109 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(XSLTPROC DEFAULT_MSG XSLTPROC_EXECUTABLE)
MARK_AS_ADVANCED(XSLTPROC_EXECUTABLE)
#XML2HTML(
# wsug.validated
# wsug_html/user-guide.html
# single-page
# wsug_html
# WSUG_SOURCE
# WSUG_GFX_SOURCE
#)
# Translate xml to html
#XML2HTML(
# wsug.validated
# wsug_html/user-guide.html or wsub_html/index.html
# single-page or chunked
# WSUG_FILES
# WSUG_GRAPHICS
#)
MACRO(XML2HTML _validated _output _mode _xmlsources _gfxsources)
MESSAGE(STATUS "XML source(s): ${${_xmlsources}}")
MESSAGE(STATUS "GFX source(s): ${${_gfxsources}}")
FOREACH(_tmpgfx ${${_gfxsources}})
set(_gfx ${_tmpgfx})
BREAK()
ENDFOREACH()
GET_FILENAME_COMPONENT(_GFXDIR ${_gfx} PATH)
GET_FILENAME_COMPONENT(_OUTDIR ${_output} PATH)
SET(_OUTDIR ${CMAKE_CURRENT_BINARY_DIR}/${_OUTDIR})
IF(${_mode} STREQUAL "chunked")
SET(_STYLESHEET "http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl")
ELSE() # single-page
SET(_STYLESHEET "http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl")
ENDIF()
# FIXME: How do I extract the first element of a variable containing a
# list of values? Isn't there a "cleaner" solution?
# Oh, and I have no idea why I can't directly use _source instead of
# having to introduce _tmpsource.
FOREACH(_tmpsource ${${_xmlsources}})
set(_source ${_tmpsource})
BREAK()
ENDFOREACH()
ADD_CUSTOM_COMMAND(
OUTPUT
${_output}
COMMAND
cmake -E make_directory ${_OUTDIR}
COMMAND
cmake -E copy ${${_gfxsources}} ${_OUTDIR}
COMMAND
cmake -E copy ws.css ${_OUTDIR}
# Fixme: find out about subdirs (i.e. toolbar) automatically
# so this works for wsdg as well.
COMMAND cmake
-E make_directory ${_OUTDIR}/${_GFXDIR}/toolbar
COMMAND cp
${CMAKE_CURRENT_SOURCE_DIR}/${_GFXDIR}/*.* ${_OUTDIR}/${_GFXDIR}/
COMMAND cp
${CMAKE_CURRENT_SOURCE_DIR}/${_GFXDIR}/toolbar/*.* ${_OUTDIR}/${_GFXDIR}/toolbar/
COMMAND cmake
-E copy ${CMAKE_CURRENT_SOURCE_DIR}/ws.css ${_OUTDIR}
COMMAND ${XSLTPROC_EXECUTABLE}
--path "${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_BINARY_DIR}/wsluarm_src"
--stringparam base.dir ${_OUTDIR}/
--stringparam use.id.as.filename 1
--stringparam admon.graphics 1
--stringparam admon.graphics.path ${_GFXDIR}/
--stringparam section.autolabel 1
--stringparam section.label.includes.component.label 1
--stringparam html.stylesheet ws.css
--nonet
--output ${_output}
${_STYLESHEET}
${_source}
COMMAND chmod
-R og+rX ${_OUTDIR}
DEPENDS
${_validated}
${${_xmlsources}}
${${_gfxsources}}
)
# mkdir -p wsug_html/wsug_graphics/toolbar
# cp wsug_graphics/*.* wsug_html/wsug_graphics
# cp wsug_graphics/toolbar/* wsug_html/wsug_graphics/toolbar
# cp ws.css wsug_html
# mkdir -p wsug_html_chunked/wsug_graphics/toolbar
# cp wsug_graphics/*.* wsug_html_chunked/wsug_graphics
# cp wsug_graphics/toolbar/* wsug_html_chunked/wsug_graphics/toolbar
# cp ws.css wsug_html_chunked
ENDMACRO(XML2HTML)
#wsug_html/user-guide.html: $(WSUG_SOURCE)
# @ echo --- WSUG - HTML SINGLE PAGE ---
# mkdir -p wsug_html/wsug_graphics/toolbar
# cp wsug_graphics/*.* wsug_html/wsug_graphics
# cp wsug_graphics/toolbar/* wsug_html/wsug_graphics/toolbar
# cp ws.css wsug_html
# $(XSLTPROC) --stringparam base.dir wsug_html/ --stringparam use.id.as.filename 1 --stringparam admon.graphics 1 --stringparam admon.graphics.path wsug_graphics/ --stringparam section.autolabel 1 --stringparam section.label.includes.component.label 1 --stringparam html.stylesheet ws.css --nonet http://docbook.sourceforge.net/release/xsl/current/html/docbook.xsl $< > $@
# -chmod -R og+rX wsug_html
#
#wsug_html_chunked/index.html: $(WSUG_SOURCE)
# @ echo --- WSUG - HTML CHUNKED ---
# mkdir -p wsug_html_chunked/wsug_graphics/toolbar
# cp wsug_graphics/*.* wsug_html_chunked/wsug_graphics
# cp wsug_graphics/toolbar/* wsug_html_chunked/wsug_graphics/toolbar
# cp ws.css wsug_html_chunked
# $(XSLTPROC) --stringparam base.dir wsug_html_chunked/ --stringparam use.id.as.filename 1 --stringparam admon.graphics 1 --stringparam admon.graphics.path wsug_graphics/ --stringparam section.autolabel 1 --stringparam section.label.includes.component.label 1 --stringparam html.stylesheet ws.css --nonet http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl $<
# -chmod -R og+rX wsug_html_chunked
#XML2PDF(
# WSUG_SOURCE
# custom_layer_pdf.xsl
# A4
#)
#
#XML2PDF(
# WSUG_SOURCE
# custom_layer_pdf.xsl
# letter
# user-guide-a4.fo or user-guide-us.fo
# WSUG_SOURCE
# custom_layer_pdf.xsl
# A4 or letter
#)
MACRO(XML2PDF _output _sources _stylesheet _paper)
# FIXME: How do I extract the first element of a variable containing a
# list of values? Isn't there a "cleaner" solution?
# Oh, and I have no idea why I can't directly use _source instead of
# having to introduce _tmpsource.
FOREACH(_tmpsource ${${_sources}})
set(_source ${_tmpsource})
BREAK()
ENDFOREACH()
#user-guide-us.fo: $(WSUG_SOURCE) custom_layer_pdf.xsl
#ifdef FOP
# @ echo --- WSUG - PDF US PAPER ---
# $(XSLTPROC) --stringparam paper.type letter --nonet custom_layer_pdf.xsl $< > $@
#endif
#
## create pdf file (through XSL-FO), portrait pages on A4 paper
## you will get lot's of errors, but that's ok
#user-guide-a4.fo: $(WSUG_SOURCE) custom_layer_pdf.xsl
#ifdef FOP
# @ echo --- WSUG - PDF A4 PAPER ---
# $(XSLTPROC) --stringparam paper.type A4 --nonet custom_layer_pdf.xsl $< > $@
#endif
ADD_CUSTOM_COMMAND(
OUTPUT
${_output}
COMMAND ${XSLTPROC_EXECUTABLE}
--path "${CMAKE_CURRENT_SOURCE_DIR}:${CMAKE_CURRENT_BINARY_DIR}:${CMAKE_CURRENT_BINARY_DIR}/wsluarm_src"
--stringparam paper.type ${_paper}
--nonet
--output ${_output}.fo
${_stylesheet}
${_source}
# FIXME: The images for tip, warning and note (and maybe more of those)
# are not found by fop. I have no idea why "system" images don't work
# the way other images work.
COMMAND ${FOP_EXECUTABLE}
${_output}.fo
${_output}
DEPENDS
${${_sources}}
${_stylesheet}
)
ENDMACRO(XML2PDF)

View File

@ -233,7 +233,7 @@ set(WSLUA_MODULES
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_util.c
)
find_package( FOP )
find_package( FOP ) # Call before XSLTPROC
find_package( LYNX )
find_package( XSLTPROC )
find_package( XMLLINT )
@ -248,13 +248,13 @@ ADD_CUSTOM_COMMAND(
)
add_custom_target(
guides ALL
user_guides ALL
DEPENDS
wsug.validated
# wsug_html_chunked
# user-guide.html
# user-guide-a4.pdf
# user-guide-us.pdf
wsluarm
wsug_html_chunked/index.html
wsug_html/user-guide.html
user-guide-a4.pdf
user-guide-us.pdf
)
VALIDATE_XML(
@ -266,43 +266,84 @@ XML2HTML(
wsug.validated
wsug_html/user-guide.html
single-page
WSUG_FILES
WSUG_SOURCE
WSUG_GRAPHICS
)
#XML2HTML(
# wsug.validated
# wsug_html_chunked/index.html
# chunked
# wsug_html_chunked
# WSUG_FILES
# WSUG_GRAPHICS
#)
#
#XML2PDF(
# WSUG_SOURCE
# custom_layer_pdf.xsl
# A4
#)
#
#XML2PDF(
# WSUG_SOURCE
# custom_layer_pdf.xsl
# letter
#)
XML2HTML(
wsug.validated
wsug_html_chunked/index.html
chunked
WSUG_SOURCE
WSUG_GRAPHICS
)
# wsdg: wsdg_html_chunked developer-guide.html developer-guide-a4.pdf developer-guide-us.pdf
XML2PDF(
user-guide-a4.pdf
WSUG_SOURCE
custom_layer_pdf.xsl
A4
)
# ...
XML2PDF(
user-guide-us.pdf
WSUG_SOURCE
custom_layer_pdf.xsl
letter
)
add_custom_target(
developer_guides ALL
DEPENDS
wsluarm
wsdg_html_chunked/index.html
wsdg_html/developer-guide.html
developer-guide-a4.pdf
developer-guide-us.pdf
)
VALIDATE_XML(
wsdg.validated
WSDG_SOURCE
)
XML2HTML(
wsdg.validated
wsdg_html/developer-guide.html
single-page
WSDG_SOURCE
WSDG_GRAPHICS
)
XML2HTML(
wsdg.validated
wsdg_html_chunked/index.html
chunked
WSDG_SOURCE
WSDG_GRAPHICS
)
XML2PDF(
developer-guide-a4.pdf
WSDG_SOURCE
custom_layer_pdf.xsl
A4
)
XML2PDF(
developer-guide-us.pdf
WSDG_SOURCE
custom_layer_pdf.xsl
letter
)
# release_notes: release-notes.html release-notes.txt release-notes-a4.pdf release-notes-us.pdf
# ...
# wsluarm
ADD_CUSTOM_COMMAND(
OUTPUT
wsluarm
COMMAND cmake -E make_directory wsluarm_src
COMMAND ${PERL_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.pl
${WSLUA_MODULES}
@ -312,51 +353,4 @@ ADD_CUSTOM_COMMAND(
${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.pl
${WSLUA_MODULES}
)
# ...
# make-taps.pl depends on the current working directory
# to find the dissector files (contents of taps file
# depend on this actually, so just changing the paths
# in these lists won't help).
#ADD_CUSTOM_COMMAND(
# OUTPUT
# ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c
# ${CMAKE_CURRENT_BINARY_DIR}/taps.txt
# COMMAND ${PERL_EXECUTABLE}
# ${CMAKE_CURRENT_SOURCE_DIR}/make-taps.pl
# ${CMAKE_CURRENT_SOURCE_DIR}/taps
# ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c
# ${CMAKE_CURRENT_BINARY_DIR}/taps.txt
# WORKING_DIRECTORY
# ${CMAKE_CURRENT_SOURCE_DIR}
# DEPENDS
# ${CMAKE_CURRENT_SOURCE_DIR}/taps
# ${CMAKE_CURRENT_SOURCE_DIR}/make-taps.pl
# # Only here to add dependencies for the taps "source"files
# ${WSLUA_TAPS_USED}
#)
#ADD_CUSTOM_COMMAND(
# OUTPUT
# declare_wslua.h
# register_wslua.c
# COMMAND ${PERL_EXECUTABLE}
# ${CMAKE_CURRENT_SOURCE_DIR}/make-reg.pl
# ${WSLUA_MODULES}
# DEPENDS
# ${CMAKE_CURRENT_SOURCE_DIR}/make-reg.pl
# ${WSLUA_MODULES}
# # ${CMAKE_CURRENT_BINARY_DIR}/taps_wslua.c
#)
#
#install(
# FILES
# console.lua
# dtd_gen.lua
# ${CMAKE_CURRENT_BINARY_DIR}/init.lua
# DESTINATION
# ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
#)