3 # Wireshark - Network traffic analyzer
4 # By Gerald Combs <gerald@wireshark.org>
5 # Copyright 1998 Gerald Combs
7 # This program is free software; you can redistribute it and/or
8 # modify it under the terms of the GNU General Public License
9 # as published by the Free Software Foundation; either version 2
10 # of the License, or (at your option) any later version.
12 # This program is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
17 # You should have received a copy of the GNU General Public License
18 # along with this program; if not, write to the Free Software
19 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 project(Wireshark C CXX)
24 cmake_minimum_required(VERSION 2.8.3)
26 # Needs to be set after cmake_minimum_required or cmake_policy(VERSION)
28 cmake_policy(SET CMP0008 NEW)
30 # Backward compatibility for versions < 2.6.3
31 cmake_policy(SET CMP0011 OLD)
33 cmake_policy(SET CMP0015 NEW)
35 #Where to find local cmake scripts
36 set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules)
38 include(UseCustomIncludes)
39 ADD_CUSTOM_CMAKE_INCLUDE()
41 # This cannot be implemented via option(...)
42 if( NOT CMAKE_BUILD_TYPE )
43 set( CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING
44 "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
47 message(STATUS "Configuration types: ${CMAKE_CONFIGURATION_TYPES}")
48 message(STATUS "${CMAKE_BUILD_TYPE}: ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
49 #Where to put executables and libraries in the build tree
50 if(NOT ARCHIVE_OUTPUT_PATH)
51 set(ARCHIVE_OUTPUT_PATH ${Wireshark_BINARY_DIR}/run CACHE INTERNAL
52 "Single output directory for building all archives.")
54 if(NOT EXECUTABLE_OUTPUT_PATH)
55 set(EXECUTABLE_OUTPUT_PATH ${Wireshark_BINARY_DIR}/run CACHE INTERNAL
56 "Single output directory for building all executables.")
57 file(MAKE_DIRECTORY ${EXECUTABLE_OUTPUT_PATH}/extcap)
59 if(NOT LIBRARY_OUTPUT_PATH)
60 set(LIBRARY_OUTPUT_PATH ${Wireshark_BINARY_DIR}/run CACHE INTERNAL
61 "Single output directory for building all libraries.")
63 # Under linux the release mode (CMAKE_BUILD_TYPE=release) defines NDEBUG
64 #Defines CMAKE_INSTALL_BINDIR, CMAKE_INSTALL_DATADIR, etc ...
65 include(CMakeInstallDirs)
67 # set(PROJECT_MAJOR_VERSION 1)
68 # set(PROJECT_MINOR_VERSION 9)
69 # set(PROJECT_PATCH_VERSION 0)
70 # set(PROJECT_VERSION_EXTENSION "-rc5")
71 # If not set, copy over Wireshark version from configure.ac
72 if(NOT PROJECT_MAJOR_VERSION)
74 ${CMAKE_SOURCE_DIR}/configure.ac
75 PROJECT_MAJOR_VERSION_TMP
76 REGEX "^m4_define\\(\\[?version_major\\]?, *\\[?[0-9]+\\]?\\)"
79 ${CMAKE_SOURCE_DIR}/configure.ac
80 PROJECT_MINOR_VERSION_TMP
81 REGEX "^m4_define\\(\\[?version_minor\\]?, *\\[?[0-9]+\\]?\\)"
84 ${CMAKE_SOURCE_DIR}/configure.ac
85 PROJECT_PATCH_VERSION_TMP
86 REGEX "^m4_define\\(\\[?version_micro\\]?, *\\[?[0-9]+\\]?\\)"
88 # XXX pull VERSION_EXTENSION out of configure.ac ?
90 string(REGEX REPLACE "m4_define\\(\\[?version_major\\]?, *\\[?([0-9]+)\\]?\\)"
93 ${PROJECT_MAJOR_VERSION_TMP}
95 string(REGEX REPLACE "m4_define\\(\\[?version_minor\\]?, *\\[?([0-9]+)\\]?\\)"
98 ${PROJECT_MINOR_VERSION_TMP}
100 string(REGEX REPLACE "m4_define\\(\\[?version_micro\\]?, *\\[?([0-9]+)\\]?\\)"
102 PROJECT_PATCH_VERSION
103 ${PROJECT_PATCH_VERSION_TMP}
107 if(PROJECT_VERSION_EXTENSION)
108 set(PROJECT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION}${PROJECT_VERSION_EXTENSION})
110 set(PROJECT_VERSION ${PROJECT_MAJOR_VERSION}.${PROJECT_MINOR_VERSION}.${PROJECT_PATCH_VERSION})
113 message(STATUS "V: ${PROJECT_VERSION}, MaV: ${PROJECT_MAJOR_VERSION}, MiV: ${PROJECT_MINOR_VERSION}, PL: ${PROJECT_PATCH_VERSION}, EV: ${PROJECT_VERSION_EXTENSION}.")
116 include(UseMakeDissectorReg)
117 include(UseMakeTapReg)
123 ${CMAKE_SOURCE_DIR}/epan
124 ${CMAKE_SOURCE_DIR}/tools/lemon
125 ${CMAKE_SOURCE_DIR}/wiretap
128 include( CMakeOptions.txt )
129 if( DUMPCAP_INSTALL_OPTION STREQUAL "suid" )
130 set( DUMPCAP_SETUID "SETUID" )
132 set( DUMPCAP_SETUID )
134 if( NOT CMAKE_SYSTEM_NAME STREQUAL "Linux" AND
135 DUMPCAP_INSTALL_OPTION STREQUAL "capabilities" )
136 message( WARNING "Capabilities are only supported on Linux" )
137 set( DUMPCAP_INSTALL_OPTION )
140 if( CMAKE_C_COMPILER_ID MATCHES "MSVC")
142 set(MSC_VER_REQUIRED 1600)
144 set(MSC_VER_REQUIRED 1700)
146 set(MSC_VER_REQUIRED 1800)
148 message(FATAL_ERROR "You are using an unsupported version of MSVC")
154 /DWIN32_LEAN_AND_MEAN
155 "/DMSC_VER_REQUIRED=${MSC_VER_REQUIRED}"
156 /D_CRT_SECURE_NO_DEPRECATE
157 /D_CRT_NONSTDC_NO_DEPRECATE
159 # NOMINMAX keeps windows.h from defining "min" and "max" via windef.h.
160 # This avoids conflicts with the C++ standard library.
162 # -DPSAPI_VERSION=1 Programs that must run on earlier versions of Windows as well as Windows 7 and later
163 # versions should always call this function as GetProcessMemoryInfo. To ensure correct
164 # resolution of symbols, add Psapi.lib to the TARGETLIBS macro and compile the program
165 # with -DPSAPI_VERSION=1.To use run-time dynamic linking, load Psapi.dll.
166 # http://msdn.microsoft.com/en-us/library/windows/desktop/ms683219(v=vs.85).aspx
167 # -DBUILD_WINDOWS Starting from VS2013, GetVersionEx is deprecated and we are recommended to use
168 # VerifyVersionInfo instead
169 # http://msdn.microsoft.com/en-us/library/windows/desktop/ms724429(v=vs.85).aspx
170 # http://msdn.microsoft.com/en-us/library/windows/desktop/ms725491(v=vs.85).aspx
171 # To continue to use GetVersionEx, we can define BUILD_WINDOWS
172 # -D_ALLOW_KEYWORD_MACROS For VS2012 onwards the, C++ STL does not permit macro redefinitions of keywords
173 # (see http://msdn.microsoft.com/en-us/library/bb531344(v=vs.110).aspx)
174 # This definition prevents the complaint about the redefinition of inline by WinPCap
175 # in pcap-stdinc.h when compiling CPP files, e.g. the Qt UI
178 /D_ALLOW_KEYWORD_MACROS
182 # /Zo Enhanced debugging of optimised codem for VS2013 Update 3 and beyond,
183 # Assume all VS2013 builds are at least Update 3.
184 # See http://msdn.microsoft.com/en-us/library/dn785163.aspx
185 set(LOCAL_CFLAGS ${LOCAL_CFLAGS} "/Zo")
189 set(LOCAL_CFLAGS ${LOCAL_CFLAGS} "/D_BIND_TO_CURRENT_CRT_VERSION=1")
192 # Additional compiler warnings to be treated as "Level 3"
193 # when compiling Wireshark sources. (Selected from "level 4" warnings).
194 ## 4295: array is too small to include a terminating null character
195 ## 4189: local variable is initialized but not referenced
196 set(WARNINGS_CFLAGS "/w34295 /w34189")
198 # FIXME: WINPCAP_VERSION cannot be determined from source or executable.
199 set(WINPCAP_VERSION "unknown")
200 set(WIRESHARK_COMMON_FLAGS
201 "/DWINPCAP_VERSION=${WINPCAP_VERSION}"
206 # Set in Makefile.nmake
207 set(WS_LINK_FLAGS "/LARGEADDRESSAWARE /MANIFEST:NO /INCREMENTAL:NO /RELEASE")
210 if(CMAKE_OSX_DEPLOYMENT_TARGET)
212 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.0")
213 message(FATAL_ERROR "We don't support building for OS X 10.0")
214 elseif(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.1")
215 message(FATAL_ERROR "We don't support building for OS X 10.1")
216 elseif(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.2")
217 message(FATAL_ERROR "We don't support building for OS X 10.2")
218 elseif(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.4" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5")
220 # Only 32-bit builds are supported. 10.5
221 # (and 10.4?) had a bug that causes some BPF
222 # functions not to work with 64-bit userland
223 # code, so capturing won't work.
225 set(CMAKE_C_FLAGS "-m32 ${CMAKE_C_FLAGS}")
226 set(CMAKE_CXX_FLAGS "-m32 ${CMAKE_CXX_FLAGS}")
227 set(WS_LINK_FLAGS "-m32 ${WS_LINK_FLAGS}")
229 message(STATUS "Building for OS X ${CMAKE_OSX_DEPLOYMENT_TARGET}")
231 message(FATAL_ERROR "CMAKE_OSX_DEPLOYMENT_TARGET only applies when building for OS X")
235 set(WIRESHARK_COMMON_FLAGS
236 # The following are for C and C++
237 # -O<X> and -g get set by the CMAKE_BUILD_TYPE
247 -fno-delete-null-pointer-checks
248 -fsanitize=undefined # compile and runtime checks
249 # -fsanitize=float-divide-by-zero
250 # -fsanitize=float-cast-overflow
252 # -fno-sanitize-recover # Abort during runtime
259 -Wno-overlength-strings
263 -Wunused-const-variable
266 set(WIRESHARK_C_ONLY_FLAGS
267 # The following are C only, not C++
269 -Wdeclaration-after-statement
272 -Wold-style-definition
276 # The Qt headers generate a ton of shortening errors on 64-bit systems
277 # so only enable this for C for now.
281 set(WIRESHARK_CPP_ONLY_FLAGS
284 set(WIRESHARK_EXTRA_COMPILER_COMMON_FLAGS
285 # The following are for C and C++
288 # Various code blocks this one.
291 -fstrict-overflow -Wstrict-overflow=4
293 # Due to various places where APIs we don't control
294 # require us to cast away constness, we can probably
295 # never enable this one with -Werror.
299 # Some generated ASN.1 dissectors block this one;
300 # multiple function declarations for the same
301 # function are being generated.
305 # Some loops are safe, but it's hard to convince the
308 -Wunsafe-loop-optimizations
310 # All the registration functions block these for now.
313 -Wmissing-declarations
315 # A bunch of "that might not work on SPARC" code blocks
320 # Works only with Clang
324 # Works only with Clang but generates a lot of warnings
325 # (about glib library not using Doxygen)
330 set(WIRESHARK_EXTRA_COMPILER_C_ONLY_FLAGS
331 # The following are C only, not C++
333 # Due to various places where APIs we don't control
334 # require us to cast away constness, we can probably
335 # never enable this one with -Werror.
340 set(WIRESHARK_EXTRA_COMPILER_CPP_ONLY_FLAGS
343 if(CMAKE_C_COMPILER_ID MATCHES "Clang")
344 set(WIRESHARK_COMMON_FLAGS ${WIRESHARK_COMMON_FLAGS}
348 # ccache + clang++ can result in "argument unused during
349 # compilation" warnings.
350 set(WIRESHARK_CPP_ONLY_FLAGS ${WIRESHARK_CPP_ONLY_FLAGS}
354 set(WIRESHARK_COMMON_FLAGS ${WIRESHARK_COMMON_FLAGS}
355 -fexcess-precision=fast
358 set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS}
362 if(ENABLE_EXTRA_COMPILER_WARNINGS) # This overrides -Werror
363 set(WIRESHARK_COMMON_FLAGS ${WIRESHARK_COMMON_FLAGS} ${WIRESHARK_EXTRA_COMPILER_COMMON_FLAGS})
364 set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS} ${WIRESHARK_EXTRA_COMPILER_C_ONLY_FLAGS})
365 set(WIRESHARK_CPP_ONLY_FLAGS ${WIRESHARK_CPP_ONLY_FLAGS} ${WIRESHARK_EXTRA_COMPILER_CPP_ONLY_FLAGS})
369 -DG_DISABLE_DEPRECATED
370 -DG_DISABLE_SINGLE_INCLUDES
374 set( C_FLAG_TESTS ${WIRESHARK_COMMON_FLAGS} ${WIRESHARK_C_ONLY_FLAGS} )
375 set( CPP_FLAG_TESTS ${WIRESHARK_COMMON_FLAGS} ${WIRESHARK_CPP_ONLY_FLAGS} )
377 # Counterhack to work around some cache magic in CHECK_C_SOURCE_COMPILES
378 include(CheckCCompilerFlag)
379 include(CheckCXXCompilerFlag)
381 if(NOT DISABLE_WERROR AND NOT ENABLE_EXTRA_COMPILER_WARNINGS)
382 check_c_compiler_flag(-Werror WERROR)
387 # Sigh: Have to use THIS_FLAG instead of ${F} for some reason
388 foreach(THIS_FLAG ${C_FLAG_TESTS})
389 string( REGEX REPLACE "[^a-zA-Z0-9_]+" "_" F ${THIS_FLAG} )
390 set(${F} ${THIS_FLAG})
392 message(STATUS "Checking for c-compiler flag: ${THIS_FLAG}")
393 check_c_compiler_flag("${ADDED_CMAKE_C_FLAGS} ${${F}}" ${V})
395 set(ADDED_CMAKE_C_FLAGS "${ADDED_CMAKE_C_FLAGS} ${${F}}")
398 set(CMAKE_C_FLAGS "${ADDED_CMAKE_C_FLAGS} ${CMAKE_C_FLAGS}")
400 foreach(THIS_FLAG ${CPP_FLAG_TESTS})
401 string( REGEX REPLACE "[^a-zA-Z0-9_]+" "_" F ${THIS_FLAG} )
402 set(${F} ${THIS_FLAG})
403 set(V CPP_${F}_VALID)
404 message(STATUS "Checking for c++-compiler flag: ${THIS_FLAG}")
405 check_cxx_compiler_flag("${ADDED_CMAKE_CXX_FLAGS} ${${F}}" ${V})
407 set(ADDED_CMAKE_CXX_FLAGS "${ADDED_CMAKE_CXX_FLAGS} ${${F}}")
410 set(CMAKE_CXX_FLAGS "${ADDED_CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS}")
413 # XXX - we're assuming MSVC supports the SSE 4.2 intrinsics and
414 # that other C compilers support them iff they support the
417 # Perhaps we should check whether we can compile something
418 # that uses them, instead, and do something else to figure
419 # out what compiler flag, if any, we need to pass to the
420 # compiler to compile code that uses them.
422 if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
423 set(HAVE_SSE4_2 TRUE)
425 message(STATUS "Checking for c-compiler flag: -msse4.2")
426 check_c_compiler_flag(-msse4.2 HAVE_SSE4_2)
428 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse4.2")
432 check_c_compiler_flag(-fvisibility=hidden FVHIDDEN)
434 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
435 else() # TODO add alternate compiler flags for hiding symbols
436 if( NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
437 message(WARNING "Hiding shared library symbols is not supported by the compiler."
438 " All shared library symbols will be exported.")
442 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
443 set (C_UNUSED "__attribute__((unused))" )
449 if(NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
450 set(WIRESHARK_LD_FLAGS
458 include(CheckCLinkerFlag)
460 # Sigh: Have to use THIS_FLAG instead of ${F} for some reason
461 foreach(THIS_FLAG ${WIRESHARK_LD_FLAGS})
462 set(F WS_LD_FLAG_${C})
463 set(${F} ${THIS_FLAG})
464 set(V WS_LD_FLAG_VALID${C})
465 check_c_linker_flag(${${F}} ${V})
467 set(WS_LINK_FLAGS "${WS_LINK_FLAGS} ${${F}}")
469 math(EXPR C "${C} + 1")
473 set(LINK_MODE_LIB STATIC)
474 set(LINK_MODE_MODULE STATIC)
476 set(LINK_MODE_LIB SHARED)
477 set(LINK_MODE_MODULE MODULE)
480 if(APPLE AND EXISTS /usr/local/opt/gettext)
481 # GLib on OS X requires libintl. Homebrew installs gettext (and
482 # libintl) in /usr/local/opt/gettext
483 include_directories(/usr/local/opt/gettext/include)
484 link_directories(/usr/local/opt/gettext/lib)
487 # The packagelist is doing some magic: If we add XXX to the packagelist, we
488 # - may optionally set XXX_OPTIONS to pass to the find_package command
489 # - will call FindXXX.cmake
490 # - return found libraries in XXX_LIBRARIES
491 # - return found include in XXX_INCLUDE_DIRS
494 #The minimum package list
495 set(PACKAGELIST Gettext M GLIB2 GMODULE2 GTHREAD2 LEX YACC Perl SED SH PythonInterp)
496 set(LEX_REQUIRED TRUE)
497 set(GLIB2_REQUIRED TRUE)
498 set(GLIB2_FIND_REQUIRED TRUE)
499 set(GLIB2_MIN_VERSION 2.14.0)
500 set(GTHREAD2_REQUIRED TRUE)
501 set(PythonInterp_FIND_VERSION 2)
502 set(Python_ADDITIONAL_VERSIONS 3)
503 set(YACC_REQUIRED TRUE)
508 set(PACKAGELIST ${PACKAGELIST} HtmlViewer)
511 set(PACKAGELIST ${PACKAGELIST} PCAP)
515 set(PACKAGELIST ${PACKAGELIST} AIRPCAP)
519 if(BUILD_wireshark_gtk)
521 set(PACKAGELIST ${PACKAGELIST} GTK3)
523 set(PACKAGELIST ${PACKAGELIST} GTK2)
524 set(GTK2_OPTIONS COMPONENTS gtk)
525 set(GTK2_FIND_VERSION 2.12)
526 set(GTK2_DEBUG false)
533 # Untested, may not work if CMAKE_PREFIX_PATH gets overwritten
534 # somewhere. The if WIN32 in this place is annoying as well.
536 set( QT5_BASE_PATH "$ENV{QT5_BASE_DIR}" )
537 set( CMAKE_PREFIX_PATH "${QT5_BASE_PATH}" )
538 # Used for the creation of setpath.bat
539 set( QT5_DLL_PATH "${QT5_BASE_PATH}/bin" )
540 set( WS_ALL_LIBS ${WS_ALL_LIBS} ${QT5_DLL_PATH} )
542 set(PACKAGELIST ${PACKAGELIST}
549 set(PACKAGELIST ${PACKAGELIST} Qt5MacExtras)
552 set(PACKAGELIST ${PACKAGELIST} Qt5WinExtras)
556 set(PACKAGELIST ${PACKAGELIST} Qt4)
557 # set(Qt4_OPTIONS 4.7.1 REQUIRED QtCore QtGui)
564 set(PACKAGELIST ${PACKAGELIST} SMI)
569 set(PACKAGELIST ${PACKAGELIST} GCRYPT)
572 # GNU SSL/TLS support
574 set(PACKAGELIST ${PACKAGELIST} GNUTLS)
579 set(PACKAGELIST ${PACKAGELIST} KERBEROS)
583 if(ENABLE_PORTAUDIO AND BUILD_wireshark_gtk)
584 set(PACKAGELIST ${PACKAGELIST} PORTAUDIO)
588 # Prefer c-ares over adns
589 if(ENABLE_CARES) # C Asynchronouse resolver
590 set(PACKAGELIST ${PACKAGELIST} CARES)
591 elseif(ENABLE_ADNS) # Gnu asynchronous DNS
592 set(PACKAGELIST ${PACKAGELIST} ADNS)
597 set(PACKAGELIST ${PACKAGELIST} ZLIB)
600 # Embedded Lua interpreter
602 set(PACKAGELIST ${PACKAGELIST} LUA)
605 # GeoIP address resolving
607 set(PACKAGELIST ${PACKAGELIST} GEOIP)
611 set(PACKAGELIST ${PACKAGELIST} NL)
615 set(PACKAGELIST ${PACKAGELIST} SBC)
620 set(PACKAGELIST ${PACKAGELIST} CAP SETCAP)
623 # Windows version updates
624 if(ENABLE_WINSPARKLE)
625 set(PACKAGELIST ${PACKAGELIST} WINSPARKLE)
628 set(PACKAGELIST ${PACKAGELIST} YAPP)
630 set(PACKAGELIST ${PACKAGELIST} POD)
632 if(ENABLE_HTML_GUIDES)
633 set(PACKAGELIST ${PACKAGELIST} DOXYGEN)
636 set(PROGLIST text2pcap mergecap capinfos captype editcap reordercap dumpcap)
638 #Sort the package list
639 list(SORT PACKAGELIST)
640 message(STATUS "Packagelist: ${PACKAGELIST}")
641 #Let's loop the package list
642 foreach(PACKAGE ${PACKAGELIST})
643 if(${PACKAGE} STREQUAL "Qt4")
644 set(PACKAGE_VAR "QT")
645 elseif(${PACKAGE} STREQUAL "PythonInterp")
646 set(PACKAGE_VAR "PYTHONINTERP")
647 elseif(${PACKAGE} STREQUAL "Gettext")
648 set(PACKAGE_VAR "GETTEXT")
649 elseif(${PACKAGE} STREQUAL "HtmlViewer")
650 set(PACKAGE_VAR "HTML_VIEWER")
651 elseif(${PACKAGE} STREQUAL "Perl")
652 set(PACKAGE_VAR "PERL")
654 set(PACKAGE_VAR ${PACKAGE})
656 if(${PACKAGE}_OPTIONS)
657 find_package(${PACKAGE} ${${PACKAGE}_OPTIONS})
658 elseif(${PACKAGE}_REQUIRED)
659 find_package(${PACKAGE} REQUIRED)
661 find_package(${PACKAGE})
663 if (${PACKAGE_VAR}_FOUND)
664 message("${PACKAGE_VAR} FOUND")
665 set(HAVE_LIB${PACKAGE_VAR} 1)
666 include_directories(${${PACKAGE_VAR}_INCLUDE_DIRS})
667 set(WS_ALL_LIBS ${WS_ALL_LIBS} ${${PACKAGE_VAR}_LIBRARIES})
668 message(STATUS "${PACKAGE} includes: ${${PACKAGE_VAR}_INCLUDE_DIRS}")
669 message(STATUS "${PACKAGE} libs: ${${PACKAGE_VAR}_LIBRARIES}")
670 if (${PACKAGE}_DEFINITIONS)
671 message(STATUS "${PACKAGE} definitions: ${${PACKAGE_VAR}_DEFINITIONS}")
673 if (${PACKAGE_VAR}_EXECUTABLE)
674 message(STATUS "${PACKAGE} executable: ${${PACKAGE_VAR}_EXECUTABLE}")
678 # Not finding a package is only a fatal error if the
679 # package is required; if it's required, then its
680 # XXX_REQUIRED variable is set to TRUE, and the above
681 # code will pass REQUIRED to find_package, and the
682 # configure will fail if the package isn't found.
684 # Do *NOT* report this as an error!
686 message("${PACKAGE_VAR} NOT FOUND")
690 # Provide Windows system lib names
691 include( UseWinLibs )
693 # Create file to set paths to run binaries from build dir
694 WSExtendPath( "${WS_ALL_LIBS}" "${CMAKE_BINARY_DIR}/setpath.bat" )
697 include(CPackConfig.txt)
708 # HAVE_HEIMDAL_KERBEROS
709 set(HAVE_MIT_KERBEROS 1)
710 set(HAVE_KEYTYPE_ARCFOUR_56 1)
721 if(HAVE_LIBNL AND HAVE_AIRPCAP)
722 message(ERROR "Airpcap and Libnl support are mutually exclusive")
728 if (HAVE_LIBWINSPARKLE)
729 set(HAVE_SOFTWARE_UPDATE 1)
732 # No matter which version of GTK is present
733 if(GTK2_FOUND OR GTK3_FOUND)
736 # That's the name autofoo uses
739 # Always include the "true" zlib includes first. This works around a
740 # bug in the Windows setup of GTK[23] which has a faulty zconf.h.
741 include_directories(BEFORE ${ZLIB_INCLUDE_DIRS})
743 if (Qt5Widgets_FOUND)
744 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
745 if (Qt5_POSITION_INDEPENDENT_CODE)
746 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
749 set (QT_LIBRARIES ${Qt5Widgets_LIBRARIES} ${Qt5PrintSupport_LIBRARIES})
750 if(Qt5MultimediaWidgets_FOUND)
751 set (QT_LIBRARIES ${QT_LIBRARIES} ${Qt5MultimediaWidgets_LIBRARIES})
752 # That's the name autofoo uses
753 set(QT_MULTIMEDIAWIDGETS_LIB 1)
755 if(Qt5MacExtras_FOUND)
756 set (QT_LIBRARIES ${QT_LIBRARIES} ${Qt5MacExtras_LIBRARIES})
757 # That's the name autofoo uses
758 set(QT_MACEXTRAS_LIB 1)
760 if(Qt5WinExtras_FOUND)
761 set (QT_LIBRARIES ${QT_LIBRARIES} ${Qt5WinExtras_LIBRARIES})
762 # set(QT_WINEXTRAS_LIB 1) # Not needed?
764 # If Qt4: QT_LIBRARIES and QT_INCLUDES are not set above. They require extra magic
766 include(${QT_USE_FILE})
767 include_directories(${QT_INCLUDE_DIR})
768 message(STATUS "QT includes: ${QT_INCLUDE_DIR}")
769 message(STATUS "QT libs: ${QT_LIBRARIES}")
772 message(STATUS "C-Flags: ${CMAKE_C_FLAGS}")
773 message(STATUS "CXX-Flags: ${CMAKE_CXX_FLAGS}")
777 # We assume that APPLE means OS X so that we have the OS X
780 set(HAVE_OS_X_FRAMEWORKS 1)
781 FIND_LIBRARY (APPLE_APPLICATION_SERVICES_LIBRARY ApplicationServices)
782 FIND_LIBRARY (APPLE_CORE_FOUNDATION_LIBRARY CoreFoundation)
783 FIND_LIBRARY (APPLE_SYSTEM_CONFIGURATION_LIBRARY SystemConfiguration)
786 include(ConfigureChecks.cmake)
788 #Big or little endian ?
789 include(TestBigEndian)
790 test_big_endian(WORDS_BIGENDIAN)
792 set(DATAFILE_DIR "${CMAKE_INSTALL_PREFIX}/share/${CPACK_PACKAGE_NAME}")
794 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
798 COMMAND ${PERL_EXECUTABLE}
799 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
800 ${CMAKE_CURRENT_SOURCE_DIR}
802 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
804 set_target_properties(gitversion PROPERTIES FOLDER "Auxiliary")
807 OUTPUT ${CMAKE_BINARY_DIR}/version.h
808 COMMAND ${PERL_EXECUTABLE}
809 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
810 ${CMAKE_CURRENT_SOURCE_DIR}
812 ${CMAKE_CURRENT_SOURCE_DIR}/make-version.pl
817 if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR})
818 set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/@CPACK_PACKAGE_NAME@/plugins/${CPACK_PACKAGE_VERSION}")
820 set(PLUGIN_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/@CPACK_PACKAGE_NAME@/plugins/${CPACK_PACKAGE_VERSION}")
836 ${CUSTOM_PLUGIN_SRC_DIR}
838 # It seems this stuff doesn't build with autofoo either...
840 # set(PLUGIN_SRC_DIRS
846 set(PLUGIN_SRC_DIRS )
849 foreach(PLUGIN_DIR ${PLUGIN_SRC_DIRS})
850 add_subdirectory( ${PLUGIN_DIR} )
855 set(EXTCAP_DIR "${DATAFILE_DIR}/extcap/")
858 add_subdirectory( asn1 EXCLUDE_FROM_ALL )
859 add_subdirectory( capchild )
860 add_subdirectory( caputils )
861 add_subdirectory( codecs )
863 # Some work will be required for Windows. See the notes at the top
864 # of FindASCIIDOC.cmake.
865 add_subdirectory( docbook )
867 add_subdirectory( epan )
868 add_subdirectory( tools/lemon )
869 add_subdirectory( ui )
870 add_subdirectory( wiretap )
871 add_subdirectory( wsutil )
874 add_custom_target(dumpabi DEPENDS dumpabi-libwireshark dumpabi-libwiretap dumpabi-libwsutil color.h)
878 add_subdirectory( echld )
881 if(BUILD_wireshark_gtk AND GTK_FOUND)
882 add_subdirectory( ui/gtk )
885 if(BUILD_wireshark AND QT_FOUND)
886 add_subdirectory( ui/qt )
890 # Basedir where to install guides
891 set(DOC_DIR "$ENV{docdir}" CACHE FILEPATH "Installation directory for ug and dg pdfs.")
892 message(STATUS "docdir: ${DOC_DIR}")
894 if(ENABLE_PCAP_NG_DEFAULT)
895 set(PCAP_NG_DEFAULT 1)
898 # Large file support (e.g. make off_t 64 bit if supported)
899 include(gmxTestLargeFiles)
900 gmx_test_large_files(GMX_LARGEFILES)
902 add_definitions( -DTOP_SRCDIR=\"${CMAKE_SOURCE_DIR}\" )
905 set(WS_MSVC_NORETURN "__declspec(noreturn)")
907 # Disable deprecation
909 add_definitions(-D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE)
912 set(WS_MSVC_NORETURN " ")
915 set( VERSION ${PROJECT_VERSION} )
916 set( configure_input "Built with CMake ${CMAKE_VERSION}" )
917 configure_file(${CMAKE_SOURCE_DIR}/cmakeconfig.h.in ${CMAKE_BINARY_DIR}/config.h)
920 capchild/doxygen.cfg.in
921 caputils/doxygen.cfg.in
925 image/libwireshark.rc.in
926 image/text2pcap.rc.in
928 image/wireshark.rc.in
932 image/reordercap.rc.in
934 image/file_dlg_win32.rc
938 image/libwsutil.rc.in
940 packaging/macosx/Info.plist.in
941 plugins/ethercat/plugin.rc.in
942 plugins/unistim/plugin.rc.in
943 plugins/opcua/plugin.rc.in
944 plugins/wimax/plugin.rc.in
945 plugins/gryphon/plugin.rc.in
946 plugins/profinet/plugin.rc.in
947 plugins/m2m/plugin.rc.in
948 plugins/stats_tree/plugin.rc.in
949 plugins/wimaxasncp/plugin.rc.in
950 plugins/mate/plugin.rc.in
951 plugins/wimaxmacphy/plugin.rc.in
952 plugins/irda/plugin.rc.in
953 plugins/docsis/plugin.rc.in
954 plugins/easy_codec/plugin.rc.in
955 ${CUSTOM_PLUGIN_IN_FILES}
957 ui/gtk/doxygen.cfg.in
961 foreach( _in_file ${IN_FILES} )
962 get_filename_component( _path ${_in_file} PATH )
963 string( REGEX REPLACE "(.*)\\.in" "\\1" _outfile ${_in_file} )
964 configure_file( ${CMAKE_SOURCE_DIR}/${_in_file} ${CMAKE_BINARY_DIR}/${_outfile} @ONLY )
967 include(FeatureSummary)
968 #SET_FEATURE_INFO(NAME DESCRIPTION [URL [COMMENT] ]
969 SET_FEATURE_INFO(SBC "SBC Codec for Bluetooth A2DP stream playing" "www: http://git.kernel.org/cgit/bluetooth/sbc.git" )
971 FEATURE_SUMMARY(WHAT ALL)
974 ${CMAKE_BINARY_DIR}/ui
975 ${CMAKE_BINARY_DIR}/ui/gtk
976 ${CMAKE_BINARY_DIR}/ui/qt
977 ${CMAKE_BINARY_DIR}/capchild
978 ${CMAKE_BINARY_DIR}/caputils
979 ${CMAKE_BINARY_DIR}/codecs
980 ${CMAKE_BINARY_DIR}/epan
981 ${CMAKE_BINARY_DIR}/wiretap
982 ${CMAKE_BINARY_DIR}/wsutil
987 ui/win32/console_win32.c
988 ui/win32/file_dlg_win32.c
989 ui/win32/print_win32.c
990 image/file_dlg_win32.rc
994 # sources common for wireshark, tshark, and rawshark
1001 # sources for external capture interfaces
1003 set(SHARK_COMMON_SRC
1011 ui/cli/tap-afpstat.c
1012 ui/cli/tap-ansi_astat.c
1013 ui/cli/tap-bootpstat.c
1014 ui/cli/tap-camelcounter.c
1015 ui/cli/tap-camelsrt.c
1016 ui/cli/tap-comparestat.c
1017 ui/cli/tap-dcerpcstat.c
1018 ui/cli/tap-diameter-avp.c
1022 ui/cli/tap-gsm_astat.c
1023 ui/cli/tap-h225counter.c
1024 ui/cli/tap-h225rassrt.c
1026 ui/cli/tap-httpstat.c
1027 ui/cli/tap-icmpstat.c
1028 ui/cli/tap-icmpv6stat.c
1030 ui/cli/tap-iousers.c
1031 ui/cli/tap-macltestat.c
1032 ui/cli/tap-mgcpstat.c
1033 ui/cli/tap-megacostat.c
1034 ui/cli/tap-protocolinfo.c
1035 ui/cli/tap-protohierstat.c
1036 ui/cli/tap-radiusstat.c
1037 ui/cli/tap-rlcltestat.c
1038 ui/cli/tap-rpcstat.c
1039 ui/cli/tap-rpcprogs.c
1041 ui/cli/tap-rtspstat.c
1042 ui/cli/tap-scsistat.c
1043 ui/cli/tap-sctpchunkstat.c
1044 ui/cli/tap-sipstat.c
1045 ui/cli/tap-smbsids.c
1046 ui/cli/tap-smbstat.c
1047 ui/cli/tap-stats_tree.c
1049 ui/cli/tap-wspstat.c
1062 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1064 ${CMAKE_BINARY_DIR}/capinfos.html
1065 ${CMAKE_BINARY_DIR}/captype.html
1069 ${CMAKE_BINARY_DIR}/dftest.html
1070 ${CMAKE_BINARY_DIR}/dumpcap.html
1071 ${CMAKE_BINARY_DIR}/editcap.html
1072 ${CMAKE_BINARY_DIR}/asn2deb.html
1073 ${CMAKE_BINARY_DIR}/idl2deb.html
1074 ${CMAKE_BINARY_DIR}/idl2wrs.html
1077 ${CMAKE_BINARY_DIR}/mergecap.html
1079 ${CMAKE_BINARY_DIR}/randpkt.html
1080 ${CMAKE_BINARY_DIR}/rawshark.html
1081 ${CMAKE_BINARY_DIR}/reordercap.html
1084 ${CMAKE_BINARY_DIR}/text2pcap.html
1085 ${CMAKE_BINARY_DIR}/tshark.html
1086 ${CMAKE_BINARY_DIR}/wireshark-filter.html
1087 ${CMAKE_BINARY_DIR}/wireshark.html
1092 ${CMAKE_BINARY_DIR}/capinfos.1
1093 ${CMAKE_BINARY_DIR}/captype.1
1094 ${CMAKE_BINARY_DIR}/dftest.1
1095 ${CMAKE_BINARY_DIR}/dumpcap.1
1096 ${CMAKE_BINARY_DIR}/editcap.1
1097 ${CMAKE_BINARY_DIR}/idl2wrs.1
1098 ${CMAKE_BINARY_DIR}/mergecap.1
1099 ${CMAKE_BINARY_DIR}/randpkt.1
1100 ${CMAKE_BINARY_DIR}/rawshark.1
1101 ${CMAKE_BINARY_DIR}/reordercap.1
1102 ${CMAKE_BINARY_DIR}/text2pcap.1
1103 ${CMAKE_BINARY_DIR}/tshark.1
1104 ${CMAKE_BINARY_DIR}/wireshark.1
1108 ${CMAKE_BINARY_DIR}/wireshark-filter.4
1112 # @NSL_LIBS@ # -lnsl
1113 # @SOCKET_LIBS@ # -lsocket
1114 # @SSL_LIBS@ # -lcrypto
1116 # $(plugin_ldadd) # in case of static
1117 ${AIRPCAP_LIBRARIES}
1121 ${KERBEROS_LIBRARIES}
1131 ${WINSPARKLE_LIBRARIES}
1134 if( (BUILD_wireshark AND QT_FOUND) OR (BUILD_wireshark_gtk AND GTK_FOUND) )
1151 if(ENABLE_APPLICATION_BUNDLE)
1153 # Add -Wl,-single_module to the LDFLAGS used with shared
1154 # libraries, to fix some error that show up in some cases;
1155 # some Apple documentation recommends it for most shared
1158 set( CMAKE_SHARED_LINKER_FLAGS "-Wl,-single_module ${CMAKE_SHARED_LINKER_FLAGS}" )
1160 # Add -Wl,-headerpad_max_install_names to the LDFLAGS, as
1161 # code-signing issues is running out of padding space.
1163 # Add -Wl,-search_paths_first to make sure that if we search
1164 # directories A and B, in that order, for a given library, a
1165 # non-shared version in directory A, rather than a shared
1166 # version in directory B, is chosen (so we can use
1167 # --with-pcap=/usr/local to force all programs to be linked
1168 # with a static version installed in /usr/local/lib rather than
1169 # the system version in /usr/lib).
1171 # Also add -Wl,-rpath,@executable_path/../lib and
1172 # -Wl,-rpath,/usr/local/lib, so that, if we build an app
1173 # bundle, we can tweak all the executable images, shared
1174 # libraries, and plugins in the bundle to look for non-system
1175 # libraries in the rpath, rather than having a script tweak
1176 # DYLD_LIBRARY_PATH.
1179 set(CMAKE_EXE_LINKER_FLAGS
1180 "-Wl,-headerpad_max_install_names -Wl,-search_paths_first -Wl,-rpath,@executable_path/../lib -Wl,-rpath,@executable_path/../Frameworks -Wl,-rpath,/usr/local/lib ${CMAKE_EXE_LINKER_FLAGS}"
1183 # Add files to the app bundle
1184 # Wireshark.app/Contents
1185 set(BUNDLE_CONTENTS_FILES
1186 ${CMAKE_BINARY_DIR}/packaging/macosx/PkgInfo
1188 set_source_files_properties(${BUNDLE_CONTENTS_FILES} PROPERTIES
1189 MACOSX_PACKAGE_LOCATION .
1192 # Wireshark.app/Contents/Resources
1193 set(BUNDLE_RESOURCE_FILES
1194 ${CMAKE_SOURCE_DIR}/packaging/macosx/Resources/Wireshark.icns
1195 ${CMAKE_SOURCE_DIR}/packaging/macosx/Resources/Wiresharkdoc.icns
1197 set_source_files_properties(${BUNDLE_RESOURCE_FILES} PROPERTIES
1198 MACOSX_PACKAGE_LOCATION Resources
1201 # Wireshark.app/Contents/Resources/share/man/man1
1202 set(BUNDLE_RESOURCE_SHARE_MAN1_FILES ${MAN1_FILES})
1203 set_source_files_properties(${BUNDLE_RESOURCE_SHARE_MAN1_FILES} PROPERTIES
1204 MACOSX_PACKAGE_LOCATION Resources/share/man/man1
1207 # Wireshark.app/Contents/Resources/share/man/man1
1208 set(BUNDLE_RESOURCE_SHARE_MAN4_FILES ${MAN4_FILES})
1209 set_source_files_properties(${BUNDLE_RESOURCE_SHARE_MAN4_FILES} PROPERTIES
1210 MACOSX_PACKAGE_LOCATION Resources/share/man/man4
1213 # Wireshark.app/Contents/Resources/share/wireshark
1214 set(BUNDLE_RESOURCE_SHARE_WIRESHARK_FILES
1217 set_source_files_properties(${BUNDLE_RESOURCE_SHARE_WIRESHARK_FILES} PROPERTIES
1218 MACOSX_PACKAGE_LOCATION Resources/share/wireshark
1221 # Wireshark.app/Contents/Resources/share/wireshark/*/*
1222 # This is a bit messy but copying directories using
1223 # MACOSX_PACKAGE_LOCATION is currently broken:
1224 # http://public.kitware.com/Bug/view.php?id=13784
1225 # We also assume INSTALL_DIRS are all one level deep
1226 set(BUNDLE_RESOURCE_SHARE_WIRESHARK_SUBIDR_FILES)
1227 foreach (_subdir ${INSTALL_DIRS})
1228 file(GLOB _subdir_files RELATIVE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/${_subdir}/*)
1229 list(REMOVE_ITEM _subdir_files ${_subdir}/Custom.make)
1230 set(BUNDLE_RESOURCE_SHARE_WIRESHARK_SUBIDR_FILES
1231 ${BUNDLE_RESOURCE_SHARE_WIRESHARK_SUBIDR_FILES}
1234 set_source_files_properties(${_subdir_files} PROPERTIES
1235 MACOSX_PACKAGE_LOCATION Resources/share/wireshark/${_subdir}
1239 set(EXTRA_BUNDLE_FILES
1240 ${BUNDLE_CONTENTS_FILES}
1241 ${BUNDLE_RESOURCE_FILES}
1242 ${BUNDLE_RESOURCE_SHARE_MAN1_FILES}
1243 ${BUNDLE_RESOURCE_SHARE_MAN4_FILES}
1244 ${BUNDLE_RESOURCE_SHARE_WIRESHARK_FILES}
1245 ${BUNDLE_RESOURCE_SHARE_WIRESHARK_SUBIDR_FILES}
1248 set(EXTRA_BUNDLE_FILES)
1251 if(BUILD_wireshark AND QT_FOUND)
1258 ${GTHREAD2_LIBRARIES}
1261 ${APPLE_APPLICATION_SERVICES_LIBRARY}
1262 ${APPLE_CORE_FOUNDATION_LIBRARY}
1263 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1266 # wireshark and wireshark-gtk share wireshark_FILES
1268 # Policy since 2.8.11
1270 cmake_policy(SET CMP0020 OLD)
1273 add_executable(wireshark MACOSX_BUNDLE ${wireshark_FILES} ${EXTRA_BUNDLE_FILES})
1274 set_target_properties(wireshark PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1275 set_target_properties(wireshark PROPERTIES FOLDER "Executables")
1276 if(ENABLE_APPLICATION_BUNDLE OR WIN32)
1277 set_target_properties(wireshark PROPERTIES OUTPUT_NAME Wireshark)
1279 if(ENABLE_APPLICATION_BUNDLE)
1280 set_target_properties(
1281 wireshark PROPERTIES
1282 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_BINARY_DIR}/packaging/macosx/Info.plist
1285 TARGET wireshark POST_BUILD
1286 COMMAND ln -sf ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/Wireshark ${CMAKE_BINARY_DIR}/run/wireshark
1290 target_link_libraries(wireshark ${wireshark_LIBS})
1293 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
1294 BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR}
1297 if(NOT ENABLE_APPLICATION_BUNDLE)
1298 # Map for endpoints dialog
1302 COMMAND ${CMAKE_COMMAND} -E copy_if_different
1303 "${PROJECT_SOURCE_DIR}/ipmap.html"
1304 $<TARGET_FILE_DIR:wireshark>
1309 # Common properties for CLI executables
1310 macro(set_extra_executable_properties _executable _folder)
1311 set_target_properties(${_executable} PROPERTIES
1312 LINK_FLAGS "${WS_LINK_FLAGS}"
1316 if(ENABLE_APPLICATION_BUNDLE)
1317 set_target_properties(${_executable} PROPERTIES
1318 RUNTIME_OUTPUT_DIRECTORY run/Wireshark.app/Contents/MacOS
1321 TARGET ${_executable} POST_BUILD
1322 COMMAND ln -sf ${CMAKE_BINARY_DIR}/run/Wireshark.app/Contents/MacOS/${_executable} ${CMAKE_BINARY_DIR}/run/
1327 if(BUILD_wireshark_gtk AND GTK_FOUND)
1328 set(wireshark_gtk_LIBS
1335 ${GTHREAD2_LIBRARIES}
1337 ${PORTAUDIO_LIBRARIES}
1339 ${APPLE_APPLICATION_SERVICES_LIBRARY}
1340 ${APPLE_CORE_SERVICES_LIBRARY}
1341 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1343 ${WIN_COMCTL32_LIBRARY}
1345 # wireshark and wireshark-gtk share wireshark_FILES
1347 add_executable(wireshark-gtk ${wireshark_FILES})
1348 set_target_properties(wireshark-gtk PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1349 set_target_properties(wireshark-gtk PROPERTIES FOLDER "Executables")
1350 target_link_libraries(wireshark-gtk ${wireshark_gtk_LIBS})
1351 install(TARGETS wireshark-gtk RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1353 # Map for endpoints dialog
1355 TARGET wireshark-gtk
1357 COMMAND ${CMAKE_COMMAND} -E copy_if_different
1358 "${PROJECT_SOURCE_DIR}/ipmap.html"
1359 $<TARGET_FILE_DIR:wireshark-gtk>
1363 register_tap_files(tshark-tap-register.c
1374 ${APPLE_CORE_FOUNDATION_LIBRARY}
1375 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1379 tshark-tap-register.c
1385 add_executable(tshark ${tshark_FILES})
1386 set_extra_executable_properties(tshark "Executables")
1387 target_link_libraries(tshark ${tshark_LIBS})
1388 install(TARGETS tshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1395 ${APPLE_CORE_FOUNDATION_LIBRARY}
1396 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1404 add_executable(tfshark ${tfshark_FILES})
1405 set_extra_executable_properties(tfshark "Executables")
1406 target_link_libraries(tfshark ${tfshark_LIBS})
1407 install(TARGETS tfshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1410 if(BUILD_rawshark AND PCAP_FOUND)
1414 ${APPLE_CORE_FOUNDATION_LIBRARY}
1415 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1423 add_executable(rawshark ${rawshark_FILES})
1424 set_extra_executable_properties(rawshark "Executables")
1425 target_link_libraries(rawshark ${rawshark_LIBS})
1426 install(TARGETS rawshark RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1437 add_executable(dftest ${dftest_FILES})
1438 set_extra_executable_properties(dftest "Tests")
1439 target_link_libraries(dftest ${dftest_LIBS})
1440 install(TARGETS dftest RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1458 add_executable(randpkt ${randpkt_FILES})
1459 set_extra_executable_properties(randpkt "Executables")
1460 target_link_libraries(randpkt ${randpkt_LIBS})
1461 install(TARGETS randpkt RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1470 set(text2pcap_CLEAN_FILES
1475 ${text2pcap_CLEAN_FILES}
1478 add_lex_files(text2pcap_FILES
1481 add_executable(text2pcap ${text2pcap_FILES})
1482 set_extra_executable_properties(text2pcap "Executables")
1483 target_link_libraries(text2pcap ${text2pcap_LIBS})
1484 install(TARGETS text2pcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1497 add_executable(mergecap ${mergecap_FILES})
1498 set_extra_executable_properties(mergecap "Executables")
1499 target_link_libraries(mergecap ${mergecap_LIBS})
1500 install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1503 if(BUILD_reordercap)
1509 set(reordercap_FILES
1513 add_executable(reordercap ${reordercap_FILES})
1514 set_extra_executable_properties(reordercap "Executables")
1515 target_link_libraries(reordercap ${reordercap_LIBS})
1516 install(TARGETS reordercap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1531 add_executable(capinfos ${capinfos_FILES})
1532 set_extra_executable_properties(capinfos "Executables")
1533 target_link_libraries(capinfos ${capinfos_LIBS})
1534 install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1548 add_executable(captype ${captype_FILES})
1549 set_extra_executable_properties(captype "Executables")
1550 target_link_libraries(captype ${captype_LIBS})
1551 install(TARGETS captype RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1564 add_executable(editcap ${editcap_FILES})
1565 set_extra_executable_properties(editcap "Executables")
1566 target_link_libraries(editcap ${editcap_LIBS})
1567 install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1570 if(BUILD_dumpcap AND PCAP_FOUND)
1579 ${GTHREAD2_LIBRARIES}
1581 ${APPLE_CORE_FOUNDATION_LIBRARY}
1582 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1587 capture_stop_conditions.c
1595 add_executable(dumpcap ${dumpcap_FILES})
1596 set_extra_executable_properties(dumpcap "Executables")
1597 target_link_libraries(dumpcap ${dumpcap_LIBS})
1598 install(TARGETS dumpcap
1599 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
1600 PERMISSIONS ${DUMPCAP_SETUID}
1601 OWNER_READ OWNER_WRITE OWNER_EXECUTE
1602 GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
1604 if(DUMPCAP_INSTALL_OPTION STREQUAL "capabilities")
1605 install( CODE "execute_process(
1607 ${SETCAP_EXECUTABLE}
1608 cap_net_raw,cap_net_admin+ep
1609 ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/dumpcap${CMAKE_EXECUTABLE_SUFFIX}
1613 if( _SETCAP_RESULT )
1614 message( WARNING \"setcap failed (${_SETCAP_RESULT}).\")
1621 OUTPUT ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1622 COMMAND ${PERL_EXECUTABLE}
1623 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1624 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1625 < ${CMAKE_SOURCE_DIR}/AUTHORS
1626 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1628 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1629 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1630 ${CMAKE_SOURCE_DIR}/AUTHORS
1634 OUTPUT ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1635 COMMAND ${PERL_EXECUTABLE}
1636 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1637 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1638 < ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1639 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1641 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1642 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1643 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1647 FILE(TO_NATIVE_PATH ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template WPT_WIN_PATH)
1648 FILE(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT ASF_WIN_PATH)
1649 FILE(TO_NATIVE_PATH ${CMAKE_BINARY_DIR}/wireshark.pod WP_WIN_PATH)
1651 OUTPUT ${CMAKE_BINARY_DIR}/wireshark.pod
1652 COMMAND copy /B ${WPT_WIN_PATH} + ${ASF_WIN_PATH} ${WP_WIN_PATH}
1654 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1655 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1660 OUTPUT ${CMAKE_BINARY_DIR}/wireshark.pod
1662 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1663 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1664 > ${CMAKE_BINARY_DIR}/wireshark.pod
1666 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1667 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1671 if(ENABLE_APPLICATION_BUNDLE)
1673 OUTPUT ${CMAKE_BINARY_DIR}/packaging/macosx/PkgInfo
1674 COMMAND ${CMAKE_COMMAND} -E echo APPLWshk > ${CMAKE_BINARY_DIR}/packaging/macosx/PkgInfo
1677 ADD_CUSTOM_TARGET(osx-app
1678 COMMAND ${CMAKE_SOURCE_DIR}/packaging/macosx/osx-app.sh
1679 WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/run
1683 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/capinfos 1 )
1684 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/captype 1 )
1685 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dftest 1 )
1686 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dumpcap 1 )
1687 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/editcap 1 )
1688 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/asn2deb 1 )
1689 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2deb 1 )
1690 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2wrs 1 )
1691 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/mergecap 1 )
1692 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/randpkt 1 )
1693 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/rawshark 1 )
1694 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/reordercap 1 )
1695 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/text2pcap 1 )
1696 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/tshark 1 )
1697 pod2manhtml( ${CMAKE_BINARY_DIR}/wireshark 1 )
1698 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/wireshark-filter 4 )
1703 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1719 wireshark-filter.html
1721 set_target_properties(auxiliary PROPERTIES FOLDER "Docs")
1729 ${text2pcap_CLEAN_FILES}
1738 set_source_files_properties(
1741 COMPILE_FLAGS -Werror
1749 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1756 ${CMAKE_INSTALL_MANDIR}/man1
1763 ${CMAKE_INSTALL_MANDIR}/man4
1768 "${CMAKE_BINARY_DIR}/wireshark.pc"
1770 ${CMAKE_INSTALL_LIBDIR}/pkgconfig
1776 DIRECTORY_PERMISSIONS
1777 OWNER_EXECUTE OWNER_WRITE OWNER_READ
1778 GROUP_EXECUTE GROUP_READ
1779 WORLD_EXECUTE WORLD_READ
1781 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1782 PATTERN ".git" EXCLUDE
1783 PATTERN ".svn" EXCLUDE
1784 PATTERN "Makefile.*" EXCLUDE
1785 PATTERN "faq.py" EXCLUDE
1788 include( UseCheckAPI )
1794 set(CMAKE_INSTALL_MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/@CPACK_PACKAGE_NAME@)
1795 configure_file("${CMAKE_MODULE_PATH}/WiresharkConfig.cmake.in" "${CMAKE_BINARY_DIR}/WiresharkConfig.cmake" @ONLY)
1796 configure_file("${CMAKE_MODULE_PATH}/WiresharkConfigVersion.cmake.in" "${CMAKE_BINARY_DIR}/WiresharkConfigVersion.cmake" @ONLY)
1799 ${CMAKE_MODULE_PATH}/FindGLIB2.cmake
1800 ${CMAKE_MODULE_PATH}/FindWireshark.cmake
1801 ${CMAKE_MODULE_PATH}/FindWSWinLibs.cmake
1802 ${CMAKE_MODULE_PATH}/UseAsn2Wrs.cmake
1803 ${CMAKE_MODULE_PATH}/LocatePythonModule.cmake
1804 ${CMAKE_MODULE_PATH}/UseMakeDissectorReg.cmake
1805 ${CMAKE_BINARY_DIR}/WiresharkConfig.cmake
1806 ${CMAKE_BINARY_DIR}/WiresharkConfigVersion.cmake
1808 ${CMAKE_INSTALL_MODULES_DIR}
1812 message(STATUS "Docdir install: ${DOC_DIR}")
1815 ${CMAKE_BINARY_DIR}/docbook/
1816 DIRECTORY_PERMISSIONS
1817 OWNER_EXECUTE OWNER_WRITE OWNER_READ
1818 GROUP_EXECUTE GROUP_READ
1819 WORLD_EXECUTE WORLD_READ