Skip to content

Commit ad5e013

Browse files
committed
Cleaned up CMakeLists.txt and removed warnings
1 parent 909763f commit ad5e013

10 files changed

+54
-54
lines changed

.travis.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ script:
3131
- mkdir _builds
3232
- cd _builds
3333
# Note: clang not support libc++
34-
- cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -DCPP-NETLIB_DISABLE_LIBCXX=YES ..
34+
- cmake -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} -DUri_DISABLE_LIBCXX=YES -DUri_BUILD_TESTS=ON -DUri_BUILD_DOCS=OFF ..
3535
- make -j 8
3636
- make test
3737

CMakeLists.txt

+42-20
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77
cmake_minimum_required(VERSION 2.8)
88
project(Uri)
99

10+
option(Uri_BUILD_TESTS "Build the URI tests." ON)
11+
option(Uri_BUILD_DOCS "Build the URI documentation." ON)
12+
option(Uri_FULL_WARNINGS "Build the library with all warnings turned on." ON)
13+
option(Uri_WARNINGS_AS_ERRORS "Treat warnings as errors." ON)
14+
1015
find_package(Threads REQUIRED)
1116

1217
set(CMAKE_VERBOSE_MAKEFILE true)
@@ -20,51 +25,68 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
2025
else()
2126
message(FATAL_ERROR "No C++ 11 support (Compiler does not define -std=c++11).")
2227
endif()
28+
29+
if (Uri_FULL_WARNINGS)
30+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
31+
endif()
32+
33+
if (Uri_WARNINGS_AS_ERRORS)
34+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
35+
endif()
36+
2337
message("C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
2438
elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
25-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -ftemplate-depth=1024")
26-
if (NOT CPP-NETLIB_DISABLE_LIBCXX)
39+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
40+
41+
if (NOT Uri_DISABLE_LIBCXX)
2742
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
2843
endif()
44+
45+
if (Uri_FULL_WARNINGS)
46+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
47+
endif()
48+
49+
if (Uri_WARNINGS_AS_ERRORS)
50+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
51+
endif()
52+
2953
message("C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
3054
endif()
3155

3256

3357
if (MSVC)
34-
add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_VARIADIC_MAX=10)
35-
endif(MSVC)
36-
if (WIN32)
37-
add_definitions(-D_WIN32_WINNT=0x0501)
38-
endif(WIN32)
39-
40-
foreach(flag_var
41-
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
42-
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
43-
if(${flag_var} MATCHES "/MD")
58+
message(FATAL_ERROR "The current implementation uses features that aren't fully implemented on MSVC.")
59+
60+
foreach(flag_var
61+
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE
62+
CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO)
63+
if(${flag_var} MATCHES "/MD")
4464
string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
45-
endif(${flag_var} MATCHES "/MD")
46-
endforeach(flag_var)
65+
endif(${flag_var} MATCHES "/MD")
66+
endforeach(flag_var)
67+
endif(MSVC)
4768

4869
include_directories(${Uri_SOURCE_DIR}/src ${Uri_SOURCE_DIR}/include)
4970

5071
add_subdirectory(src)
5172

5273
# Testing
53-
if (CMAKE_PROJECT_NAME STREQUAL "Uri" OR CPP-NETLIB_BUILD_TESTS)
74+
if (Uri_BUILD_TESTS)
75+
message(STATUS "Configuring tests")
5476
enable_testing()
5577
add_subdirectory(deps/googletest)
5678
add_subdirectory(test)
5779
endif()
5880

5981
# Documentation
60-
find_package(Doxygen)
61-
if (DOXYGEN_FOUND)
62-
if (NOT DEFINED CPP-NETLIB_GENERATE_DOCS)
82+
if (Uri_BUILD_DOCS)
83+
message("Configuring documentation")
84+
find_package(Doxygen)
85+
if (DOXYGEN_FOUND)
6386
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
6487
add_custom_target(doc
6588
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
6689
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
6790
COMMENT "Generating API documentation with Doxygen" VERBATIM)
68-
set(CPP-NETLIB_GENERATE_DOCS ON)
6991
endif()
70-
endif(DOXYGEN_FOUND)
92+
endif()

include/network/string_view.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ class basic_string_view {
152152
size_type copy(charT* s, size_type n, size_type pos = 0) const {
153153
size_type rlen = std::min(n, size() - pos);
154154
std::copy_n(begin() + pos, rlen, s);
155+
return rlen;
155156
}
156157

157158
constexpr basic_string_view substr(size_type pos = 0,

src/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ set(Uri_SRCS
1717
add_library(network-uri ${Uri_SRCS})
1818
target_link_libraries(network-uri)
1919
if(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
20-
if (NOT CPP-NETLIB_DISABLE_LIBCXX)
20+
if (NOT Uri_DISABLE_LIBCXX)
2121
target_link_libraries(network-uri "c++")
2222
endif()
2323
endif()

src/detail/uri_advance_parts.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ uri_part copy_part(const std::string &uri, string_view::const_iterator &it) {
2626

2727
void advance_parts(string_view &uri_view, uri_parts &parts,
2828
const uri_parts &existing_parts) {
29-
auto first = std::begin(uri_view), last = std::end(uri_view);
29+
auto first = std::begin(uri_view);
3030

3131
auto it = first;
3232
if (auto scheme = existing_parts.scheme) {

src/detail/uri_percent_encode.hpp

-5
Original file line numberDiff line numberDiff line change
@@ -59,11 +59,6 @@ Iter decode_encoded_unreserved_chars(Iter first, Iter last) {
5959
while (it != last) {
6060
if (*it == '%') {
6161
const auto sfirst = it;
62-
const auto slast = [&]() {
63-
auto slast = it;
64-
std::advance(slast, 3);
65-
return slast;
66-
}();
6762
const auto opt_char = percent_encode(sfirst);
6863
if (opt_char && is_unreserved(*opt_char)) {
6964
*it2 = *opt_char;

src/uri.cpp

+5-1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,9 @@ inline optional<std::string> make_arg(optional<string_view> view) {
5757
}
5858
return nullopt;
5959
}
60+
61+
template <class T>
62+
inline void ignore(T) {}
6063
} // namespace
6164

6265
void uri::initialize(optional<string_type> scheme,
@@ -374,6 +377,7 @@ uri uri::normalize(uri_comparison_level level) const {
374377
// need to parse the parts again as the underlying string has changed
375378
const_iterator it = std::begin(normalized_view), last = std::end(normalized_view);
376379
bool is_valid = detail::parse(it, last, parts);
380+
ignore(is_valid);
377381
assert(is_valid);
378382

379383
if (parts.hier_part.path) {
@@ -448,7 +452,7 @@ uri uri::make_relative(const uri &other) const {
448452
result.initialize(optional<string_type>(), optional<string_type>(),
449453
optional<string_type>(), optional<string_type>(),
450454
other_path, query, fragment);
451-
return std::move(result);
455+
return result;
452456
}
453457

454458
uri uri::resolve(const uri &base) const {

src/uri_builder.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,8 @@ uri_builder &uri_builder::clear_user_info() {
6464

6565
void uri_builder::set_host(string_type host) {
6666
host_ = string_type();
67-
auto end = network::uri::encode_host(std::begin(host), std::end(host),
68-
std::back_inserter(*host_));
67+
network::uri::encode_host(std::begin(host), std::end(host),
68+
std::back_inserter(*host_));
6969
detail::transform(*host_, std::begin(*host_),
7070
[](char ch) { return std::tolower(ch, std::locale()); });
7171
}

test/optional_test.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ TEST(optional_test, value_constructor_string) {
4242

4343
TEST(optional_test, rvalue_ref_constructor) {
4444
int value = 42;
45-
network::optional<int> opt{std::move(42)};
45+
network::optional<int> opt{std::move(value)};
4646
ASSERT_TRUE(opt);
4747
ASSERT_EQ(*opt, 42);
4848
}

test/uri_builder_test.cpp

-22
Original file line numberDiff line numberDiff line change
@@ -758,25 +758,3 @@ TEST(builder_test, non_const_non_array_string_literals_should_work) {
758758
;
759759
ASSERT_EQ("http://example.com/foo", builder.uri());
760760
}
761-
762-
TEST(builder_test, set_multiple_query_with_encoding) {
763-
network::uri_builder builder;
764-
builder
765-
.scheme("http")
766-
.host("example.com")
767-
.append_query("q1=foo bar")
768-
.append_query("q2=biz baz")
769-
;
770-
ASSERT_EQ("http://example.com?q1=foo%20bar&q2=biz%20baz", builder.uri().string());
771-
}
772-
773-
TEST(builder_test, set_multiple_query_with_encoding_2) {
774-
network::uri_builder builder;
775-
builder
776-
.scheme("http")
777-
.host("example.com")
778-
.append_query_key_value_pair("q1", "foo bar")
779-
.append_query_key_value_pair("q2", "biz baz")
780-
;
781-
ASSERT_EQ("http://example.com?q1=foo%20bar&q2=biz%20baz", builder.uri().string());
782-
}

0 commit comments

Comments
 (0)