Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 1 | From 613297214d78ee10111e74e90e025166ebbcad9f Mon Sep 17 00:00:00 2001 |
| 2 | From: Peter Liu <peter.x.liu@external.atlascopco.com> |
| 3 | Date: Sun, 5 Mar 2017 16:15:40 +0100 |
| 4 | Subject: [PATCH] Add CMake build files |
| 5 | |
| 6 | Upstream-Status: Pending |
| 7 | |
| 8 | Signed-off-by: Peter Liu <peter.x.liu@external.atlascopco.com> |
| 9 | --- |
| 10 | CMakeLists.txt | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| 11 | FindLibRcf.cmake | 63 +++++++++++++++++++++++ |
| 12 | VERSION.cmake | 21 ++++++++ |
| 13 | src/CMakeLists.txt | 25 +++++++++ |
| 14 | 4 files changed, 256 insertions(+) |
| 15 | create mode 100644 CMakeLists.txt |
| 16 | create mode 100644 FindLibRcf.cmake |
| 17 | create mode 100644 VERSION.cmake |
| 18 | create mode 100755 src/CMakeLists.txt |
| 19 | |
| 20 | diff --git a/CMakeLists.txt b/CMakeLists.txt |
| 21 | new file mode 100644 |
| 22 | index 0000000..f6e24be |
| 23 | --- /dev/null |
| 24 | +++ b/CMakeLists.txt |
| 25 | @@ -0,0 +1,147 @@ |
| 26 | +PROJECT (librcf) |
| 27 | + |
| 28 | +CMAKE_MINIMUM_REQUIRED (VERSION 2.6) |
| 29 | + |
| 30 | +#################################################################### |
| 31 | +# OPTION # |
| 32 | +#################################################################### |
| 33 | +OPTION (LIBRCF_USE_OPENSSL "Build with OpenSSL support?" OFF) |
| 34 | +OPTION (LIBRCF_OPENSSL_STATIC "Enable static linking to OpenSSL?" OFF) |
| 35 | +OPTION (LIBRCF_USE_ZLIB "Build with zlib support?" OFF) |
| 36 | +OPTION (LIBRCF_ZLIB_STATIC "Enable static linking to zlib?" OFF) |
| 37 | +OPTION (LIBRCF_USE_SF_SERIALIZATION "Build with SF serialization support?" ON) |
| 38 | +OPTION (LIBRCF_USE_BOOST_SERIALIZATION "Build with Boost.Serialization support?" OFF) |
| 39 | +OPTION (LIBRCF_USE_BOOST_FILESYSTEM "Build with Boost.Filesystem support (required for file transfer support)?" OFF) |
| 40 | +OPTION (LIBRCF_USE_BOOST_ASIO "Build with Boost asio support?" ON) |
| 41 | +OPTION (LIBRCF_USE_PROTOBUF "Build with Protocol Buffer support?" OFF) |
| 42 | +OPTION (LIBRCF_USE_JSON "Build with JSON Spirit (required for JSON-RPC support)?" OFF) |
| 43 | +OPTION (LIBRCF_USE_IPV6 "Build with IPv6 support?" OFF) |
| 44 | +OPTION (LIBRCF_USE_CUSTOM_ALLOCATOR "Build with custom allocator support?" OFF) |
| 45 | +OPTION (LIBRCF_BUILD_DLL "Build a DLL exporting RCF?" OFF) |
| 46 | +OPTION (LIBRCF_AUTO_INIT_DEINIT "Enable automatic RCF initialization and deinitialization?" OFF) |
| 47 | +OPTION (LIBRCF_BUILD_STATIC_LIBS "Build the static library?" ON) |
| 48 | +OPTION (LIBRCF_BUILD_SHARED_LIBS "Build the shared library?" ON) |
| 49 | +OPTION (LIBRCF_BUILD_DEMOS "Build demo programs?" ON) |
| 50 | + |
| 51 | +#################################################################### |
| 52 | +# CONFIGURATION # |
| 53 | +#################################################################### |
| 54 | +INCLUDE (${CMAKE_SOURCE_DIR}/VERSION.cmake) |
| 55 | + |
Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 56 | +SET (LIBRCF_LIBRARIES "-lpthread -ldl -latomic") |
Brad Bishop | 6e60e8b | 2018-02-01 10:27:11 -0500 | [diff] [blame] | 57 | +INCLUDE_DIRECTORIES (${CMAKE_SOURCE_DIR}/include) |
| 58 | + |
| 59 | +IF (LIBRCF_USE_OPENSSL) |
| 60 | + IF (NOT OPENSSL_FOUND) |
| 61 | + FIND_PACKAGE (OpenSSL REQUIRED) |
| 62 | + ENDIF (NOT OPENSSL_FOUND) |
| 63 | + INCLUDE_DIRECTORIES (${OPENSSL_INCLUDE_DIR}) |
| 64 | + ADD_DEFINITIONS (-DRCF_USE_OPENSSL) |
| 65 | +ENDIF (LIBRCF_USE_OPENSSL) |
| 66 | + |
| 67 | +IF (LIBRCF_OPENSSL_STATIC) |
| 68 | + LIST (APPEND LIBRCF_LIBRARIES ${OPENSSL_LIBRARIES}) |
| 69 | + ADD_DEFINITIONS (-DRCF_OPENSSL_STATIC) |
| 70 | +ENDIF (LIBRCF_OPENSSL_STATIC) |
| 71 | + |
| 72 | +IF (LIBRCF_USE_ZLIB) |
| 73 | + IF (NOT ZLIB_FOUND) |
| 74 | + FIND_PACKAGE (ZLIB REQUIRED) |
| 75 | + ENDIF (NOT ZLIB_FOUND) |
| 76 | + INCLUDE_DIRECTORIES (${ZLIB_INCLUDE_DIR}) |
| 77 | + ADD_DEFINITIONS (-DRCF_USE_ZLIB) |
| 78 | +ENDIF (LIBRCF_USE_ZLIB) |
| 79 | + |
| 80 | +IF (LIBRCF_ZLIB_STATIC) |
| 81 | + LIST (APPEND LIBRCF_LIBRARIES ${ZLIB_LIBRARIES}) |
| 82 | + ADD_DEFINITIONS (-DRCF_ZLIB_STATIC) |
| 83 | +ENDIF (LIBRCF_ZLIB_STATIC) |
| 84 | + |
| 85 | +IF (LIBRCF_USE_SF_SERIALIZATION) |
| 86 | + IF (NOT Boost_SYSTEM_FOUND) |
| 87 | + FIND_PACKAGE (Boost REQUIRED COMPONENTS system) |
| 88 | + ENDIF (NOT Boost_SYSTEM_FOUND) |
| 89 | + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| 90 | + LIST (APPEND LIBRCF_LIBRARIES ${Boost_SYSTEM_LIBRARY}) |
| 91 | + ADD_DEFINITIONS (-DRCF_USE_SF_SERIALIZATION) |
| 92 | +ENDIF (LIBRCF_USE_SF_SERIALIZATION) |
| 93 | + |
| 94 | +IF (LIBRCF_USE_BOOST_SERIALIZATION) |
| 95 | + IF (NOT Boost_SERIALIZATION_FOUND) |
| 96 | + FIND_PACKAGE (Boost REQUIRED COMPONENTS serialization) |
| 97 | + ENDIF (NOT Boost_SERIALIZATION_FOUND) |
| 98 | + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| 99 | + LIST (APPEND LIBRCF_LIBRARIES ${Boost_SERIALIZATION_LIBRARY}) |
| 100 | + ADD_DEFINITIONS (-DRCF_USE_BOOST_SERIALIZATION) |
| 101 | +ENDIF (LIBRCF_USE_BOOST_SERIALIZATION) |
| 102 | + |
| 103 | +IF (LIBRCF_USE_BOOST_FILESYSTEM) |
| 104 | + IF (NOT Boost_FILESYSTEM_FOUND) |
| 105 | + FIND_PACKAGE (Boost REQUIRED COMPONENTS filesystem system) |
| 106 | + ENDIF (NOT Boost_FILESYSTEM_FOUND) |
| 107 | + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| 108 | + LIST (APPEND LIBRCF_LIBRARIES ${Boost_FILESYSTEM_LIBRARY}) |
| 109 | + LIST (APPEND LIBRCF_LIBRARIES ${Boost_SYSTEM_LIBRARY}) |
| 110 | + ADD_DEFINITIONS (-DRCF_USE_BOOST_FILESYSTEM) |
| 111 | +ENDIF (LIBRCF_USE_BOOST_FILESYSTEM) |
| 112 | + |
| 113 | +IF (LIBRCF_USE_BOOST_ASIO) |
| 114 | + IF (NOT Boost_FOUND) |
| 115 | + FIND_PACKAGE (Boost REQUIRED) |
| 116 | + ENDIF (NOT Boost_FOUND) |
| 117 | + INCLUDE_DIRECTORIES (${Boost_INCLUDE_DIR}) |
| 118 | + ADD_DEFINITIONS (-DRCF_USE_BOOST_ASIO) |
| 119 | +ENDIF (LIBRCF_USE_BOOST_ASIO) |
| 120 | + |
| 121 | +IF (LIBRCF_USE_PROTOBUF) |
| 122 | + IF(NOT Protobuf_FOUND) |
| 123 | + FIND_PACKAGE (Protobuf REQUIRED) |
| 124 | + ENDIF (NOT Protobuf_FOUND) |
| 125 | + INCLUDE_DIRECTORIES (${Protobuf_INCLUDE_DIR}) |
| 126 | + LIST (APPEND LIBRCF_LIBRARIES ${Protobuf_LIBRARIES}) |
| 127 | + ADD_DEFINITIONS (-DRCF_USE_PROTOBUF) |
| 128 | +ENDIF (LIBRCF_USE_PROTOBUF) |
| 129 | + |
| 130 | +IF (LIBRCF_USE_JSON) |
| 131 | + IF (NOT LibJsonSpirit_FOUND) |
| 132 | + FIND_PACKAGE (LibJsonSpirit REQUIRED) |
| 133 | + ENDIF (NOT LibJsonSpirit_FOUND) |
| 134 | + INCLUDE_DIRECTORIES (${LibJsonSpirit_INCLUDE_DIR}) |
| 135 | + LIST (APPEND LIBRCF_LIBRARIES ${LibJsonSpirit_LIBRARIES}) |
| 136 | + ADD_DEFINITIONS (-DRCF_USE_JSON) |
| 137 | +ENDIF (LIBRCF_USE_JSON) |
| 138 | + |
| 139 | +IF (LIBRCF_USE_IPV6) |
| 140 | + ADD_DEFINITIONS (-DRCF_USE_IPV6) |
| 141 | +ENDIF (LIBRCF_USE_IPV6) |
| 142 | + |
| 143 | +IF (LIBRCF_USE_CUSTOM_ALLOCATOR) |
| 144 | + ADD_DEFINITIONS (-DRCF_USE_CUSTOM_ALLOCATOR) |
| 145 | +ENDIF (LIBRCF_USE_CUSTOM_ALLOCATOR) |
| 146 | + |
| 147 | +IF (LIBRCF_BUILD_DLL) |
| 148 | + ADD_DEFINITIONS (-DRCF_BUILD_DLL) |
| 149 | +ENDIF (LIBRCF_BUILD_DLL) |
| 150 | + |
| 151 | +IF (LIBRCF_AUTO_INIT_DEINIT) |
| 152 | + ADD_DEFINITIONS (-DRCF_AUTO_INIT_DEINIT) |
| 153 | +ENDIF (LIBRCF_AUTO_INIT_DEINIT) |
| 154 | + |
| 155 | +#################################################################### |
| 156 | +# SUBDIRECTORY # |
| 157 | +#################################################################### |
| 158 | +ADD_SUBDIRECTORY (src) |
| 159 | + |
| 160 | +IF (LIBRCF_BUILD_DEMOS) |
| 161 | + # Server |
| 162 | + ADD_EXECUTABLE (RcfServer demo/Server.cpp) |
| 163 | + TARGET_LINK_LIBRARIES (RcfServer rcf ${LIBRCF_LIBRARIES}) |
| 164 | + INSTALL (TARGETS RcfServer DESTINATION ${CMAKE_INSTALL_BINDIR}) |
| 165 | + |
| 166 | + # Client |
| 167 | + ADD_EXECUTABLE (RcfClient demo/Client.cpp) |
| 168 | + TARGET_LINK_LIBRARIES (RcfClient rcf ${LIBRCF_LIBRARIES}) |
| 169 | + INSTALL (TARGETS RcfClient DESTINATION ${CMAKE_INSTALL_BINDIR}) |
| 170 | +ENDIF (LIBRCF_BUILD_DEMOS) |
| 171 | + |
| 172 | +INSTALL (FILES ${CMAKE_SOURCE_DIR}/FindLibRcf.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/cmake/Modules) |
| 173 | diff --git a/FindLibRcf.cmake b/FindLibRcf.cmake |
| 174 | new file mode 100644 |
| 175 | index 0000000..9d7d8cd |
| 176 | --- /dev/null |
| 177 | +++ b/FindLibRcf.cmake |
| 178 | @@ -0,0 +1,63 @@ |
| 179 | +# FindLibRcf - Find librcf headers and libraries. |
| 180 | +# |
| 181 | +# Sample: |
| 182 | +# |
| 183 | +# SET( LibRcf_USE_STATIC_LIBS OFF ) |
| 184 | +# FIND_PACKAGE( LibRcf REQUIRED ) |
| 185 | +# IF( LibRcf_FOUND ) |
| 186 | +# INCLUDE_DIRECTORIES( ${LibRcf_INCLUDE_DIRS} ) |
| 187 | +# TARGET_LINK_LIBRARIES( ... ${LibRcf_LIBRARIES} ) |
| 188 | +# ENDIF() |
| 189 | +# |
| 190 | +# Variables used by this module need to be set before calling find_package |
| 191 | +# |
| 192 | +# LibRcf_USE_STATIC_LIBS Can be set to ON to force the use of the static |
| 193 | +# librcf libraries. Defaults to OFF. |
| 194 | +# |
| 195 | +# Variables provided by this module: |
| 196 | +# |
| 197 | +# LibRcf_FOUND Include dir, librcf libraries. |
| 198 | +# |
| 199 | +# LibRcf_LIBRARIES Link to these to use all the libraries you specified. |
| 200 | +# |
| 201 | +# LibRcf_INCLUDE_DIRS Include directories. |
| 202 | +# |
| 203 | +# For each component you specify in find_package(), the following (UPPER-CASE) |
| 204 | +# variables are set to pick and choose components instead of just using LibRcf_LIBRARIES: |
| 205 | +# |
| 206 | +# LIBRCF_FOUND TRUE if librcf was found |
| 207 | +# LIBRCF_LIBRARY librcf libraries |
| 208 | +# |
| 209 | + |
| 210 | +# Support preference of static libs by adjusting CMAKE_FIND_LIBRARY_SUFFIXES |
| 211 | +IF(LibRcf_USE_STATIC_LIBS) |
| 212 | + SET( _ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) |
| 213 | + SET(CMAKE_FIND_LIBRARY_SUFFIXES .a ) |
| 214 | +ENDIF() |
| 215 | + |
| 216 | +# Look for the header files |
| 217 | +UNSET(LibRcf_INCLUDE_DIRS CACHE) |
| 218 | +FIND_PATH(LibRcf_INCLUDE_DIRS NAMES RCF/RcfClient.hpp) |
| 219 | + |
| 220 | +# Look for the core library |
| 221 | +UNSET(LIBRCF_LIBRARY CACHE) |
| 222 | +FIND_LIBRARY(LIBRCF_LIBRARY NAMES rcf) |
| 223 | +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LibRcf DEFAULT_MSG LIBRCF_LIBRARY LibRcf_INCLUDE_DIRS) |
| 224 | +MARK_AS_ADVANCED( |
| 225 | + LIBRCF_FOUND |
| 226 | + LIBRCF_LIBRARY |
| 227 | +) |
| 228 | + |
| 229 | +# Prepare return values and collectiong more components |
| 230 | +SET(LibRcf_FOUND ${LIBRCF_FOUND}) |
| 231 | +SET(LibRcf_LIBRARIES ${LIBRCF_LIBRARY}) |
| 232 | +MARK_AS_ADVANCED( |
| 233 | + LibRcf_FOUND |
| 234 | + LibRcf_LIBRARIES |
| 235 | + LibRcf_INCLUDE_DIRS |
| 236 | +) |
| 237 | + |
| 238 | +# Restore CMAKE_FIND_LIBRARY_SUFFIXES |
| 239 | +IF(LibRcf_USE_STATIC_LIBS) |
| 240 | + SET(CMAKE_FIND_LIBRARY_SUFFIXES ${_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES} ) |
| 241 | +ENDIF() |
| 242 | diff --git a/VERSION.cmake b/VERSION.cmake |
| 243 | new file mode 100644 |
| 244 | index 0000000..8b4bcdc |
| 245 | --- /dev/null |
| 246 | +++ b/VERSION.cmake |
| 247 | @@ -0,0 +1,21 @@ |
| 248 | +# ================================================== |
| 249 | +# Versioning |
| 250 | +# ========== |
| 251 | +# |
| 252 | +# MAJOR Major number for this branch. |
| 253 | +# |
| 254 | +# MINOR The most recent interface number this |
| 255 | +# library implements. |
| 256 | +# |
| 257 | +# COMPATMINOR The latest binary compatible minor number |
| 258 | +# this library implements. |
| 259 | +# |
| 260 | +# PATCH The implementation number of the current interface. |
| 261 | +# |
| 262 | +# |
| 263 | +# - The package VERSION will be MAJOR.MINOR.PATCH. |
| 264 | +# |
| 265 | + |
| 266 | +SET (LIBRCF_SOVERSION_MAJOR "2") |
| 267 | +SET (LIBRCF_SOVERSION_MINOR "2") |
| 268 | +SET (LIBRCF_SOVERSION_PATCH "0") |
| 269 | diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt |
| 270 | new file mode 100755 |
| 271 | index 0000000..c227901 |
| 272 | --- /dev/null |
| 273 | +++ b/src/CMakeLists.txt |
| 274 | @@ -0,0 +1,25 @@ |
| 275 | +IF (NOT LIBRCF_BUILD_SHARED_LIBS) |
| 276 | + ADD_LIBRARY (rcf STATIC RCF/RCF.cpp) |
| 277 | +ELSE (NOT LIBRCF_BUILD_SHARED_LIBS) |
| 278 | + ADD_LIBRARY (rcf SHARED RCF/RCF.cpp) |
| 279 | + TARGET_LINK_LIBRARIES (rcf ${LIBRCF_LIBRARIES}) |
| 280 | + SET_TARGET_PROPERTIES (rcf PROPERTIES COMPILE_FLAGS ${CMAKE_SHARED_LIBRARY_C_FLAGS}) |
| 281 | + SET_TARGET_PROPERTIES (rcf PROPERTIES VERSION ${LIBRCF_SOVERSION_MAJOR}.${LIBRCF_SOVERSION_MINOR}.${LIBRCF_SOVERSION_PATCH}) |
| 282 | +ENDIF (NOT LIBRCF_BUILD_SHARED_LIBS) |
| 283 | + |
| 284 | +SET_TARGET_PROPERTIES (rcf PROPERTIES PROJECT_LABEL "RCF Library") |
| 285 | +SET_TARGET_PROPERTIES (rcf PROPERTIES OUTPUT_NAME "rcf") |
| 286 | +SET_TARGET_PROPERTIES (rcf PROPERTIES SOVERSION ${LIBRCF_SOVERSION_MAJOR}) |
| 287 | +SET_TARGET_PROPERTIES (rcf PROPERTIES INSTALL_NAME_DIR ${CMAKE_INSTALL_LIBDIR}) |
| 288 | + |
| 289 | +INSTALL (DIRECTORY "${CMAKE_SOURCE_DIR}/include/RCF" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 290 | +INSTALL (DIRECTORY "${CMAKE_SOURCE_DIR}/include/SF" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
| 291 | +INSTALL (TARGETS rcf LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 292 | + |
| 293 | +IF (LIBRCF_BUILD_STATIC_LIBS AND LIBRCF_BUILD_SHARED_LIBS) |
| 294 | + ADD_LIBRARY (rcf_static STATIC RCF/RCF.cpp) |
| 295 | + SET_TARGET_PROPERTIES (rcf_static PROPERTIES PROJECT_LABEL "RCF Static Library") |
| 296 | + SET_TARGET_PROPERTIES (rcf_static PROPERTIES OUTPUT_NAME "rcf") |
| 297 | + SET_TARGET_PROPERTIES (rcf_static PROPERTIES SOVERSION ${LIBRCF_SOVERSION_MAJOR}) |
| 298 | + INSTALL (TARGETS rcf_static LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) |
| 299 | +ENDIF (LIBRCF_BUILD_STATIC_LIBS AND LIBRCF_BUILD_SHARED_LIBS) |
| 300 | -- |
| 301 | 1.9.1 |
| 302 | |