Attempt to get linking working with cmake - without success so far.
[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 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 # Provide Windows system lib names
469 include( UseWinLibs )
470
471 #packaging
472 include(CPackConfig.txt)
473
474 if(HAVE_LIBPYTHON)
475         set(HAVE_PYTHON 1)
476         set(PYTHON_DIR "${CMAKE_INSTALL_PREFIX}/lib/wireshark/python/${CPACK_PACKAGE_VERSION}")
477 endif()
478 if(HAVE_LIBLUA)
479         set(HAVE_LUA_H 1)
480         set(HAVE_LUA 1)
481 endif()
482 if(HAVE_LIBKERBEROS)
483         set(HAVE_KERBEROS 1)
484         # HAVE_HEIMDAL_KERBEROS
485         set(HAVE_MIT_KERBEROS 1)
486         set(HAVE_KEYTYPE_ARCFOUR_56 1)
487 endif()
488 if(HAVE_LIBGEOIP)
489         set(HAVE_GEOIP 1)
490 endif()
491 if(HAVE_LIBCARES)
492         set(HAVE_C_ARES 1)
493 endif()
494 if(HAVE_LIBADNS)
495         set(HAVE_GNU_ADNS 1)
496 endif()
497 if(ENABLE_AIRPCAP)
498         set(HAVE_AIRPCAP 1)
499 endif()
500 if(HAVE_LIBNL AND ENABLE_AIRPCAP)
501         message(ERROR "Airpcap and Libnl support are mutually exclusive")
502 endif()
503 # No matter which version of GTK is present
504 if(GTK2_FOUND OR GTK3_FOUND)
505         set(GTK_FOUND ON)
506 endif()
507 # That's the name autofoo uses
508 if(HAVE_LIBZLIB)
509         set(HAVE_LIBZ 1)
510 endif()
511 if (Qt5Widgets_FOUND)
512         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
513         if (Qt5_POSITION_INDEPENDENT_CODE)
514                 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
515         endif()
516         set (QT_FOUND ON)
517         set (QT_LIBRARIES ${Qt5Widgets_LIBRARIES} ${Qt5PrintSupport_LIBRARIES})
518 # If Qt4: QT_LIBRARIES and QT_INCLUDES are not set above. They require extra magic
519 elseif(QT_FOUND)
520         include(${QT_USE_FILE})
521         include_directories(${QT_INCLUDE_DIR})
522         message(STATUS "QT includes: ${QT_INCLUDE_DIR}")
523         message(STATUS "QT libs: ${QT_LIBRARIES}")
524 endif()
525 include(ConfigureChecks.cmake)
526
527 #Big or little endian ?
528 include(TestBigEndian)
529 test_big_endian(WORDS_BIGENDIAN)
530
531 set(DATAFILE_DIR "${CMAKE_INSTALL_PREFIX}/share/${CPACK_PACKAGE_NAME}")
532
533 if(ENABLE_PLUGINS)
534         set(HAVE_PLUGINS 1)
535         set(PLUGIN_DIR="${DATAFILE_DIR}/plugins/${CPACK_PACKAGE_VERSION}")
536         set(PLUGIN_SRC_DIRS
537                 plugins/asn1
538                 plugins/docsis
539                 plugins/ethercat
540                 plugins/gryphon
541                 plugins/irda
542                 plugins/m2m
543                 plugins/mate
544                 plugins/opcua
545                 plugins/profinet
546                 plugins/stats_tree
547                 plugins/unistim
548                 plugins/wimax
549                 plugins/wimaxasncp
550                 plugins/wimaxmacphy
551         )
552 # It seems this stuff doesn't build with autofoo either...
553 #       if(YAPP_FOUND)
554 #               set(PLUGIN_SRC_DIRS
555 #                       ${PLUGIN_SRC_DIRS}
556 #                       plugins/tpg
557 #               )
558 #       endif()
559 else()
560         set(PLUGIN_SRC_DIRS )
561 endif()
562
563 foreach(PLUGIN_DIR ${PLUGIN_SRC_DIRS})
564         add_subdirectory( ${PLUGIN_DIR} )
565 endforeach()
566
567 add_subdirectory( asn1 EXCLUDE_FROM_ALL )
568 add_subdirectory( codecs )
569 add_subdirectory( epan )
570 add_subdirectory( tools/lemon )
571 add_subdirectory( ui )
572 add_subdirectory( wiretap )
573 add_subdirectory( wsutil )
574
575 add_custom_target(dumpabi DEPENDS dumpabi-libwireshark dumpabi-libwiretap dumpabi-libwsutil color.h)
576
577 if(ENABLE_ECHLD)
578         add_subdirectory( echld )
579 endif()
580
581 if(BUILD_wireshark AND GTK_FOUND)
582         add_subdirectory( ui/gtk )
583 endif()
584
585 if(BUILD_qtshark AND QT_FOUND)
586         add_subdirectory( ui/qt )
587 endif()
588
589
590 # Basedir where to install guides
591 set(DOC_DIR "$ENV{docdir}" CACHE FILEPATH "Installation directory for ug and dg pdfs.")
592 message(STATUS "docdir: ${DOC_DIR}")
593
594 if(ENABLE_GUIDES)
595         add_subdirectory( docbook )
596 endif()
597
598 if(ENABLE_PCAP_NG_DEFAULT)
599         set(PCAP_NG_DEFAULT 1)
600 endif()
601
602 # Large file support (e.g. make off_t 64 bit if supported)
603 include(gmxTestLargeFiles)
604 gmx_test_large_files(GMX_LARGEFILES)
605
606 #Platform specific
607 #if(UNIX)
608 #endif()
609
610 if(APPLE)
611         #
612         # We assume that APPLE means OS X so that we have the OS X
613         # frameworks.
614         #
615         set(HAVE_OS_X_FRAMEWORKS 1)
616         FIND_LIBRARY (APPLE_APPLICATION_SERVICES_LIBRARY ApplicationServices)
617         FIND_LIBRARY (APPLE_CORE_FOUNDATION_LIBRARY CoreFoundation)
618         FIND_LIBRARY (APPLE_SYSTEM_CONFIGURATION_LIBRARY SystemConfiguration)
619 endif()
620
621 if(WIN32)
622         set(WS_MSVC_NORETURN "__declspec(noreturn)")
623
624         # Disable deprecation
625         if(MSVC80 OR MSVC90)
626                 add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
627         endif()
628 else()
629         set(WS_MSVC_NORETURN " ")
630 endif()
631
632 configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h)
633
634 set( configure_input "Built with CMake ${CMAKE_VERSION}" )
635 set( VERSION ${PROJECT_VERSION} )
636
637 configure_file(
638         ${CMAKE_SOURCE_DIR}/packaging/macosx/Info.plist.in
639         ${CMAKE_SOURCE_DIR}/packaging/macosx/Info.plist
640         @ONLY)
641
642 include(FeatureSummary)
643 #SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ]
644 #FEATURE_SUMMARY(WHAT ALL) Requires removal of our local copy of FeatureSummary
645 PRINT_ENABLED_FEATURES()
646 PRINT_DISABLED_FEATURES()
647
648 link_directories(
649         ${CMAKE_BINARY_DIR}/ui
650         ${CMAKE_BINARY_DIR}/ui/gtk
651         ${CMAKE_BINARY_DIR}/ui/qt
652         ${CMAKE_BINARY_DIR}/codecs
653         ${CMAKE_BINARY_DIR}/epan
654         ${CMAKE_BINARY_DIR}/wiretap
655         ${CMAKE_BINARY_DIR}/wsutil
656 )
657
658 ADD_CUSTOM_TARGET(
659         svnversion ALL
660         COMMAND ${PERL_EXECUTABLE}
661                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
662                 ${CMAKE_CURRENT_SOURCE_DIR}
663         DEPENDS
664                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
665 )
666
667 ADD_CUSTOM_COMMAND(
668         OUTPUT  svnversion.h
669         COMMAND ${PERL_EXECUTABLE}
670                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
671                 ${CMAKE_CURRENT_SOURCE_DIR}
672         DEPENDS
673                 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
674 )
675
676 if(UNIX)
677         set(PLATFORM_SRC
678                 capture-pcap-util-unix.c
679         )
680 endif()
681
682 if(WIN32)
683         set(PLATFORM_SRC
684                 capture-wpcap.c capture_wpcap_packet.c capture_win_ifnames.c
685         )
686 endif()
687
688 set(WTAP_PLUGIN_SOURCES
689         epan/plugins.c
690         epan/filesystem.c
691 )
692
693 set(SHARK_COMMON_CAPTURE_SRC
694         capture_ifinfo.c
695         capture_ui_utils.c
696 )
697
698 set(WIRESHARK_COMMON_SRC
699         ${PLATFORM_SRC}
700         capture-pcap-util.c
701         cfile.c
702         cfutils.c
703         clopts_common.c
704         frame_tvbuff.c
705         svnversion.h
706         sync_pipe_write.c
707         version_info.c
708 )
709
710 set(TSHARK_TAP_SRC
711         ui/cli/tap-afpstat.c
712         ui/cli/tap-ansi_astat.c
713         ui/cli/tap-bootpstat.c
714         ui/cli/tap-camelcounter.c
715         ui/cli/tap-camelsrt.c
716         ui/cli/tap-comparestat.c
717         ui/cli/tap-dcerpcstat.c
718         ui/cli/tap-diameter-avp.c
719         ui/cli/tap-expert.c
720         ui/cli/tap-follow.c
721         ui/cli/tap-funnel.c
722         ui/cli/tap-gsm_astat.c
723         ui/cli/tap-h225counter.c
724         ui/cli/tap-h225rassrt.c
725         ui/cli/tap-hosts.c
726         ui/cli/tap-httpstat.c
727         ui/cli/tap-icmpstat.c
728         ui/cli/tap-icmpv6stat.c
729         ui/cli/tap-iostat.c
730         ui/cli/tap-iousers.c
731         ui/cli/tap-macltestat.c
732         ui/cli/tap-mgcpstat.c
733         ui/cli/tap-megacostat.c
734         ui/cli/tap-protocolinfo.c
735         ui/cli/tap-protohierstat.c
736         ui/cli/tap-radiusstat.c
737         ui/cli/tap-rlcltestat.c
738         ui/cli/tap-rpcstat.c
739         ui/cli/tap-rpcprogs.c
740         ui/cli/tap-rtp.c
741         ui/cli/tap-rtspstat.c
742         ui/cli/tap-scsistat.c
743         ui/cli/tap-sctpchunkstat.c
744         ui/cli/tap-sipstat.c
745         ui/cli/tap-smbsids.c
746         ui/cli/tap-smbstat.c
747         ui/cli/tap-stats_tree.c
748         ui/cli/tap-sv.c
749         ui/cli/tap-wspstat.c
750 )
751
752 set(INSTALL_DIRS
753         diameter
754         dtds
755         help
756         radius
757         tpncp
758         wimaxasncp
759 )
760
761 set(INSTALL_FILES
762         ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
763         COPYING
764         ${CMAKE_BINARY_DIR}/capinfos.html
765         cfilters
766         colorfilters
767         dfilters
768         ${CMAKE_BINARY_DIR}/dftest.html
769         ${CMAKE_BINARY_DIR}/dumpcap.html
770         ${CMAKE_BINARY_DIR}/editcap.html
771         ${CMAKE_BINARY_DIR}/asn2deb.html
772         ${CMAKE_BINARY_DIR}/idl2deb.html
773         ${CMAKE_BINARY_DIR}/idl2wrs.html
774         ipmap.html
775         manuf
776         ${CMAKE_BINARY_DIR}/mergecap.html
777         pdml2html.xsl
778         ${CMAKE_BINARY_DIR}/randpkt.html
779         ${CMAKE_BINARY_DIR}/rawshark.html
780         ${CMAKE_BINARY_DIR}/reordercap.html
781         services
782         smi_modules
783         ${CMAKE_BINARY_DIR}/text2pcap.html
784         ${CMAKE_BINARY_DIR}/tshark.html
785         ${CMAKE_BINARY_DIR}/wireshark-filter.html
786         ${CMAKE_BINARY_DIR}/wireshark.html
787         docbook/ws.css
788 )
789
790 set(LIBEPAN_LIBS
791 #               @NSL_LIBS@      # -lnsl
792 #               @SOCKET_LIBS@   # -lsocket
793 #               @SSL_LIBS@      # -lcrypto
794                 epan
795 #               $(plugin_ldadd) # in case of static
796                 ${PCAP_LIBRARIES}
797                 ${CARES_LIBRARIES}
798                 ${ADNS_LIBRARIES}
799                 ${KERBEROS_LIBRARIES}
800                 ${LUA_LIBRARIES}
801                 ${PYTHON_LIBRARIES}
802                 ${GEOIP_LIBRARIES}
803                 ${GCRYPT_LIBRARIES}
804                 ${GNUTLS_LIBRARIES}
805                 ${SMI_LIBRARIES}
806                 ${ZLIB_LIBRARIES}
807                 ${M_LIBRARIES}
808 )
809
810 if( (BUILD_wireshark AND GTK_FOUND) OR (BUILD_qtshark AND QT_FOUND) )
811         set(wireshark_FILES
812                 airpcap_loader.c
813                 capture.c
814                 capture_info.c
815                 capture_opts.c
816                 capture_sync.c
817                 color_filters.c
818                 file.c
819                 fileset.c
820                 filters.c
821                 iface_monitor.c
822                 proto_hier_stats.c
823                 summary.c
824                 ws80211_utils.c
825                 ${SHARK_COMMON_CAPTURE_SRC}
826                 ${WIRESHARK_COMMON_SRC}
827         )
828 endif()
829
830 if(BUILD_wireshark AND GTK_FOUND)
831         set(wireshark_LIBS
832                 gtkui
833                 ui
834                 ${GTK2_LIBRARIES}
835                 ${GTK3_LIBRARIES}
836                 ${GTHREAD2_LIBRARIES}
837                 codecs
838                 ${PORTAUDIO_LIBRARIES}
839                 ${LIBEPAN_LIBS}
840                 ${APPLE_APPLICATION_SERVICES_LIBRARY}
841                 ${APPLE_CORE_SERVICES_LIBRARY}
842                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
843                 ${NL_LIBRARIES}
844         )
845         # qtshark and wireshark share wireshark_FILES
846
847         add_executable(wireshark ${wireshark_FILES})
848         add_dependencies(wireshark svnversion)
849         set_target_properties(wireshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
850         target_link_libraries(wireshark ${wireshark_LIBS})
851         install(TARGETS wireshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
852 endif()
853
854 if(BUILD_qtshark AND QT_FOUND)
855         set(qtshark_LIBS
856                 qtui
857                 ui
858                 ${QT_LIBRARIES}
859                 ${GTHREAD2_LIBRARIES}
860                 codecs
861                 ${LIBEPAN_LIBS}
862                 ${APPLE_APPLICATION_SERVICES_LIBRARY}
863                 ${APPLE_CORE_FOUNDATION_LIBRARY}
864                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
865                 ${NL_LIBRARIES}
866         )
867         # qtshark and wireshark share wireshark_FILES
868
869         add_executable(qtshark ${wireshark_FILES})
870         add_dependencies(qtshark svnversion)
871         set_target_properties(qtshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
872         target_link_libraries(qtshark ${qtshark_LIBS})
873         install(TARGETS qtshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
874 endif()
875
876 register_tap_files(tshark-tap-register.c
877         ${TSHARK_TAP_SRC}
878 )
879
880 if(BUILD_tshark)
881         set(tshark_LIBS
882                 ui
883                 ${LIBEPAN_LIBS}
884                 ${APPLE_CORE_FOUNDATION_LIBRARY}
885                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
886         )
887         set(tshark_FILES
888                 capture_opts.c
889                 capture_sync.c
890                 tshark-tap-register.c
891                 tshark.c
892                 ${TSHARK_TAP_SRC}
893                 ${SHARK_COMMON_CAPTURE_SRC}
894                 ${WIRESHARK_COMMON_SRC}
895         )
896         add_executable(tshark ${tshark_FILES})
897         add_dependencies(tshark svnversion)
898         set_target_properties(tshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
899         target_link_libraries(tshark ${tshark_LIBS})
900         install(TARGETS tshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
901 endif()
902
903 if(BUILD_rawshark AND PCAP_FOUND)
904         set(rawshark_LIBS
905                 ${LIBEPAN_LIBS}
906                 ${APPLE_CORE_FOUNDATION_LIBRARY}
907                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
908         )
909         set(rawshark_FILES
910                 ${WIRESHARK_COMMON_SRC}
911                 rawshark.c
912                 ui/util.c
913         )
914         add_executable(rawshark ${rawshark_FILES})
915         add_dependencies(rawshark svnversion)
916         set_target_properties(rawshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
917         target_link_libraries(rawshark ${rawshark_LIBS})
918         install(TARGETS rawshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
919 endif()
920
921 if(BUILD_dftest)
922         set(dftest_LIBS
923                 ${LIBEPAN_LIBS}
924         )
925         set(dftest_FILES
926                 dftest.c
927                 ui/util.c
928         )
929         add_executable(dftest ${dftest_FILES})
930         set_target_properties(dftest PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
931         target_link_libraries(dftest ${dftest_LIBS})
932         install(TARGETS dftest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
933 endif()
934
935 if(BUILD_randpkt)
936         set(randpkt_LIBS
937                 wiretap
938                 ${M_LIBRARIES}
939                 ${PCAP_LIBRARIES}
940 #               @SOCKET_LIBS@
941 #               @NSL_LIBS@
942                 ${CARES_LIBRARIES}
943                 ${ADNS_LIBRARIES}
944                 ${ZLIB_LIBRARIES}
945         )
946         set(randpkt_FILES
947                 randpkt.c
948         )
949         add_executable(randpkt ${randpkt_FILES})
950         set_target_properties(randpkt PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
951         target_link_libraries(randpkt ${randpkt_LIBS})
952         install(TARGETS randpkt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
953 endif()
954
955 if(BUILD_text2pcap)
956         set(text2pcap_LIBS
957                 wsutil
958                 ${M_LIBRARIES}
959                 ${ZLIB_LIBRARIES}
960         )
961         set(text2pcap_CLEAN_FILES
962                 text2pcap.c
963                 pcapio.c
964         )
965         set(text2pcap_FILES
966                 ${text2pcap_CLEAN_FILES}
967         )
968         add_lex_files(text2pcap_FILES
969                 text2pcap-scanner.l
970         )
971         add_executable(text2pcap ${text2pcap_FILES})
972         add_dependencies(text2pcap svnversion)
973         set_target_properties(text2pcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
974         target_link_libraries(text2pcap ${text2pcap_LIBS})
975         install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
976 endif()
977
978 if(BUILD_mergecap)
979         set(mergecap_LIBS
980                 wiretap
981                 ${ZLIB_LIBRARIES}
982                 ${CMAKE_DL_LIBS}
983         )
984         set(mergecap_FILES
985                 mergecap.c
986                 svnversion.h
987                 ${WTAP_PLUGIN_SOURCES}
988         )
989         add_executable(mergecap ${mergecap_FILES})
990         add_dependencies(mergecap svnversion)
991         set_target_properties(mergecap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
992         target_link_libraries(mergecap ${mergecap_LIBS})
993         install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
994 endif()
995
996 if(BUILD_reordercap)
997         set(reordercap_LIBS
998                 wiretap
999                 ${ZLIB_LIBRARIES}
1000                 ${CMAKE_DL_LIBS}
1001         )
1002         set(reordercap_FILES
1003                 reordercap.c
1004                 svnversion.h
1005                 ${WTAP_PLUGIN_SOURCES}
1006         )
1007         add_executable(reordercap ${reordercap_FILES})
1008         add_dependencies(reordercap svnversion)
1009         set_target_properties(reordercap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1010         target_link_libraries(reordercap ${reordercap_LIBS})
1011         install(TARGETS reordercap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1012 endif()
1013
1014 if(BUILD_capinfos)
1015         set(capinfos_LIBS
1016                 wiretap
1017                 wsutil
1018                 ${ZLIB_LIBRARIES}
1019                 ${GCRYPT_LIBRARIES}
1020                 ${CMAKE_DL_LIBS}
1021         )
1022         set(capinfos_FILES
1023                 capinfos.c
1024                 ${WTAP_PLUGIN_SOURCES}
1025         )
1026         add_executable(capinfos ${capinfos_FILES})
1027         add_dependencies(capinfos svnversion)
1028         set_target_properties(capinfos PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1029         target_link_libraries(capinfos ${capinfos_LIBS})
1030         install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1031 endif()
1032
1033 if(BUILD_editcap)
1034         set(editcap_LIBS
1035                 wiretap
1036                 ${ZLIB_LIBRARIES}
1037                 ${CMAKE_DL_LIBS}
1038         )
1039         set(editcap_FILES
1040                 editcap.c
1041                 ${WTAP_PLUGIN_SOURCES}
1042         )
1043         add_executable(editcap ${editcap_FILES})
1044         add_dependencies(editcap svnversion)
1045         set_target_properties(editcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1046         target_link_libraries(editcap ${editcap_LIBS})
1047         install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1048 endif()
1049
1050 if(BUILD_dumpcap AND PCAP_FOUND)
1051         set(dumpcap_LIBS
1052 #               @INET_NTOP_LO@
1053                 wsutil
1054                 ${PCAP_LIBRARIES}
1055                 ${CAP_LIBRARIES}
1056 #               @SOCKET_LIBS@
1057 #               @NSL_LIBS@
1058                 ${GLIB2_LIBRARIES}
1059                 ${GTHREAD2_LIBRARIES}
1060                 ${ZLIB_LIBRARIES}
1061                 ${APPLE_CORE_FOUNDATION_LIBRARY}
1062                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1063                 ${NL_LIBRARIES}
1064         )
1065         set(dumpcap_FILES
1066                 svnversion.h
1067                 capture_opts.c
1068                 capture-pcap-util.c
1069                 capture_stop_conditions.c
1070                 cfutils.c
1071                 clopts_common.c
1072                 conditions.c
1073                 dumpcap.c
1074                 pcapio.c
1075                 ringbuffer.c
1076                 sync_pipe_write.c
1077                 version_info.c
1078                 ws80211_utils.c
1079                 ${PLATFORM_SRC}
1080         )
1081         add_executable(dumpcap ${dumpcap_FILES})
1082         add_dependencies(dumpcap svnversion)
1083         set_target_properties(dumpcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1084         target_link_libraries(dumpcap ${dumpcap_LIBS})
1085         install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1086 endif()
1087
1088 ADD_CUSTOM_COMMAND(
1089         OUTPUT  ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1090         COMMAND ${PERL_EXECUTABLE}
1091                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1092                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1093                 < ${CMAKE_SOURCE_DIR}/AUTHORS
1094                 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1095         DEPENDS
1096                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1097                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1098                 ${CMAKE_SOURCE_DIR}/AUTHORS
1099 )
1100
1101 ADD_CUSTOM_COMMAND(
1102         OUTPUT  ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1103                 ${CMAKE_BINARY_DIR}/wireshark.pod
1104         COMMAND ${PERL_EXECUTABLE}
1105                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1106                 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1107                 < ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1108                 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1109         COMMAND cat
1110                 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1111                 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1112                 > ${CMAKE_BINARY_DIR}/wireshark.pod
1113         DEPENDS
1114                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1115                 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1116                 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1117                 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1118 )
1119
1120 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/capinfos 1 )
1121 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dftest 1 )
1122 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dumpcap 1 )
1123 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/editcap 1 )
1124 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/asn2deb 1 )
1125 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2deb 1 )
1126 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2wrs 1 )
1127 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/mergecap 1 )
1128 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/randpkt 1 )
1129 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/rawshark 1 )
1130 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/reordercap 1 )
1131 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/text2pcap 1 )
1132 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/tshark 1 )
1133 pod2manhtml( ${CMAKE_BINARY_DIR}/wireshark 1 )
1134 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/wireshark-filter 4 )
1135
1136 add_custom_target(
1137         auxiliary ALL
1138         DEPENDS
1139                 AUTHORS-SHORT
1140                 capinfos.html
1141                 dftest.html
1142                 dumpcap.html
1143                 editcap.html
1144                 asn2deb.html
1145                 idl2deb.html
1146                 idl2wrs.html
1147                 mergecap.html
1148                 randpkt.html
1149                 rawshark.html
1150                 reordercap.html
1151                 text2pcap.html
1152                 tshark.html
1153                 wireshark.html
1154                 wireshark-filter.html
1155 )
1156
1157 set(MAN1_FILES
1158         ${CMAKE_BINARY_DIR}/capinfos.1
1159         ${CMAKE_BINARY_DIR}/dftest.1
1160         ${CMAKE_BINARY_DIR}/dumpcap.1
1161         ${CMAKE_BINARY_DIR}/editcap.1
1162         ${CMAKE_BINARY_DIR}/idl2wrs.1
1163         ${CMAKE_BINARY_DIR}/mergecap.1
1164         ${CMAKE_BINARY_DIR}/randpkt.1
1165         ${CMAKE_BINARY_DIR}/rawshark.1
1166         ${CMAKE_BINARY_DIR}/reordercap.1
1167         ${CMAKE_BINARY_DIR}/text2pcap.1
1168         ${CMAKE_BINARY_DIR}/tshark.1
1169         ${CMAKE_BINARY_DIR}/wireshark.1
1170 )
1171
1172 set(MAN4_FILES
1173         ${CMAKE_BINARY_DIR}/wireshark-filter.4
1174 )
1175
1176 set(CLEAN_FILES
1177         ${wireshark_FILES}
1178         ${tshark_FILES}
1179         ${rawshark_FILES}
1180         ${dftest_FILES}
1181         ${randpkt_FILES}
1182         ${text2pcap_CLEAN_FILES}
1183         ${mergecap_FILES}
1184         ${capinfos_FILES}
1185         ${editcap_FILES}
1186         ${dumpcap_FILES}
1187 )
1188
1189 if (WERROR)
1190         set_source_files_properties(
1191                 ${CLEAN_FILES}
1192                 PROPERTIES
1193                 COMPILE_FLAGS -Werror
1194         )
1195 endif()
1196
1197 install(
1198         FILES
1199                 ${INSTALL_FILES}
1200         DESTINATION
1201                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1202 )
1203
1204 install(
1205         FILES
1206                 ${MAN1_FILES}
1207         DESTINATION
1208                 ${CMAKE_INSTALL_MANDIR}/man1
1209 )
1210
1211 install(
1212         FILES
1213                 ${MAN4_FILES}
1214         DESTINATION
1215                 ${CMAKE_INSTALL_MANDIR}/man4
1216 )
1217
1218 install(
1219         DIRECTORY
1220                 ${INSTALL_DIRS}
1221         DIRECTORY_PERMISSIONS
1222                 OWNER_EXECUTE OWNER_WRITE OWNER_READ
1223                 GROUP_EXECUTE GROUP_READ
1224                 WORLD_EXECUTE WORLD_READ
1225         DESTINATION
1226                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1227         PATTERN ".svn" EXCLUDE
1228         PATTERN "Makefile.*" EXCLUDE
1229         PATTERN "faq.py" EXCLUDE
1230 )
1231
1232
1233 if(DOC_DIR)
1234         message(STATUS "Docdir install: ${DOC_DIR}")
1235         INSTALL(
1236                 DIRECTORY
1237                         ${CMAKE_BINARY_DIR}/docbook/
1238                 DIRECTORY_PERMISSIONS
1239                         OWNER_EXECUTE OWNER_WRITE OWNER_READ
1240                         GROUP_EXECUTE GROUP_READ
1241                         WORLD_EXECUTE WORLD_READ
1242                 DESTINATION
1243                         ${DOC_DIR}/guides
1244                 FILES_MATCHING
1245                 PATTERN "*.pdf"
1246         )
1247 endif()