11cmake_minimum_required ( VERSION 3.1.0 FATAL_ERROR )
22
33project ( "restbed" VERSION 4.7.0 LANGUAGES CXX )
4- message ( "Copyright 2013-2018, Corvusoft Ltd, All Rights Reserved." )
4+ message ( " " )
5+ message ( "##############################################################" )
6+ message ( "# #" )
7+ message ( "# Copyright 2013-2020, Corvusoft Ltd, All Rights Reserved. #" )
8+ message ( "# #" )
9+ message ( "# Restbed is dual-licensed requiring commerical entities #" )
10+ message ( "# to acquire a Corvusoft Permissive License, Contact #" )
11+ message ( "# sales@corvusoft.co.uk for details. #" )
12+ message ( "# #" )
13+ message ( "##############################################################" )
14+ message ( " " )
515
616#
717# Build Options
818#
19+ option ( BUILD_TESTS "Build unit tests." ON )
920option ( BUILD_SSL "Build secure socket layer support." ON )
10- option ( BUILD_TESTS "Build unit tests." ON )
11- option ( BUILD_STATIC "Build static library." ON )
12- option ( BUILD_SHARED "Build shared library." OFF )
1321
1422#
1523# Configuration
1624#
17- set ( CMAKE_CXX_STANDARD 11 )
25+ set ( CMAKE_CXX_STANDARD 14 )
1826set ( INCLUDE_DIR "${PROJECT_SOURCE_DIR} /source" )
1927set ( SOURCE_DIR "${PROJECT_SOURCE_DIR} /source/corvusoft/${PROJECT_NAME} " )
2028
2129if ( NOT DEFINED CMAKE_INSTALL_LIBDIR )
22- set ( CMAKE_INSTALL_LIBDIR lib )
30+ set ( CMAKE_INSTALL_LIBDIR "library" )
2331endif ( )
2432
2533if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
2634 set ( CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR} /distribution" CACHE PATH "Install path prefix" FORCE )
2735endif ( )
2836
2937if ( ${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC )
30- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_WIN32_WINNT=0x0601 /W4 /wd4068 /wd4702" )
38+ set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_WIN32_WINNT=0x0601 /W4 /wd4068 /wd4702 /wd4996 " )
3139endif ( )
3240
3341if ( NOT WIN32 )
34- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Weffc++ -pedantic -Wno-unknown-pragmas" )
42+ set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Weffc++ -pedantic -Wno-unknown-pragmas -Wno-deprecated-declarations " )
3543endif ( )
3644
3745if ( UNIX AND NOT APPLE )
@@ -45,46 +53,42 @@ endif ( )
4553set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR} /cmake" )
4654
4755find_package ( asio REQUIRED )
56+
4857if ( BUILD_SSL )
4958 find_package ( openssl REQUIRED )
5059endif ( )
5160
52- include_directories ( ${INCLUDE_DIR} SYSTEM ${asio_INCLUDE} ${kashmir_INCLUDE} ${ ssl_INCLUDE} )
61+ include_directories ( ${INCLUDE_DIR} SYSTEM ${asio_INCLUDE} ${ssl_INCLUDE} )
5362
5463#
5564# Build
5665#
5766file ( GLOB_RECURSE MANIFEST "${SOURCE_DIR} /*.cpp" )
5867
59- if ( BUILD_STATIC )
60- set ( STATIC_LIBRARY_NAME "${PROJECT_NAME} -static" )
61- add_library ( ${STATIC_LIBRARY_NAME} STATIC ${MANIFEST} )
62- set_property ( TARGET ${STATIC_LIBRARY_NAME} PROPERTY CXX_STANDARD 11 )
63- set_property ( TARGET ${STATIC_LIBRARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON )
64- set_target_properties ( ${STATIC_LIBRARY_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME} )
65- if ( BUILD_SSL )
66- target_link_libraries ( ${STATIC_LIBRARY_NAME} LINK_PRIVATE ${ssl_LIBRARY_STATIC} ${crypto_LIBRARY_STATIC} ${CMAKE_DL_LIBS} )
67- else ( )
68- target_link_libraries ( ${STATIC_LIBRARY_NAME} ${CMAKE_DL_LIBS} )
69- endif ( )
70- endif ( )
68+ set ( STATIC_LIBRARY_NAME "${PROJECT_NAME} -static" )
69+ add_library ( ${STATIC_LIBRARY_NAME} STATIC ${MANIFEST} )
70+ set_property ( TARGET ${STATIC_LIBRARY_NAME} PROPERTY CXX_STANDARD 14 )
71+ set_property ( TARGET ${STATIC_LIBRARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON )
72+ set_target_properties ( ${STATIC_LIBRARY_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME} )
7173
72- if ( BUILD_SHARED )
73- set ( SHARED_LIBRARY_NAME "${PROJECT_NAME} -shared" )
74- add_library ( ${SHARED_LIBRARY_NAME} SHARED ${MANIFEST} )
75- set_property ( TARGET ${SHARED_LIBRARY_NAME} PROPERTY CXX_STANDARD 11 )
76- set_property ( TARGET ${SHARED_LIBRARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON )
77- set_target_properties ( ${SHARED_LIBRARY_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME} )
78- set_target_properties ( ${SHARED_LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR} VERSION ${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR} )
79- if ( BUILD_SSL )
80- target_link_libraries ( ${SHARED_LIBRARY_NAME} LINK_PRIVATE ${ssl_LIBRARY_SHARED} ${crypto_LIBRARY_SHARED} )
81- else ( )
82- target_link_libraries ( ${SHARED_LIBRARY_NAME} )
83- endif ( )
74+ set ( SHARED_LIBRARY_NAME "${PROJECT_NAME} -shared" )
75+ add_library ( ${SHARED_LIBRARY_NAME} SHARED ${MANIFEST} )
76+ set_property ( TARGET ${SHARED_LIBRARY_NAME} PROPERTY CXX_STANDARD 14 )
77+ set_property ( TARGET ${SHARED_LIBRARY_NAME} PROPERTY CXX_STANDARD_REQUIRED ON )
78+ set_target_properties ( ${SHARED_LIBRARY_NAME} PROPERTIES OUTPUT_NAME ${PROJECT_NAME} )
79+ set_target_properties ( ${SHARED_LIBRARY_NAME} PROPERTIES SOVERSION ${PROJECT_VERSION_MAJOR} VERSION ${PROJECT_VERSION_MAJOR} .${PROJECT_VERSION_MINOR} )
80+
81+ if ( BUILD_SSL )
82+ target_link_libraries ( ${SHARED_LIBRARY_NAME} LINK_PRIVATE ${ssl_LIBRARY_SHARED} ${crypto_LIBRARY_SHARED} )
83+ target_link_libraries ( ${STATIC_LIBRARY_NAME} LINK_PRIVATE ${ssl_LIBRARY_STATIC} ${crypto_LIBRARY_STATIC} ${CMAKE_DL_LIBS} )
84+ else ( )
85+ target_link_libraries ( ${SHARED_LIBRARY_NAME} )
86+ target_link_libraries ( ${STATIC_LIBRARY_NAME} ${CMAKE_DL_LIBS} )
8487endif ( )
8588
8689if ( BUILD_TESTS )
8790 find_package ( catch REQUIRED )
91+
8892 enable_testing ( )
8993 add_subdirectory ( "${PROJECT_SOURCE_DIR} /test/unit" )
9094 add_subdirectory ( "${PROJECT_SOURCE_DIR} /test/feature" )
@@ -99,9 +103,5 @@ file( GLOB ARTIFACTS "${SOURCE_DIR}/*.hpp" )
99103
100104install ( FILES "${INCLUDE_DIR} /${PROJECT_NAME} " DESTINATION "${CMAKE_INSTALL_PREFIX} /include" )
101105install ( FILES ${ARTIFACTS} DESTINATION "${CMAKE_INSTALL_PREFIX} /include/corvusoft/${PROJECT_NAME} " )
102- if ( BUILD_STATIC )
103- install ( TARGETS ${STATIC_LIBRARY_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library )
104- endif ( )
105- if ( BUILD_SHARED )
106- install ( TARGETS ${SHARED_LIBRARY_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library )
107- endif ( )
106+ install ( TARGETS ${STATIC_LIBRARY_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library )
107+ install ( TARGETS ${SHARED_LIBRARY_NAME} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT library )
0 commit comments