9a1020340a51a285eef9d0ff9f8d9ef8773619e7
[metze/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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 #
23
24 project(Wireshark C CXX)
25
26 cmake_minimum_required(VERSION 2.6)
27 set(CMAKE_BACKWARDS_COMPATIBILITY 2.6)
28
29 # Needs to be set after cmake_minimum_required or cmake_policy(VERSION)
30 if(COMMAND cmake_policy)
31         # Backward compatibility for versions < 2.6.3
32         cmake_policy(SET CMP0011 OLD)
33 #       cmake_policy(SET CMP0015 NEW)
34 endif(COMMAND cmake_policy)
35
36 # set(PROJECT_MAJOR_VERSION 1)
37 # set(PROJECT_MINOR_VERSION 9)
38 # set(PROJECT_PATCH_VERSION 0)
39 # set(PROJECT_VERSION_EXTENSION "-rc5")
40 # If not set, copy over Wireshark version from configure.ac
41 if(NOT PROJECT_MAJOR_VERSION)
42         file(STRINGS
43                 ${CMAKE_SOURCE_DIR}/configure.ac
44                 PROJECT_MAJOR_VERSION_TMP
45                 REGEX "^m4_define\\(\\[?version_major\\]?, *\\[?[0-9]+\\]?\\)"
46         )
47         file(STRINGS
48                 ${CMAKE_SOURCE_DIR}/configure.ac
49                 PROJECT_MINOR_VERSION_TMP
50                 REGEX "^m4_define\\(\\[?version_minor\\]?, *\\[?[0-9]+\\]?\\)"
51         )
52         file(STRINGS
53                 ${CMAKE_SOURCE_DIR}/configure.ac
54                 PROJECT_PATCH_VERSION_TMP
55                 REGEX "^m4_define\\(\\[?version_micro\\]?, *\\[?[0-9]+\\]?\\)"
56         )
57         # XXX pull VERSION_EXTENSION out of configure.ac ?
58
59         string(REGEX REPLACE "m4_define\\(\\[?version_major\\]?, *\\[?([0-9]+)\\]?\\)"
60                 "\\1"
61                 PROJECT_MAJOR_VERSION
62                 ${PROJECT_MAJOR_VERSION_TMP}
63         )
64         string(REGEX REPLACE "m4_define\\(\\[?version_minor\\]?, *\\[?([0-9]+)\\]?\\)"
65                 "\\1"
66                 PROJECT_MINOR_VERSION
67                 ${PROJECT_MINOR_VERSION_TMP}
68         )
69         string(REGEX REPLACE "m4_define\\(\\[?version_micro\\]?, *\\[?([0-9]+)\\]?\\)"
70                 "\\1"
71                 PROJECT_PATCH_VERSION
72                 ${PROJECT_PATCH_VERSION_TMP}
73         )
74 endif()
75
76
77 if(PROJECT_VERSION_EXTENSION)
78         set(PROJECT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}${PROJECT_VERSION_EXTENSION})
79 else()
80         set(PROJECT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION})
81 endif()
82
83 message(STATUS "V: ${PROJECT_VERSION}, MaV: ${PROJECT_MAJOR_VERSION}, MiV: ${PROJECT_MINOR_VERSION}, PL: ${PROJECT_PATCH_VERSION}, EV: ${PROJECT_VERSION_EXTENSION}.")
84
85 #Where to find local cmake scripts
86 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
87 INCLUDE(UseLemon)
88 INCLUDE(UseMakeDissectorReg)
89 INCLUDE(UseMakeTapReg)
90 INCLUDE(UseAsn2Wrs)
91
92 # Under linux the release mode (CMAKE_BUILD_TYPE=release) defines NDEBUG
93
94 # Enable with: "make VERBOSE=1"
95 set(CMAKE_VERBOSE_MAKEFILE OFF)
96
97 #Defines CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_DATADIR, etc ...
98 include(CMakeInstallDirs)
99
100 include_directories(
101         ${CMAKE_BINARY_DIR}
102         ${CMAKE_SOURCE_DIR}
103         ${CMAKE_SOURCE_DIR}/epan
104         ${CMAKE_SOURCE_DIR}/tools/lemon
105         ${CMAKE_SOURCE_DIR}/wiretap
106 )
107
108 #Where to put libraries
109 if(NOT LIBRARY_OUTPUT_PATH)
110         set(LIBRARY_OUTPUT_PATH ${Wireshark_BINARY_DIR}/lib CACHE INTERNAL
111                    "Single output directory for building all libraries.")
112 endif()
113
114
115 include(CMakeOptions.txt)
116
117
118 set(WIRESHARK_C_FLAGS
119         -O2
120         -g
121         -Wall
122         -W
123         -Wextra
124         -Wendif-labels
125         -Wpointer-arith
126         -Warray-bounds
127         -Wformat-security
128         -Wshorten-64-to-32
129         -Wvla
130         -Waddress
131         -Warray-bounds
132         -Wattributes
133         -Wdiv-by-zero
134         -Wignored-qualifiers
135         -Wno-overlength-strings
136         -Wwrite-strings
137         -Wno-long-long
138         -Wpragmas
139 )
140
141 set(WIRESHARK_C_ONLY_FLAGS
142         # The following are C only, not C++
143         -Wc++-compat
144         -Wdeclaration-after-statement
145         -Wshadow
146         -Wno-pointer-sign
147         -Wold-style-definition
148         -Wstrict-prototypes
149         -Wlogical-op
150         -Wjump-misses-init
151 )
152
153 set(WIRESHARK_EXTRA_C_FLAGS
154         -pedantic
155         -Woverflow
156         -fstrict-overflow -Wstrict-overflow=4
157         -Wunreachable-code
158         -Wunsafe-loop-optimizations
159         -Wcast-align
160         -Wcast-qual
161         -Wformat-security
162         -Wredundant-decls
163         # All the registration functions block these for now.
164         -Wmissing-declarations
165 )
166
167 set(WIRESHARK_EXTRA_C_ONLY_FLAGS
168         # The following are C only, not C++
169         -Wbad-function-cast
170         # All the registration functions block these for now.
171         -Wmissing-prototypes
172 )
173
174 # With clang some tests don't fail properly during testing but only
175 # during real compiles
176
177 if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
178
179         set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS}
180             -fexcess-precision=fast
181         )
182
183         set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS}
184         )
185 endif()
186
187 if(ENABLE_EXTRA_GCC_CHECKS)   # This overrides -Werror
188         set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS} ${WIRESHARK_EXTRA_C_FLAGS})
189         set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS} ${WIRESHARK_EXTRA_C_ONLY_FLAGS})
190 endif()
191
192 add_definitions(
193         -DG_DISABLE_DEPRECATED
194         -DG_DISABLE_SINGLE_INCLUDES
195 )
196
197 # Counterhack to work around some cache magic in CHECK_C_SOURCE_COMPILES
198 include(CheckCCompilerFlag)
199
200 if(NOT DISABLE_WERROR AND NOT ENABLE_EXTRA_GCC_CHECKS)
201         check_c_compiler_flag(-Werror=unknown-warning-option WERR_UNKNOWN)
202         check_c_compiler_flag(-Werror WERROR)
203 else()
204         unset(WERR_UNKNOWN)
205         unset(WERROR)
206 endif()
207 # string of additional compile command line flags for check_c_compiler_flag
208 if(WERR_UNKNOWN)
209         set(CMAKE_REQUIRED_FLAGS -Werror=unknown-warning-option )
210 endif()
211
212 set(C 0)
213 # Sigh: Have to use THIS_FLAG instead of ${F} for some reason
214 foreach(THIS_FLAG ${WIRESHARK_C_FLAGS})
215         set(F WS_C_FLAG_${C})
216         set(${F} ${THIS_FLAG})
217         set(V WS_C_FLAG_VALID${C})
218         message(STATUS "Checking for flag: ${${F}}")
219         check_c_compiler_flag(${${F}} ${V})
220         if (${${V}})
221                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${F}}")
222                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${F}}")
223         endif()
224         math(EXPR C "${C} + 1")
225 endforeach()
226 # Continue increasing C from previous loop
227 foreach(THIS_FLAG ${WIRESHARK_C_ONLY_FLAGS})
228         set(F WS_C_FLAG_${C})
229         set(${F} ${THIS_FLAG})
230         set(V WS_C_FLAG_VALID${C})
231         message(STATUS "Checking for flag: ${${F}}")
232         check_c_compiler_flag(${${F}} ${V})
233         if (${${V}})
234                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${F}}")
235         endif()
236         math(EXPR C "${C} + 1")
237 endforeach()
238 message(STATUS "C-Flags: ${CMAKE_C_FLAGS}\nCXX-Flags: ${CMAKE_CXX_FLAGS}")
239
240 check_c_compiler_flag(-fvisibility=hidden FVHIDDEN)
241 if((FVHIDDEN))
242         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
243 else() # TODO add alternate compiler flags for hiding symbols
244         message(WARNING "Hiding shared library symbols is not supported by the compiler."
245                 " All shared library symbols will be exported.")
246 endif()
247
248 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
249         set (C_UNUSED "__attribute__((unused))" )
250 else()
251         set (C_UNUSED "" )
252 endif()
253
254 set(WIRESHARK_LD_FLAGS
255         -Wl,--as-needed
256         # -flto
257         # -fwhopr
258         # -fwhole-program
259 )
260
261 include(CheckCLinkerFlag)
262 set(C 0)
263 # Sigh: Have to use THIS_FLAG instead of ${F} for some reason
264 foreach(THIS_FLAG ${WIRESHARK_LD_FLAGS})
265         set(F WS_LD_FLAG_${C})
266         set(${F} ${THIS_FLAG})
267         set(V WS_LD_FLAG_VALID${C})
268         check_c_linker_flag(${${F}} ${V})
269         if (${${V}})
270                 set(WS_LINK_FLAGS ${WS_LINK_FLAGS} ${${F}})
271         endif()
272         math(EXPR C "${C} + 1")
273 endforeach()
274
275 if(ENABLE_STATIC)
276   set(LINK_MODE_LIB STATIC)
277   set(LINK_MODE_MODULE STATIC)
278 else()
279   set(LINK_MODE_LIB SHARED)
280   set(LINK_MODE_MODULE MODULE)
281 endif()
282
283 if(APPLE AND EXISTS /usr/local/opt/gettext)
284         # GLib on OS X requires libintl. Homebrew installs gettext (and
285         # libintl) in /usr/local/opt/gettext
286         include_directories(/usr/local/opt/gettext/include)
287         link_directories(/usr/local/opt/gettext/lib)
288 endif()
289
290 # The packagelist is doing some magic:  If we add XXX to the packagelist, we
291 # - may optionally set XXX_OPTIONS to pass to the find_package command
292 # - will call FindXXX.cmake
293 # - return found libraries in XXX_LIBRARIES
294 # - return found include in XXX_INCLUDE_DIRS
295 # - set HAVE_XXX
296
297 #The minimum package list
298 set(PACKAGELIST GLIB2 GMODULE2 GTHREAD2 M LEX YACC Perl SH PythonInterp)
299 set(GLIB2_FIND_REQUIRED)
300 set(GLIB2_MIN_VERSION 2.14.0)
301 set(GTHREAD2_REQUIRED)
302 set(PCAP_REQUIRED)
303 set(M_REQUIRED)
304 set(PythonInterp_FIND_VERSION 2)
305 set(Python_ADDITIONAL_VERSIONS 3)
306
307 set(PACKAGELIST ${PACKAGELIST} HtmlViewer)
308
309 if(ENABLE_PCAP)
310         set(PACKAGELIST ${PACKAGELIST} PCAP)
311 endif()
312
313 # Build the GTK-GUI?
314 if(BUILD_wireshark)
315         if(ENABLE_GTK3)
316                 set(PACKAGELIST ${PACKAGELIST} GTK3)
317         else()
318                 set(PACKAGELIST ${PACKAGELIST} GTK2)
319                 set(GTK2_OPTIONS COMPONENTS gtk)
320                 set(GTK2_FIND_VERSION 2.12)
321                 set(GTK2_DEBUG false)
322         endif()
323 endif()
324
325 # Build the Qt GUI?
326 if(BUILD_qtshark)
327         if(ENABLE_QT5)
328                 set(PACKAGELIST ${PACKAGELIST} Qt5Widgets Qt5PrintSupport Qt5LinguistTools)
329                 set(QT_VERSION 5)
330         else()
331                 set(PACKAGELIST ${PACKAGELIST} Qt4)
332                 # set(Qt4_OPTIONS 4.7.1 REQUIRED QtCore QtGui)
333                 set(QT_VERSION 4)
334         endif()
335 endif()
336
337 # SMI SNMP
338 if(ENABLE_SMI)
339         set(PACKAGELIST ${PACKAGELIST} SMI)
340 endif()
341
342 # GNU crypto
343 if(ENABLE_GCRYPT)
344         set(PACKAGELIST ${PACKAGELIST} GCRYPT)
345 endif()
346
347 # GNU SSL/TLS support
348 if(ENABLE_GNUTLS)
349         set(PACKAGELIST ${PACKAGELIST} GNUTLS)
350 endif()
351
352 # Kerberos
353 if(ENABLE_KERBEROS)
354         set(PACKAGELIST ${PACKAGELIST} KERBEROS)
355 endif()
356
357 # Portable audio
358 if(ENABLE_PORTAUDIO)
359         set(PACKAGELIST ${PACKAGELIST} PORTAUDIO)
360 endif()
361
362
363 # Prefer c-ares over adns
364 if(ENABLE_CARES)        # C Asynchronouse resolver
365         set(PACKAGELIST ${PACKAGELIST} CARES)
366 elseif(ENABLE_ADNS)     # Gnu asynchronous DNS
367         set(PACKAGELIST ${PACKAGELIST} ADNS)
368 endif()
369
370 # Zlib compression
371 if(ENABLE_ZLIB)
372         set(PACKAGELIST ${PACKAGELIST} ZLIB)
373 endif()
374
375 # Lua 5.1 dissectors
376 if(ENABLE_LUA)
377         set(PACKAGELIST ${PACKAGELIST} LUA)
378 endif()
379
380 # GeoIP address resolving
381 if(ENABLE_GEOIP)
382         set(PACKAGELIST ${PACKAGELIST} GEOIP)
383 endif()
384
385 if(ENABLE_NETLINK)
386         set(PACKAGELIST ${PACKAGELIST} NL)
387 endif()
388
389 # Capabilities
390 if(ENABLE_CAP)
391         set(PACKAGELIST ${PACKAGELIST} CAP)
392 endif()
393
394 if(ENABLE_PYTHON)
395         set(PACKAGELIST ${PACKAGELIST} PythonLibs)
396 endif()
397
398 set(PACKAGELIST ${PACKAGELIST} YAPP)
399
400 set(PACKAGELIST ${PACKAGELIST} POD)
401
402
403 set(PROGLIST text2pcap mergecap capinfos editcap reordercap dumpcap)
404
405 #Sort the package list
406 list(SORT PACKAGELIST)
407 message(STATUS "Packagelist: ${PACKAGELIST}")
408 #Let's loop the package list
409 foreach(PACKAGE ${PACKAGELIST})
410         if(${PACKAGE} STREQUAL "Qt4")
411                 set(PACKAGE_VAR "QT")
412         elseif(${PACKAGE} STREQUAL "PythonInterp")
413                 set(PACKAGE_VAR "PYTHON")
414         elseif(${PACKAGE} STREQUAL "PythonLibs")
415                 set(PACKAGE_VAR "PYTHON")
416         else()
417                 set(PACKAGE_VAR ${PACKAGE})
418         endif()
419         if(${PACKAGE}_OPTIONS)
420                 find_package(${PACKAGE} ${${PACKAGE}_OPTIONS})
421         elseif(${PACKAGE}_REQUIRED)
422                 find_package(${PACKAGE} REQUIRED)
423         else()
424                 find_package(${PACKAGE})
425         endif()
426         message(${PACKAGE_VAR}_FOUND)
427         if (${PACKAGE_VAR}_FOUND)
428                 set(HAVE_LIB${PACKAGE_VAR} 1)
429                 include_directories(${${PACKAGE_VAR}_INCLUDE_DIRS})
430                 message(STATUS "${PACKAGE} includes: ${${PACKAGE_VAR}_INCLUDE_DIRS}")
431                 message(STATUS "${PACKAGE} libs: ${${PACKAGE_VAR}_LIBRARIES}")
432                 if (${PACKAGE}_DEFINITIONS)
433                         message(STATUS "${PACKAGE} definitions: ${${PACKAGE_VAR}_DEFINITIONS}")
434                 endif()
435                 if (${PACKAGE_VAR}_EXECUTABLE)
436                         message(STATUS "${PACKAGE} executable: ${${PACKAGE_VAR}_EXECUTABLE}")
437                 endif()
438         endif()
439 endforeach()
440
441 #packaging
442 include(CPackConfig.txt)
443
444 if(HAVE_LIBPYTHON)
445         set(HAVE_PYTHON 1)
446         set(PYTHON_DIR "${CMAKE_INSTALL_PREFIX}/lib/wireshark/python/${CPACK_PACKAGE_VERSION}")
447 endif()
448 if(HAVE_LIBLUA)
449         set(HAVE_LUA_H 1)
450         set(HAVE_LUA 1)
451 endif()
452 if(HAVE_LIBKERBEROS)
453         set(HAVE_KERBEROS 1)
454         # HAVE_HEIMDAL_KERBEROS
455         set(HAVE_MIT_KERBEROS 1)
456         set(HAVE_KEYTYPE_ARCFOUR_56 1)
457 endif()
458 if(HAVE_LIBGEOIP)
459         set(HAVE_GEOIP 1)
460 endif()
461 if(HAVE_LIBCARES)
462         set(HAVE_C_ARES 1)
463 endif()
464 if(HAVE_LIBADNS)
465         set(HAVE_GNU_ADNS 1)
466 endif()
467 if(ENABLE_AIRPCAP)
468         set(HAVE_AIRPCAP 1)
469 endif()
470 if(HAVE_LIBNL AND ENABLE_AIRPCAP)
471         message(ERROR "Airpcap and Libnl support are mutually exclusive")
472 endif()
473 # No matter which version of GTK is present
474 if(GTK2_FOUND OR GTK3_FOUND)
475         set(GTK_FOUND ON)
476 endif()
477 # That's the name autofoo uses
478 if(HAVE_LIBZLIB)
479         set(HAVE_LIBZ 1)
480 endif()
481 if (Qt5Widgets_FOUND)
482         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
483         if (Qt5_POSITION_INDEPENDENT_CODE)
484                 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
485         endif()
486         set (QT_FOUND ON)
487         set (QT_LIBRARIES ${Qt5Widgets_LIBRARIES} ${Qt5PrintSupport_LIBRARIES})
488 # If Qt4: QT_LIBRARIES and QT_INCLUDES are not set above. They require extra magic
489 elseif(QT_FOUND)
490         include(${QT_USE_FILE})
491         include_directories(${QT_INCLUDE_DIR})
492         message(STATUS "QT includes: ${QT_INCLUDE_DIR}")
493         message(STATUS "QT libs: ${QT_LIBRARIES}")
494 endif()
495 include(ConfigureChecks.cmake)
496
497 #Big or little endian ?
498 include(TestBigEndian)
499 test_big_endian(WORDS_BIGENDIAN)
500
501 set(DATAFILE_DIR "${CMAKE_INSTALL_PREFIX}/share/${CPACK_PACKAGE_NAME}")
502
503 if(ENABLE_PLUGINS)
504         set(HAVE_PLUGINS 1)
505         set(PLUGIN_DIR="${DATAFILE_DIR}/plugins/${CPACK_PACKAGE_VERSION}")
506         set(PLUGIN_SRC_DIRS
507                 plugins/asn1
508                 plugins/docsis
509                 plugins/ethercat
510                 plugins/gryphon
511                 plugins/irda
512                 plugins/m2m
513                 plugins/mate
514                 plugins/opcua
515                 plugins/profinet
516                 plugins/stats_tree
517                 plugins/unistim
518                 plugins/wimax
519                 plugins/wimaxasncp
520                 plugins/wimaxmacphy
521         )
522 # It seems this stuff doesn't build with autofoo either...
523 #       if(YAPP_FOUND)
524 #               set(PLUGIN_SRC_DIRS
525 #                       ${PLUGIN_SRC_DIRS}
526 #                       plugins/tpg
527 #               )
528 #       endif()
529 else()
530         set(PLUGIN_SRC_DIRS )
531 endif()
532
533 foreach(PLUGIN_DIR ${PLUGIN_SRC_DIRS})
534         add_subdirectory( ${PLUGIN_DIR} )
535 endforeach()
536
537 add_subdirectory( asn1 EXCLUDE_FROM_ALL )
538 add_subdirectory( codecs )
539 add_subdirectory( epan )
540 add_subdirectory( tools/lemon )
541 add_subdirectory( ui )
542 add_subdirectory( wiretap )
543 add_subdirectory( wsutil )
544
545 add_custom_target(dumpabi DEPENDS dumpabi-libwireshark dumpabi-libwiretap dumpabi-libwsutil color.h)
546
547 if(ENABLE_ECHLD)
548         add_subdirectory( echld )
549 endif()
550
551 if(BUILD_wireshark AND GTK_FOUND)
552         add_subdirectory( ui/gtk )
553 endif()
554
555 if(BUILD_qtshark AND QT_FOUND)
556         add_subdirectory( ui/qt )
557 endif()
558
559
560 # Basedir where to install guides
561 set(DOC_DIR "$ENV{docdir}" CACHE FILEPATH "Installation directory for ug and dg pdfs.")
562 message(STATUS "docdir: ${DOC_DIR}")
563
564 if(ENABLE_GUIDES)
565         add_subdirectory( docbook )
566 endif()
567
568 if(ENABLE_PCAP_NG_DEFAULT)
569         set(PCAP_NG_DEFAULT 1)
570 endif()
571
572 # Large file support (e.g. make off_t 64 bit if supported)
573 include(gmxTestLargeFiles)
574 gmx_test_large_files(GMX_LARGEFILES)
575
576 #Platform specific
577 #if(UNIX)
578 #endif()
579
580 if(APPLE)
581         #
582         # We assume that APPLE means OS X so that we have the OS X
583         # frameworks.
584         #
585         set(HAVE_OS_X_FRAMEWORKS 1)
586         FIND_LIBRARY (APPLE_APPLICATION_SERVICES_LIBRARY ApplicationServices)
587         FIND_LIBRARY (APPLE_CORE_FOUNDATION_LIBRARY CoreFoundation)
588         FIND_LIBRARY (APPLE_SYSTEM_CONFIGURATION_LIBRARY SystemConfiguration)
589 endif()
590
591 if(WIN32)
592         set(WS_MSVC_NORETURN "__declspec(noreturn)")
593
594         # Disable deprecation
595         if(MSVC80 OR MSVC90)
596                 add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
597         endif()
598 else()
599         set(WS_MSVC_NORETURN " ")
600 endif()
601
602 configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h)
603
604 set( configure_input "Built with CMake ${CMAKE_VERSION}" )
605 set( VERSION ${PROJECT_VERSION} )
606
607 configure_file(
608         ${CMAKE_SOURCE_DIR}/packaging/macosx/Info.plist.in
609         ${CMAKE_SOURCE_DIR}/packaging/macosx/Info.plist
610         @ONLY)
611
612 include(FeatureSummary)
613 #SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ]
614 #FEATURE_SUMMARY(WHAT ALL) Requires removal of our local copy of FeatureSummary
615 PRINT_ENABLED_FEATURES()
616 PRINT_DISABLED_FEATURES()
617
618 link_directories(
619         ${CMAKE_BINARY_DIR}/ui
620         ${CMAKE_BINARY_DIR}/ui/gtk
621         ${CMAKE_BINARY_DIR}/ui/qt
622         ${CMAKE_BINARY_DIR}/codecs
623         ${CMAKE_BINARY_DIR}/epan
624         ${CMAKE_BINARY_DIR}/wiretap
625         ${CMAKE_BINARY_DIR}/wsutil
626 )
627
628 ADD_CUSTOM_TARGET(
629         svnversion ALL
630         COMMAND ${PERL}
631                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
632                 ${CMAKE_CURRENT_SOURCE_DIR}
633         DEPENDS
634                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
635 )
636
637 ADD_CUSTOM_COMMAND(
638         OUTPUT  svnversion.h
639         COMMAND ${PERL}
640                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
641                 ${CMAKE_CURRENT_SOURCE_DIR}
642         DEPENDS
643                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
644 )
645
646 if(UNIX)
647         set(PLATFORM_SRC
648                 capture-pcap-util-unix.c
649         )
650 endif()
651
652 if(WIN32)
653         set(PLATFORM_SRC
654                 capture-wpcap.c capture_wpcap_packet.c capture_win_ifnames.c
655         )
656 endif()
657
658 set(WTAP_PLUGIN_SOURCES
659         epan/plugins.c
660         epan/filesystem.c
661 )
662
663 set(SHARK_COMMON_CAPTURE_SRC
664         capture_ifinfo.c
665         capture_ui_utils.c
666 )
667
668 set(WIRESHARK_COMMON_SRC
669         ${PLATFORM_SRC}
670         capture-pcap-util.c
671         cfile.c
672         cfutils.c
673         clopts_common.c
674         frame_tvbuff.c
675         svnversion.h
676         sync_pipe_write.c
677         version_info.c
678 )
679
680 set(TSHARK_TAP_SRC
681         ui/cli/tap-afpstat.c
682         ui/cli/tap-ansi_astat.c
683         ui/cli/tap-bootpstat.c
684         ui/cli/tap-camelcounter.c
685         ui/cli/tap-camelsrt.c
686         ui/cli/tap-comparestat.c
687         ui/cli/tap-dcerpcstat.c
688         ui/cli/tap-diameter-avp.c
689         ui/cli/tap-expert.c
690         ui/cli/tap-follow.c
691         ui/cli/tap-funnel.c
692         ui/cli/tap-gsm_astat.c
693         ui/cli/tap-h225counter.c
694         ui/cli/tap-h225rassrt.c
695         ui/cli/tap-hosts.c
696         ui/cli/tap-httpstat.c
697         ui/cli/tap-icmpstat.c
698         ui/cli/tap-icmpv6stat.c
699         ui/cli/tap-iostat.c
700         ui/cli/tap-iousers.c
701         ui/cli/tap-macltestat.c
702         ui/cli/tap-mgcpstat.c
703         ui/cli/tap-megacostat.c
704         ui/cli/tap-protocolinfo.c
705         ui/cli/tap-protohierstat.c
706         ui/cli/tap-radiusstat.c
707         ui/cli/tap-rlcltestat.c
708         ui/cli/tap-rpcstat.c
709         ui/cli/tap-rpcprogs.c
710         ui/cli/tap-rtp.c
711         ui/cli/tap-rtspstat.c
712         ui/cli/tap-scsistat.c
713         ui/cli/tap-sctpchunkstat.c
714         ui/cli/tap-sipstat.c
715         ui/cli/tap-smbsids.c
716         ui/cli/tap-smbstat.c
717         ui/cli/tap-stats_tree.c
718         ui/cli/tap-sv.c
719         ui/cli/tap-wspstat.c
720 )
721
722 set(INSTALL_DIRS
723         diameter
724         dtds
725         help
726         radius
727         tpncp
728         wimaxasncp
729 )
730
731 set(INSTALL_FILES
732         ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
733         COPYING
734         ${CMAKE_BINARY_DIR}/capinfos.html
735         cfilters
736         colorfilters
737         dfilters
738         ${CMAKE_BINARY_DIR}/dftest.html
739         ${CMAKE_BINARY_DIR}/dumpcap.html
740         ${CMAKE_BINARY_DIR}/editcap.html
741         ${CMAKE_BINARY_DIR}/asn2deb.html
742         ${CMAKE_BINARY_DIR}/idl2deb.html
743         ${CMAKE_BINARY_DIR}/idl2wrs.html
744         ipmap.html
745         manuf
746         ${CMAKE_BINARY_DIR}/mergecap.html
747         pdml2html.xsl
748         ${CMAKE_BINARY_DIR}/randpkt.html
749         ${CMAKE_BINARY_DIR}/rawshark.html
750         ${CMAKE_BINARY_DIR}/reordercap.html
751         services
752         smi_modules
753         ${CMAKE_BINARY_DIR}/text2pcap.html
754         ${CMAKE_BINARY_DIR}/tshark.html
755         ${CMAKE_BINARY_DIR}/wireshark-filter.html
756         ${CMAKE_BINARY_DIR}/wireshark.html
757         docbook/ws.css
758 )
759
760 set(LIBEPAN_LIBS
761 #               @NSL_LIBS@      # -lnsl
762 #               @SOCKET_LIBS@   # -lsocket
763 #               @SSL_LIBS@      # -lcrypto
764                 epan
765 #               $(plugin_ldadd) # in case of static
766                 ${PCAP_LIBRARIES}
767                 ${CARES_LIBRARIES}
768                 ${ADNS_LIBRARIES}
769                 ${KERBEROS_LIBRARIES}
770                 ${LUA_LIBRARIES}
771                 ${PYTHON_LIBRARIES}
772                 ${GEOIP_LIBRARIES}
773                 ${GCRYPT_LIBRARIES}
774                 ${GNUTLS_LIBRARIES}
775                 ${SMI_LIBRARIES}
776                 ${ZLIB_LIBRARIES}
777                 ${M_LIBRARIES}
778 )
779
780 if( (BUILD_wireshark AND GTK_FOUND) OR (BUILD_qtshark AND QT_FOUND) )
781         set(wireshark_FILES
782                 airpcap_loader.c
783                 capture.c
784                 capture_info.c
785                 capture_opts.c
786                 capture_sync.c
787                 color_filters.c
788                 file.c
789                 fileset.c
790                 filters.c
791                 iface_monitor.c
792                 proto_hier_stats.c
793                 summary.c
794                 ws80211_utils.c
795                 ${SHARK_COMMON_CAPTURE_SRC}
796                 ${WIRESHARK_COMMON_SRC}
797         )
798 endif()
799
800 if(BUILD_wireshark AND GTK_FOUND)
801         set(wireshark_LIBS
802                 gtkui
803                 ui
804                 ${GTK2_LIBRARIES}
805                 ${GTK3_LIBRARIES}
806                 ${GTHREAD2_LIBRARIES}
807                 codecs
808                 ${PORTAUDIO_LIBRARIES}
809                 ${LIBEPAN_LIBS}
810                 ${APPLE_APPLICATION_SERVICES_LIBRARY}
811                 ${APPLE_CORE_SERVICES_LIBRARY}
812                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
813                 ${NL_LIBRARIES}
814         )
815         # qtshark and wireshark share wireshark_FILES
816
817         add_executable(wireshark ${wireshark_FILES})
818         add_dependencies(wireshark svnversion)
819         set_target_properties(wireshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
820         target_link_libraries(wireshark ${wireshark_LIBS})
821         install(TARGETS wireshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
822 endif()
823
824 if(BUILD_qtshark AND QT_FOUND)
825         set(qtshark_LIBS
826                 qtui
827                 ui
828                 ${QT_LIBRARIES}
829                 ${GTHREAD2_LIBRARIES}
830                 codecs
831                 ${PORTAUDIO_LIBRARIES}
832                 ${LIBEPAN_LIBS}
833                 ${APPLE_APPLICATION_SERVICES_LIBRARY}
834                 ${APPLE_CORE_FOUNDATION_LIBRARY}
835                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
836                 ${NL_LIBRARIES}
837         )
838         # qtshark and wireshark share wireshark_FILES
839
840         add_executable(qtshark ${wireshark_FILES})
841         add_dependencies(qtshark svnversion)
842         set_target_properties(qtshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
843         target_link_libraries(qtshark ${qtshark_LIBS})
844         install(TARGETS qtshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
845 endif()
846
847 register_tap_files(tshark-tap-register.c
848         ${TSHARK_TAP_SRC}
849 )
850
851 if(BUILD_tshark)
852         set(tshark_LIBS
853                 ui
854                 ${LIBEPAN_LIBS}
855                 ${APPLE_CORE_FOUNDATION_LIBRARY}
856                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
857         )
858         set(tshark_FILES
859                 capture_opts.c
860                 capture_sync.c
861                 tshark-tap-register.c
862                 tshark.c
863                 ${TSHARK_TAP_SRC}
864                 ${SHARK_COMMON_CAPTURE_SRC}
865                 ${WIRESHARK_COMMON_SRC}
866         )
867         add_executable(tshark ${tshark_FILES})
868         add_dependencies(tshark svnversion)
869         set_target_properties(tshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
870         target_link_libraries(tshark ${tshark_LIBS})
871         install(TARGETS tshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
872 endif()
873
874 if(BUILD_rawshark AND PCAP_FOUND)
875         set(rawshark_LIBS
876                 ${LIBEPAN_LIBS}
877                 ${APPLE_CORE_FOUNDATION_LIBRARY}
878                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
879         )
880         set(rawshark_FILES
881                 ${WIRESHARK_COMMON_SRC}
882                 rawshark.c
883                 ui/util.c
884         )
885         add_executable(rawshark ${rawshark_FILES})
886         add_dependencies(rawshark svnversion)
887         set_target_properties(rawshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
888         target_link_libraries(rawshark ${rawshark_LIBS})
889         install(TARGETS rawshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
890 endif()
891
892 if(BUILD_dftest)
893         set(dftest_LIBS
894                 ${LIBEPAN_LIBS}
895         )
896         set(dftest_FILES
897                 dftest.c
898                 ui/util.c
899         )
900         add_executable(dftest ${dftest_FILES})
901         set_target_properties(dftest PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
902         target_link_libraries(dftest ${dftest_LIBS})
903         install(TARGETS dftest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
904 endif()
905
906 if(BUILD_randpkt)
907         set(randpkt_LIBS
908                 wiretap
909                 ${M_LIBRARIES}
910                 ${PCAP_LIBRARIES}
911 #               @SOCKET_LIBS@
912 #               @NSL_LIBS@
913                 ${CARES_LIBRARIES}
914                 ${ADNS_LIBRARIES}
915                 ${ZLIB_LIBRARIES}
916         )
917         set(randpkt_FILES
918                 randpkt.c
919         )
920         add_executable(randpkt ${randpkt_FILES})
921         set_target_properties(randpkt PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
922         target_link_libraries(randpkt ${randpkt_LIBS})
923         install(TARGETS randpkt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
924 endif()
925
926 if(BUILD_text2pcap)
927         set(text2pcap_LIBS
928                 wsutil
929                 ${M_LIBRARIES}
930                 ${ZLIB_LIBRARIES}
931         )
932         set(text2pcap_CLEAN_FILES
933                 text2pcap.c
934                 pcapio.c
935         )
936         set(text2pcap_FILES
937                 ${text2pcap_CLEAN_FILES}
938         )
939         add_lex_files(text2pcap_FILES
940                 text2pcap-scanner.l
941         )
942         add_executable(text2pcap ${text2pcap_FILES})
943         add_dependencies(text2pcap svnversion)
944         set_target_properties(text2pcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
945         target_link_libraries(text2pcap ${text2pcap_LIBS})
946         install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
947 endif()
948
949 if(BUILD_mergecap)
950         set(mergecap_LIBS
951                 wiretap
952                 ${ZLIB_LIBRARIES}
953                 ${CMAKE_DL_LIBS}
954         )
955         set(mergecap_FILES
956                 mergecap.c
957                 svnversion.h
958                 ${WTAP_PLUGIN_SOURCES}
959         )
960         add_executable(mergecap ${mergecap_FILES})
961         add_dependencies(mergecap svnversion)
962         set_target_properties(mergecap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
963         target_link_libraries(mergecap ${mergecap_LIBS})
964         install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
965 endif()
966
967 if(BUILD_reordercap)
968         set(reordercap_LIBS
969                 wiretap
970                 ${ZLIB_LIBRARIES}
971                 ${CMAKE_DL_LIBS}
972         )
973         set(reordercap_FILES
974                 reordercap.c
975                 svnversion.h
976                 ${WTAP_PLUGIN_SOURCES}
977         )
978         add_executable(reordercap ${reordercap_FILES})
979         add_dependencies(reordercap svnversion)
980         set_target_properties(reordercap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
981         target_link_libraries(reordercap ${reordercap_LIBS})
982         install(TARGETS reordercap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
983 endif()
984
985 if(BUILD_capinfos)
986         set(capinfos_LIBS
987                 wiretap
988                 wsutil
989                 ${ZLIB_LIBRARIES}
990                 ${GCRYPT_LIBRARIES}
991                 ${CMAKE_DL_LIBS}
992         )
993         set(capinfos_FILES
994                 capinfos.c
995                 ${WTAP_PLUGIN_SOURCES}
996         )
997         add_executable(capinfos ${capinfos_FILES})
998         add_dependencies(capinfos svnversion)
999         set_target_properties(capinfos PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1000         target_link_libraries(capinfos ${capinfos_LIBS})
1001         install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1002 endif()
1003
1004 if(BUILD_editcap)
1005         set(editcap_LIBS
1006                 wiretap
1007                 ${ZLIB_LIBRARIES}
1008                 ${CMAKE_DL_LIBS}
1009         )
1010         set(editcap_FILES
1011                 editcap.c
1012                 ${WTAP_PLUGIN_SOURCES}
1013         )
1014         add_executable(editcap ${editcap_FILES})
1015         add_dependencies(editcap svnversion)
1016         set_target_properties(editcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1017         target_link_libraries(editcap ${editcap_LIBS})
1018         install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1019 endif()
1020
1021 if(BUILD_dumpcap AND PCAP_FOUND)
1022         set(dumpcap_LIBS
1023 #               @INET_NTOP_LO@
1024                 wsutil
1025                 ${PCAP_LIBRARIES}
1026                 ${CAP_LIBRARIES}
1027 #               @SOCKET_LIBS@
1028 #               @NSL_LIBS@
1029                 ${GLIB2_LIBRARIES}
1030                 ${GTHREAD2_LIBRARIES}
1031                 ${ZLIB_LIBRARIES}
1032                 ${APPLE_CORE_FOUNDATION_LIBRARY}
1033                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1034                 ${NL_LIBRARIES}
1035         )
1036         set(dumpcap_FILES
1037                 svnversion.h
1038                 capture_opts.c
1039                 capture-pcap-util.c
1040                 capture_stop_conditions.c
1041                 cfutils.c
1042                 clopts_common.c
1043                 conditions.c
1044                 dumpcap.c
1045                 pcapio.c
1046                 ringbuffer.c
1047                 sync_pipe_write.c
1048                 version_info.c
1049                 ws80211_utils.c
1050                 ${PLATFORM_SRC}
1051         )
1052         add_executable(dumpcap ${dumpcap_FILES})
1053         add_dependencies(dumpcap svnversion)
1054         set_target_properties(dumpcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1055         target_link_libraries(dumpcap ${dumpcap_LIBS})
1056         install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1057 endif()
1058
1059 ADD_CUSTOM_COMMAND(
1060         OUTPUT  ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1061         COMMAND ${PERL}
1062                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1063                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1064                 < ${CMAKE_SOURCE_DIR}/AUTHORS
1065                 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1066         DEPENDS
1067                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1068                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1069                 ${CMAKE_SOURCE_DIR}/AUTHORS
1070 )
1071
1072 ADD_CUSTOM_COMMAND(
1073         OUTPUT  ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1074                 ${CMAKE_BINARY_DIR}/wireshark.pod
1075         COMMAND ${PERL}
1076                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1077                 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1078                 < ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1079                 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1080         COMMAND cat
1081                 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1082                 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1083                 > ${CMAKE_BINARY_DIR}/wireshark.pod
1084         DEPENDS
1085                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1086                 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1087                 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1088                 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1089 )
1090
1091 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/capinfos 1 )
1092 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dftest 1 )
1093 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dumpcap 1 )
1094 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/editcap 1 )
1095 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/asn2deb 1 )
1096 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2deb 1 )
1097 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2wrs 1 )
1098 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/mergecap 1 )
1099 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/randpkt 1 )
1100 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/rawshark 1 )
1101 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/reordercap 1 )
1102 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/text2pcap 1 )
1103 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/tshark 1 )
1104 pod2manhtml( ${CMAKE_BINARY_DIR}/wireshark 1 )
1105 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/wireshark-filter 4 )
1106
1107 add_custom_target(
1108         auxiliary ALL
1109         DEPENDS
1110                 AUTHORS-SHORT
1111                 capinfos.html
1112                 dftest.html
1113                 dumpcap.html
1114                 editcap.html
1115                 asn2deb.html
1116                 idl2deb.html
1117                 idl2wrs.html
1118                 mergecap.html
1119                 randpkt.html
1120                 rawshark.html
1121                 reordercap.html
1122                 text2pcap.html
1123                 tshark.html
1124                 wireshark.html
1125                 wireshark-filter.html
1126 )
1127
1128 set(MAN1_FILES
1129         ${CMAKE_BINARY_DIR}/capinfos.1
1130         ${CMAKE_BINARY_DIR}/dftest.1
1131         ${CMAKE_BINARY_DIR}/dumpcap.1
1132         ${CMAKE_BINARY_DIR}/editcap.1
1133         ${CMAKE_BINARY_DIR}/idl2wrs.1
1134         ${CMAKE_BINARY_DIR}/mergecap.1
1135         ${CMAKE_BINARY_DIR}/randpkt.1
1136         ${CMAKE_BINARY_DIR}/rawshark.1
1137         ${CMAKE_BINARY_DIR}/reordercap.1
1138         ${CMAKE_BINARY_DIR}/text2pcap.1
1139         ${CMAKE_BINARY_DIR}/tshark.1
1140         ${CMAKE_BINARY_DIR}/wireshark.1
1141 )
1142
1143 set(MAN4_FILES
1144         ${CMAKE_BINARY_DIR}/wireshark-filter.4
1145 )
1146
1147 set(CLEAN_FILES
1148         ${wireshark_FILES}
1149         ${tshark_FILES}
1150         ${rawshark_FILES}
1151         ${dftest_FILES}
1152         ${randpkt_FILES}
1153         ${text2pcap_CLEAN_FILES}
1154         ${mergecap_FILES}
1155         ${capinfos_FILES}
1156         ${editcap_FILES}
1157         ${dumpcap_FILES}
1158 )
1159
1160 if (WERROR)
1161         set_source_files_properties(
1162                 ${CLEAN_FILES}
1163                 PROPERTIES
1164                 COMPILE_FLAGS -Werror
1165         )
1166 endif()
1167
1168 install(
1169         FILES
1170                 ${INSTALL_FILES}
1171         DESTINATION
1172                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1173 )
1174
1175 install(
1176         FILES
1177                 ${MAN1_FILES}
1178         DESTINATION
1179                 ${CMAKE_INSTALL_MANDIR}/man1
1180 )
1181
1182 install(
1183         FILES
1184                 ${MAN4_FILES}
1185         DESTINATION
1186                 ${CMAKE_INSTALL_MANDIR}/man4
1187 )
1188
1189 install(
1190         DIRECTORY
1191                 ${INSTALL_DIRS}
1192         DIRECTORY_PERMISSIONS
1193                 OWNER_EXECUTE OWNER_WRITE OWNER_READ
1194                 GROUP_EXECUTE GROUP_READ
1195                 WORLD_EXECUTE WORLD_READ
1196         DESTINATION
1197                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1198         PATTERN ".svn" EXCLUDE
1199         PATTERN "Makefile.*" EXCLUDE
1200         PATTERN "faq.py" EXCLUDE
1201 )
1202
1203
1204 if(DOC_DIR)
1205         message(STATUS "Docdir install: ${DOC_DIR}")
1206         INSTALL(
1207                 DIRECTORY
1208                         ${CMAKE_BINARY_DIR}/docbook/
1209                 DIRECTORY_PERMISSIONS
1210                         OWNER_EXECUTE OWNER_WRITE OWNER_READ
1211                         GROUP_EXECUTE GROUP_READ
1212                         WORLD_EXECUTE WORLD_READ
1213                 DESTINATION
1214                         ${DOC_DIR}/guides
1215                 FILES_MATCHING
1216                 PATTERN "*.pdf"
1217         )
1218 endif()