splitted crow features into two options

This commit is contained in:
Gulliver 2024-02-21 00:25:30 +01:00 committed by gittiver
parent 528c3e0cf8
commit 90579e94ff
8 changed files with 36 additions and 23 deletions

View File

@ -24,8 +24,8 @@ jobs:
matrix: matrix:
os: [ ubuntu-latest, os: [ ubuntu-latest,
windows-latest, windows-latest,
ubuntu-20.04,
macos-latest, macos-latest,
ubuntu-20.04,
macos-11 macos-11
] ]
# ubuntu-18.04 does not work due to compile error on asio # ubuntu-18.04 does not work due to compile error on asio
@ -55,7 +55,8 @@ jobs:
if [ "$RUNNER_OS" == "Windows" ]; then if [ "$RUNNER_OS" == "Windows" ]; then
cmake \ cmake \
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake \ -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake \
-DCROW_FEATURES="ssl;compression" \ -DCROW_ENABLE_SSL=ON \
-DCROW_ENABLE_COMPRESSION=ON \
-DCROW_AMALGAMATE=ON \ -DCROW_AMALGAMATE=ON \
-DCROW_BUILD_TESTS=ON \ -DCROW_BUILD_TESTS=ON \
-B build -B build
@ -63,13 +64,15 @@ jobs:
LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" \ LDFLAGS="-L/usr/local/opt/openssl@1.1/lib" \
CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" \ CPPFLAGS="-I/usr/local/opt/openssl@1.1/include" \
cmake \ cmake \
-DCROW_FEATURES="ssl;compression" \ -DCROW_ENABLE_SSL=ON \
-DCROW_ENABLE_COMPRESSION=ON \
-DCROW_AMALGAMATE=ON \ -DCROW_AMALGAMATE=ON \
-DCROW_BUILD_TESTS=ON \ -DCROW_BUILD_TESTS=ON \
-B build -B build
else else
cmake \ cmake \
-DCROW_FEATURES="ssl;compression" \ -DCROW_ENABLE_SSL=ON \
-DCROW_ENABLE_COMPRESSION=ON \
-DCROW_AMALGAMATE=ON \ -DCROW_AMALGAMATE=ON \
-DCROW_BUILD_TESTS=ON \ -DCROW_BUILD_TESTS=ON \
-B build -B build

View File

@ -48,8 +48,9 @@ option(CROW_AMALGAMATE "Combine all headers into one" OFF)
option(CROW_INSTALL "Add install step for Crow" ON ) option(CROW_INSTALL "Add install step for Crow" ON )
option(CROW_USE_BOOST "Use Boost.Asio for Crow" OFF) option(CROW_USE_BOOST "Use Boost.Asio for Crow" OFF)
# Possible values: ssl, compression option(CROW_ENABLE_SSL "Enable Crow's SSL feature for supporting https" OFF)
option(CROW_FEATURES "Enable features extending Crow's abilities" "") option(CROW_ENABLE_COMPRESSION "Enable Crow's Compression feature for supporting compressed http content" OFF)
##################################### #####################################
# Define Targets # Define Targets
@ -80,13 +81,13 @@ endif()
target_compile_definitions(Crow INTERFACE "") target_compile_definitions(Crow INTERFACE "")
if("compression" IN_LIST CROW_FEATURES) if(CROW_ENABLE_COMPRESSION)
find_package(ZLIB REQUIRED) find_package(ZLIB REQUIRED)
target_link_libraries(Crow INTERFACE ZLIB::ZLIB) target_link_libraries(Crow INTERFACE ZLIB::ZLIB)
target_compile_definitions(Crow INTERFACE CROW_ENABLE_COMPRESSION) target_compile_definitions(Crow INTERFACE CROW_ENABLE_COMPRESSION)
endif() endif()
if("ssl" IN_LIST CROW_FEATURES) if(CROW_ENABLE_SSL)
find_package(OpenSSL REQUIRED) find_package(OpenSSL REQUIRED)
target_link_libraries(Crow INTERFACE OpenSSL::SSL) target_link_libraries(Crow INTERFACE OpenSSL::SSL)
target_compile_definitions(Crow INTERFACE CROW_ENABLE_SSL) target_compile_definitions(Crow INTERFACE CROW_ENABLE_SSL)
@ -119,11 +120,11 @@ if(CROW_BUILD_TESTS)
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests/unittest COMMAND ${CMAKE_CURRENT_BINARY_DIR}/tests/unittest
) )
if(NOT "compression" IN_LIST CROW_FEATURES) if(NOT CROW_ENABLE_COMPRESSION)
message(STATUS "Compression tests are omitted. (Configure with CROW_FEATURES containing 'compression' to enable them)") message(STATUS "Compression tests are omitted. (Configure with CROW_ENABLE_COMPRESSION to enable them)")
endif() endif()
if(NOT "ssl" IN_LIST CROW_FEATURES) if(NOT CROW_ENABLE_SSL)
message(STATUS "SSL tests are omitted. (Configure with CROW_FEATURES containing 'ssl' to enable them)") message(STATUS "SSL tests are omitted. (Configure with CROW_ENABLE_SSL to enable them)")
else() else()
if(NOT MSVC) if(NOT MSVC)
add_test( add_test(

View File

@ -14,11 +14,11 @@ if(NOT DEFINED CROW_FEATURES)
set(CROW_FEATURES ${CROW_INSTALLED_FEATURES}) set(CROW_FEATURES ${CROW_INSTALLED_FEATURES})
endif() endif()
if("compression" IN_LIST CROW_FEATURES) if(CROW_ENABLE_COMPRESSION)
find_dependency(ZLIB) find_dependency(ZLIB)
endif() endif()
if("ssl" IN_LIST CROW_FEATURES) if(CROW_ENABLE_SSL)
find_dependency(OpenSSL) find_dependency(OpenSSL)
endif() endif()
@ -38,12 +38,12 @@ endif()
list(REMOVE_ITEM _CROW_ILL "ZLIB::ZLIB" "OpenSSL::SSL") list(REMOVE_ITEM _CROW_ILL "ZLIB::ZLIB" "OpenSSL::SSL")
list(REMOVE_ITEM _CROW_ICD "CROW_ENABLE_SSL" "CROW_ENABLE_COMPRESSION") list(REMOVE_ITEM _CROW_ICD "CROW_ENABLE_SSL" "CROW_ENABLE_COMPRESSION")
if("compression" IN_LIST CROW_FEATURES) if(CROW_ENABLE_COMPRESSION)
list(APPEND _CROW_ILL "ZLIB::ZLIB") list(APPEND _CROW_ILL "ZLIB::ZLIB")
list(APPEND _CROW_ICD "CROW_ENABLE_COMPRESSION") list(APPEND _CROW_ICD "CROW_ENABLE_COMPRESSION")
endif() endif()
if("ssl" IN_LIST CROW_FEATURES) if(CROW_ENABLE_SSL)
list(APPEND _CROW_ILL "OpenSSL::SSL") list(APPEND _CROW_ILL "OpenSSL::SSL")
list(APPEND _CROW_ICD "CROW_ENABLE_SSL") list(APPEND _CROW_ICD "CROW_ENABLE_SSL")
endif() endif()

View File

@ -45,7 +45,9 @@ You can also download the `crow_all.h` file and simply include that into your pr
!!! note !!! note
While building you can set the `CROW_FEATURES` variable (as a `;` separated list). You can use an argument such as `-DCROW_FEATURES="ssl;compression"`. While building you can set:
the `CROW_ENABLE_SSL` variable to enable the support for https
the `CROW_ENABLE_COMPRESSION` variable to enable the support for http compression
!!! note !!! note
@ -83,7 +85,10 @@ target_link_libraries(your_project PUBLIC Crow::Crow)
From there CMake should handle compiling and linking your project. From there CMake should handle compiling and linking your project.
!!! note !!! note
For optional features like HTTP Compression or HTTPS you can set the `CROW_FEATURES` variable using lines such as `set(CROW_FEATURES "ssl;compression")`, `set(CROW_FEATURES ssl compression)`, or `set(CROW_FEATURES ssl)`. For optional features like HTTP Compression or HTTPS you can set
the `CROW_ENABLE_SSL` variable to enable the support for https
the `CROW_ENABLE_COMPRESSION` variable to enable the support for http compression
### Directly using a compiler ### Directly using a compiler
All you need to do is run the following command: All you need to do is run the following command:

View File

@ -61,7 +61,10 @@ This will generate a `crow_all.h` file which you can use in the following steps
4. `make -j12` 4. `make -j12`
!!! note !!! note
You can add options like `-DCROW_FEATURES="ssl;compression"` or `-DCROW_AMALGAMATE` to `cmake ..` to build optional tests/examples for HTTP Compression or HTTPS. You can add options like `-DCROW_ENABLE_COMPRESSION=ON`
or `-DCROW_ENABLE_SSL=ON`
or `-DCROW_AMALGAMATE`
to `cmake ..` to build optional tests/examples for HTTP Compression or HTTPS.
## Compiling using a compiler directly ## Compiling using a compiler directly
All you need to do is run the following command: All you need to do is run the following command:

View File

@ -5,7 +5,7 @@ Crow supports Zlib compression using Gzip or Deflate algorithms.
## HTTP Compression ## HTTP Compression
HTTP compression is by default disabled in crow. Do the following to enable it: <br> HTTP compression is by default disabled in crow. Do the following to enable it: <br>
- Define `CROW_ENABLE_COMPRESSION` in your compiler definitions (`g++ main.cpp -DCROW_ENABLE_COMPRESSION` for example) or `set(CROW_FEATURES compression)` in `CMakeLists.txt`. - Define `CROW_ENABLE_COMPRESSION` in your compiler definitions (`g++ main.cpp -DCROW_ENABLE_COMPRESSION` for example) or `set(CROW_ENABLE_COMPRESSION ON)` in `CMakeLists.txt`.
- Call `#!cpp use_compression(crow::compression::algorithm)` on your Crow app. - Call `#!cpp use_compression(crow::compression::algorithm)` on your Crow app.
- When compiling your application, make sure that ZLIB is included as a dependency. Either through `-lz` compiler argument or `find_package(ZLIB)` in CMake. - When compiling your application, make sure that ZLIB is included as a dependency. Either through `-lz` compiler argument or `find_package(ZLIB)` in CMake.

View File

@ -5,10 +5,11 @@ Crow supports HTTPS though SSL or TLS.<br><br>
When mentioning SSL in this documentation, it is often a reference to openSSL, which includes TLS.<br><br> When mentioning SSL in this documentation, it is often a reference to openSSL, which includes TLS.<br><br>
To enable SSL, first your application needs to define either a `.crt` and `.key` files, or a `.pem` file. Once you have your files, you can add them to your app like this:<br> To enable SSL, first your application needs to define either a `.crt` and `.key` files, or a `.pem` file.
Once you have your files, you can add them to your app like this:<br>
`#!cpp app.ssl_file("/path/to/cert.crt", "/path/to/keyfile.key")` or `#!cpp app.ssl_file("/path/to/pem_file.pem")`. Please note that this method can be part of the app method chain, which means it can be followed by `.run()` or any other method.<br><br> `#!cpp app.ssl_file("/path/to/cert.crt", "/path/to/keyfile.key")` or `#!cpp app.ssl_file("/path/to/pem_file.pem")`. Please note that this method can be part of the app method chain, which means it can be followed by `.run()` or any other method.<br><br>
You also need to define `CROW_ENABLE_SSL` in your compiler definitions (`g++ main.cpp -DCROW_ENABLE_SSL` for example) or `set(CROW_FEATURES ssl)` in `CMakeLists.txt`. You also need to define `CROW_ENABLE_SSL` in your compiler definitions (`g++ main.cpp -DCROW_ENABLE_SSL` for example) or `set(CROW_ENABLE_SSL ON)` in `CMakeLists.txt`.
You can also set your own SSL context (by using `asio::ssl::context ctx`) and then applying it via the `#!cpp app.ssl(ctx)` method.<br><br> You can also set your own SSL context (by using `asio::ssl::context ctx`) and then applying it via the `#!cpp app.ssl(ctx)` method.<br><br>

View File

@ -27,7 +27,7 @@ add_subdirectory(template)
add_subdirectory(multi_file) add_subdirectory(multi_file)
add_subdirectory(external_definition) add_subdirectory(external_definition)
if(NOT MSVC) if(NOT MSVC)
if ("ssl" IN_LIST CROW_FEATURES) if (CROW_ENABLE_SSL)
add_subdirectory(ssl) add_subdirectory(ssl)
endif() endif()
endif() endif()