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