diff options
| author | Garrett D'Amore <garrett@damore.org> | 2016-12-12 19:13:46 -0800 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2016-12-12 19:13:46 -0800 |
| commit | 89949f4fe1836bf9a9aadf125228f0392c64683b (patch) | |
| tree | 3a788b34467ea0094dfc84da5e8f950a35672e2d /src | |
| parent | c0031c07dd111b71f2c0b4e3e2e8c73929c9a23a (diff) | |
| download | nng-89949f4fe1836bf9a9aadf125228f0392c64683b.tar.gz nng-89949f4fe1836bf9a9aadf125228f0392c64683b.tar.bz2 nng-89949f4fe1836bf9a9aadf125228f0392c64683b.zip | |
Initial cmake plumbing (stolen from libnanomsg)
Diffstat (limited to 'src')
| -rw-r--r-- | src/CMakeLists.txt | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 00000000..d6bd960b --- /dev/null +++ b/src/CMakeLists.txt @@ -0,0 +1,112 @@ +# +# 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. +# Copyright 2016 Garrett D'Amore <garrett@damore.org> +# +# 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: +# +# 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. +# + +set (NNG_SOURCES + nng.h + core/defs.h + core/list.c + core/list.h + core/message.c + core/msgqueue.c + core/msgqueue.h + core/nng_impl.h + core/panic.c + core/panic.h + core/platform.c + core/platform.h + core/protocol.h + core/snprintf.c + core/snprintf.h + core/socket.c + core/transport.c + core/transport.h + + platform/posix/posix_alloc.h + platform/posix/posix_clock.h + platform/posix/posix_config.h + platform/posix/posix_debug.h + platform/posix/posix_impl.h + platform/posix/posix_synch.h + platform/posix/posix_thread.h + platform/posix/posix_vsnprintf.h + + transport/inproc/inproc.c +) + +include_directories(AFTER SYSTEM ${PROJECT_SOURCE_DIR}/src) + +# Provide same folder structure in IDE as on disk +foreach (f ${NNG_SOURCES}) + # Get the path of the file relative to source directory + if (IS_ABSOLUTE "${f}") + file (RELATIVE_PATH f ${CMAKE_CURRENT_SOURCE_DIR} ${f}) + endif () + set (SRC_GROUP "${f}") + set (f "${CMAKE_CURRENT_SOURCE_DIR}/${f}") + + # Remove the filename part + string (REGEX REPLACE "(.*)(/[^/]*)$" "\\1" SRC_GROUP ${SRC_GROUP}) + + # CMake source_group expects \\, not / + string (REPLACE / \\ SRC_GROUP ${SRC_GROUP}) + source_group ("${SRC_GROUP}" FILES ${f}) +endforeach () + +if (NNG_STATIC_LIB) + add_library (${PROJECT_NAME} STATIC ${NNG_SOURCES}) +else () + add_library (${PROJECT_NAME} SHARED ${NNG_SOURCES}) + add_definitions (-DNNG_SHARED_LIB) + #set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION "${NNG_ABI_VERSION}") +endif () + +# 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}) + +target_link_libraries (${PROJECT_NAME} ${NNG_REQUIRED_LIBRARIES}) +if( THREADS_HAVE_PTHREAD_ARG) + add_definitions (-pthread) +endif() +if (CMAKE_THREAD_LIBS_INIT) + target_link_libraries (${PROJECT_NAME} "${CMAKE_THREAD_LIBS_INIT}") +endif() + +# pkg-config file +if (NNG_REQUIRED_LIBRARIES) + foreach (lib ${NNG_REQUIRED_LIBRARIES}) + set (NNG_REQUIRED_LFLAGS "${NNG_REQUIRED_LFLAGS} -l${lib}") + endforeach() +endif() +#configure_file (pkgconfig.in ${PROJECT_NAME}.pc @ONLY) +#install ( +# FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc +# DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) +install (TARGETS ${PROJECT_NAME} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +) |
