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