diff options
| author | Garrett D'Amore <garrett@damore.org> | 2018-11-05 13:54:40 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2018-11-05 16:20:23 -0800 |
| commit | 77984b14a65c0a7387c97f3d36f947dd17358744 (patch) | |
| tree | d95ad88933c9fe8853cbc74fe8dc1492d60ad443 /src/transport | |
| parent | db92342b43d429b8b07244cc003a8589a1b1c542 (diff) | |
| download | nng-77984b14a65c0a7387c97f3d36f947dd17358744.tar.gz nng-77984b14a65c0a7387c97f3d36f947dd17358744.tar.bz2 nng-77984b14a65c0a7387c97f3d36f947dd17358744.zip | |
fixes #577 target library dependencies should be public
This is a significant refactor of the library configuration.
We use the modern package configuration helper, with a template
script that also does the find_package dance for any of our
dependencies.
We also have restructured the code so that most protocols and
transports have their configuration isolated to their own CMakeLists
file, reducing the size of the global CMakeLists file.
Diffstat (limited to 'src/transport')
| -rw-r--r-- | src/transport/inproc/CMakeLists.txt | 14 | ||||
| -rw-r--r-- | src/transport/ipc/CMakeLists.txt | 14 | ||||
| -rw-r--r-- | src/transport/tcp/CMakeLists.txt | 14 | ||||
| -rw-r--r-- | src/transport/tls/CMakeLists.txt | 15 | ||||
| -rw-r--r-- | src/transport/ws/CMakeLists.txt | 30 | ||||
| -rw-r--r-- | src/transport/zerotier/CMakeLists.txt | 21 |
6 files changed, 78 insertions, 30 deletions
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() |
