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