You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
285 lines
6.8 KiB
CMake
285 lines
6.8 KiB
CMake
set (MOSQ_SRCS
|
|
../lib/alias_mosq.c ../lib/alias_mosq.h
|
|
../common/base64_mosq.c ../common/base64_mosq.h
|
|
bridge.c bridge_topic.c
|
|
broker_control.c
|
|
conf.c
|
|
conf_includedir.c
|
|
context.c
|
|
control.c
|
|
database.c
|
|
handle_auth.c
|
|
handle_connack.c
|
|
handle_connect.c
|
|
handle_disconnect.c
|
|
../lib/handle_ping.c
|
|
../lib/handle_pubackcomp.c
|
|
handle_publish.c
|
|
../lib/handle_pubrec.c
|
|
../lib/handle_pubrel.c
|
|
../lib/handle_suback.c
|
|
handle_subscribe.c
|
|
../lib/handle_unsuback.c
|
|
handle_unsubscribe.c
|
|
http_serv.c
|
|
../common/json_help.c ../common/json_help.h
|
|
keepalive.c
|
|
../common/lib_load.h
|
|
listeners.c
|
|
logging.c
|
|
loop.c
|
|
../lib/memory_mosq.c ../lib/memory_mosq.h
|
|
memory_public.c
|
|
mosquitto.c
|
|
../include/mosquitto_broker.h mosquitto_broker_internal.h
|
|
../common/misc_mosq.c ../common/misc_mosq.h
|
|
mux.c mux.h mux_epoll.c mux_kqueue.c mux_poll.c
|
|
net.c
|
|
../lib/net_mosq_ocsp.c ../lib/net_mosq.c ../lib/net_mosq.h
|
|
../lib/net_ws.c
|
|
../lib/packet_datatypes.c
|
|
../lib/packet_mosq.c ../lib/packet_mosq.h
|
|
../common/password_mosq.c ../common/password_mosq.h
|
|
persist_read_v234.c persist_read_v5.c persist_read.c
|
|
persist_write_v5.c persist_write.c
|
|
persist.h
|
|
plugin_callbacks.c plugin_v5.c plugin_v4.c plugin_v3.c plugin_v2.c
|
|
plugin_init.c plugin_cleanup.c plugin_persist.c
|
|
plugin_acl_check.c plugin_basic_auth.c plugin_connect.c plugin_disconnect.c
|
|
plugin_extended_auth.c plugin_message.c plugin_psk_key.c plugin_public.c
|
|
plugin_subscribe.c
|
|
plugin_tick.c
|
|
plugin_unsubscribe.c
|
|
property_broker.c
|
|
../lib/property_mosq.c ../lib/property_mosq.h
|
|
read_handle.c
|
|
../lib/read_handle.h
|
|
retain.c
|
|
security_default.c
|
|
../lib/send_mosq.c ../lib/send_mosq.h
|
|
send_auth.c
|
|
send_connack.c
|
|
../lib/send_connect.c
|
|
../lib/send_disconnect.c
|
|
../lib/send_publish.c
|
|
send_suback.c
|
|
signals.c
|
|
../lib/send_subscribe.c
|
|
send_unsuback.c
|
|
../lib/send_unsubscribe.c
|
|
session_expiry.c
|
|
../lib/strings_mosq.c
|
|
subs.c
|
|
sys_tree.c sys_tree.h
|
|
../common/time_mosq.c ../common/time_mosq.h
|
|
../lib/tls_mosq.c
|
|
topic_tok.c
|
|
../lib/util_mosq.c ../lib/util_topic.c ../lib/util_mosq.h
|
|
../lib/utf8_mosq.c
|
|
websockets.c
|
|
will_delay.c
|
|
../lib/will_mosq.c ../lib/will_mosq.h
|
|
)
|
|
|
|
CHECK_INCLUDE_FILES(sys/event.h HAVE_SYS_EVENT_H)
|
|
if(HAVE_SYS_EVENT_H)
|
|
add_definitions("-DWITH_KQUEUE")
|
|
endif()
|
|
|
|
find_path(HAVE_SYS_EPOLL_H sys/epoll.h)
|
|
if(HAVE_SYS_EPOLL_H)
|
|
add_definitions("-DWITH_EPOLL")
|
|
endif()
|
|
|
|
option(INC_BRIDGE_SUPPORT
|
|
"Include bridge support for connecting to other brokers?" ON)
|
|
if(INC_BRIDGE_SUPPORT)
|
|
set (MOSQ_SRCS ${MOSQ_SRCS} bridge.c)
|
|
add_definitions("-DWITH_BRIDGE")
|
|
endif()
|
|
|
|
|
|
option(USE_LIBWRAP "Include tcp-wrappers support?" OFF)
|
|
|
|
if(USE_LIBWRAP)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} wrap)
|
|
add_definitions("-DWITH_WRAP")
|
|
endif()
|
|
|
|
option(INC_DB_UPGRADE "Include database upgrade support? (recommended)" ON)
|
|
|
|
option(INC_MEMTRACK "Include memory tracking support?" ON)
|
|
if(INC_MEMTRACK)
|
|
add_definitions("-DWITH_MEMORY_TRACKING")
|
|
endif()
|
|
|
|
option(WITH_PERSISTENCE "Include persistence support?" ON)
|
|
if(WITH_PERSISTENCE)
|
|
add_definitions("-DWITH_PERSISTENCE")
|
|
endif()
|
|
|
|
option(WITH_SYS_TREE "Include $SYS tree support?" ON)
|
|
if(WITH_SYS_TREE)
|
|
add_definitions("-DWITH_SYS_TREE")
|
|
endif()
|
|
|
|
option(WITH_ADNS "Include ADNS support?" OFF)
|
|
|
|
if(CMAKE_SYSTEM_NAME STREQUAL Linux)
|
|
option(WITH_SYSTEMD "Include systemd support?" OFF)
|
|
if(WITH_SYSTEMD)
|
|
add_definitions("-DWITH_SYSTEMD")
|
|
find_library(SYSTEMD_LIBRARY systemd)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} ${SYSTEMD_LIBRARY})
|
|
endif()
|
|
endif()
|
|
|
|
option(STATIC_WEBSOCKETS "Use the static libwebsockets library?" OFF)
|
|
|
|
option(WITH_CONTROL "Include $CONTROL topic support?" ON)
|
|
if(WITH_CONTROL)
|
|
add_definitions("-DWITH_CONTROL")
|
|
endif()
|
|
|
|
|
|
if(WIN32 OR CYGWIN)
|
|
set (MOSQ_SRCS ${MOSQ_SRCS} service.c)
|
|
endif()
|
|
|
|
add_definitions (-DWITH_BROKER)
|
|
|
|
if(WITH_TLS)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} OpenSSL::SSL)
|
|
endif()
|
|
# Check for getaddrinfo_a
|
|
include(CheckLibraryExists)
|
|
check_library_exists(anl getaddrinfo_a "" HAVE_GETADDRINFO_A)
|
|
if(HAVE_GETADDRINFO_A AND WITH_ADNS)
|
|
add_definitions("-DWITH_ADNS")
|
|
add_definitions(-DHAVE_GETADDRINFO_A)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} anl)
|
|
endif()
|
|
|
|
|
|
if(UNIX)
|
|
if(APPLE)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} dl m)
|
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} m)
|
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} m)
|
|
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Haiku")
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} m network)
|
|
elseif(QNX)
|
|
set(MOSQ_LIBS ${MOSQ_LIBS} m socket)
|
|
else()
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} dl m)
|
|
find_library(LIBRT rt)
|
|
if(LIBRT)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} rt)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(WIN32)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} ws2_32)
|
|
endif()
|
|
|
|
if(WITH_WEBSOCKETS)
|
|
if(WITH_WEBSOCKETS_BUILTIN)
|
|
add_definitions("-DWITH_WEBSOCKETS=WS_IS_BUILTIN")
|
|
set(MOSQ_SRCS ${MOSQ_SRCS} ${mosquitto_SOURCE_DIR}/deps/picohttpparser/picohttpparser.c)
|
|
else()
|
|
find_package(libwebsockets)
|
|
add_definitions("-DWITH_WEBSOCKETS=WS_IS_LWS")
|
|
endif()
|
|
endif()
|
|
|
|
if (ANDROID)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} log)
|
|
endif (ANDROID)
|
|
|
|
add_executable(mosquitto ${MOSQ_SRCS})
|
|
|
|
if(WITH_WEBSOCKETS)
|
|
if(WITH_WEBSOCKETS_BUILTIN)
|
|
target_include_directories(mosquitto PRIVATE
|
|
"${mosquitto_SOURCE_DIR}/deps/picohttpparser")
|
|
else()
|
|
if(STATIC_WEBSOCKETS)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} websockets_static)
|
|
if(WIN32)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} iphlpapi)
|
|
endif()
|
|
else(STATIC_WEBSOCKETS)
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} websockets)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
if(WITH_DLT)
|
|
message(STATUS "DLT_LIBDIR = ${DLT_LIBDIR}")
|
|
target_link_directories(mosquitto PRIVATE ${DLT_LIBDIR})
|
|
set (MOSQ_LIBS ${MOSQ_LIBS} ${DLT_LIBRARIES})
|
|
target_compile_definitions(mosquitto PRIVATE "WITH_DLT")
|
|
endif()
|
|
|
|
if(CJSON_FOUND)
|
|
target_link_libraries(mosquitto PRIVATE cJSON)
|
|
endif()
|
|
|
|
target_include_directories(mosquitto
|
|
PUBLIC
|
|
"${mosquitto_SOURCE_DIR}/include"
|
|
PRIVATE
|
|
"${mosquitto_SOURCE_DIR}/common"
|
|
"${mosquitto_SOURCE_DIR}/lib"
|
|
"${mosquitto_SOURCE_DIR}/src"
|
|
)
|
|
if(WITH_BUNDLED_DEPS)
|
|
target_include_directories(mosquitto PRIVATE
|
|
"${mosquitto_SOURCE_DIR}/deps"
|
|
)
|
|
endif()
|
|
|
|
target_link_libraries(mosquitto
|
|
PUBLIC
|
|
config-header
|
|
PRIVATE
|
|
common-options
|
|
${MOSQ_LIBS}
|
|
)
|
|
|
|
if (WITH_THREADING AND NOT WIN32)
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
find_package(Threads REQUIRED)
|
|
|
|
target_link_libraries(mosquitto PRIVATE Threads::Threads)
|
|
endif()
|
|
|
|
set_target_properties(mosquitto PROPERTIES
|
|
ENABLE_EXPORTS 1
|
|
)
|
|
|
|
if(UNIX)
|
|
if(APPLE)
|
|
set_target_properties(mosquitto PROPERTIES
|
|
LINK_FLAGS "-Wl,-exported_symbols_list -Wl,${mosquitto_SOURCE_DIR}/src/linker-macosx.syms"
|
|
)
|
|
else()
|
|
set_target_properties(mosquitto PROPERTIES
|
|
LINK_FLAGS "-Wl,-dynamic-list=${mosquitto_SOURCE_DIR}/src/linker.syms"
|
|
)
|
|
endif()
|
|
endif()
|
|
|
|
install(TARGETS mosquitto
|
|
RUNTIME DESTINATION "${CMAKE_INSTALL_SBINDIR}"
|
|
)
|
|
install(
|
|
FILES
|
|
${mosquitto_SOURCE_DIR}/include/mosquitto_broker.h
|
|
${mosquitto_SOURCE_DIR}/include/mosquitto_plugin.h
|
|
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
|
|
)
|