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