File: CMakeLists.txt

package info (click to toggle)
broccoli 1.100-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 1,400 kB
  • ctags: 1,282
  • sloc: ansic: 12,455; cpp: 728; sh: 470; perl: 116; yacc: 97; makefile: 43; lex: 42
file content (175 lines) | stat: -rw-r--r-- 5,310 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
project(Broccoli C)
cmake_minimum_required(VERSION 2.6.3 FATAL_ERROR)
include(cmake/CommonCMakeConfig.cmake)

file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" VERSION LIMIT_COUNT 1)

set(SOVersion 5) # this must be incremented when broccoli interface changes
set(SOVersionMinor 1)
set(SOVersionRelease 0)

set(BRO_SYSCONF_DIR ${BRO_ETC_INSTALL_DIR})

if (NOT BRO_SYSCONF_FILE)
    # BRO_SYSCONF_FILE not already defined from the --with-configfile option
    set(BRO_SYSCONF_FILE ${BRO_SYSCONF_DIR}/broccoli.conf)
endif ()

site_name(hostname)
if (UNIX)
    execute_process(COMMAND date OUTPUT_VARIABLE builddate
                    OUTPUT_STRIP_TRAILING_WHITESPACE)
else ()
    set(builddate "build date not available")
endif ()
set(BUILDINFO "${hostname}, ${builddate}, Debugging support: ${ENABLE_DEBUG}")

# if no static/shared library preference is given, default to building both
if (NOT DEFINED ENABLE_SHARED)
    set(ENABLE_SHARED true)
endif ()

if (NOT DEFINED ENABLE_STATIC)
    set(ENABLE_STATIC true)
endif ()

# Offer the user the choice of overriding the installation directories
set(INSTALL_LIB_DIR lib CACHE PATH "Installation directory for libraries")

if (NOT IS_ABSOLUTE "${INSTALL_LIB_DIR}")
    set(INSTALL_LIB_DIR "${CMAKE_INSTALL_PREFIX}/${INSTALL_LIB_DIR}")
endif()

########################################################################
## Dependency Configuration

include(FindRequiredPackage)

FindRequiredPackage(OpenSSL)
FindRequiredPackage(FLEX)
FindRequiredPackage(BISON)
find_package(PCAP)

set(BRO_PCAP_SUPPORT true)
if (NOT PCAP_INCLUDE_DIR)
    set(BRO_PCAP_SUPPORT false)
endif ()

if (MISSING_PREREQS)
    foreach (prereq ${MISSING_PREREQ_DESCS})
        message(SEND_ERROR ${prereq})
    endforeach ()
    message(FATAL_ERROR "Configuration aborted due to missing prerequisites")
endif ()

########################################################################
## System Introspection

if (${CMAKE_SYSTEM_NAME} MATCHES "BSD")
    set(BSD_HOST true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
    set(LINUX_HOST true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Solaris")
    set(BRO_LIBADD socket nsl)
elseif (MINGW)
    set(BRO_LIBADD wsock32)
endif ()

include(TestBigEndian)
test_big_endian(WORDS_BIGENDIAN)

include(CheckFunctionExists)
check_function_exists(geteuid HAVE_GETEUID)
check_function_exists(getpwuid HAVE_GETPWUID)

include(CheckTypeSize)

set(CMAKE_EXTRA_INCLUDE_FILES sys/types.h)
check_type_size(uint UINT)
if (NOT UINT)
    set (TYPEDEF_UINT "typedef unsigned int uint")
endif ()
set(CMAKE_EXTRA_INCLUDE_FILES)

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in
               ${CMAKE_CURRENT_BINARY_DIR}/config.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config-file.h.in
               ${CMAKE_CURRENT_BINARY_DIR}/config-file.h)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/broccoli-config.in
               ${CMAKE_CURRENT_BINARY_DIR}/broccoli-config
               @ONLY)

include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR})
add_definitions(-DHAVE_CONFIG_H)

########################################################################
## Install Files

include(InstallPackageConfigFile)

InstallPackageConfigFile(
    ${CMAKE_CURRENT_SOURCE_DIR}/broccoli.conf
    ${BRO_SYSCONF_DIR}
    broccoli.conf)

install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/broccoli-config DESTINATION bin)

########################################################################
## Recurse on sub-directories

add_subdirectory(src)
add_subdirectory(test)
add_subdirectory(doc)

if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/bindings/broccoli-python/CMakeLists.txt
    AND NOT DISABLE_PYTHON_BINDINGS)
    add_subdirectory(bindings/broccoli-python)
else ()
    message(STATUS "Not building broccoli-python bindings")
endif ()

if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/bindings/broccoli-ruby/CMakeLists.txt
    AND NOT DISABLE_RUBY_BINDINGS)
    add_subdirectory(bindings/broccoli-ruby)
else ()
    message(STATUS "Not building broccoli-ruby bindings")
endif ()

########################################################################
## Packaging Setup

# If this CMake project is a sub-project of another, we will not
# configure the generic packaging because CPack will fail in the case
# that the parent project has already configured packaging
if ("${PROJECT_SOURCE_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}")
    include(ConfigurePackaging)
    ConfigurePackaging(${VERSION})
endif ()

########################################################################
## Build Summary

if (CMAKE_BUILD_TYPE)
    string(TOUPPER ${CMAKE_BUILD_TYPE} BuildType)
endif ()

message(
    "\n=================|  Broccoli Build Summary  |==================="
    "\n"
    "\nInstall prefix:    ${CMAKE_INSTALL_PREFIX}"
    "\nLibrary prefix:    ${INSTALL_LIB_DIR}"
    "\nDebug mode:        ${ENABLE_DEBUG}"
    "\nShared libs:       ${ENABLE_SHARED}"
    "\nStatic libs:       ${ENABLE_STATIC}"
    "\n"
    "\nConfig file:       ${BRO_SYSCONF_FILE}"
    "\nPacket support:    ${BRO_PCAP_SUPPORT}"
    "\n"
    "\nCC:                ${CMAKE_C_COMPILER}"
    "\nCFLAGS:            ${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_${BuildType}}"
    "\nCPP:               ${CMAKE_C_COMPILER}"
    "\n"
    "\n================================================================\n"
)

include(UserChangedWarning)