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