Skip to content

Commit

Permalink
New CMAKE option NNG_ENABLE_COMPAT (defaults ON)
Browse files Browse the repository at this point in the history
This option allows the compatibility code to be elided from the build.
This saves build time, and eliminates bloat from a static library when
used strictly in native NNG mode.
  • Loading branch information
gdamore committed Jan 28, 2024
1 parent 463b2fe commit d6f0c13
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 25 deletions.
3 changes: 3 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,9 @@ target_compile_definitions(nng_private INTERFACE NNG_PRIVATE)
if (NNG_ELIDE_DEPRECATED)
target_compile_definitions(nng PRIVATE NNG_ELIDE_DEPRECATED)
endif()
if (NNG_ENABLE_COMPAT)
target_compile_definitions(nng PRIVATE NNG_ENABLE_COMPAT)
endif()


# We can use rlimit to configure the stack size for systems
Expand Down
5 changes: 5 additions & 0 deletions cmake/NNGOptions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ option(NNG_ENABLE_COVERAGE "Enable coverage reporting." OFF)
# for the public library.
option(NNG_ELIDE_DEPRECATED "Elide deprecated functionality." OFF)

# Turning off the compatibility layer can save some space, and
# compilation time, but may break legacy applications It should
# be left enabled when building a shared library.
option(NNG_ENABLE_COMPAT "Enable legacy nanomsg API." ON)

option(NNG_ENABLE_STATS "Enable statistics." ON)
mark_as_advanced(NNG_ENABLE_STATS)

Expand Down
7 changes: 5 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
# Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
# Copyright 2018 Capitar IT Group BV <info@capitar.com>
#
# This software is supplied under the terms of the MIT License, a
Expand All @@ -16,12 +16,15 @@ target_include_directories(nng_testing PRIVATE ${PROJECT_SOURCE_DIR}/src)

add_subdirectory(core)
add_subdirectory(platform)
add_subdirectory(compat)
add_subdirectory(sp)
add_subdirectory(supplemental)
add_subdirectory(tools)
add_subdirectory(testing)

if (NNG_ENABLE_COMPAT)
add_subdirectory(compat)
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.
Expand Down
12 changes: 9 additions & 3 deletions src/core/buf_size_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,17 @@

#include <nuts.h>

#if NNG_ENABLE_COMPAT
#include <nng/compat/nanomsg/nn.h>
#endif

void
void
test_buffer_options(void)
{
nng_socket s1;
int val;
size_t sz;
char * opt;
char *opt;

char *cases[] = {
NNG_OPT_RECVBUF,
Expand Down Expand Up @@ -62,8 +64,9 @@ test_buffer_options(void)
void
test_buffer_legacy(void)
{
#if NNG_ENABLE_COMPAT
nng_socket s1;
char * opt;
char *opt;

char *cases[] = {
NNG_OPT_RECVBUF,
Expand Down Expand Up @@ -104,10 +107,13 @@ test_buffer_legacy(void)
NUTS_TRUE(nn_errno() == EINVAL);
}
NUTS_PASS(nng_close(s1));
#endif
}

NUTS_TESTS = {
{ "buffer options", test_buffer_options },
#if NNG_ENABLE_COMPAT
{ "buffer legacy", test_buffer_legacy },
#endif
{ NULL, NULL },
};
42 changes: 22 additions & 20 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Copyright 2021 Staysail Systems, Inc. <info@staysail.tech>
# Copyright 2024 Staysail Systems, Inc. <info@staysail.tech>
# Copyright 2018 Capitar IT Group BV <info@capitar.com>
# Copyright (c) 2012 Martin Sustrik All rights reserved.
# Copyright (c) 2013 GoPivotal, Inc. All rights reserved.
Expand Down Expand Up @@ -155,25 +155,27 @@ add_nng_test(reqstress 60)
# is because we don't want to make modifications to partially enable some
# of these tests. Folks minimizing the library probably don't care too
# much about these anyway.
add_nng_compat_test(compat_block 10)
add_nng_compat_test(compat_bug777 10)
add_nng_compat_test(compat_bus 10)
add_nng_compat_test(compat_cmsg 10)
add_nng_compat_test(compat_msg 10)
add_nng_compat_test(compat_iovec 10)
add_nng_compat_test(compat_device 10)
add_nng_compat_test(compat_pair 10)
add_nng_compat_test(compat_pipeline 10)
add_nng_compat_test(compat_poll 10)
add_nng_compat_test(compat_reqrep 10)
add_nng_compat_test(compat_survey 10)
add_nng_compat_test(compat_reqttl 10)
add_nng_compat_test(compat_shutdown 10)
add_nng_compat_test(compat_surveyttl 10)

# These are special tests for compat mode, not inherited from the
# legacy libnanomsg suite.
add_nng_test(compat_options 5)
if (NNG_ENABLE_COMPAT)
add_nng_compat_test(compat_block 10)
add_nng_compat_test(compat_bug777 10)
add_nng_compat_test(compat_bus 10)
add_nng_compat_test(compat_cmsg 10)
add_nng_compat_test(compat_msg 10)
add_nng_compat_test(compat_iovec 10)
add_nng_compat_test(compat_device 10)
add_nng_compat_test(compat_pair 10)
add_nng_compat_test(compat_pipeline 10)
add_nng_compat_test(compat_poll 10)
add_nng_compat_test(compat_reqrep 10)
add_nng_compat_test(compat_survey 10)
add_nng_compat_test(compat_reqttl 10)
add_nng_compat_test(compat_shutdown 10)
add_nng_compat_test(compat_surveyttl 10)

# These are special tests for compat mode, not inherited from the
# legacy libnanomsg suite.
add_nng_test(compat_options 5)
endif()

# c++ tests
add_nng_cpp_test(cplusplus_pair 5)

0 comments on commit d6f0c13

Please sign in to comment.