96638a4a00c73230b009c07e273cbd6bbd36c35f
[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 add_subdirectory( codecs )
352 add_subdirectory( epan )
353 add_subdirectory( gtk )
354 add_subdirectory( tools/lemon )
355 add_subdirectory( wiretap )
356 add_subdirectory( wsutil )
357
358 #Platform specific
359 if(UNIX)
360         set(WS_VAR_IMPORT "extern")
361 endif()
362
363 if(APPLE)
364 #TODO verify that APPLE implies HAVE_OS_X_FRAMEWORKS
365         set(HAVE_OS_X_FRAMEWORKS 1)
366         FIND_LIBRARY (APPLE_CORE_SERVICES_LIBRARY CoreServices)
367         FIND_LIBRARY (APPLE_COCOA_LIBRARY Cocoa)
368 endif()
369
370 if(WIN32)
371         add_definitions(-D_NEED_VAR_IMPORT_)
372         set(WS_VAR_IMPORT "__declspec(dllimport) extern")
373
374         # Disable deprecation
375         if(MSVC80 OR MSVC90)
376                 add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
377         endif()
378 endif()
379
380 configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h)
381
382 include(FeatureSummary)
383 #SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ]
384 PRINT_ENABLED_FEATURES()
385 PRINT_DISABLED_FEATURES()
386
387 link_directories(
388         gtk
389         codecs
390         epan
391         wiretap
392         wsutil
393 )
394
395 ADD_CUSTOM_COMMAND(
396         OUTPUT svnversion.h
397         COMMAND ${PERL}
398                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
399                 ${CMAKE_CURRENT_SOURCE_DIR}
400         DEPENDS
401                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
402 )
403
404 register_tap_files(tshark-tap-register.c
405         ${TSHARK_TAP_SRC}
406 )
407
408 ADD_CUSTOM_COMMAND(
409         OUTPUT ps.c
410         COMMAND ${PYTHON_EXECUTABLE}
411           ${CMAKE_CURRENT_SOURCE_DIR}/tools/rdps.py
412           ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
413           ps.c
414         DEPENDS
415           ${CMAKE_CURRENT_SOURCE_DIR}/tools/rdps.py
416           ${CMAKE_CURRENT_SOURCE_DIR}/print.ps
417 )
418
419 if(UNIX)
420         set(PLATFORM_SRC
421                 capture-pcap-util-unix.c
422         )
423 endif()
424
425 if(WIN32)
426         set(PLATFORM_SRC
427                 capture-wpcap.c capture_wpcap_packet.c
428         )
429 endif()
430
431 set(WTAP_PLUGIN_SOURCES
432         epan/plugins.c
433         epan/report_err.c
434         epan/filesystem.c
435 )
436
437 set(WIRESHARK_COMMON_SRC
438         ${PLATFORM_SRC}
439         capture_errs.c
440         capture-pcap-util.c
441         capture_ui_utils.c
442         cfile.c
443         clopts_common.c
444         disabled_protos.c
445         packet-range.c
446         print.c
447         ps.c
448         sync_pipe_write.c
449         timestats.c
450         util.c
451         tap-megaco-common.c
452         tap-rtp-common.c
453         version_info.c
454 )
455
456 set(TSHARK_TAP_SRC
457         tap-afpstat.c
458         tap-ansi_astat.c
459         tap-bootpstat.c
460         tap-camelcounter.c
461         tap-camelsrt.c
462         tap-comparestat.c
463         tap-dcerpcstat.c
464         tap-funnel.c
465         tap-gsm_astat.c
466         tap-h225counter.c
467         tap-h225rassrt.c
468         tap-httpstat.c
469         tap-iostat.c
470         tap-iousers.c
471         tap-mgcpstat.c
472         tap-megacostat.c
473         tap-protocolinfo.c
474         tap-protohierstat.c
475         tap-radiusstat.c
476         tap-rpcstat.c
477         tap-rpcprogs.c
478         tap-rtp.c
479         tap-sctpchunkstat.c
480         tap-sipstat.c
481         tap-smbsids.c
482         tap-smbstat.c
483         tap-stats_tree.c
484         tap-wspstat.c
485 )
486
487 set(INSTALL_DIRS
488         diameter
489         dtds
490         help
491         radius
492         tpncp
493         wimaxasncp
494 )
495
496 set(INSTALL_FILES
497         ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
498         COPYING
499 #       capinfos.html
500         cfilters
501         colorfilters
502 #       console.lua
503         dfilters
504 #       dtd_gen.lua
505 #       dumpcap.html
506 #       editcap.html
507 #       idl2wrs.html
508 #       init.lua
509 #       ipmap.html
510         manuf
511 #       mergecap.html
512 #       rawshark.html
513         services
514         smi_modules
515 #       text2pcap.html
516 #       tshark.html
517 #       wireshark-filter.html
518 #       wireshark.html
519 #       ws.css
520 )
521
522 set(LIBEPAN_LIBS
523 #               $(wireshark_optional_objects)
524                 epan
525 #               @INET_PTON_LO@
526 #               @INET_NTOP_LO@
527 #               @SSL_LIBS@
528 #               $(plugin_ldadd)
529                 ${PCRE_LIBRARIES}
530                 ${PCAP_LIBRARIES}
531 #               @SOCKET_LIBS@
532 #               @NSL_LIBS@
533                 ${CARES_LIBRARIES}
534                 ${ADNS_LIBRARIES}
535                 ${KERBEROS_LIBRARIES}
536 #               @FRAMEWORKS@
537                 ${LUA_LIBRARIES}
538                 ${PYTHON_LIBRARIES}
539                 ${GEOIP_LIBRARIES}
540                 ${GCRYPT_LIBRARIES}
541                 ${GNUTLS_LIBRARIES}
542                 ${SMI_LIBRARIES}
543                 ${Z_LIBRARIES}
544                 ${M_LIBRARIES}
545 )
546
547 if(BUILD_wireshark)
548         set(wireshark_LIBS
549                 ui
550                 ${GTK2_LIBRARIES}
551                 codecs
552                 ${PORTAUDIO_LIBRARIES}
553                 ${LIBEPAN_LIBS}
554                 ${APPLE_CORE_SERVICES_LIBRARY}
555                 ${APPLE_COCOA_LIBRARY}
556         )
557         set(wireshark_FILES
558                 airpcap_loader.c
559                 alert_box.c
560                 capture.c
561                 capture_info.c
562                 capture_opts.c
563                 capture_sync.c
564                 color_filters.c
565                 file.c
566                 fileset.c
567                 filters.c
568                 g711.c
569                 merge.c
570                 proto_hier_stats.c
571                 summary.c
572                 tempfile.c
573                 ${WIRESHARK_COMMON_SRC}
574         )
575         add_executable(wireshark ${wireshark_FILES})
576         target_link_libraries(wireshark ${wireshark_LIBS})
577         install(TARGETS wireshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
578 endif()
579
580 if(BUILD_tshark)
581         set(tshark_LIBS
582                 ${LIBEPAN_LIBS}
583                 ${APPLE_COCOA_LIBRARY}
584         )
585         set(tshark_FILES
586                 capture_opts.c
587                 capture_sync.c
588                 tempfile.c
589                 tshark-tap-register.c
590                 tshark.c
591                 ${TSHARK_TAP_SRC}
592                 ${WIRESHARK_COMMON_SRC}
593         )
594         add_executable(tshark ${tshark_FILES})
595         target_link_libraries(tshark ${tshark_LIBS})
596         install(TARGETS tshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
597 endif()
598
599 if(BUILD_rawshark)
600         set(rawshark_LIBS
601                 ${LIBEPAN_LIBS}
602                 ${APPLE_COCOA_LIBRARY}
603         )
604         set(rawshark_FILES
605                 ${WIRESHARK_COMMON_SRC}
606                 rawshark.c
607         )
608         add_executable(rawshark ${rawshark_FILES})
609         target_link_libraries(rawshark ${rawshark_LIBS})
610         install(TARGETS rawshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
611 endif()
612
613 if(BUILD_dftest)
614         set(dftest_LIBS
615                 ${LIBEPAN_LIBS}
616         )
617         set(dftest_FILES
618                 dftest.c
619                 util.c
620         )
621         add_executable(dftest ${dftest_FILES})
622         target_link_libraries(dftest ${dftest_LIBS})
623         install(TARGETS dftest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
624 endif()
625
626 if(BUILD_randpkt)
627         set(randpkt_LIBS
628                 wiretap
629                 ${M_LIBRARIES}
630                 ${PCAP_LIBRARIES}
631 #               @SOCKET_LIBS@
632 #               @NSL_LIBS@
633                 ${CARES_LIBRARIES}
634                 ${ADNS_LIBRARIES}
635                 ${Z_LIBRARIES}
636         )
637         set(randpkt_FILES
638                 randpkt.c
639         )
640         add_executable(randpkt ${randpkt_FILES})
641         target_link_libraries(randpkt ${randpkt_LIBS})
642         install(TARGETS randpkt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
643 endif()
644
645 if(BUILD_text2pcap)
646         set(text2pcap_LIBS
647                 wiretap
648                 ${M_LIBRARIES}
649                 ${Z_LIBRARIES}
650         )
651         set(text2pcap_FILES
652                 text2pcap.c
653         )
654         add_lex_files(text2pcap_FILES
655                 text2pcap-scanner.l
656         )
657         add_executable(text2pcap ${text2pcap_FILES})
658         target_link_libraries(text2pcap ${text2pcap_LIBS})
659         install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
660 endif()
661
662 if(BUILD_mergecap)
663         set(mergecap_LIBS
664                 wiretap
665                 ${Z_LIBRARIES}
666         )
667         set(mergecap_FILES
668                 mergecap.c
669                 merge.c
670                 svnversion.h
671         )
672         add_executable(mergecap ${mergecap_FILES})
673         target_link_libraries(mergecap ${mergecap_LIBS})
674         install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
675 endif()
676
677 if(BUILD_capinfos)
678         set(capinfos_LIBS
679                 wiretap
680                 ${Z_LIBRARIES}
681                 ${APPLE_COCOA_LIBRARY}
682         )
683         set(capinfos_FILES
684                 capinfos.c
685                 ${WTAP_PLUGIN_SOURCES}
686         )
687         add_executable(capinfos ${capinfos_FILES})
688         target_link_libraries(capinfos ${capinfos_LIBS})
689         install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
690 endif()
691
692 if(BUILD_editcap)
693         set(editcap_LIBS
694                 wiretap
695                 ${Z_LIBRARIES}
696         )
697         set(editcap_FILES
698                 editcap.c
699                 epan/crypt/crypt-md5.c
700                 epan/nstime.c
701                 ${WTAP_PLUGIN_SOURCES}
702         )
703         add_executable(editcap ${editcap_FILES})
704         target_link_libraries(editcap ${editcap_LIBS})
705         install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
706 endif()
707
708 if(BUILD_dumpcap)
709         set(dumpcap_LIBS
710                 wiretap
711 #               @INET_NTOP_LO@
712                 ${PCAP_LIBRARIES}
713                 ${CAP_LIBRARIES}
714 #               @SOCKET_LIBS@
715 #               @NSL_LIBS@
716 #               @FRAMEWORKS@
717                 ${GCRYPT_LIBRARIES}
718                 ${GNUTLS_LIBRARIES}
719                 ${Z_LIBRARIES}
720                 ${APPLE_COCOA_LIBRARY}
721         )
722         set(dumpcap_FILES
723                 svnversion.h
724                 capture_opts.c
725                 capture-pcap-util.c
726                 capture_stop_conditions.c
727                 clopts_common.c
728                 conditions.c
729                 dumpcap.c
730                 pcapio.c
731                 ringbuffer.c
732                 sync_pipe_write.c
733                 tempfile.c
734                 version_info.c
735                 ${PLATFORM_SRC}
736         )
737         add_executable(dumpcap ${dumpcap_FILES})
738         target_link_libraries(dumpcap ${dumpcap_LIBS})
739         install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
740 endif()
741
742 ADD_CUSTOM_COMMAND(
743         OUTPUT  AUTHORS-SHORT
744         COMMAND ${PERL}
745                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
746                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
747                 < ${CMAKE_SOURCE_DIR}/AUTHORS
748                 > AUTHORS-SHORT
749         DEPENDS
750                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
751                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
752                 ${CMAKE_SOURCE_DIR}/AUTHORS
753 )
754
755 add_custom_target(
756         auxiliary ALL
757         DEPENDS
758                 AUTHORS-SHORT
759                 # todo: Add manpages and onlinedocs and generate them
760 )
761
762 install(
763         FILES
764                 ${INSTALL_FILES}
765         DESTINATION
766                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
767 )
768
769 install(
770         DIRECTORY
771                 ${INSTALL_DIRS}
772         DIRECTORY_PERMISSIONS
773                 OWNER_EXECUTE OWNER_WRITE OWNER_READ
774                 GROUP_EXECUTE GROUP_READ
775                 WORLD_EXECUTE WORLD_READ
776         DESTINATION
777                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
778         PATTERN ".svn" EXCLUDE
779         PATTERN "Makefile.*" EXCLUDE
780         PATTERN "faq.py" EXCLUDE
781 )