Add tools/lemon/CMakeLists.txt which creates the lemon parser executable
[obnox/wireshark/wip.git] / CMakeLists.txt
1 # CMakeLists.txt
2 #
3 # $Id$
4 #
5 # Wireshark - Network traffic analyzer
6 # By Gerald Combs <gerald@wireshark.org>
7 # Copyright 1998 Gerald Combs
8 #
9 # This program is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU General Public License
11 # as published by the Free Software Foundation; either version 2
12 # of the License, or (at your option) any later version.
13 #
14 # This program is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 # GNU General Public License for more details.
18 #
19 # You should have received a copy of the GNU General Public License
20 # along with this program; if not, write to the Free Software
21 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22 #
23
24 project(Wireshark C)
25
26 cmake_minimum_required(VERSION 2.6)
27
28 #Where to find local cmake scripts
29 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
30 INCLUDE(UseLemon)
31 INCLUDE(UseMakeDissectorReg)
32 INCLUDE(UseMakeTapReg)
33
34 # Under linux the release mode (CMAKE_BUILD_TYPE=release) defines NDEBUG
35
36 # Disable this later. Alternative: "make VERBOSE=1"
37 set(CMAKE_VERBOSE_MAKEFILE ON)
38
39 set(BUILD_SHARED_LIBS ON)
40
41 #Defines CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_DATADIR, etc ...
42 include(CMakeInstallDirs)
43
44 include_directories(
45         ${CMAKE_BINARY_DIR}
46         ${CMAKE_SOURCE_DIR}
47         ${CMAKE_SOURCE_DIR}/epan
48         ${CMAKE_SOURCE_DIR}/tools/lemon
49         ${CMAKE_SOURCE_DIR}/wiretap
50 )
51
52 #Where to put libraries
53 if(NOT LIBRARY_OUTPUT_PATH)
54         set(LIBRARY_OUTPUT_PATH ${Wireshark_BINARY_DIR}/lib CACHE INTERNAL
55                    "Single output directory for building all libraries.")
56 endif()
57
58 option(BUILD_wireshark   "Build the GUI version of Wireshark" ON)
59 option(BUILD_tshark      "Build tshark" ON)
60 option(BUILD_rawshark    "Build rawshark" ON)
61 option(BUILD_dumpcap     "Build dumpcap" ON)
62 option(BUILD_text2pcap   "Build text2pcap" ON)
63 option(BUILD_mergecap    "Build mergecap" ON)
64 option(BUILD_editcap     "Build editcap" ON)
65 option(BUILD_capinfos    "Build capinfos" ON)
66 option(BUILD_randpkt     "Build randpkt" ON)
67 option(BUILD_dftest      "Build dftest" ON)
68 option(AUTOGEN_dcerpc    "Autogenerate dcerpc dissectors" OFF)
69 option(AUTOGEN_pidl      "Autogenerate pidl dissectors" OFF)
70
71 option(DISABLE_WERROR    "Do not treat Warnings as errors" OFF)
72 option(ENABLE_EXTRA_GCC_CHECKS "Do additional -W checks in GCC (disables -Werror)" ON)
73 option(ENABLE_AIRPCAP    "Enable Airpcap support" ON)
74 # todo
75 option(ENABLE_STATIC     "Build a static version of Wireshark" OFF)
76 option(ENABLE_PLUGINS    "Build with plugins" ON)
77
78 option(ENABLE_ADNS       "Build with adns support" ON)
79 option(ENABLE_PCRE       "Build with pcre support" ON)
80 option(ENABLE_PORTAUDIO  "Build with portaudio support" ON)
81 option(ENABLE_Z          "Build with zlib compression support" ON)
82 # todo wslua currently seems to be broken
83 option(ENABLE_LUA        "Build with lua dissector support" ON)
84 option(ENABLE_PYTHON     "Build with python dissector support" ON)
85 option(ENABLE_SMI        "Build with smi snmp support" ON)
86 option(ENABLE_GNUTLS     "Build with GNU TLS support" ON)
87 option(ENABLE_GCRYPT     "Build with GNU crypto support" ON)
88 option(ENABLE_GEOIP      "Build with GeoIP support" ON)
89 option(ENABLE_CAP        "Build with posix capabilities support" ON)
90 option(ENABLE_CARES      "Build with c_ares support" ON)
91 # todo Mostly hardcoded
92 option(ENABLE_KERBEROS   "Build with Kerberos support" ON)
93
94
95 set(WIRESHARK_C_FLAGS
96         -O2
97         -Werror
98         -Wall
99         -W
100         -Wextra
101         -Wdeclaration-after-statement
102         -Wendif-labels
103         -Wpointer-arith
104         -Wno-pointer-sign
105         -Warray-bounds
106         -Wcast-align
107         -Wformat-security
108 )
109
110 set(WIRESHARK_EXTRA_C_FLAGS
111         -pedantic
112         -Woverflow
113         -Wlogical-op
114         -Wno-overlength-strings
115         -fstrict-overflow -Wstrict-overflow=4
116         -Wunreachable-code
117         -Wunsafe-loop-optimizations
118         -Wno-long-long
119         -Wbad-function-cast
120         -Wcast-qual
121         -Waddress
122         -Warray-bounds
123         -Wattributes
124         -Wdiv-by-zero
125         -Wformat-security
126         -Wignored-qualifiers
127         -Wpragmas
128         -Wredundant-decls
129         -Wvla
130         # packet-ncp2222.inc prevents this from going into all warnings
131         -Wwrite-strings
132         -Wstrict-prototypes
133         -Wmissing-declarations
134         # Problem with packet-afs.c
135         -Wshadow
136         # More cleanup needed for this on LP64
137         -Wshorten-64-to-32
138 )
139
140 if(ENABLE_EXTRA_GCC_CHECKS)
141         set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS} ${WIRESHARK_EXTRA_C_FLAGS})
142 endif()
143
144 add_definitions(
145         -DHAVE_CONFIG_H
146         -DPACKAGE=\"wireshark\"
147         -DNEW_PACKET_LIST
148 )
149
150 # Counterhack to work around some cache magic in CHECK_C_SOURCE_COMPILES
151 include(CheckCCompilerFlag)
152 set(C 0)
153 # Sigh: Have to use THIS_FLAG instead of ${F} for some reason
154 foreach(THIS_FLAG ${WIRESHARK_C_FLAGS})
155         set(F WS_C_FLAG_${C})
156         set(${F} ${THIS_FLAG})
157         set(V WS_C_FLAG_VALID${C})
158         check_c_compiler_flag(${${F}} ${V})
159         if (${${V}})
160                 add_definitions(${${F}})
161         endif()
162         math(EXPR C "${C} + 1")
163 endforeach()
164
165 if(DISABLE_WERROR OR ENABLE_EXTRA_GCC_CHECKS)
166         remove_definitions( -Werror )
167 endif()
168
169 if(CMAKE_COMPILER_IS_GNUCC)
170         add_definitions( -D_U_=__attribute__\(\(unused\)\) )
171 else()
172         add_definitions( -D_U_=\"\" )
173 endif()
174
175 # todo 
176 # Same for linker flags, but it looks like it's do-it-yourself here
177 # AC_WIRESHARK_GCC_LDFLAGS_CHECK([-Wl,--as-needed])
178
179 #The minimum package list
180 set(PACKAGELIST GLIB2 PCAP M LEX YACC Perl SH PythonInterp HtmlViewer ${PACKAGELIST})
181
182 #Build the gui ?
183 if(BUILD_wireshark)
184         set(PACKAGELIST GTK2 ${PACKAGELIST})
185 endif()
186
187 # SMI SNMP
188 if(ENABLE_SMI)
189         set(PACKAGELIST SMI ${PACKAGELIST})
190 endif()
191
192 # GNU crypto
193 if(ENABLE_GCRYPT)
194         set(PACKAGELIST GCRYPT ${PACKAGELIST})
195 endif()
196
197 # GNU SSL/TLS support
198 if(ENABLE_GNUTLS)
199         set(PACKAGELIST GNUTLS ${PACKAGELIST})
200 endif()
201
202 # Regular expressions lib
203 if(ENABLE_PCRE)
204         set(PACKAGELIST PCRE ${PACKAGELIST})
205 endif()
206
207 # Kerberos
208 if(ENABLE_KERBEROS)
209         set(PACKAGELIST KERBEROS ${PACKAGELIST})
210 endif()
211
212 # Portable audio
213 if(ENABLE_PORTAUDIO)
214         set(PACKAGELIST PORTAUDIO ${PACKAGELIST})
215 endif()
216
217
218 # Prefer c-ares over adns
219 if(ENABLE_CARES)        # C Asynchronouse resolver
220         set(PACKAGELIST CARES ${PACKAGELIST})
221 elseif(ENABLE_ADNS)     # Gnu asynchronous DNS
222         set(PACKAGELIST ADNS ${PACKAGELIST})
223 endif()
224
225 # Zlib compression
226 if(ENABLE_Z)
227         set(PACKAGELIST Z ${PACKAGELIST})
228 endif()
229
230 # Lua 5.1 dissectors
231 if(ENABLE_LUA)
232         set(PACKAGELIST LUA ${PACKAGELIST})
233 endif()
234
235 # GeoIP address resolving
236 if(ENABLE_GEOIP)
237         set(PACKAGELIST GEOIP ${PACKAGELIST})
238 endif()
239
240 # Capabilities
241 if(ENABLE_CAP)
242         set(PACKAGELIST CAP ${PACKAGELIST})
243 endif()
244
245 if(ENABLE_PYTHON)
246         set(PACKAGELIST PYTHON ${PACKAGELIST})
247 endif()
248
249 set(PROGLIST text2pcap mergecap capinfos editcap dumpcap)
250
251 #Let's loop the package list
252 foreach(PACKAGE ${PACKAGELIST})
253         find_package(${PACKAGE} REQUIRED)
254         message(${PACKAGE}_FOUND)
255         if (${PACKAGE}_FOUND)
256                 set(HAVE_LIB${PACKAGE} 1)
257                 include_directories(${${PACKAGE}_INCLUDE_DIRS})
258                 message(STATUS "${PACKAGE} includes: ${${PACKAGE}_INCLUDE_DIRS}")
259                 message(STATUS "${PACKAGE} libs: ${${PACKAGE}_LIBRARIES}")
260         endif()
261 endforeach()
262
263 find_package(YAPP)
264
265 if(HAVE_LIBPYTHON)
266         set(HAVE_PYTHON 1)
267         set(PYTHON_DIR "${CMAKE_INSTALL_PREFIX}/lib/wireshark/python/${VERSION}")
268 endif()
269 if(HAVE_LIBLUA)
270         set(HAVE_LUA_H 1)
271         set(HAVE_LUA_5_1 1)
272 endif()
273 if(HAVE_LIBKERBEROS)
274         set(HAVE_KERBEROS 1)
275         # HAVE_HEIMDAL_KERBEROS
276         set(HAVE_MIT_KERBEROS 1)
277         set(HAVE_KEYTYPE_ARCFOUR_56 1)
278 endif()
279 if(HAVE_LIBGEOIP)
280         set(HAVE_GEOIP 1)
281 endif()
282 if(HAVE_LIBCARES)
283         set(HAVE_C_ARES 1)
284 endif()
285 if(HAVE_LIBADNS)
286         set(HAVE_GNU_ADNS 1)
287 endif()
288 if(ENABLE_AIRPCAP)
289         set(HAVE_AIRPCAP 1)
290 endif()
291
292 include(ConfigureChecks.cmake)
293
294 #Big or little endian ?
295 include(TestBigEndian)
296 test_big_endian(WORDS_BIGENDIAN)
297
298 #packaging
299 set(CPACK_PACKAGE_NAME wireshark)
300 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "capture packet")
301 set(CPACK_PACKAGE_VENDOR "wireshark")
302 set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")
303 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
304 set(CPACK_PACKAGE_VERSION_MAJOR "1")
305 set(CPACK_PACKAGE_VERSION_MINOR "3")
306 set(CPACK_PACKAGE_VERSION_PATCH "1")
307 set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
308
309 set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}")
310 set(CPACK_PACKAGE_INSTALL_DIRECTORY "/usr")
311 set(CPACK_GENERATOR "TGZ")
312 set(CPACK_SOURCE_GENERATOR "TGZ")
313
314 set(DATAFILE_DIR "${CMAKE_INSTALL_PREFIX}/share/${CPACK_PACKAGE_NAME}")
315
316 if(ENABLE_PLUGINS)
317         set(HAVE_PLUGINS 1)
318         set(PLUGIN_DIR="${DATAFILE_DIR}/plugins/${CPACK_PACKAGE_VERSION}")
319         set(PLUGIN_SRC_DIRS
320                 plugins/asn1
321                 plugins/docsis
322                 plugins/ethercat
323                 plugins/giop
324                 plugins/gryphon
325                 plugins/irda
326                 plugins/m2m
327                 plugins/mate
328                 plugins/opcua
329                 plugins/profinet
330                 plugins/sercosiii
331                 plugins/stats_tree
332                 plugins/unistim
333                 plugins/wimax
334                 plugins/wimaxasncp
335         )
336 # It seems this stuff doesn't build with autofoo either...
337 #       if(YAPP_FOUND)
338 #               set(PLUGIN_SRC_DIRS
339 #                       ${PLUGIN_SRC_DIRS}
340 #                       plugins/tpg
341 #               )
342 #       endif()
343 else()
344         set(PLUGIN_SRC_DIRS )
345 endif()
346
347 foreach(PLUGIN_DIR ${PLUGIN_SRC_DIRS})
348         add_subdirectory( ${PLUGIN_DIR} )
349 endforeach()
350
351 #Platform specific
352 if(UNIX)
353         set(WS_VAR_IMPORT "extern")
354 endif()
355
356 if(APPLE)
357 #TODO verify that APPLE implies HAVE_OS_X_FRAMEWORKS
358         set(HAVE_OS_X_FRAMEWORKS 1)
359         FIND_LIBRARY (APPLE_CORE_SERVICES_LIBRARY CoreServices)
360         FIND_LIBRARY (APPLE_COCOA_LIBRARY Cocoa)
361 endif()
362
363 if(WIN32)
364         add_definitions(-D_NEED_VAR_IMPORT_)
365         set(WS_VAR_IMPORT "__declspec(dllimport) extern")
366
367         # Disable deprecation
368         if(MSVC80 OR MSVC90)
369                 add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
370         endif()
371 endif()
372
373
374 add_subdirectory( codecs )
375 add_subdirectory( epan )
376 add_subdirectory( gtk )
377 add_subdirectory( tools/lemon )
378 add_subdirectory( wiretap )
379 add_subdirectory( wsutil )
380
381 configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h)
382
383 include(FeatureSummary)
384 #SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ] 
385 PRINT_ENABLED_FEATURES()
386 PRINT_DISABLED_FEATURES()
387
388 link_directories(
389         gtk
390         codecs
391         epan
392         wiretap
393         wsutil
394 )
395
396 ADD_CUSTOM_COMMAND(
397         OUTPUT svnversion.h
398         COMMAND ${PERL}
399                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
400                 ${CMAKE_CURRENT_SOURCE_DIR}
401         DEPENDS
402                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
403 )
404
405 register_tap_files(tshark-tap-register.c
406         ${TSHARK_TAP_SRC}
407 )
408
409 ADD_CUSTOM_COMMAND(
410         OUTPUT ps.c
411         COMMAND ${PYTHON_EXECUTABLE}
412           ${CMAKE_CURRENT_SOURCE_DIR}/tools/rdps.py
413           ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
414           ps.c
415         DEPENDS
416           ${CMAKE_CURRENT_SOURCE_DIR}/tools/rdps.py
417           ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
418 )
419
420 if(UNIX)
421         set(PLATFORM_SRC
422                 capture-pcap-util-unix.c
423         )
424 endif()
425
426 if(WIN32)
427         set(PLATFORM_SRC
428                 capture-wpcap.c capture_wpcap_packet.c
429         )
430 endif()
431
432 set(WTAP_PLUGIN_SOURCES
433         epan/plugins.c
434         epan/report_err.c
435         epan/filesystem.c
436 )
437
438 set(WIRESHARK_COMMON_SRC
439         ${PLATFORM_SRC}
440         capture_errs.c
441         capture-pcap-util.c
442         capture_ui_utils.c
443         cfile.c
444         clopts_common.c
445         disabled_protos.c
446         packet-range.c
447         print.c
448         ps.c
449         sync_pipe_write.c
450         timestats.c
451         util.c
452         tap-megaco-common.c
453         tap-rtp-common.c
454         version_info.c
455 )
456
457 set(TSHARK_TAP_SRC
458         tap-afpstat.c
459         tap-ansi_astat.c
460         tap-bootpstat.c
461         tap-camelcounter.c
462         tap-camelsrt.c
463         tap-comparestat.c
464         tap-dcerpcstat.c
465         tap-funnel.c
466         tap-gsm_astat.c
467         tap-h225counter.c
468         tap-h225rassrt.c
469         tap-httpstat.c
470         tap-iostat.c
471         tap-iousers.c
472         tap-mgcpstat.c
473         tap-megacostat.c
474         tap-protocolinfo.c
475         tap-protohierstat.c
476         tap-radiusstat.c
477         tap-rpcstat.c
478         tap-rpcprogs.c
479         tap-rtp.c
480         tap-sctpchunkstat.c
481         tap-sipstat.c
482         tap-smbsids.c
483         tap-smbstat.c
484         tap-stats_tree.c
485         tap-wspstat.c
486 )
487
488 set(INSTALL_DIRS
489         diameter
490         dtds
491         help
492         radius
493         tpncp
494         wimaxasncp
495 )
496
497 set(INSTALL_FILES
498         ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
499         COPYING
500 #       capinfos.html
501         cfilters
502         colorfilters
503 #       console.lua
504         dfilters
505 #       dtd_gen.lua
506 #       dumpcap.html
507 #       editcap.html
508 #       idl2wrs.html
509 #       init.lua
510 #       ipmap.html
511         manuf
512 #       mergecap.html
513 #       rawshark.html
514         services
515         smi_modules
516 #       text2pcap.html
517 #       tshark.html
518 #       wireshark-filter.html
519 #       wireshark.html
520 #       ws.css
521 )
522
523 set(LIBEPAN_LIBS
524 #               $(wireshark_optional_objects)
525                 epan
526 #               @INET_PTON_LO@
527 #               @INET_NTOP_LO@
528 #               @SSL_LIBS@
529 #               $(plugin_ldadd)
530                 ${PCRE_LIBRARIES}
531                 ${PCAP_LIBRARIES}
532 #               @SOCKET_LIBS@
533 #               @NSL_LIBS@
534                 ${CARES_LIBRARIES}
535                 ${ADNS_LIBRARIES}
536                 ${KERBEROS_LIBRARIES}
537 #               @FRAMEWORKS@
538                 ${LUA_LIBRARIES}
539                 ${PYTHON_LIBRARIES}
540                 ${GEOIP_LIBRARIES}
541                 ${GCRYPT_LIBRARIES}
542                 ${GNUTLS_LIBRARIES}
543                 ${SMI_LIBRARIES}
544                 ${Z_LIBRARIES}
545                 ${M_LIBRARIES}
546 )
547
548 if(BUILD_wireshark)
549         set(wireshark_LIBS
550                 ui
551                 ${GTK2_LIBRARIES}
552                 codecs
553                 ${PORTAUDIO_LIBRARIES}
554                 ${LIBEPAN_LIBS}
555                 ${APPLE_CORE_SERVICES_LIBRARY}
556                 ${APPLE_COCOA_LIBRARY}
557         )
558         set(wireshark_FILES
559                 airpcap_loader.c
560                 alert_box.c
561                 capture.c
562                 capture_info.c
563                 capture_opts.c
564                 capture_sync.c
565                 color_filters.c
566                 file.c
567                 fileset.c
568                 filters.c
569                 g711.c
570                 merge.c
571                 proto_hier_stats.c
572                 summary.c
573                 tempfile.c
574                 ${WIRESHARK_COMMON_SRC}
575         )
576         add_executable(wireshark ${wireshark_FILES})
577         target_link_libraries(wireshark ${wireshark_LIBS})
578         install(TARGETS wireshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
579 endif()
580
581 if(BUILD_tshark)
582         set(tshark_LIBS
583                 ${LIBEPAN_LIBS}
584                 ${APPLE_COCOA_LIBRARY}
585         )
586         set(tshark_FILES
587                 capture_opts.c
588                 capture_sync.c
589                 tempfile.c
590                 tshark-tap-register.c
591                 tshark.c
592                 ${TSHARK_TAP_SRC}
593                 ${WIRESHARK_COMMON_SRC}
594         )
595         add_executable(tshark ${tshark_FILES})
596         target_link_libraries(tshark ${tshark_LIBS})
597         install(TARGETS tshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
598 endif()
599
600 if(BUILD_rawshark)
601         set(rawshark_LIBS
602                 ${LIBEPAN_LIBS}
603                 ${APPLE_COCOA_LIBRARY}
604         )
605         set(rawshark_FILES
606                 ${WIRESHARK_COMMON_SRC}
607                 rawshark.c
608         )
609         add_executable(rawshark ${rawshark_FILES})
610         target_link_libraries(rawshark ${rawshark_LIBS})
611         install(TARGETS rawshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
612 endif()
613
614 if(BUILD_dftest)
615         set(dftest_LIBS
616                 ${LIBEPAN_LIBS}
617         )
618         set(dftest_FILES
619                 dftest.c
620                 util.c
621         )
622         add_executable(dftest ${dftest_FILES})
623         target_link_libraries(dftest ${dftest_LIBS})
624         install(TARGETS dftest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
625 endif()
626
627 if(BUILD_randpkt)
628         set(randpkt_LIBS
629                 wiretap
630                 ${M_LIBRARIES}
631                 ${PCAP_LIBRARIES}
632 #               @SOCKET_LIBS@
633 #               @NSL_LIBS@
634                 ${CARES_LIBRARIES}
635                 ${ADNS_LIBRARIES}
636                 ${Z_LIBRARIES}
637         )
638         set(randpkt_FILES
639                 randpkt.c
640         )
641         add_executable(randpkt ${randpkt_FILES})
642         target_link_libraries(randpkt ${randpkt_LIBS})
643         install(TARGETS randpkt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
644 endif()
645
646 if(BUILD_text2pcap)
647         set(text2pcap_LIBS
648                 wiretap
649                 ${M_LIBRARIES}
650                 ${Z_LIBRARIES}
651         )
652         set(text2pcap_FILES
653                 text2pcap.c
654         )
655         add_lex_files(text2pcap_FILES
656                 text2pcap-scanner.l
657         )
658         add_executable(text2pcap ${text2pcap_FILES})
659         target_link_libraries(text2pcap ${text2pcap_LIBS})
660         install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
661 endif()
662
663 if(BUILD_mergecap)
664         set(mergecap_LIBS
665                 wiretap
666                 ${Z_LIBRARIES}
667         )
668         set(mergecap_FILES
669                 mergecap.c
670                 merge.c
671                 svnversion.h
672         )
673         add_executable(mergecap ${mergecap_FILES})
674         target_link_libraries(mergecap ${mergecap_LIBS})
675         install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
676 endif()
677
678 if(BUILD_capinfos)
679         set(capinfos_LIBS
680                 wiretap
681                 ${Z_LIBRARIES}
682                 ${APPLE_COCOA_LIBRARY}
683         )
684         set(capinfos_FILES
685                 capinfos.c
686                 ${WTAP_PLUGIN_SOURCES}
687         )
688         add_executable(capinfos ${capinfos_FILES})
689         target_link_libraries(capinfos ${capinfos_LIBS})
690         install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
691 endif()
692
693 if(BUILD_editcap)
694         set(editcap_LIBS
695                 wiretap
696                 ${Z_LIBRARIES}
697         )
698         set(editcap_FILES
699                 editcap.c
700                 epan/crypt/crypt-md5.c
701                 epan/nstime.c
702                 ${WTAP_PLUGIN_SOURCES}
703         )
704         add_executable(editcap ${editcap_FILES})
705         target_link_libraries(editcap ${editcap_LIBS})
706         install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
707 endif()
708
709 if(BUILD_dumpcap)
710         set(dumpcap_LIBS
711                 wiretap
712 #               @INET_NTOP_LO@
713                 ${PCAP_LIBRARIES}
714                 ${CAP_LIBRARIES}
715 #               @SOCKET_LIBS@
716 #               @NSL_LIBS@
717 #               @FRAMEWORKS@
718                 ${GCRYPT_LIBRARIES}
719                 ${GNUTLS_LIBRARIES}
720                 ${Z_LIBRARIES}
721                 ${APPLE_COCOA_LIBRARY}
722         )
723         set(dumpcap_FILES
724                 svnversion.h
725                 capture_opts.c
726                 capture-pcap-util.c
727                 capture_stop_conditions.c
728                 clopts_common.c
729                 conditions.c
730                 dumpcap.c
731                 pcapio.c
732                 ringbuffer.c
733                 sync_pipe_write.c
734                 tempfile.c
735                 version_info.c
736                 ${PLATFORM_SRC}
737         )
738         add_executable(dumpcap ${dumpcap_FILES})
739         target_link_libraries(dumpcap ${dumpcap_LIBS})
740         install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
741 endif()
742
743 ADD_CUSTOM_COMMAND(
744         OUTPUT  AUTHORS-SHORT
745         COMMAND ${PERL}
746                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
747                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
748                 < ${CMAKE_SOURCE_DIR}/AUTHORS
749                 > AUTHORS-SHORT
750         DEPENDS
751                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
752                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
753                 ${CMAKE_SOURCE_DIR}/AUTHORS
754 )
755
756 add_custom_target(
757         auxiliary ALL
758         DEPENDS
759                 AUTHORS-SHORT
760                 # todo: Add manpages and onlinedocs and generate them
761 )
762
763 install(
764         FILES
765                 ${INSTALL_FILES}
766         DESTINATION
767                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
768 )
769
770 install(
771         DIRECTORY
772                 ${INSTALL_DIRS}
773         DIRECTORY_PERMISSIONS
774                 OWNER_EXECUTE OWNER_WRITE OWNER_READ
775                 GROUP_EXECUTE GROUP_READ
776                 WORLD_EXECUTE WORLD_READ
777         DESTINATION
778                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
779         PATTERN ".svn" EXCLUDE
780         PATTERN "Makefile.*" EXCLUDE
781         PATTERN "faq.py" EXCLUDE
782 )