diff options
Diffstat (limited to 'src/CMakeLists.txt')
| -rw-r--r-- | src/CMakeLists.txt | 205 |
1 files changed, 22 insertions, 183 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 568ea7d0..889b770d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,154 +1,24 @@ # # Copyright 2020 Staysail Systems, Inc. <info@staysail.tech> # Copyright 2018 Capitar IT Group BV <info@capitar.com> -# Copyright (c) 2012-2013 Martin Sustrik All rights reserved. -# Copyright (c) 2013 GoPivotal, Inc. All rights reserved. -# Copyright (c) 2015-2016 Jack R. Dunaway. All rights reserved. # -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), -# to deal in the Software without restriction, including without limitation -# the rights to use, copy, modify, merge, publish, distribute, sublicense, -# and/or sell copies of the Software, and to permit persons to whom -# the Software is furnished to do so, subject to the following conditions: +# 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. # -# The above copyright notice and this permission notice shall be included -# in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -# - -add_library(${PROJECT_NAME} - nng.c - ${PROJECT_SOURCE_DIR}/include/nng/nng.h) -if (NNG_TESTS) - add_library(${PROJECT_NAME}_testlib STATIC - nng.c - ${PROJECT_SOURCE_DIR}/tests/testutil.c - ${PROJECT_SOURCE_DIR}/tests/testutil.h - ${PROJECT_SOURCE_DIR}/include/nng/nng.h) -endif () - -set(NNG_SRCS +nng_sources(nng.c) +nng_headers(nng/nng.h) - core/defs.h - core/aio.c - core/aio.h - core/clock.c - core/clock.h - core/device.c - core/device.h - core/dialer.c - core/dialer.h - core/file.c - core/file.h - core/idhash.c - core/idhash.h - core/init.c - core/init.h - core/list.c - core/list.h - core/listener.c - core/listener.h - core/lmq.c - core/lmq.h - core/message.c - core/message.h - core/msgqueue.c - core/msgqueue.h - core/nng_impl.h - core/options.c - core/options.h - core/pollable.c - core/pollable.h - core/panic.c - core/panic.h - core/pipe.c - core/pipe.h - core/platform.h - core/protocol.c - core/protocol.h - core/reap.c - core/reap.h - core/socket.c - core/socket.h - core/sockimpl.h - core/stats.c - core/stats.h - core/stream.c - core/stream.h - core/strs.c - core/strs.h - core/taskq.c - core/taskq.h - core/thread.c - core/thread.h - core/timer.c - core/timer.h - core/transport.c - core/transport.h - core/url.c - core/url.h - ) - -if (NNG_PLATFORM_POSIX) - find_package(Threads REQUIRED) - list(APPEND NNG_LIBS Threads::Threads) - - set(NNG_SRCS ${NNG_SRCS} - platform/posix/posix_impl.h - platform/posix/posix_aio.h - platform/posix/posix_ipc.h - platform/posix/posix_config.h - platform/posix/posix_pollq.h - platform/posix/posix_tcp.h - - platform/posix/posix_alloc.c - platform/posix/posix_atomic.c - platform/posix/posix_clock.c - platform/posix/posix_debug.c - platform/posix/posix_file.c - platform/posix/posix_ipcconn.c - platform/posix/posix_ipcdial.c - platform/posix/posix_ipclisten.c - platform/posix/posix_pipe.c - platform/posix/posix_resolv_gai.c - platform/posix/posix_sockaddr.c - platform/posix/posix_tcpconn.c - platform/posix/posix_tcpdial.c - platform/posix/posix_tcplisten.c - platform/posix/posix_thread.c - platform/posix/posix_udp.c - ) - - if (NNG_HAVE_PORT_CREATE) - set(NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_port.c) - elseif (NNG_HAVE_KQUEUE) - set(NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_kqueue.c) - elseif (NNG_HAVE_EPOLL AND NNG_HAVE_EVENTFD) - set(NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_epoll.c) - else () - set(NNG_SRCS ${NNG_SRCS} platform/posix/posix_pollq_poll.c) - endif () +target_include_directories(nng PRIVATE ${PROJECT_SOURCE_DIR}/src) +target_include_directories(nng_testing PRIVATE ${PROJECT_SOURCE_DIR}/src) - if (NNG_HAVE_ARC4RANDOM) - set(NNG_SRCS ${NNG_SRCS} platform/posix/posix_rand_arc4random.c) - elseif (NNG_HAVE_GETRANDOM) - set(NNG_SRCS ${NNG_SRCS} platform/posix/posix_rand_getrandom.c) - else () - set(NNG_SRCS ${NNG_SRCS} platform/posix/posix_rand_urandom.c) - endif () -endif () +add_subdirectory(core) add_subdirectory(platform/windows) +add_subdirectory(platform/posix) add_subdirectory(compat/nanomsg) add_subdirectory(protocol/bus0) @@ -174,57 +44,31 @@ 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}) - -foreach (_PKG IN ITEMS ${NNG_PKGS}) - find_package(${_PKG} REQUIRED) -endforeach () - -# Library -target_sources(${PROJECT_NAME} PRIVATE ${NNG_SRCS}) - -if (NNG_TESTS) - target_sources(${PROJECT_NAME}_testlib PRIVATE ${NNG_SRCS}) - target_link_libraries(${PROJECT_NAME}_testlib PUBLIC ${NNG_LIBS}) - target_compile_definitions(${PROJECT_NAME}_testlib PUBLIC NNG_STATIC_LIB NNG_TEST_LIB) - target_include_directories(${PROJECT_NAME}_testlib PUBLIC ${PROJECT_SOURCE_DIR}/include) -endif () - # When building shared libraries we prefer to suppress default symbol # visibility, so that only the symbols that should be exposed in the # resulting library are. This is the default with Windows. if (BUILD_SHARED_LIBS) - target_compile_definitions(${PROJECT_NAME} PRIVATE -DNNG_SHARED_LIB) + target_compile_definitions(nng PRIVATE NNG_SHARED_LIB) if (NNG_HIDDEN_VISIBILITY) - target_compile_definitions(${PROJECT_NAME} PRIVATE -DNNG_HIDDEN_VISIBILITY) - set_target_properties(${PROJECT_NAME} PROPERTIES C_VISIBILITY_PRESET hidden) + target_compile_definitions(nng PRIVATE NNG_HIDDEN_VISIBILITY) + set_target_properties(nng PROPERTIES C_VISIBILITY_PRESET hidden) endif () else () - target_compile_definitions(${PROJECT_NAME} PUBLIC -DNNG_STATIC_LIB) + target_compile_definitions(nng PUBLIC NNG_STATIC_LIB) endif () -set_target_properties(${PROJECT_NAME} - PROPERTIES SOVERSION ${NNG_ABI_SOVERSION} VERSION "${NNG_ABI_VERSION}") - -# Set library outputs same as top-level project binary outputs -set_target_properties(${PROJECT_NAME} - PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) -set_target_properties(${PROJECT_NAME} - PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) -set_target_properties(${PROJECT_NAME} - PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) +set_target_properties(nng PROPERTIES SOVERSION ${NNG_ABI_SOVERSION} VERSION "${NNG_ABI_VERSION}") -set_target_properties(${PROJECT_NAME} ${PROJECT_NAME} - PROPERTIES FRAMEWORK OFF) +set_target_properties(nng PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) +set_target_properties(nng PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) +set_target_properties(nng PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) +set_target_properties(nng PROPERTIES FRAMEWORK OFF) -target_link_libraries(${PROJECT_NAME} PRIVATE ${NNG_LIBS}) - -target_include_directories(${PROJECT_NAME} INTERFACE $<INSTALL_INTERFACE:include> +target_include_directories(nng INTERFACE $<INSTALL_INTERFACE:include> $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>) -target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/include) +target_include_directories(nng PRIVATE ${PROJECT_SOURCE_DIR}/include) +target_include_directories(nng_testing PUBLIC ${PROJECT_SOURCE_DIR}/include) install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}-target @@ -250,11 +94,6 @@ install(DIRECTORY ../include/nng DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} COMPONENT Headers) -# Promote settings to parent -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) |
