Skip to content

Commit 909ec2b

Browse files
authored
Avoid setting globals in the CMake setup (#5)
Signed-off-by: Juan Cruz Viotti <[email protected]>
1 parent 5a36d4f commit 909ec2b

File tree

10 files changed

+55
-24
lines changed

10 files changed

+55
-24
lines changed

CMakeLists.txt

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,30 +14,12 @@ elseif(MSVC)
1414
set(HYDRA_COMPILER_MSVC ON)
1515
endif()
1616

17-
set(CMAKE_CXX_STANDARD 20)
18-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
19-
set(CMAKE_CXX_EXTENSIONS OFF)
20-
set(CMAKE_C_STANDARD 11)
21-
set(CMAKE_C_STANDARD_REQUIRED ON)
22-
set(CMAKE_C_EXTENSIONS OFF)
23-
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
24-
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
25-
set(CMAKE_C_VISIBILITY_PRESET hidden)
26-
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
27-
set(CMAKE_SKIP_BUILD_RPATH FALSE)
28-
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
29-
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
30-
31-
if(WIN32)
17+
if(PROJECT_IS_TOP_LEVEL AND WIN32)
3218
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
3319
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
3420
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
3521
endif()
3622

37-
if(CMAKE_SYSTEM_NAME STREQUAL "MSYS")
38-
add_compile_definitions(_POSIX_C_SOURCE=200809L)
39-
endif()
40-
4123
find_package(ZLIB REQUIRED)
4224

4325
if(NOT WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "MSYS")

cmake/FindCAres.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,10 @@ if(NOT CAres_FOUND)
274274

275275
set_target_properties(cares
276276
PROPERTIES
277+
C_STANDARD 11
278+
C_STANDARD_REQUIRED ON
279+
C_EXTENSIONS OFF
280+
POSITION_INDEPENDENT_CODE ON
277281
OUTPUT_NAME cares
278282
C_VISIBILITY_PRESET "default"
279283
C_VISIBILITY_INLINES_HIDDEN FALSE

cmake/FindCPR.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,10 @@ if(NOT CPR_FOUND)
139139

140140
set_target_properties(cpr
141141
PROPERTIES
142+
CXX_STANDARD 20
143+
CXX_STANDARD_REQUIRED ON
144+
CXX_EXTENSIONS OFF
145+
POSITION_INDEPENDENT_CODE ON
142146
OUTPUT_NAME cpr
143147
CXX_VISIBILITY_PRESET "default"
144148
CXX_VISIBILITY_INLINES_HIDDEN FALSE

cmake/FindCURL.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -456,6 +456,7 @@ if(NOT CURL_FOUND)
456456
target_compile_definitions(curl PRIVATE CURL_CA_PATH="/usr/ssl/certs")
457457
target_compile_definitions(curl PRIVATE USE_MBEDTLS)
458458
target_compile_definitions(curl PRIVATE USE_THREADS_POSIX)
459+
target_compile_definitions(curl PRIVATE _POSIX_C_SOURCE=200809L)
459460
target_compile_definitions(curl PRIVATE HAVE_SYS_TIME_H)
460461
target_compile_definitions(curl PRIVATE HAVE_LONGLONG)
461462
target_compile_definitions(curl PRIVATE HAVE_RECV)
@@ -540,6 +541,10 @@ if(NOT CURL_FOUND)
540541

541542
set_target_properties(curl
542543
PROPERTIES
544+
C_STANDARD 11
545+
C_STANDARD_REQUIRED ON
546+
C_EXTENSIONS OFF
547+
POSITION_INDEPENDENT_CODE ON
543548
OUTPUT_NAME curl
544549
PUBLIC_HEADER "${CURL_PUBLIC_HEADER}"
545550
PRIVATE_HEADER "${CURL_PRIVATE_HEADERS}"

cmake/FindMbedTLS.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,10 @@ if(NOT MbedTLS_FOUND)
169169

170170
set_target_properties(mbedtls
171171
PROPERTIES
172+
C_STANDARD 11
173+
C_STANDARD_REQUIRED ON
174+
C_EXTENSIONS OFF
175+
POSITION_INDEPENDENT_CODE ON
172176
OUTPUT_NAME mbedtls
173177
C_VISIBILITY_PRESET "default"
174178
C_VISIBILITY_INLINES_HIDDEN FALSE

cmake/FindNghttp2.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,10 @@ if(NOT Nghttp2_FOUND)
112112

113113
set_target_properties(nghttp2
114114
PROPERTIES
115+
C_STANDARD 11
116+
C_STANDARD_REQUIRED ON
117+
C_EXTENSIONS OFF
118+
POSITION_INDEPENDENT_CODE ON
115119
OUTPUT_NAME nghttp2
116120
C_VISIBILITY_PRESET "default"
117121
C_VISIBILITY_INLINES_HIDDEN FALSE

cmake/FindPSL.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,10 @@ if(NOT PSL_FOUND)
7676

7777
set_target_properties(psl
7878
PROPERTIES
79+
C_STANDARD 11
80+
C_STANDARD_REQUIRED ON
81+
C_EXTENSIONS OFF
82+
POSITION_INDEPENDENT_CODE ON
7983
OUTPUT_NAME psl
8084
C_VISIBILITY_PRESET "default"
8185
C_VISIBILITY_INLINES_HIDDEN FALSE

cmake/FindZLIB.cmake

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,13 @@ if(NOT ZLIB_FOUND)
8686
OUTPUT_NAME zlib
8787
PUBLIC_HEADER "${ZLIB_PUBLIC_HEADER}"
8888
PRIVATE_HEADER "${ZLIB_PRIVATE_HEADERS}"
89+
C_STANDARD 11
90+
C_STANDARD_REQUIRED ON
91+
C_EXTENSIONS OFF
92+
POSITION_INDEPENDENT_CODE ON
8993
C_VISIBILITY_PRESET "default"
9094
C_VISIBILITY_INLINES_HIDDEN FALSE
95+
VISIBILITY_INLINES_HIDDEN OFF
9196
WINDOWS_EXPORT_ALL_SYMBOLS TRUE
9297
EXPORT_NAME zlib)
9398

test/e2e/CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,39 @@
11
add_executable(https_request https_request.cc)
22
target_link_libraries(https_request PRIVATE CPR::cpr)
3+
set_target_properties(https_request PROPERTIES
4+
CXX_STANDARD 20
5+
CXX_STANDARD_REQUIRED ON
6+
CXX_EXTENSIONS OFF)
37
add_test(NAME hydra.e2e.https_request COMMAND https_request)
48

59
add_executable(http2_request http2_request.cc)
610
target_link_libraries(http2_request PRIVATE CPR::cpr)
11+
set_target_properties(http2_request PROPERTIES
12+
CXX_STANDARD 20
13+
CXX_STANDARD_REQUIRED ON
14+
CXX_EXTENSIONS OFF)
715
add_test(NAME hydra.e2e.http2_request COMMAND http2_request)
816

917
add_executable(compression_test compression_test.cc)
1018
target_link_libraries(compression_test PRIVATE CPR::cpr)
19+
set_target_properties(compression_test PROPERTIES
20+
CXX_STANDARD 20
21+
CXX_STANDARD_REQUIRED ON
22+
CXX_EXTENSIONS OFF)
1123
add_test(NAME hydra.e2e.compression_test COMMAND compression_test)
1224

1325
add_executable(custom_headers_test custom_headers_test.cc)
1426
target_link_libraries(custom_headers_test PRIVATE CPR::cpr)
27+
set_target_properties(custom_headers_test PROPERTIES
28+
CXX_STANDARD 20
29+
CXX_STANDARD_REQUIRED ON
30+
CXX_EXTENSIONS OFF)
1531
add_test(NAME hydra.e2e.custom_headers_test COMMAND custom_headers_test)
1632

1733
add_executable(post_request_test post_json_test.cc)
1834
target_link_libraries(post_request_test PRIVATE CPR::cpr)
35+
set_target_properties(post_request_test PROPERTIES
36+
CXX_STANDARD 20
37+
CXX_STANDARD_REQUIRED ON
38+
CXX_EXTENSIONS OFF)
1939
add_test(NAME hydra.e2e.post_request_test COMMAND post_request_test)

test/packaging/find_package/CMakeLists.txt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
cmake_minimum_required(VERSION 3.18)
22
project(core_hello VERSION 0.0.1 LANGUAGES CXX)
3-
set(CMAKE_CXX_STANDARD 20)
4-
set(CMAKE_CXX_STANDARD_REQUIRED ON)
5-
set(CMAKE_CXX_EXTENSIONS OFF)
63
find_package(Hydra REQUIRED)
74
add_executable(hello hello.cc)
5+
set_target_properties(hello PROPERTIES
6+
CXX_STANDARD 20
7+
CXX_STANDARD_REQUIRED ON
8+
CXX_EXTENSIONS OFF)
89

9-
# We exercise all dependencies to make sure they
10-
# are all installed and exposed as expected
1110
target_link_libraries(hello PRIVATE ZLIB::ZLIB)
1211
if(NOT WIN32 OR CMAKE_SYSTEM_NAME STREQUAL "MSYS")
1312
target_link_libraries(hello PRIVATE MbedTLS::mbedtls)

0 commit comments

Comments
 (0)