-
Notifications
You must be signed in to change notification settings - Fork 2.4k
/
CMakeLists.txt
150 lines (119 loc) · 4.43 KB
/
CMakeLists.txt
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
# This is a cmake script. Process it with the CMake gui or command line utility
# to produce makefiles / Visual Studio project files on Mac OS X and Windows.
#
# To configure the build options either use the CMake gui, or run the command
# line utility including the "-i" option.
cmake_minimum_required(VERSION 3.5)
cmake_policy(SET CMP0042 NEW)
project(mosquitto)
set (VERSION 2.0.20)
list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/")
add_definitions (-DCMAKE -DVERSION=\"${VERSION}\")
if (WIN32)
add_definitions("-D_CRT_SECURE_NO_WARNINGS")
add_definitions("-D_CRT_NONSTDC_NO_DEPRECATE")
endif (WIN32)
if(APPLE)
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -undefined dynamic_lookup")
endif(APPLE)
include(GNUInstallDirs)
option(WITH_BUNDLED_DEPS "Build with bundled dependencies?" ON)
option(WITH_TLS
"Include SSL/TLS support?" ON)
option(WITH_TLS_PSK
"Include TLS-PSK support (requires WITH_TLS)?" ON)
option(WITH_EC
"Include Elliptic Curve support (requires WITH_TLS)?" ON)
if (WITH_TLS)
find_package(OpenSSL REQUIRED)
add_definitions("-DWITH_TLS")
# mosquitto uses OpenSSL 1.1 API, so set OPENSSL_API_COMPAT accordingly:
# https://www.openssl.org/docs/manmaster/man7/OPENSSL_API_COMPAT.html
# TODO: migrate off ENGINE API (deprecated since OpenSSL 3.0), see:
# https://www.openssl.org/docs/manmaster/man7/migration_guide.html#Engines-and-METHOD-APIs
add_definitions("-DOPENSSL_API_COMPAT=0x10100000L")
if (WITH_TLS_PSK)
add_definitions("-DWITH_TLS_PSK")
endif (WITH_TLS_PSK)
if (WITH_EC)
add_definitions("-DWITH_EC")
endif (WITH_EC)
else (WITH_TLS)
set (OPENSSL_INCLUDE_DIR "")
endif (WITH_TLS)
option(WITH_UNIX_SOCKETS "Include Unix Domain Socket support?" ON)
if (WITH_UNIX_SOCKETS AND NOT WIN32)
add_definitions("-DWITH_UNIX_SOCKETS")
endif (WITH_UNIX_SOCKETS AND NOT WIN32)
option(WITH_SOCKS "Include SOCKS5 support?" ON)
if (WITH_SOCKS)
add_definitions("-DWITH_SOCKS")
endif (WITH_SOCKS)
option(WITH_SRV "Include SRV lookup support?" OFF)
option(WITH_STATIC_LIBRARIES "Build static versions of the libmosquitto/pp libraries?" OFF)
option(WITH_PIC "Build the static library with PIC (Position Independent Code) enabled archives?" OFF)
option(WITH_THREADING "Include client library threading support?" ON)
if (WITH_THREADING)
add_definitions("-DWITH_THREADING")
if(WIN32)
find_package(Pthreads4W REQUIRED)
endif()
endif (WITH_THREADING)
option(WITH_DLT "Include DLT support?" OFF)
message(STATUS "WITH_DLT = ${WITH_DLT}")
if (WITH_DLT)
#find_package(DLT REQUIRED)
find_package(PkgConfig)
pkg_check_modules(DLT "automotive-dlt >= 2.11")
add_definitions("-DWITH_DLT")
endif (WITH_DLT)
option(WITH_CJSON "Build with cJSON support (required for dynamic security plugin and useful for mosquitto_sub)?" ON)
if (WITH_CJSON)
FIND_PACKAGE(cJSON)
if (CJSON_FOUND)
message(STATUS ${CJSON_FOUND})
else (CJSON_FOUND)
message(STATUS "Optional dependency cJSON not found. Some features will be disabled.")
endif(CJSON_FOUND)
endif()
# ========================================
# Include projects
# ========================================
option(WITH_CLIENTS "Build clients?" ON)
option(WITH_BROKER "Build broker?" ON)
option(WITH_APPS "Build apps?" ON)
option(WITH_PLUGINS "Build plugins?" ON)
option(DOCUMENTATION "Build documentation?" ON)
add_subdirectory(lib)
if (WITH_CLIENTS)
add_subdirectory(client)
endif (WITH_CLIENTS)
if (WITH_BROKER)
add_subdirectory(src)
endif (WITH_BROKER)
if (WITH_APPS)
add_subdirectory(apps)
endif (WITH_APPS)
if (WITH_PLUGINS)
add_subdirectory(plugins)
endif (WITH_PLUGINS)
if (DOCUMENTATION)
add_subdirectory(man)
endif (DOCUMENTATION)
# ========================================
# Install config file
# ========================================
if (WITH_BROKER)
install(FILES mosquitto.conf aclfile.example pskfile.example pwfile.example DESTINATION "${CMAKE_INSTALL_SYSCONFDIR}/mosquitto")
endif (WITH_BROKER)
# ========================================
# Install pkg-config files
# ========================================
configure_file(libmosquitto.pc.in libmosquitto.pc @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libmosquitto.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
configure_file(libmosquittopp.pc.in libmosquittopp.pc @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libmosquittopp.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
# ========================================
# Testing
# ========================================
enable_testing()