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