No need include .c in .h files, reduce the internal dependence using as library. Export more API in alloc.h, etc.

nn.h
.+: NN_EXPORT void nn_abort (void)
.remove: #undef NN_EXPORT

core/global.c
.+: void nn_abort (void)

utils/err.h
.remove nn_err_abort()
.remove nn_err_stderr()
.remove int nn_err_errno()
.move macro win_assert and wsa_assert into NN_HAVE_WINDOWS's scope
.add NN_EXPORT before void nn_win_error (int err, char *buf, size_t
bufsize)

utils/err.h and tests/testutil.h
.replace nn_err_abort with nn_abort

${ROOT_DIR}/CMakeLists.txt: Add
INCLUDE_DIRECTORIES(
src
src/aio
src/core
src/utils
)

${ROOT_DIR}/src/CMakeLists.txt:
.+: FILE(GLOB_RECURSE NN_SOURCES *.c)
.+: FILE(GLOB_RECURSE NN_HEADERS *.h)
.simplify the CMakeLists.txt

tests/testutil.h
.add: #include <malloc.h>

thread.h, sleep.h stopwatch.h clock.h hash.h alloc.h list.h atomic.h
chunk.h protocols\pubsub\trie.h
.add: #include "nn.h"
.add: NN_EXPORT before interface