diff --git a/CMakeLists.txt b/CMakeLists.txt index 0caf444b..d6afc594 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,9 @@ if(APPLE) set(CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "${CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS} -undefined dynamic_lookup") endif() +add_library(common-options INTERFACE) +target_compile_options(common-options INTERFACE -Wall -Wextra -Wconversion) + include(GNUInstallDirs) include(CheckIncludeFiles) @@ -88,7 +91,6 @@ option(WITH_CJSON "Build with cJSON support (required for dynamic security plugi if(WITH_CJSON) FIND_PACKAGE(cJSON) if(CJSON_FOUND) - message(STATUS ${CJSON_FOUND}) target_compile_definitions(cJSON INTERFACE WITH_CJSON) else() message(STATUS "Optional dependency cJSON not found. Some features will be disabled.") diff --git a/apps/mosquitto_ctrl/CMakeLists.txt b/apps/mosquitto_ctrl/CMakeLists.txt index fef60f26..d3629a79 100644 --- a/apps/mosquitto_ctrl/CMakeLists.txt +++ b/apps/mosquitto_ctrl/CMakeLists.txt @@ -56,6 +56,7 @@ if(WITH_TLS AND CJSON_FOUND) target_link_libraries(mosquitto_ctrl PRIVATE + common-options OpenSSL::SSL cJSON ) diff --git a/apps/mosquitto_ctrl/options.c b/apps/mosquitto_ctrl/options.c index 96add499..b53dc580 100644 --- a/apps/mosquitto_ctrl/options.c +++ b/apps/mosquitto_ctrl/options.c @@ -714,7 +714,7 @@ int client_connect(struct mosquitto *mosq, struct mosq_config *cfg) /* Convert %25 -> %, %3a, %3A -> :, %40 -> @ */ static int mosquitto__urldecode(char *str) { - int i, j; + size_t i, j; size_t len; if(!str) return 0; diff --git a/apps/mosquitto_passwd/CMakeLists.txt b/apps/mosquitto_passwd/CMakeLists.txt index 3d853d64..baa0bc4c 100644 --- a/apps/mosquitto_passwd/CMakeLists.txt +++ b/apps/mosquitto_passwd/CMakeLists.txt @@ -21,6 +21,7 @@ if(WITH_TLS) target_link_libraries(mosquitto_passwd PRIVATE + common-options OpenSSL::SSL ) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 3d99b253..113fe66e 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -1,9 +1,5 @@ set(shared_src client_shared.c client_shared.h client_props.c) -if(WITH_SRV) - add_definitions("-DWITH_SRV") -endif() - set(CLIENT_INC "${OPENSSL_INCLUDE_DIR}" "${STDBOOL_H_PATH}" @@ -12,25 +8,29 @@ set(CLIENT_INC "${mosquitto_SOURCE_DIR}/include" ) +add_library(client-common INTERFACE) +target_link_libraries(client-common INTERFACE common-options) +target_include_directories(client-common INTERFACE ${CLIENT_INC}) +target_sources(client-common INTERFACE ${shared_src}) + +if(WITH_SRV) + target_compile_definitions(client-common INTERFACE "-DWITH_SRV") +endif() + if(WITH_WEBSOCKETS AND WITH_WEBSOCKETS_BUILTIN) - add_definitions("-DWITH_WEBSOCKETS=WS_IS_BUILTIN") + target_compile_definitions(client-common INTERFACE "-DWITH_WEBSOCKETS=WS_IS_BUILTIN") endif() -add_executable(mosquitto_pub pub_client.c pub_shared.c ${shared_src}) -add_executable(mosquitto_sub sub_client.c sub_client_output.c ${shared_src}) -add_executable(mosquitto_rr rr_client.c pub_shared.c sub_client_output.c ${shared_src}) +add_executable(mosquitto_pub pub_client.c pub_shared.c) +add_executable(mosquitto_sub sub_client.c sub_client_output.c) +add_executable(mosquitto_rr rr_client.c pub_shared.c sub_client_output.c) -target_include_directories(mosquitto_pub PRIVATE ${CLIENT_INC}) -target_include_directories(mosquitto_sub PRIVATE ${CLIENT_INC}) -target_include_directories(mosquitto_rr PRIVATE ${CLIENT_INC}) if (WITH_THREADING AND NOT WIN32) set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) - target_link_libraries(mosquitto_pub PRIVATE Threads::Threads) - target_link_libraries(mosquitto_sub PRIVATE Threads::Threads) - target_link_libraries(mosquitto_rr PRIVATE Threads::Threads) + target_link_libraries(client-common INTERFACE Threads::Threads) endif() if(WITH_BUNDLED_DEPS) @@ -39,27 +39,23 @@ if(WITH_BUNDLED_DEPS) endif() if(CJSON_FOUND) - target_link_libraries(mosquitto_pub PRIVATE cJSON) - target_link_libraries(mosquitto_sub PRIVATE cJSON) - target_link_libraries(mosquitto_rr PRIVATE cJSON) + target_link_libraries(client-common INTERFACE cJSON) endif() if(WITH_STATIC_LIBRARIES) - target_link_libraries(mosquitto_pub PRIVATE libmosquitto_static) - target_link_libraries(mosquitto_sub PRIVATE libmosquitto_static) - target_link_libraries(mosquitto_rr PRIVATE libmosquitto_static) + target_link_libraries(client-common INTERFACE libmosquitto_static) else() - target_link_libraries(mosquitto_pub PRIVATE libmosquitto) - target_link_libraries(mosquitto_sub PRIVATE libmosquitto) - target_link_libraries(mosquitto_rr PRIVATE libmosquitto) + target_link_libraries(client-common INTERFACE libmosquitto) endif() if(QNX) - target_link_libraries(mosquitto_pub PRIVATE socket) - target_link_libraries(mosquitto_sub PRIVATE socket) - target_link_libraries(mosquitto_rr PRIVATE socket) + target_link_libraries(client-common INTERFACE socket) endif() +target_link_libraries(mosquitto_pub PRIVATE client-common) +target_link_libraries(mosquitto_sub PRIVATE client-common) +target_link_libraries(mosquitto_rr PRIVATE client-common) + install(TARGETS mosquitto_pub RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") install(TARGETS mosquitto_sub RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") install(TARGETS mosquitto_rr RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index 9ec540ce..a33fbaa4 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -58,8 +58,10 @@ if (WITH_THREADING AND WIN32) list(APPEND C_SRC "../common/winthread_mosq.c" "../common/winthread_mosq.h") endif() +set(LIBRARIES common-options) + if(WITH_TLS) - set (LIBRARIES OpenSSL::SSL) + set (LIBRARIES ${LIBRARIES} OpenSSL::SSL) endif() if(UNIX AND NOT APPLE AND NOT ANDROID) diff --git a/lib/cpp/CMakeLists.txt b/lib/cpp/CMakeLists.txt index d249cc57..51359ed2 100644 --- a/lib/cpp/CMakeLists.txt +++ b/lib/cpp/CMakeLists.txt @@ -18,7 +18,7 @@ target_include_directories(mosquittopp "${mosquitto_SOURCE_DIR}/lib/cpp" ) -target_link_libraries(mosquittopp PRIVATE libmosquitto) +target_link_libraries(mosquittopp PRIVATE libmosquitto common-options) if (WITH_THREADING AND NOT WIN32) set(THREADS_PREFER_PTHREAD_FLAG ON) diff --git a/plugins/dynamic-security/CMakeLists.txt b/plugins/dynamic-security/CMakeLists.txt index cda3945d..163e48b4 100644 --- a/plugins/dynamic-security/CMakeLists.txt +++ b/plugins/dynamic-security/CMakeLists.txt @@ -55,6 +55,7 @@ if(CJSON_FOUND AND WITH_TLS) target_link_libraries(mosquitto_dynamic_security PRIVATE + common-options cJSON OpenSSL::SSL ) diff --git a/plugins/persist-sqlite/CMakeLists.txt b/plugins/persist-sqlite/CMakeLists.txt index ea3571a9..7e0adb22 100644 --- a/plugins/persist-sqlite/CMakeLists.txt +++ b/plugins/persist-sqlite/CMakeLists.txt @@ -30,6 +30,7 @@ if(SQLITE3_FOUND AND CJSON_FOUND) target_link_libraries(mosquitto_persist_sqlite PRIVATE + common-options SQLite::SQLite3 cJSON ) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c7cbc959..0138dc5a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -243,7 +243,8 @@ endif() target_link_libraries(mosquitto PUBLIC config-header - PRIVATE + PRIVATE + common-options ${MOSQ_LIBS} ) diff --git a/src/mux.c b/src/mux.c index bacb5f6b..37593c43 100644 --- a/src/mux.c +++ b/src/mux.c @@ -107,6 +107,8 @@ int mux__handle(struct mosquitto__listener_sock *listensock, int listensock_coun UNUSED(listensock_count); return mux_epoll__handle(); #elif defined(WITH_KQUEUE) + UNUSED(listensock); + UNUSED(listensock_count); return mux_kqueue__handle(); #else return mux_poll__handle(listensock, listensock_count); diff --git a/test/broker/c/CMakeLists.txt b/test/broker/c/CMakeLists.txt index 9fd39b12..c7756107 100644 --- a/test/broker/c/CMakeLists.txt +++ b/test/broker/c/CMakeLists.txt @@ -43,5 +43,5 @@ foreach(BINARY ${BINARIES}) set_property(TARGET ${BINARY} PROPERTY SUFFIX .test ) - target_link_libraries(${BINARY} PRIVATE libmosquitto) + target_link_libraries(${BINARY} PRIVATE common-options libmosquitto) endforeach() diff --git a/test/lib/c/CMakeLists.txt b/test/lib/c/CMakeLists.txt index 54f02d03..123786e5 100644 --- a/test/lib/c/CMakeLists.txt +++ b/test/lib/c/CMakeLists.txt @@ -61,5 +61,5 @@ foreach(BINARY ${BINARIES}) target_compile_definitions(${BINARY} PRIVATE TEST_SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}") target_include_directories(${BINARY} PRIVATE ${CMAKE_SOURCE_DIR}/test) set_property(TARGET ${BINARY} PROPERTY SUFFIX .test) - target_link_libraries(${BINARY} PRIVATE libmosquitto) + target_link_libraries(${BINARY} PRIVATE common-options libmosquitto) endforeach() diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index b8d9ec92..1585af88 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -10,7 +10,12 @@ target_include_directories(common-unit-test-header "${mosquitto_SOURCE_DIR}/src" "${mosquitto_SOURCE_DIR}/test" ) -target_link_libraries(common-unit-test-header INTERFACE config-header CUnit::CUnit) +target_link_libraries(common-unit-test-header + INTERFACE + common-options + config-header + CUnit::CUnit +) # unit-broker add_executable(broker-test