| From 613297214d78ee10111e74e90e025166ebbcad9f Mon Sep 17 00:00:00 2001 |
| From: Peter Liu <peter.x.liu@external.atlascopco.com> |
| Date: Sun, 5 Mar 2017 16:15:40 +0100 |
| Subject: [PATCH] Add CMake build files |
| |
| Upstream-Status: Pending |
| |
| Signed-off-by: Peter Liu <peter.x.liu@external.atlascopco.com> |
| --- |
| CMakeLists.txt | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| FindLibRcf.cmake | 63 +++++++++++++++++++++++ |
| VERSION.cmake | 21 ++++++++ |
| src/CMakeLists.txt | 25 +++++++++ |
| 4 files changed, 256 insertions(+) |
| create mode 100644 CMakeLists.txt |
| create mode 100644 FindLibRcf.cmake |
| create mode 100644 VERSION.cmake |
| create mode 100755 src/CMakeLists.txt |
| |
| diff --git a/CMakeLists.txt b/CMakeLists.txt |
| new file mode 100644 |
| index 0000000..f6e24be |
| --- /dev/null |
| +++ b/CMakeLists.txt |
| @@ -0,0 +1,147 @@ |
| +PROJECT (librcf) |
| + |
| +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) |
| + |
| +#################################################################### |
| +# OPTION # |
| +#################################################################### |
| +OPTION (LIBRCF_USE_OPENSSL "Build with OpenSSL support?" OFF) |
| +OPTION (LIBRCF_OPENSSL_STATIC "Enable static linking to OpenSSL?" OFF) |
| +OPTION (LIBRCF_USE_ZLIB "Build with zlib support?" OFF) |
| +OPTION (LIBRCF_ZLIB_STATIC "Enable static linking to zlib?" OFF) |
| +OPTION (LIBRCF_USE_SF_SERIALIZATION "Build with SF serialization support?" ON) |
| +OPTION (LIBRCF_USE_BOOST_SERIALIZATION "Build with Boost.Serialization support?" OFF) |
| +OPTION (LIBRCF_USE_BOOST_FILESYSTEM "Build with Boost.Filesystem support (required for file transfer support)?" OFF) |
| +OPTION (LIBRCF_USE_BOOST_ASIO "Build with Boost asio support?" ON) |
| +OPTION (LIBRCF_USE_PROTOBUF "Build with Protocol Buffer support?" OFF) |
| +OPTION (LIBRCF_USE_JSON "Build with JSON Spirit (required for JSON-RPC support)?" OFF) |
| +OPTION (LIBRCF_USE_IPV6 "Build with IPv6 support?" OFF) |
| +OPTION (LIBRCF_USE_CUSTOM_ALLOCATOR "Build with custom allocator support?" OFF) |
| +OPTION (LIBRCF_BUILD_DLL "Build a DLL exporting RCF?" OFF) |
| +OPTION (LIBRCF_AUTO_INIT_DEINIT "Enable automatic RCF initialization and deinitialization?" OFF) |
| +OPTION (LIBRCF_BUILD_STATIC_LIBS "Build the static library?" ON) |
| +OPTION (LIBRCF_BUILD_SHARED_LIBS "Build the shared library?" ON) |
| +OPTION (LIBRCF_BUILD_DEMOS "Build demo programs?" ON) |
| + |
| +#################################################################### |
| +# CONFIGURATION # |
| +#################################################################### |
| +INCLUDE (${CMAKE_SOURCE_DIR}/VERSION.cmake) |
| + |
| +SET (LIBRCF_LIBRARIES "-lpthread -ldl -latomic") |
| +INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/include) |
| + |
| +IF (LIBRCF_USE_OPENSSL) |
| + IF (NOT OPENSSL_FOUND) |
| + FIND_PACKAGE (OpenSSL REQUIRED) |
| + ENDIF (NOT OPENSSL_FOUND) |
| + INCLUDE_DIRECTORIES (${OPENSSL_INCLUDE_DIR}) |
| + ADD_DEFINITIONS (-DRCF_USE_OPENSSL) |
| +ENDIF (LIBRCF_USE_OPENSSL) |
| + |
| +IF (LIBRCF_OPENSSL_STATIC) |
| + LIST (APPEND LIBRCF_LIBRARIES ${OPENSSL_LIBRARIES}) |
| + ADD_DEFINITIONS (-DRCF_OPENSSL_STATIC) |
| +ENDIF (LIBRCF_OPENSSL_STATIC) |
| + |
| +IF (LIBRCF_USE_ZLIB) |
| + IF (NOT ZLIB_FOUND) |
| + FIND_PACKAGE (ZLIB REQUIRED) |
| + ENDIF (NOT ZLIB_FOUND) |
| + INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIR}) |
| + ADD_DEFINITIONS (-DRCF_USE_ZLIB) |
| +ENDIF (LIBRCF_USE_ZLIB) |
| + |
| +IF (LIBRCF_ZLIB_STATIC) |
| + LIST (APPEND LIBRCF_LIBRARIES ${ZLIB_LIBRARIES}) |
| + ADD_DEFINITIONS (-DRCF_ZLIB_STATIC) |
| +ENDIF (LIBRCF_ZLIB_STATIC) |
| + |
| +IF (LIBRCF_USE_SF_SERIALIZATION) |
| + IF (NOT Boost_SYSTEM_FOUND) |
| + FIND_PACKAGE (Boost REQUIRED COMPONENTS system) |
| + ENDIF (NOT Boost_SYSTEM_FOUND) |
| + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| + LIST (APPEND LIBRCF_LIBRARIES ${Boost_SYSTEM_LIBRARY}) |
| + ADD_DEFINITIONS (-DRCF_USE_SF_SERIALIZATION) |
| +ENDIF (LIBRCF_USE_SF_SERIALIZATION) |
| + |
| +IF (LIBRCF_USE_BOOST_SERIALIZATION) |
| + IF (NOT Boost_SERIALIZATION_FOUND) |
| + FIND_PACKAGE (Boost REQUIRED COMPONENTS serialization) |
| + ENDIF (NOT Boost_SERIALIZATION_FOUND) |
| + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| + LIST (APPEND LIBRCF_LIBRARIES ${Boost_SERIALIZATION_LIBRARY}) |
| + ADD_DEFINITIONS (-DRCF_USE_BOOST_SERIALIZATION) |
| +ENDIF (LIBRCF_USE_BOOST_SERIALIZATION) |
| + |
| +IF (LIBRCF_USE_BOOST_FILESYSTEM) |
| + IF (NOT Boost_FILESYSTEM_FOUND) |
| + FIND_PACKAGE (Boost REQUIRED COMPONENTS filesystem system) |
| + ENDIF (NOT Boost_FILESYSTEM_FOUND) |
| + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| + LIST (APPEND LIBRCF_LIBRARIES ${Boost_FILESYSTEM_LIBRARY}) |
| + LIST (APPEND LIBRCF_LIBRARIES ${Boost_SYSTEM_LIBRARY}) |
| + ADD_DEFINITIONS (-DRCF_USE_BOOST_FILESYSTEM) |
| +ENDIF (LIBRCF_USE_BOOST_FILESYSTEM) |
| + |
| +IF (LIBRCF_USE_BOOST_ASIO) |
| + IF (NOT Boost_FOUND) |
| + FIND_PACKAGE (Boost REQUIRED) |
| + ENDIF (NOT Boost_FOUND) |
| + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| + ADD_DEFINITIONS (-DRCF_USE_BOOST_ASIO) |
| +ENDIF (LIBRCF_USE_BOOST_ASIO) |
| + |
| +IF (LIBRCF_USE_PROTOBUF) |
| + IF(NOT Protobuf_FOUND) |
| + FIND_PACKAGE (Protobuf REQUIRED) |
| + ENDIF (NOT Protobuf_FOUND) |
| + INCLUDE_DIRECTORIES (${Protobuf_INCLUDE_DIR}) |
| + LIST (APPEND LIBRCF_LIBRARIES ${Protobuf_LIBRARIES}) |
| + ADD_DEFINITIONS (-DRCF_USE_PROTOBUF) |
| +ENDIF (LIBRCF_USE_PROTOBUF) |
| + |
| +IF (LIBRCF_USE_JSON) |
| + IF (NOT LibJsonSpirit_FOUND) |
| + FIND_PACKAGE (LibJsonSpirit REQUIRED) |
| + ENDIF (NOT LibJsonSpirit_FOUND) |
| + INCLUDE_DIRECTORIES (${LibJsonSpirit_INCLUDE_DIR}) |
| + LIST (APPEND LIBRCF_LIBRARIES ${LibJsonSpirit_LIBRARIES}) |
| + ADD_DEFINITIONS (-DRCF_USE_JSON) |
| +ENDIF (LIBRCF_USE_JSON) |
| + |
| +IF (LIBRCF_USE_IPV6) |
| + ADD_DEFINITIONS (-DRCF_USE_IPV6) |
| +ENDIF (LIBRCF_USE_IPV6) |
| + |
| +IF (LIBRCF_USE_CUSTOM_ALLOCATOR) |
| + ADD_DEFINITIONS (-DRCF_USE_CUSTOM_ALLOCATOR) |
| +ENDIF (LIBRCF_USE_CUSTOM_ALLOCATOR) |
| + |
| +IF (LIBRCF_BUILD_DLL) |
| + ADD_DEFINITIONS (-DRCF_BUILD_DLL) |
| +ENDIF (LIBRCF_BUILD_DLL) |
| + |
| +IF (LIBRCF_AUTO_INIT_DEINIT) |
| + ADD_DEFINITIONS (-DRCF_AUTO_INIT_DEINIT) |
| +ENDIF (LIBRCF_AUTO_INIT_DEINIT) |
| + |
| +#################################################################### |
| +# SUBDIRECTORY # |
| +#################################################################### |
| +ADD_SUBDIRECTORY (src) |
| + |
| +IF (LIBRCF_BUILD_DEMOS) |
| + # Server |
| + ADD_EXECUTABLE (RcfServer demo/Server.cpp) |
| + TARGET_LINK_LIBRARIES (RcfServer rcf ${LIBRCF_LIBRARIES}) |
| + INSTALL (TARGETS RcfServer DESTINATION ${CMAKE_INSTALL_BINDIR}) |
| + |
| + # Client |
| + ADD_EXECUTABLE (RcfClient demo/Client.cpp) |
| + TARGET_LINK_LIBRARIES (RcfClient rcf ${LIBRCF_LIBRARIES}) |
| + INSTALL (TARGETS RcfClient DESTINATION ${CMAKE_INSTALL_BINDIR}) |
| +ENDIF (LIBRCF_BUILD_DEMOS) |
| + |
| +INSTALL (FILES ${CMAKE_SOURCE_DIR}/FindLibRcf.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules) |
| diff --git a/FindLibRcf.cmake b/FindLibRcf.cmake |
| new file mode 100644 |
| index 0000000..9d7d8cd |
| --- /dev/null |
| +++ b/FindLibRcf.cmake |
| @@ -0,0 +1,63 @@ |
| +# FindLibRcf - Find librcf headers and libraries. |
| +# |
| +# Sample: |
| +# |
| +# SET( LibRcf_USE_STATIC_LIBS OFF ) |
| +# FIND_PACKAGE( LibRcf REQUIRED ) |
| +# IF( LibRcf_FOUND ) |
| +# INCLUDE_DIRECTORIES( ${LibRcf_INCLUDE_DIRS} ) |
| +# TARGET_LINK_LIBRARIES( ... ${LibRcf_LIBRARIES} ) |
| +# ENDIF() |
| +# |
| +# Variables used by this module need to be set before calling find_package |
| +# |
| +# LibRcf_USE_STATIC_LIBS Can be set to ON to force the use of the static |
| +# librcf libraries. Defaults to OFF. |
| +# |
| +# Variables provided by this module: |
| +# |
| +# LibRcf_FOUND Include dir, librcf libraries. |
| +# |
| +# LibRcf_LIBRARIES Link to these to use all the libraries you specified. |
| +# |
| +# LibRcf_INCLUDE_DIRS Include directories. |
| +# |
| +# For each component you specify in find_package(), the following (UPPER-CASE) |
| +# variables are set to pick and choose components instead of just using LibRcf_LIBRARIES: |
| +# |
| +# LIBRCF_FOUND TRUE if librcf was found |
| +# LIBRCF_LIBRARY librcf libraries |
| +# |
| + |
| +# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES |
| +IF(LibRcf_USE_STATIC_LIBS) |
| + SET( _ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) |
| + SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ) |
| +ENDIF() |
| + |
| +# Look for the header files |
| +UNSET(LibRcf_INCLUDE_DIRS CACHE) |
| +FIND_PATH(LibRcf_INCLUDE_DIRS NAMES RCF/RcfClient.hpp) |
| + |
| +# Look for the core library |
| +UNSET(LIBRCF_LIBRARY CACHE) |
| +FIND_LIBRARY(LIBRCF_LIBRARY NAMES rcf) |
| +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibRcf DEFAULT_MSG LIBRCF_LIBRARY LibRcf_INCLUDE_DIRS) |
| +MARK_AS_ADVANCED( |
| + LIBRCF_FOUND |
| + LIBRCF_LIBRARY |
| +) |
| + |
| +# Prepare return values and collectiong more components |
| +SET(LibRcf_FOUND ${LIBRCF_FOUND}) |
| +SET(LibRcf_LIBRARIES ${LIBRCF_LIBRARY}) |
| +MARK_AS_ADVANCED( |
| + LibRcf_FOUND |
| + LibRcf_LIBRARIES |
| + LibRcf_INCLUDE_DIRS |
| +) |
| + |
| +# Restore CMAKE_FIND_LIBRARY_SUFFIXES |
| +IF(LibRcf_USE_STATIC_LIBS) |
| + SET(CMAKE_FIND_LIBRARY_SUFFIXES ${_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES} ) |
| +ENDIF() |
| diff --git a/VERSION.cmake b/VERSION.cmake |
| new file mode 100644 |
| index 0000000..8b4bcdc |
| --- /dev/null |
| +++ b/VERSION.cmake |
| @@ -0,0 +1,21 @@ |
| +# ================================================== |
| +# Versioning |
| +# ========== |
| +# |
| +# MAJOR Major number for this branch. |
| +# |
| +# MINOR The most recent interface number this |
| +# library implements. |
| +# |
| +# COMPATMINOR The latest binary compatible minor number |
| +# this library implements. |
| +# |
| +# PATCH The implementation number of the current interface. |
| +# |
| +# |
| +# - The package VERSION will be MAJOR.MINOR.PATCH. |
| +# |
| + |
| +SET (LIBRCF_SOVERSION_MAJOR "2") |
| +SET (LIBRCF_SOVERSION_MINOR "2") |
| +SET (LIBRCF_SOVERSION_PATCH "0") |
| diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt |
| new file mode 100755 |
| index 0000000..c227901 |
| --- /dev/null |
| +++ b/src/CMakeLists.txt |
| @@ -0,0 +1,25 @@ |
| +IF (NOT LIBRCF_BUILD_SHARED_LIBS) |
| + ADD_LIBRARY (rcf STATIC RCF/RCF.cpp) |
| +ELSE (NOT LIBRCF_BUILD_SHARED_LIBS) |
| + ADD_LIBRARY (rcf SHARED RCF/RCF.cpp) |
| + TARGET_LINK_LIBRARIES (rcf ${LIBRCF_LIBRARIES}) |
| + SET_TARGET_PROPERTIES (rcf PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS}) |
| + SET_TARGET_PROPERTIES (rcf PROPERTIES VERSION ${LIBRCF_SOVERSION_MAJOR}.${LIBRCF_SOVERSION_MINOR}.${LIBRCF_SOVERSION_PATCH}) |
| +ENDIF (NOT LIBRCF_BUILD_SHARED_LIBS) |
| + |
| +SET_TARGET_PROPERTIES (rcf PROPERTIES PROJECT_LABEL "RCF Library") |
| +SET_TARGET_PROPERTIES (rcf PROPERTIES OUTPUT_NAME "rcf") |
| +SET_TARGET_PROPERTIES (rcf PROPERTIES SOVERSION ${LIBRCF_SOVERSION_MAJOR}) |
| +SET_TARGET_PROPERTIES (rcf PROPERTIES INSTALL_NAME_DIR ${CMAKE_INSTALL_LIBDIR}) |
| + |
| +INSTALL (DIRECTORY "${CMAKE_SOURCE_DIR}/include/RCF" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| +INSTALL (DIRECTORY "${CMAKE_SOURCE_DIR}/include/SF" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| +INSTALL (TARGETS rcf LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| + |
| +IF (LIBRCF_BUILD_STATIC_LIBS AND LIBRCF_BUILD_SHARED_LIBS) |
| + ADD_LIBRARY (rcf_static STATIC RCF/RCF.cpp) |
| + SET_TARGET_PROPERTIES (rcf_static PROPERTIES PROJECT_LABEL "RCF Static Library") |
| + SET_TARGET_PROPERTIES (rcf_static PROPERTIES OUTPUT_NAME "rcf") |
| + SET_TARGET_PROPERTIES (rcf_static PROPERTIES SOVERSION ${LIBRCF_SOVERSION_MAJOR}) |
| + INSTALL (TARGETS rcf_static LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| +ENDIF (LIBRCF_BUILD_STATIC_LIBS AND LIBRCF_BUILD_SHARED_LIBS) |
| -- |
| 1.9.1 |
| |