Skip to content

Commit 03f1f23

Browse files
Merge pull request #409 from Corvusoft/4.7
4.7 Release Candidate One.
2 parents 68b302e + 3f3da08 commit 03f1f23

72 files changed

Lines changed: 438 additions & 311 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CMakeLists.txt

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,45 @@
11
cmake_minimum_required( VERSION 3.1.0 FATAL_ERROR )
22

33
project( "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 )
920
option( 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 )
1826
set( INCLUDE_DIR "${PROJECT_SOURCE_DIR}/source" )
1927
set( SOURCE_DIR "${PROJECT_SOURCE_DIR}/source/corvusoft/${PROJECT_NAME}" )
2028

2129
if ( NOT DEFINED CMAKE_INSTALL_LIBDIR )
22-
set( CMAKE_INSTALL_LIBDIR lib )
30+
set( CMAKE_INSTALL_LIBDIR "library")
2331
endif ( )
2432

2533
if ( CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT )
2634
set( CMAKE_INSTALL_PREFIX "${PROJECT_SOURCE_DIR}/distribution" CACHE PATH "Install path prefix" FORCE )
2735
endif ( )
2836

2937
if( ${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" )
3139
endif ( )
3240

3341
if( 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" )
3543
endif ( )
3644

3745
if ( UNIX AND NOT APPLE )
@@ -45,46 +53,42 @@ endif ( )
4553
set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake" )
4654

4755
find_package( asio REQUIRED )
56+
4857
if ( BUILD_SSL )
4958
find_package( openssl REQUIRED )
5059
endif ( )
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
#
5766
file( 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} )
8487
endif ( )
8588

8689
if ( 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

100104
install( FILES "${INCLUDE_DIR}/${PROJECT_NAME}" DESTINATION "${CMAKE_INSTALL_PREFIX}/include" )
101105
install( 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 )

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright 2013-2018 Corvusoft Limited, United Kingdom.
1+
Copyright 2013-2020 Corvusoft Limited, United Kingdom.
22
All rights reserved.
33

44
Everyone is permitted to copy and distribute verbatim copies of this

README.md

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ More in-depth examples can be found [here](https://github.com/Corvusoft/restbed/
8989
License
9090
-------
9191
92-
© 2013-2019 Corvusoft Limited, United Kingdom. All rights reserved.
92+
© 2013-2020 Corvusoft Limited, United Kingdom. All rights reserved.
9393
9494
The Restbed framework is dual licensed; See [LICENSE](LICENSE) for full details.
9595
@@ -98,21 +98,38 @@ Support
9898
9999
Please contact sales@corvusoft.co.uk, for support and licensing options including bespoke software development, testing, design consultation, training, mentoring and code review.
100100
101-
Build
101+
Please submit all enhancements, proposals, and defects via the [issue](http://github.com/corvusoft/restbed/issues) tracker; Alternatively ask a question on [StackOverflow](http://stackoverflow.com/questions/ask) tagged [#restbed](http://stackoverflow.com/questions/tagged/restbed).
102+
103+
Build
102104
-----
103105
104106
```bash
105107
git clone --recursive https://github.com/corvusoft/restbed.git
106108
mkdir restbed/build
107109
cd restbed/build
108-
cmake [-DBUILD_SSL=NO] ..
110+
cmake [-DBUILD_SSL=NO] [-DBUILD_TESTS=NO] ..
109111
make install
110112
make test
111113
```
112114

113-
You will now find all required components installed in the distribution folder.
115+
You will now find all required components installed in the distribution sub-folder.
114116

115-
Please submit all enhancements, proposals, and defects via the [issue](http://github.com/corvusoft/restbed/issues) tracker; Alternatively ask a question on [StackOverflow](http://stackoverflow.com/questions/ask) tagged [#restbed](http://stackoverflow.com/questions/tagged/restbed).
117+
Building with external libraries
118+
--------------------------------
119+
120+
If you wish to build with external libraries (OpenSSL, ASIO).
121+
122+
```bash
123+
git clone https://github.com/corvusoft/restbed.git
124+
mkdir restbed/build
125+
cd restbed/build
126+
cmake [-DBUILD_SSL=NO] [-DBUILD_TESTS=NO] ..
127+
make install
128+
make test
129+
```
130+
131+
Windows Build Instructions
132+
--------------------------
116133

117134
For Microsoft Visual Studio instructions please see feature [#17](https://github.com/Corvusoft/restbed/issues/17).
118135

@@ -128,7 +145,7 @@ Minimum Requirements
128145

129146
| Resource | Requirement |
130147
|:--------:|:-----------------------------------------------:|
131-
| Compiler | C++11 compliant or above |
148+
| Compiler | C++14 compliant or above |
132149
| OS | BSD, Linux, Mac OSX, Windows, Raspbian |
133150

134151
Road Map

cmake/Findcatch.cmake

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
find_path( catch_INCLUDE catch.hpp HINTS "${PROJECT_SOURCE_DIR}/dependency/catch/single_include" "/usr/include/catch2/single_include" "/usr/local/include/catch2/single_include" "/opt/local/include/catch2/single_include" )
1+
find_path( catch_INCLUDE catch.hpp HINTS "${PROJECT_SOURCE_DIR}/dependency/catch/single_include/catch2" "/usr/include/catch2/single_include" "/usr/include/catch2" "/usr/local/include/catch2/single_include" "/usr/local/include/catch2" "/opt/local/include/catch2/single_include" "/opt/local/include/catch2" )
22

3-
if ( catch_INCLUDE )
4-
set( CATCH_FOUND TRUE )
5-
6-
message( STATUS "Found Catch include at: ${catch_INCLUDE}" )
7-
else ( )
8-
message( FATAL_ERROR "Failed to locate Catch dependency." )
9-
endif ( )
3+
include(FindPackageHandleStandardArgs)
4+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(catch DEFAULT_MSG catch_INCLUDE)

cmake/Findopenssl.cmake

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
1-
find_library( ssl_LIBRARY_STATIC libssl.a ssleay32.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
2-
find_library( crypto_LIBRARY_STATIC libcrypto.a libeay32.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
1+
find_library( ssl_LIBRARY_STATIC libssl.a libssl_static.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
2+
find_library( crypto_LIBRARY_STATIC libcrypto.a libcrypto_static.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
33

4-
find_library( ssl_LIBRARY_SHARED libssl.so libssl.dylib ssleay32.dll HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
5-
find_library( crypto_LIBRARY_SHARED libcrypto.so libcrypto.dylib libeay32.dll HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/out32dll" "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
4+
find_library( ssl_LIBRARY_SHARED libssl.so libssl.dylib libssl.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
5+
find_library( crypto_LIBRARY_SHARED libcrypto.so libcrypto.dylib libcrypto.lib HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl" "/usr/local/opt/openssl/lib" "/usr/lib" "/usr/local/lib" "/opt/local/lib" )
66

7-
find_path( ssl_INCLUDE openssl/ssl.h HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/inc32" "${PROJECT_SOURCE_DIR}/dependency/openssl/include" "/usr/local/opt/openssl/include" "/usr/include" "/usr/local/include" "/opt/local/include" )
7+
find_path( ssl_INCLUDE openssl/ssl.h HINTS "${PROJECT_SOURCE_DIR}/dependency/openssl/include" "/usr/local/opt/openssl/include" "/usr/include" "/usr/local/include" "/opt/local/include" )
88

99
if ( ssl_LIBRARY_STATIC AND ssl_LIBRARY_SHARED AND crypto_LIBRARY_STATIC AND crypto_LIBRARY_SHARED )
1010
set( OPENSSL_FOUND TRUE )
11-
add_definitions( -DBUILD_SSL=TRUE )
1211

1312
if ( APPLE AND BUILD_SSL )
1413
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations" )
@@ -20,5 +19,5 @@ if ( ssl_LIBRARY_STATIC AND ssl_LIBRARY_SHARED AND crypto_LIBRARY_STATIC AND cry
2019
message( STATUS "Found Crypto library at: ${crypto_LIBRARY_STATIC}" )
2120
message( STATUS "Found Crypto library at: ${crypto_LIBRARY_SHARED}" )
2221
else ( )
23-
message( FATAL_ERROR "Failed to locate OpenSSL dependency. see restbed/dependency/openssl; ./config shared; make all" )
24-
endif ( )
22+
message( FATAL_ERROR "Failed to locate OpenSSL dependency. see restbed/dependency/openssl" )
23+
endif ( )

dependency/asio

Submodule asio updated 959 files

dependency/catch

Submodule catch updated 317 files

dependency/openssl

Submodule openssl updated 21838 files

documentation/DESIGN.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -771,12 +771,12 @@ Dependency Tree
771771
+----------------------------+
772772
|
773773
+------------------+------------------+
774-
| | |
775-
+--------------------+ +---------+ +----------------------+
776-
| ASIO | | Kashmir | | OpenSSL |
777-
+--------------------+ +---------+ +----------------------+
778-
| Asynchronous I/O . | | UUID. | | Secure Socket Layer. |
779-
+--------------------+ +---------+ +----------------------+
774+
| |
775+
+--------------------+ +----------------------+
776+
| ASIO | | OpenSSL |
777+
+--------------------+ +----------------------+
778+
| Asynchronous I/O . | | Secure Socket Layer. |
779+
+--------------------+ +----------------------+
780780
```
781781

782782
Event Loop

source/corvusoft/restbed/byte.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2013-2018, Corvusoft Ltd, All Rights Reserved.
2+
* Copyright 2013-2020, Corvusoft Ltd, All Rights Reserved.
33
*/
44

55
#pragma once

0 commit comments

Comments
 (0)