Skip to content

Commit a787bce

Browse files
authored
Merge pull request #33 from 5cript/feat/split-targets
Split roar target into three for easier feature selection.
2 parents 230e4b9 + 15193d7 commit a787bce

4 files changed

Lines changed: 83 additions & 49 deletions

File tree

cmake/dependencies/cryptopp.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ elseif(APPLE)
1818
elseif(UNIX)
1919
pkg_check_modules(cryptopp IMPORTED_TARGET libcrypto++)
2020
if ("${cryptopp_FOUND}" STREQUAL "1")
21+
target_link_libraries(roar-cryptopp INTERFACE PkgConfig::cryptopp)
2122
else()
2223
pkg_check_modules(cryptopp IMPORTED_TARGET libcryptopp)
2324
endif()
24-
target_link_libraries(roar-cryptopp INTERFACE PkgConfig::cryptopp)
2525
endif()

include/roar/curl/response.hpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
#include "instance.hpp"
44

55
#include <curl/curl.h>
6-
#include <boost/beast/http/status.hpp>
76

87
#include <string>
98

@@ -50,15 +49,15 @@ namespace Roar::Curl
5049

5150
/**
5251
* @brief Response code.
53-
* @return boost::beast::http::status
52+
* @return int
5453
*/
55-
boost::beast::http::status code() const;
54+
long code() const;
5655

5756
/**
5857
* @brief Response code of the proxy if there was one inbetween.
59-
* @return boost::beast::http::status
58+
* @return int
6059
*/
61-
boost::beast::http::status proxyCode() const;
60+
long proxyCode() const;
6261

6362
/**
6463
* @brief Was there a response to the request?

src/roar/CMakeLists.txt

Lines changed: 69 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,87 @@
11
add_library(
22
roar STATIC
3-
server.cpp
4-
client.cpp
5-
mime_type.cpp
6-
mechanics/ranges.cpp
7-
mechanics/cookie.cpp
8-
authorization/authorization.cpp
9-
authorization/basic_auth.cpp
10-
authorization/digest_auth.cpp
11-
filesystem/jail.cpp
12-
filesystem/special_paths.cpp
13-
routing/route.cpp
14-
routing/router.cpp
15-
session/factory.cpp
16-
session/session.cpp
17-
ssl/make_ssl_context.cpp
18-
websocket/websocket_session.cpp
19-
websocket/websocket_client.cpp
20-
websocket/websocket_base.cpp
21-
curl/sources/file_source.cpp
22-
curl/sources/string_source.cpp
23-
curl/global_curl_context.cpp
24-
curl/request.cpp
25-
curl/response.cpp
26-
url/ipv4.cpp
27-
url/ipv6.cpp
28-
url/url.cpp
29-
url/encode.cpp
30-
utility/base64.cpp
31-
utility/shutdown_barrier.cpp
32-
utility/sha.cpp
33-
utility/date.cpp)
3+
server.cpp
4+
client.cpp
5+
mechanics/ranges.cpp
6+
mechanics/cookie.cpp
7+
authorization/authorization.cpp
8+
authorization/basic_auth.cpp
9+
authorization/digest_auth.cpp
10+
routing/route.cpp
11+
routing/router.cpp
12+
session/factory.cpp
13+
session/session.cpp
14+
ssl/make_ssl_context.cpp
15+
websocket/websocket_session.cpp
16+
websocket/websocket_client.cpp
17+
websocket/websocket_base.cpp
18+
utility/shutdown_barrier.cpp
19+
utility/sha.cpp
20+
utility/date.cpp
21+
)
22+
23+
add_library(
24+
roar-curl STATIC
25+
curl/sources/file_source.cpp
26+
curl/sources/string_source.cpp
27+
curl/global_curl_context.cpp
28+
curl/request.cpp
29+
curl/response.cpp
30+
url/encode.cpp
31+
url/ipv4.cpp
32+
url/ipv6.cpp
33+
url/url.cpp
34+
)
35+
36+
add_library(
37+
roar-no-net STATIC
38+
mime_type.cpp
39+
filesystem/special_paths.cpp
40+
utility/base64.cpp
41+
filesystem/jail.cpp
42+
)
3443

3544
include(../../cmake/warnings.cmake)
3645

37-
target_compile_features(roar PUBLIC cxx_std_20)
46+
target_compile_features(roar-no-net PRIVATE cxx_std_20)
47+
target_include_directories(roar-no-net PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
48+
target_link_libraries(
49+
roar-no-net
50+
PUBLIC Boost::boost
51+
)
52+
53+
target_compile_features(roar-curl PRIVATE cxx_std_20)
54+
target_include_directories(roar-curl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../include)
55+
target_link_libraries(
56+
roar-curl
57+
PUBLIC CURL::libcurl roar-no-net
58+
)
59+
60+
target_compile_features(roar PRIVATE cxx_std_20)
3861
target_include_directories(roar PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../../include
3962
${CURL_INCLUDE_DIR})
4063
target_link_libraries(
4164
roar
4265
PUBLIC Boost::boost
4366
promise
4467
roar-cryptopp
45-
CURL::libcurl
4668
OpenSSL::SSL
4769
OpenSSL::Crypto
70+
roar-no-net
71+
roar-curl
4872
)
4973

74+
add_library(roar::roar ALIAS roar)
75+
add_library(roar::no-net ALIAS roar-no-net)
76+
add_library(roar::curl ALIAS roar-curl)
77+
5078
set_target_warnings(roar)
79+
set_target_warnings(roar-no-net)
80+
set_target_warnings(roar-curl)
5181

5282
if(${ROAR_ENABLE_NLOHMANN_JSON})
83+
target_link_libraries(roar-curl PUBLIC nlohmann_json::nlohmann_json)
84+
target_compile_definitions(roar-curl PUBLIC ROAR_ENABLE_NLOHMANN_JSON=1)
5385
target_link_libraries(roar PUBLIC nlohmann_json::nlohmann_json)
5486
target_compile_definitions(roar PUBLIC ROAR_ENABLE_NLOHMANN_JSON=1)
5587
endif()
@@ -62,14 +94,18 @@ endif()
6294
if(WIN32)
6395
# MS SOCK
6496
target_link_libraries(roar PUBLIC -lws2_32 -lmswsock -lbcrypt)
97+
target_link_libraries(roar-curl PUBLIC -lbcrypt)
6598

6699
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
67100
# target_compile_definitions(roar PUBLIC BOOST_USE_WINDOWS_H=1)
68101
else()
69102
target_link_libraries(roar PUBLIC -latomic)
103+
target_link_libraries(roar-curl PUBLIC -latomic)
70104
endif()
71105
else()
72106

73107
endif()
74108

75109
set_target_outputs(roar)
110+
set_target_outputs(roar-no-net)
111+
set_target_outputs(roar-curl)

src/roar/curl/response.cpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#include <roar/curl/response.hpp>
33
#include <roar/curl/instance.hpp>
44

5-
#include <boost/beast/http/status.hpp>
65
#include <curl/system.h>
76

87
namespace Roar::Curl
@@ -40,24 +39,24 @@ namespace Roar::Curl
4039
return static_cast<long long>(ul);
4140
return 0;
4241
}
43-
boost::beast::http::status Response::code() const
42+
long Response::code() const
4443
{
4544
long code = 0;
4645
auto res = curl_easy_getinfo(instance_.get(), CURLINFO_RESPONSE_CODE, &code);
47-
if (res == CURLE_OK)
48-
return boost::beast::http::int_to_status(static_cast<unsigned int>(code));
49-
return boost::beast::http::status::unknown;
46+
if (res != CURLE_OK)
47+
return 0;
48+
return code;
5049
}
51-
boost::beast::http::status Response::proxyCode() const
50+
long Response::proxyCode() const
5251
{
5352
long code = 0;
5453
auto res = curl_easy_getinfo(instance_.get(), CURLINFO_HTTP_CONNECTCODE, &code);
55-
if (res == CURLE_OK)
56-
return boost::beast::http::int_to_status(static_cast<unsigned int>(code));
57-
return boost::beast::http::status::unknown;
54+
if (res != CURLE_OK)
55+
return 0;
56+
return code;
5857
}
5958
Response::operator bool() const
6059
{
61-
return code() != boost::beast::http::status::unknown;
60+
return code() != 0;
6261
}
6362
}

0 commit comments

Comments
 (0)