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