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