Skip to content

Commit dad4614

Browse files
authored
Added flag to allow enabling/disabling of JSON (which pulls in 3rd party dependency) (#76)
1 parent ed06dac commit dad4614

File tree

5 files changed

+37
-21
lines changed

5 files changed

+37
-21
lines changed

CMakeLists.txt

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,18 @@ option(skyr_BUILD_WITHOUT_EXCEPTIONS "Build without exceptions." OFF)
2323
option(skyr_BUILD_WITHOUT_RTTI "Build without RTTI." OFF)
2424
option(skyr_USE_STATIC_CRT "Use static C Runtime library (/MT or MTd)." ON)
2525
option(skyr_BUILD_WITH_LLVM_LIBCXX "Instruct Clang to use LLVM's implementation of C++ standard library" OFF)
26+
option(skyr_ENABLE_JSON_FUNCTIONS "Enable functions to convert URL components to JSON" ON)
2627

2728
set(CMAKE_VERBOSE_MAKEFILE true)
2829
set(CMAKE_CXX_STANDARD 17)
2930
set(CMAKE_CXX_EXTENSIONS OFF)
3031
set(CMAKE_CXX_STANDARD_REQUIRED ON)
3132

3233
find_package(tl-expected CONFIG REQUIRED)
33-
find_package(nlohmann_json CONFIG REQUIRED)
34+
35+
if (skyr_ENABLE_JSON_FUNCTIONS)
36+
find_package(nlohmann_json CONFIG REQUIRED)
37+
endif()
3438

3539
if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU OR
3640
${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
@@ -70,8 +74,6 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES MSVC)
7074
endif(${flag_var} MATCHES "/MD")
7175
endforeach(flag_var)
7276
endif(skyr_USE_STATIC_CRT)
73-
74-
add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE)
7577
endif()
7678

7779
if(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
@@ -105,7 +107,9 @@ endif()
105107
if (NOT CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
106108
add_library(skyr::skyr-url ALIAS skyr-url)
107109
add_library(skyr::skyr-filesystem ALIAS skyr-filesystem)
108-
add_library(skyr::skyr-json ALIAS skyr-json)
110+
if (skyr_ENABLE_JSON_FUNCTIONS)
111+
add_library(skyr::skyr-json ALIAS skyr-json)
112+
endif()
109113
endif()
110114

111115
# Install
@@ -122,7 +126,12 @@ write_basic_package_version_file(
122126
COMPATIBILITY SameMajorVersion
123127
ARCH_INDEPENDENT)
124128

125-
install(TARGETS skyr-url skyr-filesystem skyr-json
129+
set(skyr_TARGETS skyr-url skyr-filesystem)
130+
if (skyr_ENABLE_JSON_FUNCTIONS)
131+
list(APPEND skyr_TARGETS skyr-json)
132+
endif()
133+
134+
install(TARGETS ${skyr_TARGETS}
126135
EXPORT ${PROJECT_NAME}-targets
127136
INCLUDES DESTINATION "${CMAKE_INSTALL_DATADIR}"
128137
ARCHIVE DESTINATION lib

include/skyr/percent_encoding/percent_encode_range.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class percent_encode_iterator {
7878
assert(it_);
7979
auto byte = *it_.value();
8080
if (byte == '\x20') {
81-
percent_encoded_char('+', percent_encoded_char::no_encode());
81+
return percent_encoded_char('+', percent_encoded_char::no_encode());
8282
} else if ((byte == '\x2a') || (byte == '\x2d') || (byte == '\x2e') ||
8383
((byte >= '\x30') && (byte <= '\x39')) ||
8484
((byte >= '\x41') && (byte <= '\x5a')) || (byte == '\x5f') ||

src/CMakeLists.txt

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ target_include_directories(skyr-url
9292
PRIVATE
9393
${PROJECT_SOURCE_DIR}/src)
9494

95+
if(${CMAKE_CXX_COMPILER_ID} MATCHES MSVC)
96+
target_compile_definitions(skyr-url -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE)
97+
endif()
98+
9599
#################################################
96100
# skyr-filesystem
97101
#################################################
@@ -113,12 +117,14 @@ target_include_directories(skyr-filesystem
113117
# skyr-json
114118
#################################################
115119

116-
add_library(skyr-json INTERFACE)
120+
if (skyr_ENABLE_JSON_FUNCTIONS)
121+
add_library(skyr-json INTERFACE)
117122

118-
target_link_libraries(skyr-json INTERFACE tl::expected nlohmann_json::nlohmann_json)
123+
target_link_libraries(skyr-json INTERFACE tl::expected nlohmann_json::nlohmann_json)
119124

120-
target_include_directories(skyr-json
121-
INTERFACE
122-
$<INSTALL_INTERFACE:include>
123-
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
124-
)
125+
target_include_directories(skyr-json
126+
INTERFACE
127+
$<INSTALL_INTERFACE:include>
128+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
129+
)
130+
endif()

tests/CMakeLists.txt

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,6 @@ include(${PROJECT_SOURCE_DIR}/cmake/skyr-url-functions.cmake)
88
find_package(Catch2 CONFIG REQUIRED)
99
find_package(fmt CONFIG REQUIRED)
1010

11-
if (MSVC)
12-
# For json.hpp
13-
add_definitions(-D_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING)
14-
endif(MSVC)
15-
16-
1711
function(skyr_create_test file_name output_dir test_name)
1812
skyr_remove_extension(${file_name} test)
1913
add_executable(${test})
@@ -41,4 +35,6 @@ add_subdirectory(percent_encoding)
4135
add_subdirectory(network)
4236
add_subdirectory(url)
4337
add_subdirectory(filesystem)
44-
add_subdirectory(json)
38+
if (skyr_ENABLE_JSON_FUNCTIONS)
39+
add_subdirectory(json)
40+
endif()

tests/json/CMakeLists.txt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
# (See accompanying file LICENSE_1_0.txt or copy at
44
# http://www.boost.org/LICENSE_1_0.txt)
55

6+
if(${CMAKE_CXX_COMPILER_ID} MATCHES MSVC)
7+
# For json.hpp
8+
add_definitions(-D_SILENCE_CXX17_OLD_ALLOCATOR_MEMBERS_DEPRECATION_WARNING)
9+
endif()
10+
611
foreach (file_name json_query_tests.cpp)
712
skyr_create_test(${file_name} ${PROJECT_BINARY_DIR}/tests/json test_name)
813
target_link_libraries(${test_name} PRIVATE skyr-json)
9-
endforeach ()
14+
endforeach()

0 commit comments

Comments
 (0)