aboutsummaryrefslogtreecommitdiff
path: root/src/CMakeLists.txt
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-02-21 19:17:30 -0800
committerGarrett D'Amore <garrett@damore.org>2018-02-21 19:17:30 -0800
commit3a0ca04110778a56bcd523fbaba2439a61738e03 (patch)
treead55a99a5ef948e335f4a631949876b5d92cd09a /src/CMakeLists.txt
parenta4d378030df61760ea4daa2ddbe46b1366f8e977 (diff)
downloadnng-3a0ca04110778a56bcd523fbaba2439a61738e03.tar.gz
nng-3a0ca04110778a56bcd523fbaba2439a61738e03.tar.bz2
nng-3a0ca04110778a56bcd523fbaba2439a61738e03.zip
CMake & CPack improvements.
These are incremental updates... we avoid using install() in the subdirectories, so that we can adapt properly to them in the single parent directory. We have started some of the work to improve support for CPack. This is still not yet done, but work in progress.
Diffstat (limited to 'src/CMakeLists.txt')
-rw-r--r--src/CMakeLists.txt48
1 files changed, 27 insertions, 21 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b245d6ae..2cf03e45 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -126,6 +126,8 @@ if (NNG_PLATFORM_WINDOWS)
)
endif()
+set (NNG_HEADERS nng.h)
+
add_subdirectory(supplemental/base64)
add_subdirectory(supplemental/http)
add_subdirectory(supplemental/sha1)
@@ -178,35 +180,39 @@ target_compile_definitions(${PROJECT_NAME}_static PUBLIC -DNNG_STATIC_LIB)
# Shared library
add_library (${PROJECT_NAME} SHARED ${NNG_SOURCES})
target_compile_definitions(${PROJECT_NAME} PRIVATE -DNNG_SHARED_LIB)
-#set_target_properties (${PROJECT_NAME} PROPERTIES SOVERSION "${NNG_ABI_VERSION}")
+
+set_target_properties (${PROJECT_NAME}
+ PROPERTIES SOVERSION "${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 (${PROJECT_NAME} ${PROJECT_NAME}_static
+ PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+set_target_properties (${PROJECT_NAME} ${PROJECT_NAME}_static
+ PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+set_target_properties (${PROJECT_NAME} ${PROJECT_NAME}_static
+ PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
-set_target_properties (${PROJECT_NAME}_static PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
-set_target_properties (${PROJECT_NAME}_static PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
-set_target_properties (${PROJECT_NAME}_static PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
+set_target_properties (${PROJECT_NAME} ${PROJECT_NAME}_static
+ PROPERTIES FRAMEWORK OFF)
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()
+target_link_libraries (${PROJECT_NAME} Threads::Threads)
-# pkg-config file
-#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} ${PROJECT_NAME}_static
- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ FRAMEWORK DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT tools
)
+# Install the header files. It would be much better if we could use
+# the PUBLIC_HEADER facility, but it stupidly flattens the directories.
+foreach (f ${NNG_HEADERS})
+ get_filename_component(d ${f} DIRECTORY)
+ install(FILES ${f}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/nng/${d}
+ COMPONENT headers)
+endforeach()
+
# Promote settings to parent
set(NNG_REQUIRED_LIBRARIES ${NNG_REQUIRED_LIBRARIES} PARENT_SCOPE)