diff options
26 files changed, 359 insertions, 312 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index cf697a3a..15fe015d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -46,6 +46,11 @@ if (POLICY CMP0042) cmake_policy (SET CMP0042 NEW) endif () +if (POLICY CMP0028) + # Double colon targets are only alias or imports. + cmake_policy (SET CMP0028 NEW) +endif () + set(CMAKE_C_STANDARD 99) set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) list (FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" isSystemDir) @@ -86,7 +91,13 @@ elseif (GIT_FOUND AND EXISTS "${PROJECT_SOURCE_DIR}/.git") else () set (NNG_PACKAGE_VERSION "Unknown") endif() +if ("${NNG_PACKAGE_VERSION}" MATCHES "v[0-9]") + string(SUBSTRING "${NNG_PACKAGE_VERSION}" 1 -1 NNG_PACKAGE_VERSION) +endif() +string(REGEX REPLACE "([0-9]+).[0-9]+.+" "\\1" NNG_VERSION_MAJOR "${NNG_PACKAGE_VERSION}") +string(REGEX REPLACE "[0-9]+.([0-9]+).[0-9].+" "\\1" NNG_VERSION_MINOR "${NNG_PACKAGE_VERSION}") +string(REGEX REPLACE "[0-9]+.[0-9]+.([0-9]+).*" "\\1" NNG_VERSION_PATCH "${NNG_PACKAGE_VERSION}") # User-defined options. @@ -121,153 +132,18 @@ if (NOT WIN32) mark_as_advanced(NNG_SETSTACKSIZE) endif() - -option (NNG_ENABLE_TLS "Enable TLS protocol (requires mbedTLS" OFF) +option (NNG_ENABLE_TLS "Enable TLS protocol (requires mbedTLS)" OFF) if (NNG_ENABLE_TLS) add_definitions(-DNNG_SUPP_TLS) set(NNG_SUPP_TLS ON) endif() -option (NNG_ENABLE_HTTP "Enable HTTP API" ON) -if (NNG_ENABLE_HTTP) - set(NNG_SUPP_HTTP ON) -endif() -mark_as_advanced(NNG_ENABLE_HTTP) - option (NNG_ENABLE_STATS "Enable statistics" ON) if (NNG_ENABLE_STATS) add_definitions(-DNNG_ENABLE_STATS) endif() mark_as_advanced(NNG_ENABLE_STATS) -option (NNG_PROTO_BUS0 "Enable BUSv0 protocol." ON) -if (NNG_PROTO_BUS0) - add_definitions (-DNNG_HAVE_BUS0) -endif () -mark_as_advanced(NNG_PROTO_BUS0) - -option (NNG_PROTO_PAIR0 "Enable PAIRv0 protocol." ON) -if (NNG_PROTO_PAIR0) - add_definitions (-DNNG_HAVE_PAIR0) -endif () -mark_as_advanced(NNG_PROTO_PAIR0) - -option (NNG_PROTO_PAIR1 "Enable PAIRv1 protocol." ON) -if (NNG_PROTO_PAIR1) - add_definitions (-DNNG_HAVE_PAIR1) -endif () -mark_as_advanced(NNG_PROTO_PAIR1) - -option (NNG_PROTO_REQ0 "Enable REQv0 protocol." ON) -if (NNG_PROTO_REQ0) - add_definitions (-DNNG_HAVE_REQ0) -endif () -mark_as_advanced(NNG_PROTO_REQ0) - -option (NNG_PROTO_REP0 "Enable REPv0 protocol." ON) -if (NNG_PROTO_REP0) - add_definitions (-DNNG_HAVE_REP0) -endif () -mark_as_advanced(NNG_PROTO_REP0) - -option (NNG_PROTO_PUB0 "Enable PUBv0 protocol." ON) -if (NNG_PROTO_PUB0) - add_definitions (-DNNG_HAVE_PUB0) -endif () -mark_as_advanced(NNG_PROTO_PUB0) - -option (NNG_PROTO_SUB0 "Enable SUBv0 protocol." ON) -if (NNG_PROTO_SUB0) - add_definitions (-DNNG_HAVE_SUB0) -endif () -mark_as_advanced(NNG_PROTO_SUB0) - -option (NNG_PROTO_PUSH0 "Enable PUSHv0 protocol." ON) -if (NNG_PROTO_PUSH0) - add_definitions (-DNNG_HAVE_PUSH0) -endif () -mark_as_advanced(NNG_PROTO_PUSH0) - -option (NNG_PROTO_PULL0 "Enable PULLv0 protocol." ON) -if (NNG_PROTO_PULL0) - add_definitions (-DNNG_HAVE_PULL0) -endif () -mark_as_advanced(NNG_PROTO_PULL0) - -option (NNG_PROTO_SURVEYOR0 "Enable SURVEYORv0 protocol." ON) -if (NNG_PROTO_SURVEYOR0) - add_definitions (-DNNG_HAVE_SURVEYOR0) -endif () -mark_as_advanced(NNG_PROTO_SURVEYOR0) - -option (NNG_PROTO_RESPONDENT0 "Enable RESPONDENTv0 protocol." ON) -if (NNG_PROTO_RESPONDENT0) - add_definitions (-DNNG_HAVE_RESPONDENT0) -endif () -mark_as_advanced(NNG_PROTO_RESPONDENT0) - -option (NNG_TRANSPORT_INPROC "Enable inproc transport." ON) -if (NNG_TRANSPORT_INPROC) - add_definitions (-DNNG_TRANSPORT_INPROC) -endif () -mark_as_advanced(NNG_TRANSPORT_INPROC) - -option (NNG_TRANSPORT_IPC "Enable IPC transport." ON) -if (NNG_TRANSPORT_IPC) - add_definitions (-DNNG_TRANSPORT_IPC) -endif () -mark_as_advanced(NNG_TRANSPORT_IPC) - -option (NNG_TRANSPORT_TCP "Enable TCP transport." ON) -if (NNG_TRANSPORT_TCP) - add_definitions (-DNNG_TRANSPORT_TCP) -endif () -mark_as_advanced(NNG_TRANSPORT_TCP) - -CMAKE_DEPENDENT_OPTION(NNG_TRANSPORT_TLS "Enable TLS transport" ON - "NNG_ENABLE_TLS" OFF) - -if (NNG_TRANSPORT_TLS) - set(NNG_SUPP_TLS ON) - add_definitions (-DNNG_TRANSPORT_TLS) -endif() -mark_as_advanced(NNG_TRANSPORT_TLS) - -option (NNG_TRANSPORT_WS "Enable WebSocket transport." ON) -if (NNG_TRANSPORT_WS) - add_definitions (-DNNG_TRANSPORT_WS) - set(NNG_SUPP_WEBSOCKET ON) -endif () -mark_as_advanced(NNG_TRANSPORT_WS) - -CMAKE_DEPENDENT_OPTION(NNG_TRANSPORT_WSS "Enable WSS transport" ON - "NNG_ENABLE_TLS" OFF) -if (NNG_TRANSPORT_WSS) - add_definitions (-DNNG_TRANSPORT_WSS) - set(NNG_SUPP_WEBSOCKET ON) -endif () -mark_as_advanced(NNG_TRANSPORT_WSS) - -option (NNG_TRANSPORT_ZEROTIER "Enable ZeroTier transport (requires libzerotiercore)." OFF) -if (NNG_TRANSPORT_ZEROTIER) - find_package(zerotiercore REQUIRED) - add_definitions (-DNNG_TRANSPORT_ZEROTIER) -endif () -mark_as_advanced(NNG_TRANSPORT_ZEROTIER) - - -# dependencies -if (NNG_SUPP_WEBSOCKET) - set(NNG_SUPP_HTTP ON) - set(NNG_SUPP_BASE64 ON) - set(NNG_SUPP_SHA1 ON) -endif() - -# Extra defines. -if (NNG_SUPP_TLS) - add_definitions (-DNNG_SUPP_TLS) -endif() - # Platform checks. if (CMAKE_C_COMPILER_ID STREQUAL "GNU") @@ -318,10 +194,6 @@ if (NOT WIN32 AND NOT CYGWIN) endif() endif() - - -find_package (Threads REQUIRED) - if (CMAKE_SYSTEM_NAME MATCHES "Linux") add_definitions (-DNNG_PLATFORM_POSIX) add_definitions (-DNNG_PLATFORM_LINUX) @@ -393,7 +265,6 @@ else () message (AUTHOR_WARNING "WARNING: This platform may not be supported: ${CMAKE_SYSTEM_NAME}") message (AUTHOR_WARNING "${ISSUE_REPORT_MSG}") # blithely hope for POSIX to work - find_package (Threads REQUIRED) add_definitions (-DPLATFORM_POSIX) endif () @@ -415,7 +286,7 @@ macro (nng_check_lib LIB SYM DEF) check_library_exists (${LIB} ${SYM} "" ${DEF}) if (${DEF}) add_definitions (-D${DEF}=1) - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} ${LIB}) + list(APPEND NNG_LIBS ${LIB}) endif () endmacro (nng_check_lib) @@ -428,9 +299,7 @@ endmacro (nng_check_struct_member) if (WIN32) # Windows is a special snowflake. - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} ws2_32) - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} mswsock) - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} advapi32) + list(APPEND NNG_LIBS ws2_32 mswsock advapi32) nng_check_sym (InitializeConditionVariable windows.h NNG_HAVE_CONDVAR) nng_check_sym (snprintf stdio.h NNG_HAVE_SNPRINTF) if (NOT NNG_HAVE_CONDVAR OR NOT NNG_HAVE_SNPRINTF) @@ -449,6 +318,8 @@ else () add_definitions (-D_REENTRANT) add_definitions (-D_THREAD_SAFE) add_definitions (-D_POSIX_PTHREAD_SEMANTICS) + list(APPEND NNG_PKGS Threads) + find_package(Threads REQUIRED) nng_check_func (lockf NNG_HAVE_LOCKF) nng_check_func (flock NNG_HAVE_FLOCK) @@ -494,6 +365,11 @@ endif() add_subdirectory (src) +foreach(_PKG IN ITEMS ${NNG_PKGS}) + find_package(${_PKG} REQUIRED) +endforeach () +add_definitions(${NNG_DEFS}) + if (NNG_TESTS) enable_testing() set(all_tests, "") @@ -501,7 +377,6 @@ if (NNG_TESTS) add_subdirectory (perf) endif() - # Build the tools if (NNG_ENABLE_NNGCAT) @@ -518,10 +393,10 @@ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "nanomsg next generation library") set (CPACK_SOURCE_GENERATOR "TBZ2;TGZ;ZIP") set (CPACK_SOURCE_IGNORE_FILES "/build/;/.git/;~$;${CPACK_SOURCE_IGNORE_FILES}") set (CPACK_SOURCE_PACKAGE_FILE_NAME - "${PROJECT_NAME}-${NNG_PACKAGE_VERSION}-src") + "${PROJECT_NAME}-v${NNG_PACKAGE_VERSION}-src") set (CPACK_RESOURCE_FILE_LICENSE ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt) set (CPACK_PACKAGE_INSTALL_DIRECTORY "nng") -set (CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${NNG_PACKAGE_VERSION}") +set (CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-v${NNG_PACKAGE_VERSION}") add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source) include (CPack) diff --git a/cmake/nng-config.cmake.in b/cmake/nng-config.cmake.in new file mode 100644 index 00000000..c3ec7f25 --- /dev/null +++ b/cmake/nng-config.cmake.in @@ -0,0 +1,26 @@ +# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> +# +# This software is supplied under the terms of the MIT License, a +# copy of which should be located in the distribution where this +# file was obtained (LICENSE.txt). A copy of the license may also be +# found online at https://opensource.org/licenses/MIT. + + +@PACKAGE_INIT@ + +set(NNG_VERSION_MAJOR "@NNG_VERSION_MAJOR@") +set(NNG_VERSION_MINOR "@NNG_VERSION_MINOR@") +set(NNG_VERSION_PATCH "@NNG_VERSION_PATCH@") + +set_and_check(NNG_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIRS@") + +include("${CMAKE_CURRENT_LIST_DIR}/nng-targets.cmake") + +# Make sure we find packages for our dependencies +foreach(_PKG IN ITEMS @NNG_PKGS@) + find_package(${_PKG} REQUIRED) +endforeach () + +set(NNG_LIBRARY nng::nng) + +check_required_components(@PROJECT_NAME@) diff --git a/perf/CMakeLists.txt b/perf/CMakeLists.txt index 83e08e88..64bc3b34 100644 --- a/perf/CMakeLists.txt +++ b/perf/CMakeLists.txt @@ -4,6 +4,7 @@ # Copyright (c) 2015-2016 Jack R. Dunaway. All rights reserved. # Copyright 2016 Garrett D'Amore <garrett@damore.org> # Copyright 2016 Franklin "Snaipe" Mathieu <franklinmathieu@gmail.com> +# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), @@ -24,7 +25,7 @@ # IN THE SOFTWARE. # -# Build unit tests. +# Build performance tests. include_directories(AFTER SYSTEM ${PROJECT_SOURCE_DIR}/src) @@ -32,11 +33,7 @@ if (NNG_TESTS) macro (add_nng_perf NAME) add_executable (${NAME} perf.c) target_link_libraries (${NAME} ${PROJECT_NAME}) - target_link_libraries (${NAME} ${NNG_REQUIRED_LIBRARIES}) target_compile_definitions(${NAME} PUBLIC) - if (CMAKE_THREAD_LIBS_INIT) - target_link_libraries (${NAME} "${CMAKE_THREAD_LIBS_INIT}") - endif() endmacro (add_nng_perf) add_nng_perf(remote_lat) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d58f0b2e..428fb56d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -24,7 +24,8 @@ # IN THE SOFTWARE. # -set (NNG_SOURCES +set (NNG_HDRS nng.h) +set (NNG_SRCS nng.c nng.h @@ -87,7 +88,10 @@ set (NNG_SOURCES ) if (NNG_PLATFORM_POSIX) - set (NNG_SOURCES ${NNG_SOURCES} + find_package (Threads REQUIRED) + set(NNG_LIBS Threads::Threads) + + set (NNG_SRCS ${NNG_SRCS} platform/posix/posix_impl.h platform/posix/posix_ipc.h platform/posix/posix_config.h @@ -114,26 +118,26 @@ if (NNG_PLATFORM_POSIX) ) if (NNG_HAVE_PORT_CREATE) - set (NNG_SOURCES ${NNG_SOURCES} + set (NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_port.c ) elseif (NNG_HAVE_KQUEUE) - set (NNG_SOURCES ${NNG_SOURCES} + set (NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_kqueue.c ) elseif (NNG_HAVE_EPOLL AND NNG_HAVE_EVENTFD) - set (NNG_SOURCES ${NNG_SOURCES} + set (NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_epoll.c ) else() - set (NNG_SOURCES ${NNG_SOURCES} + set (NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_poll.c ) endif() endif() if (NNG_PLATFORM_WINDOWS) - set (NNG_SOURCES ${NNG_SOURCES} + set (NNG_SRCS ${NNG_SRCS} platform/windows/win_impl.h platform/windows/win_ipc.h platform/windows/win_tcp.h @@ -158,17 +162,9 @@ if (NNG_PLATFORM_WINDOWS) ) endif() -set (NNG_HEADERS nng.h) add_subdirectory(compat/nanomsg) -add_subdirectory(supplemental/base64) -add_subdirectory(supplemental/http) -add_subdirectory(supplemental/sha1) -add_subdirectory(supplemental/tls) -add_subdirectory(supplemental/util) -add_subdirectory(supplemental/websocket) - add_subdirectory(protocol/bus0) add_subdirectory(protocol/pair0) add_subdirectory(protocol/pair1) @@ -184,14 +180,24 @@ add_subdirectory(transport/tls) add_subdirectory(transport/ws) add_subdirectory(transport/zerotier) -include_directories(AFTER SYSTEM ${PROJECT_SOURCE_DIR}/src - ${NNG_REQUIRED_INCLUDES}) +add_subdirectory(supplemental/base64) +add_subdirectory(supplemental/http) +add_subdirectory(supplemental/sha1) +add_subdirectory(supplemental/tls) +add_subdirectory(supplemental/util) +add_subdirectory(supplemental/websocket) + +include_directories(AFTER SYSTEM ${PROJECT_SOURCE_DIR}/src ${NNG_INCS}) + +add_definitions(${NNG_DEFS}) -add_definitions(${NNG_DEFINES}) +foreach(_PKG IN ITEMS ${NNG_PKGS}) + find_package(${_PKG} REQUIRED) +endforeach () # Provide same folder structure in IDE as on disk # XXX: Consider replacing this with source_group(TREE...) -foreach (f ${NNG_SOURCES}) +foreach (f ${NNG_SRCS}) # Get the path of the file relative to source directory if (IS_ABSOLUTE "${f}") file (RELATIVE_PATH f ${CMAKE_CURRENT_SOURCE_DIR} ${f}) @@ -207,8 +213,9 @@ foreach (f ${NNG_SOURCES}) source_group ("${SRC_GROUP}" FILES ${f}) endforeach () + # Library -add_library (${PROJECT_NAME} ${NNG_SOURCES}) +add_library (${PROJECT_NAME} ${NNG_SRCS}) # When building shared libraries we prefer to suppress default symbol # visibility, so that only the symbols that should be exposed in the @@ -237,33 +244,62 @@ set_target_properties (${PROJECT_NAME} set_target_properties (${PROJECT_NAME} ${PROJECT_NAME} PROPERTIES FRAMEWORK OFF) -target_link_libraries (${PROJECT_NAME} PRIVATE ${NNG_REQUIRED_LIBRARIES}) -target_link_libraries (${PROJECT_NAME} PRIVATE Threads::Threads) +target_link_libraries (${PROJECT_NAME} PRIVATE ${NNG_LIBS}) target_include_directories (${PROJECT_NAME} INTERFACE $<INSTALL_INTERFACE:include>) install (TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-target - FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT tools + FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Library + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Library + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT Library + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Tools ) install (EXPORT ${PROJECT_NAME}-target - FILE ${PROJECT_NAME}-config.cmake + FILE ${PROJECT_NAME}-targets.cmake NAMESPACE nng:: DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} + COMPONENT Library ) # Install the header files. It would be much better if we could use # the PUBLIC_HEADER facility, but it stupidly flattens the directories. -foreach (f ${NNG_HEADERS}) +foreach (f ${NNG_HDRS}) get_filename_component(d ${f} DIRECTORY) install(FILES ${f} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/nng/${d} - COMPONENT headers) + COMPONENT Headers) endforeach() # Promote settings to parent -set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} PARENT_SCOPE) +set(NNG_LIBS ${NNG_LIBS} PARENT_SCOPE) +set(NNG_PKGS ${NNG_PKGS} PARENT_SCOPE) +set(NNG_DEFS ${NNG_DEFS} PARENT_SCOPE) + +# These are promoted for testing +set(NNG_SUPP_BASE64 ${NNG_SUPP_BASE64} PARENT_SCOPE) +set(NNG_SUPP_HTTP ${NNG_SUPP_HTTP} PARENT_SCOPE) +set(NNG_SUPP_SHA1 ${NNG_SUPP_SHA1} PARENT_SCOPE) +set(NNG_SUPP_TLS ${NNG_SUPP_TLS} PARENT_SCOPE) +set(NNG_SUPP_WEBSOCKET ${NNG_SUPP_WEBSOCKET} PARENT_SCOPE) + +# Configure files + +set(INCLUDE_INSTALL_DIRS "${CMAKE_INSTALL_INCLUDEDIR}/nng") + +include(CMakePackageConfigHelpers) +set(version_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake") +set(project_config "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake") + +write_basic_package_version_file("${version_config}" + VERSION ${NNG_PACKAGE_VERSION} + COMPATIBILITY SameMajorVersion +) +configure_package_config_file(${CMAKE_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in "${project_config}" + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" + PATH_VARS INCLUDE_INSTALL_DIRS) + +install(FILES "${project_config}" "${version_config}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" + COMPONENT Library) diff --git a/src/compat/nanomsg/CMakeLists.txt b/src/compat/nanomsg/CMakeLists.txt index 9bac8ede..cdd6fb01 100644 --- a/src/compat/nanomsg/CMakeLists.txt +++ b/src/compat/nanomsg/CMakeLists.txt @@ -22,5 +22,5 @@ set(COMPAT_HEADERS compat/nanomsg/nn.h compat/nanomsg/ws.h ) -set(NNG_SOURCES ${NNG_SOURCES} ${COMPAT_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${COMPAT_HEADERS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${COMPAT_SOURCES} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} ${COMPAT_HEADERS} PARENT_SCOPE) diff --git a/src/protocol/bus0/CMakeLists.txt b/src/protocol/bus0/CMakeLists.txt index 06c44111..73acdf11 100644 --- a/src/protocol/bus0/CMakeLists.txt +++ b/src/protocol/bus0/CMakeLists.txt @@ -9,11 +9,15 @@ # # Bus protocol +option (NNG_PROTO_BUS0 "Enable BUSv0 protocol." ON) +mark_as_advanced(NNG_PROTO_BUS0) if (NNG_PROTO_BUS0) - set(BUS0_SOURCES protocol/bus0/bus.c protocol/bus0/bus.h) - set(BUS0_HEADERS protocol/bus0/bus.h) -endif() + set(_DEFS -DNNG_HAVE_BUS0) + set(_SRCS protocol/bus0/bus.c protocol/bus0/bus.h) + set(_HDRS protocol/bus0/bus.h) -set(NNG_SOURCES ${NNG_SOURCES} ${BUS0_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${BUS0_HEADERS} PARENT_SCOPE) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) +endif() diff --git a/src/protocol/pair0/CMakeLists.txt b/src/protocol/pair0/CMakeLists.txt index 2ba8d374..c453b07f 100644 --- a/src/protocol/pair0/CMakeLists.txt +++ b/src/protocol/pair0/CMakeLists.txt @@ -9,11 +9,15 @@ # # PAIRv0 protocol +option (NNG_PROTO_PAIR0 "Enable PAIRv0 protocol." ON) +mark_as_advanced(NNG_PROTO_PAIR0) if (NNG_PROTO_PAIR0) - set(PAIR0_SOURCES protocol/pair0/pair.c protocol/pair0/pair.h) - set(PAIR0_HEADERS protocol/pair0/pair.h) -endif() + set(_DEFS -DNNG_HAVE_PAIR0) + set(_SRCS protocol/pair0/pair.c protocol/pair0/pair.h) + set(_HDRS protocol/pair0/pair.h) -set(NNG_SOURCES ${NNG_SOURCES} ${PAIR0_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${PAIR0_HEADERS} PARENT_SCOPE) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) +endif() diff --git a/src/protocol/pair1/CMakeLists.txt b/src/protocol/pair1/CMakeLists.txt index 9c0ca09f..5c8813bf 100644 --- a/src/protocol/pair1/CMakeLists.txt +++ b/src/protocol/pair1/CMakeLists.txt @@ -9,11 +9,15 @@ # # PAIRv1 protocol +option (NNG_PROTO_PAIR1 "Enable PAIRv1 protocol." ON) +mark_as_advanced(NNG_PROTO_PAIR1) if (NNG_PROTO_PAIR1) - set(PAIR1_SOURCES protocol/pair1/pair.c protocol/pair1/pair.h) - set(PAIR1_HEADERS protocol/pair1/pair.h) -endif() + set(_DEFS -DNNG_HAVE_PAIR1) + set(_SRCS protocol/pair1/pair.c protocol/pair1/pair.h) + set(_HDRS protocol/pair1/pair.h) -set(NNG_SOURCES ${NNG_SOURCES} ${PAIR1_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${PAIR1_HEADERS} PARENT_SCOPE) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) +endif() diff --git a/src/protocol/pipeline0/CMakeLists.txt b/src/protocol/pipeline0/CMakeLists.txt index 669fb9dc..675cb961 100644 --- a/src/protocol/pipeline0/CMakeLists.txt +++ b/src/protocol/pipeline0/CMakeLists.txt @@ -8,17 +8,29 @@ # found online at https://opensource.org/licenses/MIT. # -# Pub/Sub protocol +# Pipeline protocol +option (NNG_PROTO_PUSH0 "Enable PUSHv0 protocol." ON) +mark_as_advanced(NNG_PROTO_PUSH0) + +option (NNG_PROTO_PULL0 "Enable PULLv0 protocol." ON) +mark_as_advanced(NNG_PROTO_PULL0) + +set(_DEFS) +set(_HDRS) +set(_SRCS) if (NNG_PROTO_PUSH0) - set(PUSH0_SOURCES protocol/pipeline0/push.c protocol/pipeline0/push.h) - set(PUSH0_HEADERS protocol/pipeline0/push.h) + list(APPEND _SRCS protocol/pipeline0/push.c protocol/pipeline0/push.h) + list(APPEND _HDRS protocol/pipeline0/push.h) + list(APPEND _DEFS -DNNG_HAVE_PUSH0) endif() if (NNG_PROTO_PULL0) - set(PULL0_SOURCES protocol/pipeline0/pull.c protocol/pipeline0/pull.h) - set(PULL0_HEADERS protocol/pipeline0/pull.h) + list(APPEND _SRCS protocol/pipeline0/pull.c protocol/pipeline0/pull.h) + list(APPEND _HDRS protocol/pipeline0/pull.h) + list(APPEND _DEFS -DNNG_HAVE_PULL0) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${PUSH0_SOURCES} ${PULL0_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${PUSH0_HEADERS} ${PULL0_HEADERS} PARENT_SCOPE) +set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) diff --git a/src/protocol/pubsub0/CMakeLists.txt b/src/protocol/pubsub0/CMakeLists.txt index 49ec8913..29f64049 100644 --- a/src/protocol/pubsub0/CMakeLists.txt +++ b/src/protocol/pubsub0/CMakeLists.txt @@ -9,16 +9,28 @@ # # Pub/Sub protocol +option (NNG_PROTO_PUB0 "Enable PUBv0 protocol." ON) +mark_as_advanced(NNG_PROTO_PUB0) + +option (NNG_PROTO_SUB0 "Enable SUBv0 protocol." ON) +mark_as_advanced(NNG_PROTO_SUB0) + +set(_DEFS) +set(_SRCS) +set(_HDRS) if (NNG_PROTO_PUB0) - set(PUB0_SOURCES protocol/pubsub0/pub.c protocol/pubsub0/pub.h) - set(PUB0_HEADERS protocol/pubsub0/pub.h) + list(APPEND _DEFS -DNNG_HAVE_PUB0) + list(APPEND _SRCS protocol/pubsub0/pub.c protocol/pubsub0/pub.h) + list(APPEND _HDRS protocol/pubsub0/pub.h) endif() if (NNG_PROTO_SUB0) - set(SUB0_SOURCES protocol/pubsub0/sub.c protocol/pubsub0/sub.h) - set(SUB0_HEADERS protocol/pubsub0/sub.h) + list(APPEND _DEFS -DNNG_HAVE_SUB0) + list(APPEND _SRCS protocol/pubsub0/sub.c protocol/pubsub0/sub.h) + list(APPEND _HDRS protocol/pubsub0/sub.h) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${PUB0_SOURCES} ${SUB0_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${PUB0_HEADERS} ${SUB0_HEADERS} PARENT_SCOPE) +set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) diff --git a/src/protocol/reqrep0/CMakeLists.txt b/src/protocol/reqrep0/CMakeLists.txt index 071c28f1..70c075c1 100644 --- a/src/protocol/reqrep0/CMakeLists.txt +++ b/src/protocol/reqrep0/CMakeLists.txt @@ -9,18 +9,32 @@ # # Req/Rep protocol +option (NNG_PROTO_REQ0 "Enable REQv0 protocol." ON) +mark_as_advanced(NNG_PROTO_REQ0) + +option (NNG_PROTO_REP0 "Enable REPv0 protocol." ON) +mark_as_advanced(NNG_PROTO_REP0) + +set(_DEFS) +set(_SRCS) +set(_HDRS) if (NNG_PROTO_REQ0) - set(REQ0_SOURCES protocol/reqrep0/req.c protocol/reqrep0/xreq.c - protocol/reqrep0/req.h) - set(REQ0_HEADERS protocol/reqrep0/req.h) + list(APPEND _DEFS -DNNG_HAVE_REQ0) + list(APPEND _SRCS + protocol/reqrep0/req.c protocol/reqrep0/xreq.c + protocol/reqrep0/req.h) + list(APPEND _HDRS protocol/reqrep0/req.h) endif() if (NNG_PROTO_REP0) - set(REP0_SOURCES protocol/reqrep0/rep.c protocol/reqrep0/xrep.c - protocol/reqrep0/rep.h) - set(REP0_HEADERS protocol/reqrep0/rep.h) + list(APPEND _DEFS -DNNG_HAVE_REP0) + list(APPEND _SRCS + protocol/reqrep0/rep.c protocol/reqrep0/xrep.c + protocol/reqrep0/rep.h) + list(APPEND _HDRS protocol/reqrep0/rep.h) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${REQ0_SOURCES} ${REP0_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${REQ0_HEADERS} ${REP0_HEADERS} PARENT_SCOPE) +set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) diff --git a/src/protocol/survey0/CMakeLists.txt b/src/protocol/survey0/CMakeLists.txt index 0a82463c..b6104a54 100644 --- a/src/protocol/survey0/CMakeLists.txt +++ b/src/protocol/survey0/CMakeLists.txt @@ -9,18 +9,32 @@ # # Surveyor/Respondent protocol +option (NNG_PROTO_RESPONDENT0 "Enable RESPONDENTv0 protocol." ON) +mark_as_advanced(NNG_PROTO_RESPONDENT0) + +option (NNG_PROTO_SURVEYOR0 "Enable SURVEYORv0 protocol." ON) +mark_as_advanced(NNG_PROTO_SURVEYOR0) + +set(_DEFS) +set(_HDRS) +set(_SRCS) if (NNG_PROTO_SURVEYOR0) - set(SURV0_SOURCES protocol/survey0/survey.c protocol/survey0/xsurvey.c - protocol/survey0/survey.h) - set(SURV0_HEADERS protocol/survey0/survey.h) + list(APPEND _DEFS -DNNG_HAVE_SURVEYOR0) + list(APPEND _SRCS + protocol/survey0/survey.c protocol/survey0/xsurvey.c + protocol/survey0/survey.h) + list(APPEND _HDRS protocol/survey0/survey.h) endif() if (NNG_PROTO_RESPONDENT0) - set(RESP0_SOURCES protocol/survey0/respond.c protocol/survey0/xrespond.c - protocol/survey0/respond.h) - set(RESP0_HEADERS protocol/survey0/respond.h) + list(APPEND _DEFS -DNNG_HAVE_RESPONDENT0) + list(APPEND _SRCS + protocol/survey0/respond.c protocol/survey0/xrespond.c + protocol/survey0/respond.h) + list(APPEND _HDRS protocol/survey0/respond.h) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${SURV0_SOURCES} ${RESP0_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${SURV0_HEADERS} ${RESP0_HEADERS} PARENT_SCOPE) +set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) diff --git a/src/supplemental/base64/CMakeLists.txt b/src/supplemental/base64/CMakeLists.txt index 297a5478..83740c83 100644 --- a/src/supplemental/base64/CMakeLists.txt +++ b/src/supplemental/base64/CMakeLists.txt @@ -1,6 +1,6 @@ # # Copyright 2017 Capitar IT Group BV <info@capitar.com> -# Copyright 2017 Staysail Systems, Inc. <info@staysail.tech> +# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> # # This software is supplied under the terms of the MIT License, a # copy of which should be located in the distribution where this @@ -9,8 +9,8 @@ # if (NNG_SUPP_BASE64) - set(BASE64_SOURCES + set(_SRCS supplemental/base64/base64.c supplemental/base64/base64.h) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${BASE64_SOURCES} PARENT_SCOPE) diff --git a/src/supplemental/http/CMakeLists.txt b/src/supplemental/http/CMakeLists.txt index ed7d5ae2..0fe9e7c5 100644 --- a/src/supplemental/http/CMakeLists.txt +++ b/src/supplemental/http/CMakeLists.txt @@ -8,28 +8,26 @@ # found online at https://opensource.org/licenses/MIT. # +option (NNG_ENABLE_HTTP "Enable HTTP API" ON) +if (NNG_ENABLE_HTTP) + set(NNG_SUPP_HTTP ON) +endif() +mark_as_advanced(NNG_ENABLE_HTTP) + +set(_HDRS supplemental/http/http.h) +set(_SRCS ${_HDRS} supplemental/http/http_public.c supplemental/http/http_api.h) + if (NNG_SUPP_HTTP) - set(HTTP_DEFINES -DNNG_SUPP_HTTP) - set(HTTP_HEADERS - supplemental/http/http.h) - set(HTTP_SOURCES - supplemental/http/http.h - supplemental/http/http_api.h + set(_DEFS -DNNG_SUPP_HTTP) + list(APPEND _SRCS supplemental/http/http_client.c supplemental/http/http_chunk.c supplemental/http/http_conn.c supplemental/http/http_msg.c supplemental/http/http_public.c supplemental/http/http_server.c) -else() - set(HTTP_SOURCES - supplemental/http/http.h - supplemental/http/http_api.h - supplemental/http/http_public.c) - set(HTTP_HEADERS - supplemental/http/http.h) endif() -set(NNG_DEFINES ${NNG_DEFINES} ${HTTP_DEFINES} PARENT_SCOPE) -set(NNG_SOURCES ${NNG_SOURCES} ${HTTP_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${HTTP_HEADERS} PARENT_SCOPE) +set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) diff --git a/src/supplemental/sha1/CMakeLists.txt b/src/supplemental/sha1/CMakeLists.txt index 9600a268..370dc7c2 100644 --- a/src/supplemental/sha1/CMakeLists.txt +++ b/src/supplemental/sha1/CMakeLists.txt @@ -1,6 +1,6 @@ # # Copyright 2017 Capitar IT Group BV <info@capitar.com> -# Copyright 2017 Staysail Systems, Inc. <info@staysail.tech> +# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> # # This software is supplied under the terms of the MIT License, a # copy of which should be located in the distribution where this @@ -9,8 +9,8 @@ # if (NNG_SUPP_SHA1) - set(SHA1_SOURCES + set(_SRCS supplemental/sha1/sha1.c supplemental/sha1/sha1.h) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${SHA1_SOURCES} PARENT_SCOPE) diff --git a/src/supplemental/tls/CMakeLists.txt b/src/supplemental/tls/CMakeLists.txt index a16745bd..3d1e6d02 100644 --- a/src/supplemental/tls/CMakeLists.txt +++ b/src/supplemental/tls/CMakeLists.txt @@ -10,36 +10,32 @@ if (NNG_SUPP_TLS) set(NNG_SUPP_TLS_MBEDTLS ON) - set(TLS_DEFINES -DNNG_SUPP_TLS) + set(_DEFS -DNNG_SUPP_TLS) endif() -set(TLS_SOURCES supplemental/tls/tls.h) + +set(_SRCS supplemental/tls/tls.h) +set(_HDRS supplemental/tls/tls.h) # For now we only support the ARM mbedTLS library. if (NNG_SUPP_TLS_MBEDTLS) Find_Package(mbedTLS REQUIRED) + set(_LIBS ${MBEDTLS_LIBRARIES}) + set(_INCS ${MBEDTLS_INCLUDE_DIR}) + list(APPEND _SRCS supplemental/tls/mbedtls/tls.c) - # If it isn't already in the link list, add the TLS libraries there. - # or something, so we take care not to duplicate it). - list(FIND NNG_REQUIRED_LIBRARIES ${MBEDTLS_TLS_LIBRARY} _index) - if (_index EQUAL -1) - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} ${MBEDTLS_LIBRARIES}) - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} PARENT_SCOPE) - endif() - - # Likewise for the include search path. - list(FIND NNG_REQUIRED_INCLUDES ${MBEDTLS_INCLUDE_DIR} _index) - if (_index EQUAL -1) - set(NNG_REQUIRED_INCLUDES ${NNG_REQUIRED_INCLUDES} ${MBEDTLS_INCLUDE_DIR}) - set(NNG_REQUIRED_INCLUDES ${NNG_REQUIRED_INCLUDES} PARENT_SCOPE) - endif() - set(TLS_SOURCES ${TLS_SOURCES} supplemental/tls/mbedtls/tls.c) else() - set(TLS_SOURCES ${TLS_SOURCES} supplemental/tls/none/tls.c) + list(APPEND _SRCS supplemental/tls/none/tls.c) endif() -set(TLS_HEADERS supplemental/tls/tls.h) +list(APPEND NNG_DEFS ${_DEFS}) +list(APPEND NNG_SRCS ${_SRCS}) +list(APPEND NNG_HDRS ${_HDRS}) +list(APPEND NNG_LIBS ${_LIBS}) +list(APPEND NNG_INCS ${_INCS}) -set(NNG_DEFINES ${NNG_DEFINES} ${TLS_DEFINES} PARENT_SCOPE) -set(NNG_SOURCES ${NNG_SOURCES} ${TLS_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${TLS_HEADERS} PARENT_SCOPE) +set(NNG_DEFS ${NNG_DEFS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} PARENT_SCOPE) +set(NNG_LIBS ${NNG_LIBS} PARENT_SCOPE) +set(NNG_INCS ${NNG_INCS} PARENT_SCOPE) diff --git a/src/supplemental/util/CMakeLists.txt b/src/supplemental/util/CMakeLists.txt index f94e2b45..c61d8a09 100644 --- a/src/supplemental/util/CMakeLists.txt +++ b/src/supplemental/util/CMakeLists.txt @@ -8,8 +8,8 @@ # found online at https://opensource.org/licenses/MIT. # -set(SUPP_UTIL_SOURCES supplemental/util/options.c supplemental/util/platform.c) -set(SUPP_UTIL_HEADERS supplemental/util/options.h supplemental/util/platform.h) +set(_SRCS supplemental/util/options.c supplemental/util/platform.c) +set(_HDRS supplemental/util/options.h supplemental/util/platform.h) -set(NNG_SOURCES ${NNG_SOURCES} ${SUPP_UTIL_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${SUPP_UTIL_HEADERS} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) +set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) diff --git a/src/supplemental/websocket/CMakeLists.txt b/src/supplemental/websocket/CMakeLists.txt index 5ddd6cb1..22ee955d 100644 --- a/src/supplemental/websocket/CMakeLists.txt +++ b/src/supplemental/websocket/CMakeLists.txt @@ -1,6 +1,6 @@ # # Copyright 2017 Capitar IT Group BV <info@capitar.com> -# Copyright 2017 Staysail Systems, Inc. <info@staysail.tech> +# Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> # # This software is supplied under the terms of the MIT License, a # copy of which should be located in the distribution where this @@ -9,8 +9,8 @@ # if (NNG_SUPP_WEBSOCKET) - set(WEBSOCKET_SOURCES + set(_SRCS supplemental/websocket/websocket.c supplemental/websocket/websocket.h) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${WEBSOCKET_SOURCES} PARENT_SCOPE) +set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) diff --git a/src/transport/inproc/CMakeLists.txt b/src/transport/inproc/CMakeLists.txt index 7c016bce..79264253 100644 --- a/src/transport/inproc/CMakeLists.txt +++ b/src/transport/inproc/CMakeLists.txt @@ -9,11 +9,15 @@ # # inproc protocol +option (NNG_TRANSPORT_INPROC "Enable inproc transport." ON) +mark_as_advanced(NNG_TRANSPORT_INPROC) if (NNG_TRANSPORT_INPROC) - set(INPROC_SOURCES transport/inproc/inproc.c transport/inproc/inproc.h) - set(INPROC_HEADERS transport/inproc/inproc.h) -endif() + set(_SRCS transport/inproc/inproc.c transport/inproc/inproc.h) + set(_HDRS transport/inproc/inproc.h) + set(_DEFS -DNNG_TRANSPORT_INPROC) -set(NNG_SOURCES ${NNG_SOURCES} ${INPROC_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${INPROC_HEADERS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) +endif() diff --git a/src/transport/ipc/CMakeLists.txt b/src/transport/ipc/CMakeLists.txt index fbae69ef..885b62b6 100644 --- a/src/transport/ipc/CMakeLists.txt +++ b/src/transport/ipc/CMakeLists.txt @@ -9,11 +9,15 @@ # # ipc protocol +option (NNG_TRANSPORT_IPC "Enable IPC transport." ON) +mark_as_advanced(NNG_TRANSPORT_IPC) if (NNG_TRANSPORT_IPC) - set(IPC_SOURCES transport/ipc/ipc.c transport/ipc/ipc.h) - set(IPC_HEADERS transport/ipc/ipc.h) -endif() + set(_DEFS -DNNG_TRANSPORT_IPC) + set(_SRCS transport/ipc/ipc.c transport/ipc/ipc.h) + set(_HDRS transport/ipc/ipc.h) -set(NNG_SOURCES ${NNG_SOURCES} ${IPC_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${IPC_HEADERS} PARENT_SCOPE) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) +endif() diff --git a/src/transport/tcp/CMakeLists.txt b/src/transport/tcp/CMakeLists.txt index 27b62e10..9390c048 100644 --- a/src/transport/tcp/CMakeLists.txt +++ b/src/transport/tcp/CMakeLists.txt @@ -9,11 +9,15 @@ # # TCP protocol +option (NNG_TRANSPORT_TCP "Enable TCP transport." ON) +mark_as_advanced(NNG_TRANSPORT_TCP) if (NNG_TRANSPORT_TCP) - set(TCP_SOURCES transport/tcp/tcp.c transport/tcp/tcp.h) - set(TCP_HEADERS transport/tcp/tcp.h) -endif() + set(_DEFS -DNNG_TRANSPORT_TCP) + set(_SRCS transport/tcp/tcp.c transport/tcp/tcp.h) + set(_HDRS transport/tcp/tcp.h) -set(NNG_SOURCES ${NNG_SOURCES} ${TCP_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${TCP_HEADERS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) +endif() diff --git a/src/transport/tls/CMakeLists.txt b/src/transport/tls/CMakeLists.txt index d55a9e92..80bc60af 100644 --- a/src/transport/tls/CMakeLists.txt +++ b/src/transport/tls/CMakeLists.txt @@ -9,11 +9,16 @@ # # TLS transport +CMAKE_DEPENDENT_OPTION(NNG_TRANSPORT_TLS "Enable TLS transport" ON + "NNG_ENABLE_TLS" OFF) +mark_as_advanced(NNG_TRANSPORT_TLS) if (NNG_TRANSPORT_TLS) - set(TLS_SOURCES transport/tls/tls.c transport/tls/tls.h) - set(TLS_HEADERS transport/tls/tls.h) -endif() + set(_DEFS -DNNG_TRANSPORT_TLS) + set(_SRCS transport/tls/tls.c transport/tls/tls.h) + set(_HDRS transport/tls/tls.h) -set(NNG_SOURCES ${NNG_SOURCES} ${TLS_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${TLS_HEADERS} PARENT_SCOPE) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) +endif() diff --git a/src/transport/ws/CMakeLists.txt b/src/transport/ws/CMakeLists.txt index 71e2aefa..8104d83c 100644 --- a/src/transport/ws/CMakeLists.txt +++ b/src/transport/ws/CMakeLists.txt @@ -9,11 +9,33 @@ # # WebSocket transport +option (NNG_TRANSPORT_WS "Enable WebSocket transport." ON) +mark_as_advanced(NNG_TRANSPORT_WS) + +CMAKE_DEPENDENT_OPTION(NNG_TRANSPORT_WSS "Enable WSS transport" ON + "NNG_ENABLE_TLS" OFF) +mark_as_advanced(NNG_TRANSPORT_WSS) + +set(_DEFS) if (NNG_TRANSPORT_WS) - set(WS_SOURCES transport/ws/websocket.c transport/ws/websocket.h) - set(WS_HEADERS transport/ws/websocket.h) + list(APPEND _DEFS -DNNG_TRANSPORT_WS) +endif() +if (NNG_TRANSPORT_WSS) + list(APPEND _DEFS -DNNG_TRANSPORT_WSS) endif() -set(NNG_SOURCES ${NNG_SOURCES} ${WS_SOURCES} PARENT_SCOPE) -set(NNG_HEADERS ${NNG_HEADERS} ${WS_HEADERS} PARENT_SCOPE) +if (NNG_TRANSPORT_WS OR NNG_TRANSPORT_WSS) + + # Make sure things we *MUST* have are enabled. + set(NNG_SUPP_WEBSOCKET ON PARENT_SCOPE) + set(NNG_SUPP_HTTP ON PARENT_SCOPE) + set(NNG_SUPP_BASE64 ON PARENT_SCOPE) + set(NNG_SUPP_SHA1 ON PARENT_SCOPE) + + set(_SRCS transport/ws/websocket.c transport/ws/websocket.h) + set(_HDRS transport/ws/websocket.h) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) +endif() diff --git a/src/transport/zerotier/CMakeLists.txt b/src/transport/zerotier/CMakeLists.txt index d8dbb566..686a0a8a 100644 --- a/src/transport/zerotier/CMakeLists.txt +++ b/src/transport/zerotier/CMakeLists.txt @@ -10,6 +10,9 @@ # ZeroTier protocol +option (NNG_TRANSPORT_ZEROTIER "Enable ZeroTier transport (requires libzerotiercore)." OFF) +mark_as_advanced(NNG_TRANSPORT_ZEROTIER) + if (NNG_TRANSPORT_ZEROTIER) # The zerotiercore project will have been found at the top level @@ -27,12 +30,18 @@ if (NNG_TRANSPORT_ZEROTIER) Consult a lawyer and the license files for details. ************************************************************") - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} zerotiercore::zerotiercore) - set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} PARENT_SCOPE) + find_package(zerotiercore REQUIRED) + set(_PKGS zerotiercore) + set(_LIBS zerotiercore::zerotiercore) + set(_DEFS -DNNG_TRANSPORT_ZEROTIER) + + set(_SRCS transport/zerotier/zerotier.c transport/zerotier/zerotier.h) + set(_HDRS transport/zerotier/zerotier.h) - set(ZT_SOURCES transport/zerotier/zerotier.c transport/zerotier/zerotier.h) - set(ZT_HEADERS transport/zerotier/zerotier.h) + set(NNG_DEFS ${NNG_DEFS} ${_DEFS} PARENT_SCOPE) + set(NNG_LIBS ${NNG_LIBS} ${_LIBS} PARENT_SCOPE) + set(NNG_PKGS ${NNG_PKGS} ${_PKGS} PARENT_SCOPE) + set(NNG_SRCS ${NNG_SRCS} ${_SRCS} PARENT_SCOPE) + set(NNG_HDRS ${NNG_HDRS} ${_HDRS} PARENT_SCOPE) - set(NNG_SOURCES ${NNG_SOURCES} ${ZT_SOURCES} PARENT_SCOPE) - set(NNG_HEADERS ${NNG_HEADERS} ${ZT_HEADERS} PARENT_SCOPE) endif() diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 031c15cd..1c33272e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -36,6 +36,12 @@ include_directories(AFTER SYSTEM ${PROJECT_SOURCE_DIR}/src) +# convey.c needs its own link to pthreads. +if (NOT WIN32) + find_package(Threads) + set(THRLIB Threads::Threads) +endif() + if (NNG_TESTS) if (NOT NNG_SANITIZER STREQUAL "none") @@ -46,7 +52,7 @@ if (NNG_TESTS) set (NNG_TEST_PORT 13000) macro (add_nng_test NAME TIMEOUT) add_executable (${NAME} ${NAME}.c convey.c) - target_link_libraries (${NAME} ${PROJECT_NAME} Threads::Threads) + target_link_libraries (${NAME} ${PROJECT_NAME} ${THRLIB}) add_test (NAME ${NAME} COMMAND ${NAME} -v -p TEST_PORT=${NNG_TEST_PORT}) math (EXPR TIMEOUT ${TIMEOUT}*${TIMEOUT_FACTOR}) set_tests_properties (${NAME} PROPERTIES TIMEOUT ${TIMEOUT}) diff --git a/tools/nngcat/CMakeLists.txt b/tools/nngcat/CMakeLists.txt index e6d4278c..6edf3bda 100644 --- a/tools/nngcat/CMakeLists.txt +++ b/tools/nngcat/CMakeLists.txt @@ -12,7 +12,8 @@ if (NNG_ENABLE_NNGCAT) add_executable (nngcat nngcat.c) target_include_directories (nngcat PUBLIC ${PROJECT_SOURCE_DIR}/src) target_link_libraries (nngcat ${PROJECT_NAME}) - install (TARGETS nngcat RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + install (TARGETS nngcat RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + COMPONENT Tools) if (NNG_TESTS AND NNG_PLATFORM_POSIX AND BASH) macro(add_nngcat_test NAME TIMEOUT) |
