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