WSUG: Convert ``Files'' to AsciiDoc.
[metze/wireshark/wip.git] / docbook / CMakeLists.txt
1 # CMakeLists.txt
2 #
3 # Wireshark - Network traffic analyzer
4 # By Gerald Combs <gerald@wireshark.org>
5 # Copyright 1998 Gerald Combs
6 #
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
11 #
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #
21
22 find_package( FOP ) # Call before XSLTPROC
23 find_package( LYNX )
24 find_package( XSLTPROC )
25 find_package( XMLLINT )
26 find_package( ASCIIDOC )
27
28 set(COMMON_GRAPHICS
29         common_graphics/note.svg
30         common_graphics/tip.svg
31         common_graphics/warning.svg
32 )
33
34 set(WSUG_FILES
35         WSUG_app_files.xml
36         wsug_src/WSUG_app_howitworks.xml
37         wsug_src/WSUG_app_messages.xml
38         wsug_src/WSUG_app_protocols.xml
39         wsug_src/WSUG_app_tools.xml
40         WSUG_chapter_advanced.xml
41         WSUG_chapter_build_install.xml
42         WSUG_chapter_capture.xml
43         WSUG_chapter_customize.xml
44         WSUG_chapter_introduction.xml
45         WSUG_chapter_io.xml
46         WSUG_chapter_statistics.xml
47         WSUG_chapter_telephony.xml
48         wsug_src/WSUG_chapter_troubleshoot.xml
49         WSUG_chapter_use.xml
50         WSUG_chapter_work.xml
51         wsug_src/WSUG_meta_info.xml
52         WSUG_preface.xml
53         ws.css
54 )
55
56 set(WSDG_ASCIIDOC_FILES
57         wsug_src/WSUG_app_files.asciidoc
58         wsug_src/WSUG_chapter_advanced.asciidoc
59         wsug_src/WSUG_chapter_build_install.asciidoc
60         wsug_src/WSUG_chapter_capture.asciidoc
61         wsug_src/WSUG_chapter_customize.asciidoc
62         wsug_src/WSUG_chapter_introduction.asciidoc
63         wsug_src/WSUG_chapter_io.asciidoc
64         wsug_src/WSUG_chapter_statistics.asciidoc
65         wsug_src/WSUG_chapter_telephony.asciidoc
66         wsug_src/WSUG_chapter_use.asciidoc
67         wsug_src/WSUG_chapter_work.asciidoc
68         wsug_src/WSUG_preface.asciidoc
69         wsluarm.asciidoc
70 )
71
72 set(WSUG_GRAPHICS
73         wsug_graphics/ws-analyze-menu.png
74         wsug_graphics/ws-bytes-pane-tabs.png
75         wsug_graphics/ws-bytes-pane.png
76         wsug_graphics/ws-capture-info.png
77         wsug_graphics/ws-capture-interfaces.png
78         wsug_graphics/ws-capture-interfaces-win32.png
79         wsug_graphics/ws-capture-menu.png
80         wsug_graphics/ws-capture-options.png
81         wsug_graphics/ws-capture-options-remote-capture.png
82         wsug_graphics/ws-capture-options-remote-interface.png
83         wsug_graphics/ws-capture-options-remote-settings.png
84         wsug_graphics/ws-capture-preferences.png
85         wsug_graphics/ws-choose-color-rule.png
86         wsug_graphics/ws-coloring-fields.png
87         wsug_graphics/ws-coloring-rules-dialog.png
88         wsug_graphics/ws-column-header-popup-menu.png
89         wsug_graphics/ws-decode-as-show.png
90         wsug_graphics/ws-decode-as.png
91         wsug_graphics/ws-column-header-popup-menu.png
92         wsug_graphics/ws-details-pane-popup-menu.png
93         wsug_graphics/ws-details-pane.png
94         wsug_graphics/ws-display-filter-tcp.png
95         wsug_graphics/ws-edit-color-rule-dialog.png
96         wsug_graphics/ws-edit-menu.png
97         wsug_graphics/ws-enabled-protocols.png
98         wsug_graphics/ws-expert-colored-tree.png
99         wsug_graphics/ws-expert-column.png
100         wsug_graphics/ws-expert-infos.png
101         wsug_graphics/ws-export-objects.png
102         wsug_graphics/ws-export-pdml.png
103         wsug_graphics/ws-export-plain.png
104         wsug_graphics/ws-export-ps.png
105         wsug_graphics/ws-export-psml.png
106         wsug_graphics/ws-export-selected.png
107         wsug_graphics/ws-file-import.png
108         wsug_graphics/ws-file-menu.png
109         wsug_graphics/ws-file-set-dialog.png
110         wsug_graphics/ws-filter-add-expression.png
111         wsug_graphics/ws-filter-toolbar.png
112         wsug_graphics/ws-filters.png
113         wsug_graphics/ws-find-packet.png
114         wsug_graphics/ws-follow-stream.png
115         wsug_graphics/ws-go-menu.png
116         wsug_graphics/ws-goto-packet.png
117         wsug_graphics/ws-gui-colors-preferences.png
118         wsug_graphics/ws-gui-columns-preferences.png
119         wsug_graphics/ws-gui-config-profiles.png
120         wsug_graphics/ws-gui-font-preferences.png
121         wsug_graphics/ws-gui-layout-preferences.png
122         wsug_graphics/ws-gui-preferences.png
123         wsug_graphics/ws-help-menu.png
124         wsug_graphics/ws-internals-menu.png
125         wsug_graphics/ws-list-pane.png
126         wsug_graphics/ws-logo.png
127         wsug_graphics/ws-main-toolbar.png
128         wsug_graphics/ws-main.png
129         wsug_graphics/ws-menu.png
130         wsug_graphics/ws-merge-gtk24.png
131         wsug_graphics/ws-merge-win32.png
132         wsug_graphics/ws-nameresolution-preferences.png
133         wsug_graphics/ws-open-gtk24.png
134         wsug_graphics/ws-open-win32.png
135         wsug_graphics/ws-packet-format.png
136         wsug_graphics/ws-packet-pane-popup-menu.png
137         wsug_graphics/ws-packet-range.png
138         wsug_graphics/ws-packet-selected.png
139         wsug_graphics/ws-packet-sep-win.png
140         wsug_graphics/ws-print.png
141         wsug_graphics/ws-printing-preferences.png
142         wsug_graphics/ws-save-as-gtk24.png
143         wsug_graphics/ws-save-as-win32.png
144         wsug_graphics/ws-statistics-menu.png
145         wsug_graphics/ws-stats-conversations.png
146         wsug_graphics/ws-stats-endpoints.png
147         wsug_graphics/ws-stats-hierarchy.png
148         wsug_graphics/ws-stats-iographs.png
149         wsug_graphics/ws-stats-srt-dcerpc-filter.png
150         wsug_graphics/ws-stats-srt-dcerpc.png
151         wsug_graphics/ws-stats-summary.png
152         wsug_graphics/ws-stats-lte-mac-traffic.png
153         wsug_graphics/ws-stats-lte-rlc-traffic.png
154         wsug_graphics/ws-stats-wlan-traffic.png
155         wsug_graphics/ws-statusbar-empty.png
156         wsug_graphics/ws-statusbar-loaded.png
157         wsug_graphics/ws-statusbar-selected.png
158         wsug_graphics/ws-telephony-menu.png
159         wsug_graphics/ws-time-reference.png
160         wsug_graphics/ws-tools-menu.png
161         wsug_graphics/ws-view-menu.png
162         wsug_graphics/toolbar/autoscroll_24.png
163         wsug_graphics/toolbar/capture_filter_24.png
164         wsug_graphics/toolbar/capture_interfaces_24.png
165         wsug_graphics/toolbar/capture_options_24.png
166         wsug_graphics/toolbar/capture_restart_24.png
167         wsug_graphics/toolbar/capture_start_24.png
168         wsug_graphics/toolbar/capture_stop_24.png
169         wsug_graphics/toolbar/colorize_24.png
170         wsug_graphics/toolbar/display_filter_24.png
171         wsug_graphics/toolbar/resize_columns_24.png
172         wsug_graphics/toolbar/stock_add_24.png
173         wsug_graphics/toolbar/stock_apply_20.png
174         wsug_graphics/toolbar/stock_bottom_24.png
175         wsug_graphics/toolbar/stock_clear_24.png
176         wsug_graphics/toolbar/stock_close_24.png
177         wsug_graphics/toolbar/stock_colorselector_24.png
178         wsug_graphics/toolbar/stock_help_24.png
179         wsug_graphics/toolbar/stock_jump_to_24.png
180         wsug_graphics/toolbar/stock_left_arrow_24.png
181         wsug_graphics/toolbar/stock_open_24.png
182         wsug_graphics/toolbar/stock_preferences_24.png
183         wsug_graphics/toolbar/stock_print_24.png
184         wsug_graphics/toolbar/stock_properties_24.png
185         wsug_graphics/toolbar/stock_refresh_24.png
186         wsug_graphics/toolbar/stock_right_arrow_24.png
187         wsug_graphics/toolbar/stock_save_24.png
188         wsug_graphics/toolbar/stock_save_as_24.png
189         wsug_graphics/toolbar/stock_search_24.png
190         wsug_graphics/toolbar/stock_stop_24.png
191         wsug_graphics/toolbar/stock_top_24.png
192         wsug_graphics/toolbar/stock_zoom_1_24.png
193         wsug_graphics/toolbar/stock_zoom_in_24.png
194         wsug_graphics/toolbar/stock_zoom_out_24.png
195         ${COMMON_GRAPHICS}
196 )
197
198 set(WSDG_FILES
199         wsdg_src/WSDG_chapter_build_intro.asciidoc
200         wsdg_src/WSDG_chapter_capture.asciidoc
201         wsdg_src/WSDG_chapter_dissection.asciidoc
202         wsdg_src/WSDG_chapter_env_intro.asciidoc
203         wsdg_src/WSDG_chapter_libraries.asciidoc
204         wsdg_src/WSDG_chapter_quick_setup.asciidoc
205         wsdg_src/WSDG_chapter_sources.asciidoc
206         wsdg_src/WSDG_chapter_tools.asciidoc
207         wsdg_src/WSDG_chapter_userinterface.asciidoc
208         wsdg_src/WSDG_chapter_works.asciidoc
209         wsdg_src/WSDG_preface.asciidoc
210         ws.css
211 )
212
213 set(WSDG_GRAPHICS
214         wsdg_graphics/ws-capture-sync.dia
215         wsdg_graphics/ws-capture-sync.png
216         wsdg_graphics/ws-capture_internals.dia
217         wsdg_graphics/ws-capture_internals.png
218         wsdg_graphics/ws-function-blocks.dia
219         wsdg_graphics/ws-function-blocks.png
220         wsdg_graphics/ws-logo.png
221         ${COMMON_GRAPHICS}
222 )
223
224 # user-guide.xml must be first in the list
225 set(WSUG_SOURCE
226         user-guide.xml
227         git_version.xml
228         wsluarm
229         ${WSUG_FILES}
230         ${WSUG_GRAPHICS}
231 )
232
233 set( ASCIIDOC_CONF_FILES asciidoc.conf asciidoctor-asciidoc.conf )
234
235 MACRO( ASCIIDOC2DOCBOOK _asciidocsource _conf_files )
236         GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
237         set( A2X_HTML_OPTS --stylesheet=ws.css )
238         set( _output_xml ${_source_base_name}.xml )
239         set( _output_dbk ${_source_base_name}.dbk )
240
241         foreach(_conf_file ${_conf_files})
242                 set( _conf_opts_list ${_conf_opts_list} --conf-file=${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file})
243         endforeach()
244         string( REPLACE ";" " " _conf_opts "${_conf_opts_list}")
245
246         foreach(_conf_file ${_conf_files})
247                 set( _conf_deps ${_conf_deps} ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file})
248         endforeach()
249
250         ADD_CUSTOM_COMMAND(
251                 OUTPUT
252                         ${_output_xml}
253                 # XXX - Output to a specific directory, e.g. wsdg_generated_src
254                 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
255                 COMMAND ${A2X_EXECUTABLE}
256                         --verbose
257                         --attribute=build_dir=${CMAKE_CURRENT_BINARY_DIR}
258                         --attribute=docinfo
259                         --destination-dir=${CMAKE_CURRENT_BINARY_DIR}
260                         --asciidoc-opts=${_conf_opts}
261                         --no-xmllint
262                         --format=docbook
263                         --fop
264                         ${A2X_HTML_OPTS}
265                         ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
266                 DEPENDS
267                         ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
268                         ${_conf_deps}
269                         ${WSDG_GENERATED_FILES}
270         )
271 ENDMACRO()
272
273 ASCIIDOC2DOCBOOK( developer-guide.asciidoc "${ASCIIDOC_CONF_FILES}" )
274
275 SET( WSDG_GENERATED_FILES )
276 # Convert an AsciiDoc document to a DocBook chapter
277 # Used for chapter-by-chapter conversion from DocBook to AsciiDoc.
278 # Can be removed after the User's Guide is converted.
279 # .asciidoc -> whole book (.dbk) -> chapter (.xml)
280 MACRO( ASCIIDOC2CHAPTER _asciidocsource _conf_files )
281         GET_FILENAME_COMPONENT( _source_base_name ${_asciidocsource} NAME_WE )
282         set( A2X_HTML_OPTS --stylesheet=ws.css )
283         set( _output_xml ${_source_base_name}.xml )
284         set( _output_dbk ${_source_base_name}.dbk )
285
286         set(_conf_opts_list)
287         foreach(_conf_file ${_conf_files})
288                 set( _conf_opts_list ${_conf_opts_list} --conf-file=${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file})
289         endforeach()
290         string(REPLACE ";" " " _conf_opts "${_conf_opts_list}")
291
292         set(_conf_deps)
293         foreach(_conf_file ${_conf_files})
294                 set( _conf_deps ${_conf_deps} ${CMAKE_CURRENT_SOURCE_DIR}/${_conf_file})
295         endforeach()
296
297         ADD_CUSTOM_COMMAND(
298                 OUTPUT
299                         ${_output_xml} ${_output_dbk}
300                 # XXX - Output to a specific directory, e.g. wsdg_generated_src
301                 WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
302                 COMMAND ${A2X_EXECUTABLE}
303                         --verbose
304                         --attribute=build_dir=${CMAKE_CURRENT_BINARY_DIR}
305                         --destination-dir=${CMAKE_CURRENT_BINARY_DIR}
306                         --asciidoc-opts=${_conf_opts}
307                         --no-xmllint
308                         --fop
309                         --format=docbook --doctype=book
310                         ${A2X_HTML_OPTS}
311                         ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
312                 COMMAND mv
313                         ${_output_xml}
314                         ${_output_dbk}
315                 COMMAND ${XMLLINT_EXECUTABLE}
316                         --xpath '//chapter | //preface | //appendix'
317                         ${_output_dbk}
318                         > ${_output_xml}
319                 DEPENDS
320                         ${_outptudir}
321                         ${CMAKE_CURRENT_SOURCE_DIR}/${_asciidocsource}
322                         ${_conf_deps}
323         )
324         LIST( APPEND WSDG_GENERATED_FILES ${CMAKE_CURRENT_BINARY_DIR}/${_output_xml} )
325 ENDMACRO()
326
327 FOREACH(ASCIIDOCFILE ${WSDG_ASCIIDOC_FILES})
328         ASCIIDOC2CHAPTER(
329                 ${ASCIIDOCFILE}
330                 "${ASCIIDOC_CONF_FILES}"
331         )
332 ENDFOREACH()
333
334 ADD_CUSTOM_TARGET( wsug_generated_src DEPENDS ${WSDG_GENERATED_FILES} )
335
336 # developer-guide.xml must be first in the list
337 set(WSDG_SOURCE
338         developer-guide.xml
339         git_version.xml
340         ${WSDG_FILES}
341         ${WSDG_GRAPHICS}
342 )
343
344 set(WSLUA_MODULES
345         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_dumper.c
346         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_field.c
347         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_gui.c
348         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_int64.c
349         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_listener.c
350         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_pinfo.c
351         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_proto.c
352         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_tree.c
353         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_tvb.c
354         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_file.c
355         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_dir.c
356         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_util.c
357         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_struct.c
358 )
359
360 ADD_CUSTOM_COMMAND(
361         OUTPUT
362                 git_version.xml
363         COMMAND ${SH}
364                 ${CMAKE_CURRENT_SOURCE_DIR}/check_git_version.sh
365         DEPENDS
366                 ${CMAKE_CURRENT_SOURCE_DIR}/check_git_version.sh
367 )
368
369 add_custom_target(
370         user_guides ALL
371         DEPENDS
372                 wsug_html_chunked/index.html
373                 wsug_html/index.html
374                 user-guide-a4.pdf
375                 user-guide-us.pdf
376 )
377
378 VALIDATE_XML(
379         wsug.validated
380         WSUG_SOURCE
381 )
382
383 XML2HTML(
384         wsug
385         single-page
386         WSUG_SOURCE
387         WSUG_GRAPHICS
388 )
389
390 XML2HTML(
391         wsug
392         chunked
393         WSUG_SOURCE
394         WSUG_GRAPHICS
395 )
396
397 # 2do: Merge A4 and letter into the smallest dimension of each format.
398 #      Use   --stringparam  page.height <letter-height>mm --stringparam  page.width <at-width>mm
399 #      Test the effect of this on letter and a4 printers first (ps and non-ps).
400
401 XML2PDF(
402         user-guide-a4.pdf
403         WSUG_SOURCE
404         custom_layer_pdf.xsl
405         A4
406 )
407
408 XML2PDF(
409         user-guide-us.pdf
410         WSUG_SOURCE
411         custom_layer_pdf.xsl
412         letter
413 )
414
415 add_custom_target(
416         developer_guides ALL
417         DEPENDS
418                 wsluarm
419                 wsdg_html_chunked/index.html
420                 wsdg_html/index.html
421                 developer-guide-a4.pdf
422                 developer-guide-us.pdf
423 )
424
425 VALIDATE_XML(
426         wsdg.validated
427         WSDG_SOURCE
428 )
429
430 XML2HTML(
431         wsdg
432         single-page
433         WSDG_SOURCE
434         WSDG_GRAPHICS
435 )
436
437 XML2HTML(
438         wsdg
439         chunked
440         WSDG_SOURCE
441         WSDG_GRAPHICS
442 )
443
444 XML2PDF(
445         developer-guide-a4.pdf
446         WSDG_SOURCE
447         custom_layer_pdf.xsl
448         A4
449 )
450
451 XML2PDF(
452         developer-guide-us.pdf
453         WSDG_SOURCE
454         custom_layer_pdf.xsl
455         letter
456 )
457
458 # release_notes: release-notes.html release-notes.txt release-notes-a4.pdf release-notes-us.pdf
459
460 add_custom_target(
461         release_notes ALL
462         DEPENDS
463                 release-notes.html
464                 release-notes.txt
465                 release-notes-a4.pdf
466                 release-notes-us.pdf
467                 ${CMAKE_SOURCE_DIR}/NEWS
468 )
469
470 ADD_CUSTOM_COMMAND(
471         OUTPUT
472                 ${CMAKE_SOURCE_DIR}/NEWS
473         COMMAND cp
474                 ${CMAKE_CURRENT_BINARY_DIR}/release-notes.txt
475                 ${CMAKE_SOURCE_DIR}/NEWS
476         DEPENDS
477                 ${CMAKE_CURRENT_BINARY_DIR}/release-notes.txt
478 )
479
480 ASCIIDOC2HTML(
481         release-notes.html
482         release-notes.asciidoc
483         "${ASCIIDOC_CONF_FILES}"
484 )
485
486 ASCIIDOC2TXT(
487         release-notes.txt
488         release-notes.asciidoc
489         "${ASCIIDOC_CONF_FILES}"
490 )
491
492 ASCIIDOC2PDF(
493         release-notes-a4.pdf
494         release-notes.asciidoc
495         "${ASCIIDOC_CONF_FILES}"
496         A4
497 )
498
499 ASCIIDOC2PDF(
500         release-notes-us.pdf
501         release-notes.asciidoc
502         "${ASCIIDOC_CONF_FILES}"
503         letter
504 )
505
506 # wsluarm
507 ADD_CUSTOM_COMMAND(
508         OUTPUT
509                 wsluarm
510         COMMAND cmake -E make_directory wsluarm_src
511         COMMAND ${PERL_EXECUTABLE}
512                 ${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.pl
513                 ${WSLUA_MODULES}
514         COMMAND
515                 touch wsluarm
516         DEPENDS
517                 ${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.pl
518                 ${WSLUA_MODULES}
519 )