Fix Windows asciidoc build
[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( LYNX )
23 find_package( XSLTPROC )
24 find_package( XMLLINT )
25 if(ENABLE_CHM_GUIDES)
26         find_package( HTMLHelp )
27 endif()
28
29 find_package( ASCIIDOC )
30
31 if(WIN32)
32         macro( HHP2CHM _hhpsource )
33                 get_filename_component( _source_base_name ${_hhpsource} NAME_WE )
34
35                 add_custom_command(
36                         OUTPUT ${_output_chm}
37                         WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
38                         # The number and order of arguments MUST match hhc.cmake.
39                         COMMAND ${CMAKE_COMMAND} -P
40                                 ${CMAKE_SOURCE_DIR}/cmake/modules/hhc.cmake
41                                         "${HTML_HELP_COMPILER}"
42                                         ${_hhpsource}
43                         DEPENDS
44                                 ${_hhpsource}
45                 )
46         endmacro()
47 else()
48         macro( HHP2CHM _hhpsource )
49         # Dummy.
50         endmacro()
51 endif()
52
53 set(COMMON_GRAPHICS
54         common_graphics/note.svg
55         common_graphics/tip.svg
56         common_graphics/warning.svg
57 )
58
59 set(WSUG_FILES
60         wsug_src/WSUG_app_files.asciidoc
61         wsug_src/WSUG_app_howitworks.asciidoc
62         wsug_src/WSUG_app_protocols.asciidoc
63         wsug_src/WSUG_app_messages.asciidoc
64         wsug_src/WSUG_app_tools.asciidoc
65         wsug_src/WSUG_chapter_advanced.asciidoc
66         wsug_src/WSUG_chapter_build_install.asciidoc
67         wsug_src/WSUG_chapter_capture.asciidoc
68         wsug_src/WSUG_chapter_customize.asciidoc
69         wsug_src/WSUG_chapter_introduction.asciidoc
70         wsug_src/WSUG_chapter_io.asciidoc
71         wsug_src/WSUG_chapter_statistics.asciidoc
72         wsug_src/WSUG_chapter_telephony.asciidoc
73         wsug_src/WSUG_chapter_troubleshoot.asciidoc
74         wsug_src/WSUG_chapter_use.asciidoc
75         wsug_src/WSUG_chapter_work.asciidoc
76         wsug_src/WSUG_preface.asciidoc
77         wsluarm.asciidoc
78         ws.css
79 )
80
81 set(WSUG_GRAPHICS
82         wsug_graphics/ws-analyze-menu.png
83         wsug_graphics/ws-bytes-pane-tabs.png
84         wsug_graphics/ws-bytes-pane.png
85         wsug_graphics/ws-capture-info.png
86         wsug_graphics/ws-capture-interfaces.png
87         wsug_graphics/ws-capture-interfaces-win32.png
88         wsug_graphics/ws-capture-menu.png
89         wsug_graphics/ws-capture-options.png
90         wsug_graphics/ws-capture-options-remote-capture.png
91         wsug_graphics/ws-capture-options-remote-interface.png
92         wsug_graphics/ws-capture-options-remote-settings.png
93         wsug_graphics/ws-capture-preferences.png
94         wsug_graphics/ws-choose-color-rule.png
95         wsug_graphics/ws-coloring-fields.png
96         wsug_graphics/ws-coloring-rules-dialog.png
97         wsug_graphics/ws-column-header-popup-menu.png
98         wsug_graphics/ws-decode-as-show.png
99         wsug_graphics/ws-decode-as.png
100         wsug_graphics/ws-column-header-popup-menu.png
101         wsug_graphics/ws-details-pane-popup-menu.png
102         wsug_graphics/ws-details-pane.png
103         wsug_graphics/ws-display-filter-tcp.png
104         wsug_graphics/ws-edit-menu.png
105         wsug_graphics/ws-enabled-protocols.png
106         wsug_graphics/ws-expert-colored-tree.png
107         wsug_graphics/ws-expert-column.png
108         wsug_graphics/ws-expert-infos.png
109         wsug_graphics/ws-export-objects.png
110         wsug_graphics/ws-export-pdml.png
111         wsug_graphics/ws-export-plain.png
112         wsug_graphics/ws-export-ps.png
113         wsug_graphics/ws-export-psml.png
114         wsug_graphics/ws-export-selected.png
115         wsug_graphics/ws-file-import.png
116         wsug_graphics/ws-file-menu.png
117         wsug_graphics/ws-file-set-dialog.png
118         wsug_graphics/ws-filter-add-expression.png
119         wsug_graphics/ws-filter-toolbar.png
120         wsug_graphics/ws-filters.png
121         wsug_graphics/ws-find-packet.png
122         wsug_graphics/ws-follow-stream.png
123         wsug_graphics/ws-go-menu.png
124         wsug_graphics/ws-goto-packet.png
125         wsug_graphics/ws-gui-colors-preferences.png
126         wsug_graphics/ws-gui-columns-preferences.png
127         wsug_graphics/ws-gui-config-profiles.png
128         wsug_graphics/ws-gui-font-preferences.png
129         wsug_graphics/ws-gui-layout-preferences.png
130         wsug_graphics/ws-gui-preferences.png
131         wsug_graphics/ws-help-menu.png
132         wsug_graphics/ws-internals-menu.png
133         wsug_graphics/ws-list-pane.png
134         wsug_graphics/ws-logo.png
135         wsug_graphics/ws-main-toolbar.png
136         wsug_graphics/ws-main.png
137         wsug_graphics/ws-menu.png
138         wsug_graphics/ws-merge-gtk24.png
139         wsug_graphics/ws-merge-win32.png
140         wsug_graphics/ws-nameresolution-preferences.png
141         wsug_graphics/ws-open-gtk24.png
142         wsug_graphics/ws-open-win32.png
143         wsug_graphics/ws-packet-format.png
144         wsug_graphics/ws-packet-pane-popup-menu.png
145         wsug_graphics/ws-packet-range.png
146         wsug_graphics/ws-packet-selected.png
147         wsug_graphics/ws-packet-sep-win.png
148         wsug_graphics/ws-print.png
149         wsug_graphics/ws-printing-preferences.png
150         wsug_graphics/ws-save-as-gtk24.png
151         wsug_graphics/ws-save-as-win32.png
152         wsug_graphics/ws-statistics-menu.png
153         wsug_graphics/ws-stats-conversations.png
154         wsug_graphics/ws-stats-endpoints.png
155         wsug_graphics/ws-stats-hierarchy.png
156         wsug_graphics/ws-stats-iographs.png
157         wsug_graphics/ws-stats-srt-dcerpc-filter.png
158         wsug_graphics/ws-stats-srt-dcerpc.png
159         wsug_graphics/ws-stats-summary.png
160         wsug_graphics/ws-stats-lte-mac-traffic.png
161         wsug_graphics/ws-stats-lte-rlc-traffic.png
162         wsug_graphics/ws-stats-wlan-traffic.png
163         wsug_graphics/ws-statusbar-empty.png
164         wsug_graphics/ws-statusbar-loaded.png
165         wsug_graphics/ws-statusbar-selected.png
166         wsug_graphics/ws-telephony-menu.png
167         wsug_graphics/ws-time-reference.png
168         wsug_graphics/ws-tools-menu.png
169         wsug_graphics/ws-view-menu.png
170         wsug_graphics/toolbar/autoscroll_24.png
171         wsug_graphics/toolbar/capture_filter_24.png
172         wsug_graphics/toolbar/capture_interfaces_24.png
173         wsug_graphics/toolbar/capture_options_24.png
174         wsug_graphics/toolbar/capture_restart_24.png
175         wsug_graphics/toolbar/capture_start_24.png
176         wsug_graphics/toolbar/capture_stop_24.png
177         wsug_graphics/toolbar/colorize_24.png
178         wsug_graphics/toolbar/display_filter_24.png
179         wsug_graphics/toolbar/resize_columns_24.png
180         wsug_graphics/toolbar/stock_add_24.png
181         wsug_graphics/toolbar/stock_apply_20.png
182         wsug_graphics/toolbar/stock_bottom_24.png
183         wsug_graphics/toolbar/stock_clear_24.png
184         wsug_graphics/toolbar/stock_close_24.png
185         wsug_graphics/toolbar/stock_colorselector_24.png
186         wsug_graphics/toolbar/stock_help_24.png
187         wsug_graphics/toolbar/stock_jump_to_24.png
188         wsug_graphics/toolbar/stock_left_arrow_24.png
189         wsug_graphics/toolbar/stock_open_24.png
190         wsug_graphics/toolbar/stock_preferences_24.png
191         wsug_graphics/toolbar/stock_print_24.png
192         wsug_graphics/toolbar/stock_properties_24.png
193         wsug_graphics/toolbar/stock_refresh_24.png
194         wsug_graphics/toolbar/stock_right_arrow_24.png
195         wsug_graphics/toolbar/stock_save_24.png
196         wsug_graphics/toolbar/stock_save_as_24.png
197         wsug_graphics/toolbar/stock_search_24.png
198         wsug_graphics/toolbar/stock_stop_24.png
199         wsug_graphics/toolbar/stock_top_24.png
200         wsug_graphics/toolbar/stock_zoom_1_24.png
201         wsug_graphics/toolbar/stock_zoom_in_24.png
202         wsug_graphics/toolbar/stock_zoom_out_24.png
203         ${COMMON_GRAPHICS}
204 )
205
206 set(WSDG_FILES
207         wsdg_src/WSDG_chapter_build_intro.asciidoc
208         wsdg_src/WSDG_chapter_capture.asciidoc
209         wsdg_src/WSDG_chapter_dissection.asciidoc
210         wsdg_src/WSDG_chapter_env_intro.asciidoc
211         wsdg_src/WSDG_chapter_libraries.asciidoc
212         wsdg_src/WSDG_chapter_quick_setup.asciidoc
213         wsdg_src/WSDG_chapter_sources.asciidoc
214         wsdg_src/WSDG_chapter_tools.asciidoc
215         wsdg_src/WSDG_chapter_userinterface.asciidoc
216         wsdg_src/WSDG_chapter_works.asciidoc
217         wsdg_src/WSDG_preface.asciidoc
218         ws.css
219 )
220
221 set(WSDG_GRAPHICS
222         wsdg_graphics/ws-capture-sync.dia
223         wsdg_graphics/ws-capture-sync.png
224         wsdg_graphics/ws-capture_internals.dia
225         wsdg_graphics/ws-capture_internals.png
226         wsdg_graphics/ws-function-blocks.dia
227         wsdg_graphics/ws-function-blocks.png
228         wsdg_graphics/ws-logo.png
229         ${COMMON_GRAPHICS}
230 )
231
232 # user-guide.xml must be first in the list
233 set(WSUG_SOURCE
234         user-guide.xml
235         ${WSUG_FILES}
236         ${WSUG_GRAPHICS}
237 )
238
239 set( ASCIIDOC_CONF_FILES asciidoc.conf asciidoctor-asciidoc.conf )
240
241 add_custom_command(
242         OUTPUT ws.css
243         COMMAND ${CMAKE_COMMAND} -E copy_if_different
244                 ${CMAKE_CURRENT_SOURCE_DIR}/ws.css
245                 ${CMAKE_CURRENT_BINARY_DIR}/ws.css
246 )
247
248 ASCIIDOC2DOCBOOK( developer-guide.asciidoc "${ASCIIDOC_CONF_FILES}" )
249 ASCIIDOC2DOCBOOK( user-guide.asciidoc "${ASCIIDOC_CONF_FILES}" )
250
251 # developer-guide.xml must be first in the list
252 set(WSDG_SOURCE
253         developer-guide.xml
254         ${WSDG_FILES}
255         ${WSDG_GRAPHICS}
256 )
257
258 set(WSLUA_MODULES
259         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_dumper.c
260         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_field.c
261         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_gui.c
262         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_int64.c
263         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_listener.c
264         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_pinfo.c
265         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_proto.c
266         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_tree.c
267         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_tvb.c
268         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_file.c
269         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_dir.c
270         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_util.c
271         ${CMAKE_SOURCE_DIR}/epan/wslua/wslua_struct.c
272 )
273
274 if(ENABLE_HTML_GUIDES)
275         set(WSUG_HTML_OUTPUT wsug_html_chunked/index.html wsug_html/index.html)
276 endif()
277
278 if(ENABLE_PDF_GUIDES)
279         set(WSUG_PDF_OUTPUT user-guide-a4.pdf user-guide-us.pdf)
280 endif()
281
282 if(ENABLE_CHM_GUIDES)
283         set(WSUG_CHM_OUTPUT user-guide.chm)
284         XML2HHP(wsug user-guide.xml)
285         HHP2CHM(user-guide.hhp)
286 endif()
287
288 VALIDATE_XML(
289         wsug.validated
290         WSUG_SOURCE
291 )
292
293 XML2HTML(
294         wsug
295         single-page
296         WSUG_SOURCE
297         WSUG_GRAPHICS
298 )
299
300 XML2HTML(
301         wsug
302         chunked
303         WSUG_SOURCE
304         WSUG_GRAPHICS
305 )
306
307 # 2do: Merge A4 and letter into the smallest dimension of each format.
308 #      Use   --stringparam  page.height <letter-height>mm --stringparam  page.width <at-width>mm
309 #      Test the effect of this on letter and a4 printers first (ps and non-ps).
310
311 XML2PDF(
312         user-guide-a4.pdf
313         WSUG_SOURCE
314         custom_layer_pdf.xsl
315         A4
316 )
317
318 XML2PDF(
319         user-guide-us.pdf
320         WSUG_SOURCE
321         custom_layer_pdf.xsl
322         letter
323 )
324
325 if(ENABLE_HTML_GUIDES)
326         set(WSDG_HTML_OUTPUT wsdg_html_chunked/index.html wsdg_html/index.html)
327 endif()
328
329 if(ENABLE_PDF_GUIDES)
330         set(WSDG_PDF_OUTPUT developer-guide-a4.pdf developer-guide-us.pdf)
331 endif()
332
333 if(ENABLE_CHM_GUIDES)
334         set(WSDG_CHM_OUTPUT developer-guide.chm)
335         XML2HHP(wsdg developer-guide.xml)
336         HHP2CHM(developer-guide.hhp)
337 endif()
338
339 VALIDATE_XML(
340         wsdg.validated
341         WSDG_SOURCE
342 )
343
344 XML2HTML(
345         wsdg
346         single-page
347         WSDG_SOURCE
348         WSDG_GRAPHICS
349 )
350
351 XML2HTML(
352         wsdg
353         chunked
354         WSDG_SOURCE
355         WSDG_GRAPHICS
356 )
357
358 XML2PDF(
359         developer-guide-a4.pdf
360         WSDG_SOURCE
361         custom_layer_pdf.xsl
362         A4
363 )
364
365 XML2PDF(
366         developer-guide-us.pdf
367         WSDG_SOURCE
368         custom_layer_pdf.xsl
369         letter
370 )
371
372 if(ENABLE_HTML_GUIDES OR ENABLE_PDF_GUIDES OR ENABLE_CHM_GUIDES)
373         add_custom_target(
374                 user_guides
375                 DEPENDS
376                         ${WSUG_HTML_OUTPUT}
377                         ${WSUG_PDF_OUTPUT}
378                         ${WSUG_CHM_OUTPUT}
379         )
380
381         add_custom_target(
382                 developer_guides
383                 DEPENDS
384                         wsluarm
385                         ${WSDG_HTML_OUTPUT}
386                         ${WSDG_PDF_OUTPUT}
387                         ${WSDG_CHM_OUTPUT}
388         )
389
390         add_custom_target( all_guides ALL )
391         add_dependencies ( all_guides user_guides developer_guides )
392 endif()
393
394 # release_notes: release-notes.html release-notes.txt release-notes-a4.pdf release-notes-us.pdf
395
396 add_custom_target( release_notes_html DEPENDS ws.css release-notes.html )
397 set_target_properties(release_notes_html PROPERTIES FOLDER "Docbook")
398 add_custom_target( release_notes_txt DEPENDS release-notes.txt )
399 set_target_properties(release_notes_txt PROPERTIES FOLDER "Docbook")
400
401 # Force serial execution so that separate a2x instances don't trip on each other
402 add_dependencies ( release_notes_txt release_notes_html )
403
404 add_custom_target( release_notes )
405 set_target_properties(release_notes PROPERTIES FOLDER "Docbook")
406 add_dependencies ( release_notes release_notes_txt release_notes_html )
407
408 add_custom_target(
409         news
410         COMMAND ${CMAKE_COMMAND} -E copy_if_different
411                 ${CMAKE_CURRENT_BINARY_DIR}/release-notes.txt
412                 ${CMAKE_SOURCE_DIR}/NEWS
413         DEPENDS
414                 ${CMAKE_CURRENT_BINARY_DIR}/release-notes.txt
415 )
416 set_target_properties(news PROPERTIES FOLDER "Docbook")
417
418 ASCIIDOC2HTML(
419         release-notes.html
420         release-notes.asciidoc
421         "${ASCIIDOC_CONF_FILES}"
422 )
423
424 ASCIIDOC2TXT(
425         release-notes.txt
426         release-notes.asciidoc
427         "${ASCIIDOC_CONF_FILES}"
428 )
429
430 #ASCIIDOC2PDF(
431 #       release-notes-a4.pdf
432 #       release-notes.asciidoc
433 #       "${ASCIIDOC_CONF_FILES}"
434 #       A4
435 #)
436
437 #ASCIIDOC2PDF(
438 #       release-notes-us.pdf
439 #       release-notes.asciidoc
440 #       "${ASCIIDOC_CONF_FILES}"
441 #       letter
442 #)
443
444 # wsluarm
445 ADD_CUSTOM_COMMAND(
446         OUTPUT
447                 wsluarm
448         COMMAND ${CMAKE_COMMAND} -E make_directory wsluarm_src
449         COMMAND ${PERL_EXECUTABLE}
450                 ${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.pl
451                 ${WSLUA_MODULES}
452         COMMAND ${CMAKE_COMMAND} -E touch
453                  wsluarm
454         DEPENDS
455                 ${CMAKE_CURRENT_SOURCE_DIR}/make-wsluarm.pl
456                 ${WSLUA_MODULES}
457 )