wireshark/docbook/CMakeLists.txt

532 lines
16 KiB
CMake

# CMakeLists.txt
#
# Wireshark - Network traffic analyzer
# By Gerald Combs <gerald@wireshark.org>
# Copyright 1998 Gerald Combs
#
# SPDX-License-Identifier: GPL-2.0-or-later
#
# To do:
# - Make the build targets top-level on Windows, similar to the NSIS,
# WiX, and PortableApps targets?
find_package( Asciidoctor 1.5 )
find_package( XSLTPROC )
function(set_docbook_target_properties _target)
set_target_properties(${_target} PROPERTIES
FOLDER "Documentation"
EXCLUDE_FROM_DEFAULT_BUILD True
)
endfunction(set_docbook_target_properties)
set(COMMON_FILES
common_src/gpl_appendix.adoc
common_src/typographic_conventions.adoc
)
set(GUIDE_INSTALL_DIRS)
set(WSUG_TITLE "Wireshark User's Guide")
set(WSUG_FILES
wsug_src/wsug_advanced.adoc
wsug_src/wsug_build_install.adoc
wsug_src/wsug_capture.adoc
wsug_src/wsug_customize.adoc
wsug_src/wsug_files.adoc
wsug_src/wsug_howitworks.adoc
wsug_src/wsug_introduction.adoc
wsug_src/wsug_io.adoc
wsug_src/wsug_mate.adoc
wsug_src/wsug_messages.adoc
wsug_src/wsug_preface.adoc
wsug_src/wsug_protocols.adoc
wsug_src/wsug_statistics.adoc
wsug_src/wsug_telephony.adoc
wsug_src/wsug_tools.adoc
wsug_src/wsug_troubleshoot.adoc
wsug_src/wsug_use.adoc
wsug_src/wsug_work.adoc
wsug_src/capinfos-h.txt
wsug_src/dumpcap-h.txt
wsug_src/editcap-F.txt
wsug_src/editcap-T.txt
wsug_src/editcap-h.txt
wsug_src/mergecap-h.txt
wsug_src/rawshark-h.txt
wsug_src/reordercap-h.txt
wsug_src/text2pcap-h.txt
wsug_src/tshark-h.txt
wsug_src/wireshark-h.txt
${COMMON_FILES}
)
# Note: Images should be minimized using tools/compress-pngs.py.
set(WSUG_GRAPHICS
wsug_src/images/caution.svg
wsug_src/images/important.svg
wsug_src/images/note.svg
wsug_src/images/related-ack.png
wsug_src/images/related-current.png
wsug_src/images/related-dup-ack.png
wsug_src/images/related-first.png
wsug_src/images/related-last.png
wsug_src/images/related-other.png
wsug_src/images/related-request.png
wsug_src/images/related-response.png
wsug_src/images/related-segment.png
wsug_src/images/tip.svg
wsug_src/images/toolbar/document-open.png
wsug_src/images/toolbar/edit-find.png
wsug_src/images/toolbar/filter-toolbar-add.png
wsug_src/images/toolbar/filter-toolbar-apply.png
wsug_src/images/toolbar/filter-toolbar-bookmark.png
wsug_src/images/toolbar/filter-toolbar-clear.png
wsug_src/images/toolbar/filter-toolbar-input.png
wsug_src/images/toolbar/filter-toolbar-recent.png
wsug_src/images/toolbar/go-first.png
wsug_src/images/toolbar/go-jump.png
wsug_src/images/toolbar/go-last.png
wsug_src/images/toolbar/go-next.png
wsug_src/images/toolbar/go-previous.png
wsug_src/images/toolbar/x-capture-file-close.png
wsug_src/images/toolbar/x-capture-file-reload.png
wsug_src/images/toolbar/x-capture-file-save.png
wsug_src/images/toolbar/x-capture-options.png
wsug_src/images/toolbar/x-capture-restart.png
wsug_src/images/toolbar/x-capture-start.png
wsug_src/images/toolbar/x-capture-stop.png
wsug_src/images/toolbar/x-colorize-packets.png
wsug_src/images/toolbar/x-resize-columns.png
wsug_src/images/toolbar/x-stay-last.png
wsug_src/images/toolbar/zoom-in.png
wsug_src/images/toolbar/zoom-original.png
wsug_src/images/toolbar/zoom-out.png
wsug_src/images/warning.svg
wsug_src/images/ws-about-codecs.png
wsug_src/images/ws-analyze-menu.png
wsug_src/images/ws-bytes-pane-popup-menu.png
wsug_src/images/ws-bytes-pane-tabs.png
wsug_src/images/ws-bytes-pane.png
wsug_src/images/ws-capture-file-properties.png
wsug_src/images/ws-capture-info.png
wsug_src/images/ws-capture-interfaces-main-macos.png
wsug_src/images/ws-capture-interfaces-main-win32.png
wsug_src/images/ws-capture-menu.png
wsug_src/images/ws-capture-options-compile-selected-bpfs.png
wsug_src/images/ws-capture-options-options.png
wsug_src/images/ws-capture-options-output.png
wsug_src/images/ws-capture-options-output.png
wsug_src/images/ws-capture-options.png
wsug_src/images/ws-choose-color-rule.png
wsug_src/images/ws-coloring-fields.png
wsug_src/images/ws-coloring-rules-dialog.png
wsug_src/images/ws-column-header-popup-menu.png
wsug_src/images/ws-decode-as.png
wsug_src/images/ws-details-pane-popup-menu.png
wsug_src/images/ws-details-pane.png
wsug_src/images/ws-diagram-pane-popup-menu.png
wsug_src/images/ws-diagram-pane.png
wsug_src/images/ws-display-filter-tcp.png # GTK+
wsug_src/images/ws-edit-menu.png
wsug_src/images/ws-enabled-protocols.png
wsug_src/images/ws-expert-colored-tree.png
wsug_src/images/ws-expert-column.png
wsug_src/images/ws-expert-information.png
wsug_src/images/ws-export-objects.png
wsug_src/images/ws-export-packet-dissections.png
wsug_src/images/ws-export-selected.png
wsug_src/images/ws-export-specified-packets.png
wsug_src/images/ws-file-import.png
wsug_src/images/ws-file-menu.png
wsug_src/images/ws-file-set-dialog.png # GTK+
wsug_src/images/ws-filter-add-expression.png # GTK+
wsug_src/images/ws-filter-toolbar.png
wsug_src/images/ws-filters.png # GTK+
wsug_src/images/ws-find-packet.png
wsug_src/images/ws-follow-http2-stream.png
wsug_src/images/ws-follow-sip-stream.png
wsug_src/images/ws-follow-stream.png
wsug_src/images/ws-go-menu.png
wsug_src/images/ws-goto-packet.png
wsug_src/images/ws-gui-preferences-advanced.png
wsug_src/images/ws-gui-preferences.png
wsug_src/images/ws-help-menu.png
wsug_src/images/ws-list-pane.png # Outdated
wsug_src/images/ws-main-toolbar.png
wsug_src/images/ws-main.png
wsug_src/images/ws-manage-interfaces.png
wsug_src/images/ws-mate-analysis.png
wsug_src/images/ws-mate-dns_pane.png
wsug_src/images/ws-mate-dns_pdu.png
wsug_src/images/ws-mate-ftp_over_gre.png
wsug_src/images/ws-mate-gop_analysis.png
wsug_src/images/ws-mate-isup_over_mtp3_over_ip.png
wsug_src/images/ws-mate-mmse_over_http.png
wsug_src/images/ws-mate-pdu_analysis.png
wsug_src/images/ws-mate-tcp-output.png
wsug_src/images/ws-mate-transform.png
wsug_src/images/ws-menu.png
wsug_src/images/ws-merge-qt5.png
wsug_src/images/ws-merge-win32.png
wsug_src/images/ws-open-qt5.png
wsug_src/images/ws-open-win32.png
wsug_src/images/ws-packet-format.png
wsug_src/images/ws-packet-pane-popup-menu.png
wsug_src/images/ws-packet-range.png
wsug_src/images/ws-packet-selected.png
wsug_src/images/ws-packet-sep-win.png
wsug_src/images/ws-print.png
wsug_src/images/ws-save-as-qt5.png
wsug_src/images/ws-save-as-win32.png
wsug_src/images/ws-statistics-menu.png
wsug_src/images/ws-stats-conversations.png
wsug_src/images/ws-stats-endpoints.png
wsug_src/images/ws-stats-hierarchy.png
wsug_src/images/ws-stats-iographs.png
wsug_src/images/ws-stats-lte-mac-traffic.png
wsug_src/images/ws-stats-lte-rlc-traffic.png
wsug_src/images/ws-stats-packet-lengths.png
wsug_src/images/ws-stats-srt-smb2.png
wsug_src/images/ws-stats-wlan-traffic.png # GTK+
wsug_src/images/ws-statusbar-empty.png
wsug_src/images/ws-statusbar-filter.png
wsug_src/images/ws-statusbar-loaded.png
wsug_src/images/ws-statusbar-profile.png
wsug_src/images/ws-statusbar-selected.png
wsug_src/images/ws-tcp-analysis.png
wsug_src/images/ws-tel-playlist.png
wsug_src/images/ws-tel-rtp-player_1.png
wsug_src/images/ws-tel-rtp-player_2.png
wsug_src/images/ws-tel-rtp-player_3.png
wsug_src/images/ws-tel-rtp-player_button.png
wsug_src/images/ws-tel-rtp-streams.png
wsug_src/images/ws-tel-rtpstream-analysis_1.png
wsug_src/images/ws-tel-rtpstream-analysis_2.png
wsug_src/images/ws-tel-rtpstream-analysis_3.png
wsug_src/images/ws-tel-seq-dialog.png
wsug_src/images/ws-tel-voip-calls.png
wsug_src/images/ws-telephony-menu.png
wsug_src/images/ws-time-reference.png # GTK+
wsug_src/images/ws-tools-menu.png
wsug_src/images/ws-view-menu.png
)
set(WSDG_TITLE "Wireshark Developer's Guide")
set(WSDG_FILES
wsdg_src/wsdg_asn2wrs.adoc
wsdg_src/wsdg_build_intro.adoc
wsdg_src/wsdg_capture.adoc
wsdg_src/wsdg_dissection.adoc
wsdg_src/wsdg_env_intro.adoc
wsdg_src/wsdg_libraries.adoc
wsdg_src/wsdg_lua_support.adoc
wsdg_src/wsdg_preface.adoc
wsdg_src/wsdg_quick_setup.adoc
wsdg_src/wsdg_sources.adoc
wsdg_src/wsdg_tests.adoc
wsdg_src/wsdg_tools.adoc
wsdg_src/wsdg_userinterface.adoc
wsdg_src/wsdg_works.adoc
${COMMON_FILES}
)
set(WSDG_GRAPHICS
wsdg_src/images/caution.svg
wsdg_src/images/git-triangular-workflow.gv
wsdg_src/images/git-triangular-workflow.svg
wsdg_src/images/important.svg
wsdg_src/images/note.svg
wsdg_src/images/tip.svg
wsdg_src/images/warning.svg
wsdg_src/images/ws-capture_internals.dia
wsdg_src/images/ws-capture_internals.png
wsdg_src/images/ws-capture-sync.dia
wsdg_src/images/ws-capture-sync.png
wsdg_src/images/ws-capture-sync.png
wsdg_src/images/ws-function-blocks.dia
wsdg_src/images/ws-function-blocks.png
wsdg_src/images/ws-logo.png
)
set(WSUG_SOURCE
${WSUG_FILES}
${WSUG_GRAPHICS}
)
# Ensure ws.css is available when the user tries to open generated .html files.
if(NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
add_custom_command(
OUTPUT ws.css
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_SOURCE_DIR}/ws.css
${CMAKE_CURRENT_BINARY_DIR}/ws.css
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/ws.css
)
add_custom_target(copy_ws.css DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/ws.css)
else()
add_custom_target(copy_ws.css)
endif()
set( WSUG_BUILT_DEPS copy_ws.css)
set(WSDG_SOURCE
${WSDG_FILES}
${WSDG_GRAPHICS}
)
# Note: file order here MATTERS!
# new WSLUA_MODULE files must come right before any WSLUA_CONTINUE_MODULE
# files for the same module
set(WSLUA_MODULES
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_dumper.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_field.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_gui.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_int64.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_listener.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_pinfo.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_address.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_column.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_nstime.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_proto.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_dissector.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_pref.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_proto_expert.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_proto_field.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_tree.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_tvb.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_byte_array.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_file.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_file_handler.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_frame_info.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_capture_info.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_dir.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_wtap.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_utility.c
${CMAKE_SOURCE_DIR}/epan/wslua/wslua_struct.c
)
# Empty file to trigger wsluarm generation.
ADD_CUSTOM_COMMAND(
OUTPUT
wsluarm
COMMAND ${CMAKE_COMMAND} -E make_directory wsluarm_src
COMMAND ${PYTHON_EXECUTABLE}
${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.py
--output-directory wsluarm_src
${WSLUA_MODULES}
COMMAND ${CMAKE_COMMAND} -E touch
wsluarm
DEPENDS
${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.py
${WSLUA_MODULES}
)
set( WSDG_BUILT_DEPS copy_ws.css wsluarm )
set( ASCIIDOC_CONF_FILES
attributes.adoc
# XXX Add macros
)
if(ASCIIDOCTOR_FOUND)
# Generate the DocBook sources of user and developer guides
ASCIIDOCTOR2DOCBOOK(wsug_src/user-guide.adoc ${ASCIIDOC_CONF_FILES} ${WSUG_SOURCE} ${WSUG_BUILT_DEPS})
add_custom_target(user_guide_docbook DEPENDS generate_user-guide.xml)
set_docbook_target_properties(user_guide_docbook)
ASCIIDOCTOR2DOCBOOK(wsdg_src/developer-guide.adoc ${ASCIIDOC_CONF_FILES} ${WSDG_SOURCE} ${WSDG_BUILT_DEPS})
add_custom_target(developer_guide_docbook DEPENDS generate_developer-guide.xml)
set_docbook_target_properties(developer_guide_docbook)
# Top-level guide targets.
add_custom_target(user_guides DEPENDS user_guide_docbook)
set_docbook_target_properties(user_guides)
add_custom_target(developer_guides DEPENDS developer_guide_docbook)
set_docbook_target_properties(developer_guides)
add_custom_target(all_guides DEPENDS user_guides developer_guides )
set_docbook_target_properties(all_guides)
endif()
# User's Guide chain.
if(ASCIIDOCTOR_FOUND AND XSLTPROC_EXECUTABLE)
XML2HTML(
user_guide
wsug
single-page
user-guide.xml
WSUG_GRAPHICS
)
XML2HTML(
user_guide
wsug
chunked
user-guide.xml
WSUG_GRAPHICS
)
add_custom_target(
user_guide_html
DEPENDS
wsug_html/index.html
wsug_html_chunked/index.html
)
set_docbook_target_properties(user_guide_html)
add_dependencies(user_guides user_guide_html)
list(APPEND GUIDE_INSTALL_DIRS ${CMAKE_CURRENT_BINARY_DIR}/wsug_html_chunked)
endif()
if(ASCIIDOCTOR_FOUND AND ASCIIDOCTOR_PDF_EXECUTABLE)
ASCIIDOCTOR2PDF(${WSUG_TITLE} wsug_src/user-guide.adoc ${WSUG_SOURCE} ${WSUG_BUILT_DEPS})
add_custom_target(
user_guide_pdf
DEPENDS
"${WSUG_TITLE}.pdf"
)
set_docbook_target_properties(user_guide_pdf)
add_dependencies(user_guides user_guide_pdf)
endif()
if(ASCIIDOCTOR_FOUND AND ASCIIDOCTOR_EPUB_EXECUTABLE)
ASCIIDOCTOR2EPUB(${WSUG_TITLE} wsug_src/user-guide.adoc ${WSUG_SOURCE} ${WSUG_BUILT_DEPS})
add_custom_target(
user_guide_epub
DEPENDS
"${WSUG_TITLE}.epub"
)
set_docbook_target_properties(user_guide_epub)
add_dependencies(user_guides user_guide_epub)
endif()
# Developer's Guide chain.
if(ASCIIDOCTOR_FOUND AND XSLTPROC_EXECUTABLE)
XML2HTML(
developer_guide
wsdg
single-page
developer-guide.xml
WSDG_GRAPHICS
)
XML2HTML(
developer_guide
wsdg
chunked
developer-guide.xml
WSDG_GRAPHICS
)
add_custom_target(
developer_guide_html
DEPENDS
wsdg_html/index.html
wsdg_html_chunked/index.html
)
set_docbook_target_properties(developer_guide_html)
add_dependencies(developer_guides developer_guide_html)
list(APPEND GUIDE_INSTALL_DIRS ${CMAKE_CURRENT_BINARY_DIR}/wsdg_html_chunked)
endif()
if(ASCIIDOCTOR_FOUND AND ASCIIDOCTOR_PDF_EXECUTABLE)
ASCIIDOCTOR2PDF(${WSDG_TITLE} wsdg_src/developer-guide.adoc ${WSDG_SOURCE} ${WSDG_BUILT_DEPS})
add_custom_target(
developer_guide_pdf
DEPENDS
"${WSDG_TITLE}.pdf"
)
set_docbook_target_properties(developer_guide_pdf)
add_dependencies(developer_guides developer_guide_pdf)
endif()
if(ASCIIDOCTOR_FOUND AND ASCIIDOCTOR_EPUB_EXECUTABLE)
ASCIIDOCTOR2EPUB(${WSDG_TITLE} wsdg_src/developer-guide.adoc ${WSDG_SOURCE} ${WSDG_BUILT_DEPS})
add_custom_target(
developer_guide_epub
DEPENDS
"${WSDG_TITLE}.epub"
)
set_docbook_target_properties(developer_guide_epub)
add_dependencies(developer_guides developer_guide_epub)
endif()
if (GUIDE_INSTALL_DIRS)
# The installation location and DOC_DIR in ui/help_url.c must
# match.
add_custom_target(install_guides
COMMAND ${CMAKE_COMMAND} -P
${CMAKE_SOURCE_DIR}/cmake/modules/FileInstall.cmake
${GUIDE_INSTALL_DIRS}
${CMAKE_INSTALL_FULL_DOCDIR}
DEPENDS
user_guide_html developer_guide_html
)
set_docbook_target_properties(install_guides)
endif()
# release_notes: release-notes.html release-notes.txt
add_custom_target( release_notes_html DEPENDS release-notes.html )
set_docbook_target_properties(release_notes_html)
add_custom_target( release_notes_txt DEPENDS release-notes.txt )
set_docbook_target_properties(release_notes_txt)
# Force serial execution so that separate asciidoctor instances don't
# trip on each other
# add_dependencies ( release_notes_txt release_notes_html )
add_custom_target( release_notes )
set_docbook_target_properties(release_notes)
add_dependencies ( release_notes release_notes_txt release_notes_html )
add_custom_target(
news
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_BINARY_DIR}/release-notes.txt
${CMAKE_SOURCE_DIR}/NEWS
DEPENDS
${CMAKE_CURRENT_BINARY_DIR}/release-notes.txt
)
set_docbook_target_properties(news)
if( ASCIIDOCTOR_FOUND )
ASCIIDOCTOR2HTML( release-notes.adoc )
ASCIIDOCTOR2TXT( release-notes.adoc )
endif()
# FAQ
add_custom_target( faq_html DEPENDS faq.html )
set_docbook_target_properties(faq_html)
add_custom_target( faq )
set_docbook_target_properties(faq)
add_dependencies ( faq faq_html )
if( ASCIIDOCTOR_FOUND )
ASCIIDOCTOR2HTML( faq.adoc )
endif()
#
# Editor modelines - https://www.wireshark.org/tools/modelines.html
#
# Local variables:
# c-basic-offset: 8
# tab-width: 8
# indent-tabs-mode: t
# End:
#
# vi: set shiftwidth=8 tabstop=8 noexpandtab:
# :indentSize=8:tabSize=8:noTabs=false:
#