From Jiri Engelthaler via
[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         message(STATUS "Checking for flag: ${${F}}")
219         check_c_compiler_flag(${${F}} ${V})
220         if (${${V}})
221                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${F}}")
222                 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${F}}")
223         endif()
224         math(EXPR C "${C} + 1")
225 endforeach()
226 # Continue increasing C from previous loop
227 foreach(THIS_FLAG ${WIRESHARK_C_ONLY_FLAGS})
228         set(F WS_C_FLAG_${C})
229         set(${F} ${THIS_FLAG})
230         set(V WS_C_FLAG_VALID${C})
231         message(STATUS "Checking for flag: ${${F}}")
232         check_c_compiler_flag(${${F}} ${V})
233         if (${${V}})
234                 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${F}}")
235         endif()
236         math(EXPR C "${C} + 1")
237 endforeach()
238 message(STATUS "C-Flags: ${CMAKE_C_FLAGS}\nCXX-Flags: ${CMAKE_CXX_FLAGS}")
239
240 check_c_compiler_flag(-fvisibility=hidden FVHIDDEN)
241 if((FVHIDDEN))
242         set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
243 else() # TODO add alternate compiler flags for hiding symbols
244         message(WARNING "Hiding shared library symbols is not supported by the compiler."
245                 " All shared library symbols will be exported.")
246 endif()
247
248 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
249         set (C_UNUSED "__attribute__((unused))" )
250 else()
251         set (C_UNUSED "" )
252 endif()
253
254 set(WIRESHARK_LD_FLAGS
255         -Wl,--as-needed
256         # -flto
257         # -fwhopr
258         # -fwhole-program
259 )
260
261 include(CheckCLinkerFlag)
262 set(C 0)
263 # Sigh: Have to use THIS_FLAG instead of ${F} for some reason
264 foreach(THIS_FLAG ${WIRESHARK_LD_FLAGS})
265         set(F WS_LD_FLAG_${C})
266         set(${F} ${THIS_FLAG})
267         set(V WS_LD_FLAG_VALID${C})
268         check_c_linker_flag(${${F}} ${V})
269         if (${${V}})
270                 set(WS_LINK_FLAGS ${WS_LINK_FLAGS} ${${F}})
271         endif()
272         math(EXPR C "${C} + 1")
273 endforeach()
274
275 if(ENABLE_STATIC)
276   set(LINK_MODE_LIB STATIC)
277   set(LINK_MODE_MODULE STATIC)
278 else()
279   set(LINK_MODE_LIB SHARED)
280   set(LINK_MODE_MODULE MODULE)
281 endif()
282
283 # The packagelist is doing some magic:  If we add XXX to the packagelist, we
284 # - may optionally set XXX_OPTIONS to pass to the find_package command
285 # - will call FindXXX.cmake
286 # - return found libraries in XXX_LIBRARIES
287 # - return found include in XXX_INCLUDE_DIRS
288 # - set HAVE_XXX
289
290 #The minimum package list
291 set(PACKAGELIST GLIB2 GMODULE2 GTHREAD2 M LEX YACC Perl SH PythonInterp)
292 set(GLIB2_FIND_REQUIRED)
293 set(GLIB2_MIN_VERSION 2.14.0)
294 set(GTHREAD2_REQUIRED)
295 set(PCAP_REQUIRED)
296 set(M_REQUIRED)
297 set(PythonInterp_FIND_VERSION 2)
298 set(Python_ADDITIONAL_VERSIONS 3)
299
300 set(PACKAGELIST ${PACKAGELIST} HtmlViewer)
301
302 if(ENABLE_PCAP)
303         set(PACKAGELIST ${PACKAGELIST} PCAP)
304 endif()
305
306 # Build the GTK-GUI?
307 if(BUILD_wireshark)
308         if(ENABLE_GTK3)
309                 set(PACKAGELIST ${PACKAGELIST} GTK3)
310         else()
311                 set(PACKAGELIST ${PACKAGELIST} GTK2)
312                 set(GTK2_OPTIONS COMPONENTS gtk)
313                 set(GTK2_FIND_VERSION 2.12)
314                 set(GTK2_DEBUG false)
315         endif()
316 endif()
317
318 # Build the Qt GUI?
319 if(BUILD_qtshark)
320         if(ENABLE_QT5)
321                 set(PACKAGELIST ${PACKAGELIST} Qt5Widgets Qt5PrintSupport Qt5LinguistTools)
322                 set(QT_VERSION 5)
323         else()
324                 set(PACKAGELIST ${PACKAGELIST} Qt4)
325                 # set(Qt4_OPTIONS 4.7.1 REQUIRED QtCore QtGui)
326                 set(QT_VERSION 4)
327         endif()
328 endif()
329
330 # SMI SNMP
331 if(ENABLE_SMI)
332         set(PACKAGELIST ${PACKAGELIST} SMI)
333 endif()
334
335 # GNU crypto
336 if(ENABLE_GCRYPT)
337         set(PACKAGELIST ${PACKAGELIST} GCRYPT)
338 endif()
339
340 # GNU SSL/TLS support
341 if(ENABLE_GNUTLS)
342         set(PACKAGELIST ${PACKAGELIST} GNUTLS)
343 endif()
344
345 # Kerberos
346 if(ENABLE_KERBEROS)
347         set(PACKAGELIST ${PACKAGELIST} KERBEROS)
348 endif()
349
350 # Portable audio
351 if(ENABLE_PORTAUDIO)
352         set(PACKAGELIST ${PACKAGELIST} PORTAUDIO)
353 endif()
354
355
356 # Prefer c-ares over adns
357 if(ENABLE_CARES)        # C Asynchronouse resolver
358         set(PACKAGELIST ${PACKAGELIST} CARES)
359 elseif(ENABLE_ADNS)     # Gnu asynchronous DNS
360         set(PACKAGELIST ${PACKAGELIST} ADNS)
361 endif()
362
363 # Zlib compression
364 if(ENABLE_ZLIB)
365         set(PACKAGELIST ${PACKAGELIST} ZLIB)
366 endif()
367
368 # Lua 5.1 dissectors
369 if(ENABLE_LUA)
370         set(PACKAGELIST ${PACKAGELIST} LUA)
371 endif()
372
373 # GeoIP address resolving
374 if(ENABLE_GEOIP)
375         set(PACKAGELIST ${PACKAGELIST} GEOIP)
376 endif()
377
378 if(ENABLE_NETLINK)
379         set(PACKAGELIST ${PACKAGELIST} NL)
380 endif()
381
382 # Capabilities
383 if(ENABLE_CAP)
384         set(PACKAGELIST ${PACKAGELIST} CAP)
385 endif()
386
387 if(ENABLE_PYTHON)
388         set(PACKAGELIST ${PACKAGELIST} PythonLibs)
389 endif()
390
391 set(PACKAGELIST ${PACKAGELIST} YAPP)
392
393 set(PACKAGELIST ${PACKAGELIST} POD)
394
395
396 set(PROGLIST text2pcap mergecap capinfos editcap reordercap dumpcap)
397
398 #Sort the package list
399 list(SORT PACKAGELIST)
400 message(STATUS "Packagelist: ${PACKAGELIST}")
401 #Let's loop the package list
402 foreach(PACKAGE ${PACKAGELIST})
403         if(${PACKAGE} STREQUAL "Qt4")
404                 set(PACKAGE_VAR "QT")
405         elseif(${PACKAGE} STREQUAL "PythonInterp")
406                 set(PACKAGE_VAR "PYTHON")
407         elseif(${PACKAGE} STREQUAL "PythonLibs")
408                 set(PACKAGE_VAR "PYTHON")
409         else()
410                 set(PACKAGE_VAR ${PACKAGE})
411         endif()
412         if(${PACKAGE}_OPTIONS)
413                 find_package(${PACKAGE} ${${PACKAGE}_OPTIONS})
414         elseif(${PACKAGE}_REQUIRED)
415                 find_package(${PACKAGE} REQUIRED)
416         else()
417                 find_package(${PACKAGE})
418         endif()
419         message(${PACKAGE_VAR}_FOUND)
420         if (${PACKAGE_VAR}_FOUND)
421                 set(HAVE_LIB${PACKAGE_VAR} 1)
422                 include_directories(${${PACKAGE_VAR}_INCLUDE_DIRS})
423                 message(STATUS "${PACKAGE} includes: ${${PACKAGE_VAR}_INCLUDE_DIRS}")
424                 message(STATUS "${PACKAGE} libs: ${${PACKAGE_VAR}_LIBRARIES}")
425                 if (${PACKAGE}_DEFINITIONS)
426                         message(STATUS "${PACKAGE} definitions: ${${PACKAGE_VAR}_DEFINITIONS}")
427                 endif()
428                 if (${PACKAGE_VAR}_EXECUTABLE)
429                         message(STATUS "${PACKAGE} executable: ${${PACKAGE_VAR}_EXECUTABLE}")
430                 endif()
431         endif()
432 endforeach()
433
434 #packaging
435 include(CPackConfig.txt)
436
437 if(HAVE_LIBPYTHON)
438         set(HAVE_PYTHON 1)
439         set(PYTHON_DIR "${CMAKE_INSTALL_PREFIX}/lib/wireshark/python/${CPACK_PACKAGE_VERSION}")
440 endif()
441 if(HAVE_LIBLUA)
442         set(HAVE_LUA_H 1)
443         set(HAVE_LUA 1)
444 endif()
445 if(HAVE_LIBKERBEROS)
446         set(HAVE_KERBEROS 1)
447         # HAVE_HEIMDAL_KERBEROS
448         set(HAVE_MIT_KERBEROS 1)
449         set(HAVE_KEYTYPE_ARCFOUR_56 1)
450 endif()
451 if(HAVE_LIBGEOIP)
452         set(HAVE_GEOIP 1)
453 endif()
454 if(HAVE_LIBCARES)
455         set(HAVE_C_ARES 1)
456 endif()
457 if(HAVE_LIBADNS)
458         set(HAVE_GNU_ADNS 1)
459 endif()
460 if(ENABLE_AIRPCAP)
461         set(HAVE_AIRPCAP 1)
462 endif()
463 if(HAVE_LIBNL AND ENABLE_AIRPCAP)
464         message(ERROR "Airpcap and Libnl support are mutually exclusive")
465 endif()
466 # No matter which version of GTK is present
467 if(GTK2_FOUND OR GTK3_FOUND)
468         set(GTK_FOUND ON)
469 endif()
470 # That's the name autofoo uses
471 if(HAVE_LIBZLIB)
472         set(HAVE_LIBZ 1)
473 endif()
474 if (Qt5Widgets_FOUND)
475         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
476         if (Qt5_POSITION_INDEPENDENT_CODE)
477                 set(CMAKE_POSITION_INDEPENDENT_CODE ON)
478         endif()
479         set (QT_FOUND ON)
480         set (QT_LIBRARIES ${Qt5Widgets_LIBRARIES} ${Qt5PrintSupport_LIBRARIES})
481 # If Qt4: QT_LIBRARIES and QT_INCLUDES are not set above. They require extra magic
482 elseif(QT_FOUND)
483         include(${QT_USE_FILE})
484         include_directories(${QT_INCLUDE_DIR})
485         message(STATUS "QT includes: ${QT_INCLUDE_DIR}")
486         message(STATUS "QT libs: ${QT_LIBRARIES}")
487 endif()
488 include(ConfigureChecks.cmake)
489
490 #Big or little endian ?
491 include(TestBigEndian)
492 test_big_endian(WORDS_BIGENDIAN)
493
494 set(DATAFILE_DIR "${CMAKE_INSTALL_PREFIX}/share/${CPACK_PACKAGE_NAME}")
495
496 if(ENABLE_PLUGINS)
497         set(HAVE_PLUGINS 1)
498         set(PLUGIN_DIR="${DATAFILE_DIR}/plugins/${CPACK_PACKAGE_VERSION}")
499         set(PLUGIN_SRC_DIRS
500                 plugins/asn1
501                 plugins/docsis
502                 plugins/ethercat
503                 plugins/gryphon
504                 plugins/irda
505                 plugins/m2m
506                 plugins/mate
507                 plugins/opcua
508                 plugins/profinet
509                 plugins/stats_tree
510                 plugins/unistim
511                 plugins/wimax
512                 plugins/wimaxasncp
513                 plugins/wimaxmacphy
514         )
515 # It seems this stuff doesn't build with autofoo either...
516 #       if(YAPP_FOUND)
517 #               set(PLUGIN_SRC_DIRS
518 #                       ${PLUGIN_SRC_DIRS}
519 #                       plugins/tpg
520 #               )
521 #       endif()
522 else()
523         set(PLUGIN_SRC_DIRS )
524 endif()
525
526 foreach(PLUGIN_DIR ${PLUGIN_SRC_DIRS})
527         add_subdirectory( ${PLUGIN_DIR} )
528 endforeach()
529
530 add_subdirectory( asn1 EXCLUDE_FROM_ALL )
531 add_subdirectory( codecs )
532 add_subdirectory( epan )
533 add_subdirectory( tools/lemon )
534 add_subdirectory( ui )
535 add_subdirectory( wiretap )
536 add_subdirectory( wsutil )
537
538 add_custom_target(dumpabi DEPENDS dumpabi-libwireshark dumpabi-libwiretap dumpabi-libwsutil color.h)
539
540 if(ENABLE_ECHLD)
541         add_subdirectory( echld )
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                 ${CMAKE_DL_LIBS}
947         )
948         set(mergecap_FILES
949                 mergecap.c
950                 svnversion.h
951                 ${WTAP_PLUGIN_SOURCES}
952         )
953         add_executable(mergecap ${mergecap_FILES})
954         add_dependencies(mergecap svnversion)
955         set_target_properties(mergecap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
956         target_link_libraries(mergecap ${mergecap_LIBS})
957         install(TARGETS mergecap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
958 endif()
959
960 if(BUILD_reordercap)
961         set(reordercap_LIBS
962                 wiretap
963                 ${ZLIB_LIBRARIES}
964                 ${CMAKE_DL_LIBS}
965         )
966         set(reordercap_FILES
967                 reordercap.c
968                 svnversion.h
969                 ${WTAP_PLUGIN_SOURCES}
970         )
971         add_executable(reordercap ${reordercap_FILES})
972         add_dependencies(reordercap svnversion)
973         set_target_properties(reordercap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
974         target_link_libraries(reordercap ${reordercap_LIBS})
975         install(TARGETS reordercap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
976 endif()
977
978 if(BUILD_capinfos)
979         set(capinfos_LIBS
980                 wiretap
981                 wsutil
982                 ${ZLIB_LIBRARIES}
983                 ${GCRYPT_LIBRARIES}
984                 ${CMAKE_DL_LIBS}
985         )
986         set(capinfos_FILES
987                 capinfos.c
988                 ${WTAP_PLUGIN_SOURCES}
989         )
990         add_executable(capinfos ${capinfos_FILES})
991         add_dependencies(capinfos svnversion)
992         set_target_properties(capinfos PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
993         target_link_libraries(capinfos ${capinfos_LIBS})
994         install(TARGETS capinfos RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
995 endif()
996
997 if(BUILD_editcap)
998         set(editcap_LIBS
999                 wiretap
1000                 ${ZLIB_LIBRARIES}
1001                 ${CMAKE_DL_LIBS}
1002         )
1003         set(editcap_FILES
1004                 editcap.c
1005                 ${WTAP_PLUGIN_SOURCES}
1006         )
1007         add_executable(editcap ${editcap_FILES})
1008         add_dependencies(editcap svnversion)
1009         set_target_properties(editcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1010         target_link_libraries(editcap ${editcap_LIBS})
1011         install(TARGETS editcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1012 endif()
1013
1014 if(BUILD_dumpcap AND PCAP_FOUND)
1015         set(dumpcap_LIBS
1016 #               @INET_NTOP_LO@
1017                 wsutil
1018                 ${PCAP_LIBRARIES}
1019                 ${CAP_LIBRARIES}
1020 #               @SOCKET_LIBS@
1021 #               @NSL_LIBS@
1022                 ${GLIB2_LIBRARIES}
1023                 ${GTHREAD2_LIBRARIES}
1024                 ${ZLIB_LIBRARIES}
1025                 ${APPLE_CORE_FOUNDATION_LIBRARY}
1026                 ${APPLE_SYSTEM_CONFIGURATION_LIBRARY}
1027                 ${NL_LIBRARIES}
1028         )
1029         set(dumpcap_FILES
1030                 svnversion.h
1031                 capture_opts.c
1032                 capture-pcap-util.c
1033                 capture_stop_conditions.c
1034                 cfutils.c
1035                 clopts_common.c
1036                 conditions.c
1037                 dumpcap.c
1038                 pcapio.c
1039                 ringbuffer.c
1040                 sync_pipe_write.c
1041                 version_info.c
1042                 ws80211_utils.c
1043                 ${PLATFORM_SRC}
1044         )
1045         add_executable(dumpcap ${dumpcap_FILES})
1046         add_dependencies(dumpcap svnversion)
1047         set_target_properties(dumpcap PROPERTIES LINK_FLAGS "${WS_LINK_FLAGS}")
1048         target_link_libraries(dumpcap ${dumpcap_LIBS})
1049         install(TARGETS dumpcap RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
1050 endif()
1051
1052 ADD_CUSTOM_COMMAND(
1053         OUTPUT  ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1054         COMMAND ${PERL}
1055                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1056                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1057                 < ${CMAKE_SOURCE_DIR}/AUTHORS
1058                 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1059         DEPENDS
1060                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1061                 ${CMAKE_SOURCE_DIR}/doc/make-authors-short.pl
1062                 ${CMAKE_SOURCE_DIR}/AUTHORS
1063 )
1064
1065 ADD_CUSTOM_COMMAND(
1066         OUTPUT  ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1067                 ${CMAKE_BINARY_DIR}/wireshark.pod
1068         COMMAND ${PERL}
1069                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1070                 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1071                 < ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1072                 > ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1073         COMMAND cat
1074                 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1075                 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT-FORMAT
1076                 > ${CMAKE_BINARY_DIR}/wireshark.pod
1077         DEPENDS
1078                 ${CMAKE_SOURCE_DIR}/doc/perlnoutf.pl
1079                 ${CMAKE_SOURCE_DIR}/doc/make-authors-format.pl
1080                 ${CMAKE_BINARY_DIR}/AUTHORS-SHORT
1081                 ${CMAKE_SOURCE_DIR}/doc/wireshark.pod.template
1082 )
1083
1084 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/capinfos 1 )
1085 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dftest 1 )
1086 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/dumpcap 1 )
1087 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/editcap 1 )
1088 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/asn2deb 1 )
1089 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2deb 1 )
1090 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/idl2wrs 1 )
1091 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/mergecap 1 )
1092 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/randpkt 1 )
1093 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/rawshark 1 )
1094 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/reordercap 1 )
1095 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/text2pcap 1 )
1096 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/tshark 1 )
1097 pod2manhtml( ${CMAKE_BINARY_DIR}/wireshark 1 )
1098 pod2manhtml( ${CMAKE_SOURCE_DIR}/doc/wireshark-filter 4 )
1099
1100 add_custom_target(
1101         auxiliary ALL
1102         DEPENDS
1103                 AUTHORS-SHORT
1104                 capinfos.html
1105                 dftest.html
1106                 dumpcap.html
1107                 editcap.html
1108                 asn2deb.html
1109                 idl2deb.html
1110                 idl2wrs.html
1111                 mergecap.html
1112                 randpkt.html
1113                 rawshark.html
1114                 reordercap.html
1115                 text2pcap.html
1116                 tshark.html
1117                 wireshark.html
1118                 wireshark-filter.html
1119 )
1120
1121 set(MAN1_FILES
1122         ${CMAKE_BINARY_DIR}/capinfos.1
1123         ${CMAKE_BINARY_DIR}/dftest.1
1124         ${CMAKE_BINARY_DIR}/dumpcap.1
1125         ${CMAKE_BINARY_DIR}/editcap.1
1126         ${CMAKE_BINARY_DIR}/idl2wrs.1
1127         ${CMAKE_BINARY_DIR}/mergecap.1
1128         ${CMAKE_BINARY_DIR}/randpkt.1
1129         ${CMAKE_BINARY_DIR}/rawshark.1
1130         ${CMAKE_BINARY_DIR}/reordercap.1
1131         ${CMAKE_BINARY_DIR}/text2pcap.1
1132         ${CMAKE_BINARY_DIR}/tshark.1
1133         ${CMAKE_BINARY_DIR}/wireshark.1
1134 )
1135
1136 set(MAN4_FILES
1137         ${CMAKE_BINARY_DIR}/wireshark-filter.4
1138 )
1139
1140 set(CLEAN_FILES
1141         ${wireshark_FILES}
1142         ${tshark_FILES}
1143         ${rawshark_FILES}
1144         ${dftest_FILES}
1145         ${randpkt_FILES}
1146         ${text2pcap_CLEAN_FILES}
1147         ${mergecap_FILES}
1148         ${capinfos_FILES}
1149         ${editcap_FILES}
1150         ${dumpcap_FILES}
1151 )
1152
1153 if (WERROR)
1154         set_source_files_properties(
1155                 ${CLEAN_FILES}
1156                 PROPERTIES
1157                 COMPILE_FLAGS -Werror
1158         )
1159 endif()
1160
1161 install(
1162         FILES
1163                 ${INSTALL_FILES}
1164         DESTINATION
1165                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1166 )
1167
1168 install(
1169         FILES
1170                 ${MAN1_FILES}
1171         DESTINATION
1172                 ${CMAKE_INSTALL_MANDIR}/man1
1173 )
1174
1175 install(
1176         FILES
1177                 ${MAN4_FILES}
1178         DESTINATION
1179                 ${CMAKE_INSTALL_MANDIR}/man4
1180 )
1181
1182 install(
1183         DIRECTORY
1184                 ${INSTALL_DIRS}
1185         DIRECTORY_PERMISSIONS
1186                 OWNER_EXECUTE OWNER_WRITE OWNER_READ
1187                 GROUP_EXECUTE GROUP_READ
1188                 WORLD_EXECUTE WORLD_READ
1189         DESTINATION
1190                 ${CMAKE_INSTALL_DATADIR}/${CPACK_PACKAGE_NAME}
1191         PATTERN ".svn" EXCLUDE
1192         PATTERN "Makefile.*" EXCLUDE
1193         PATTERN "faq.py" EXCLUDE
1194 )
1195
1196
1197 if(DOC_DIR)
1198         message(STATUS "Docdir install: ${DOC_DIR}")
1199         INSTALL(
1200                 DIRECTORY
1201                         ${CMAKE_BINARY_DIR}/docbook/
1202                 DIRECTORY_PERMISSIONS
1203                         OWNER_EXECUTE OWNER_WRITE OWNER_READ
1204                         GROUP_EXECUTE GROUP_READ
1205                         WORLD_EXECUTE WORLD_READ
1206                 DESTINATION
1207                         ${DOC_DIR}/guides
1208                 FILES_MATCHING
1209                 PATTERN "*.pdf"
1210         )
1211 endif()