From 943aa0b16bfab03ce19e5889522f78ac7a2f9026 Mon Sep 17 00:00:00 2001 From: ajneu Date: Tue, 19 Jul 2016 20:30:04 +0200 Subject: [PATCH 1/2] include_directories with SYSTEM for system-headers such as boost, to avoid warnings-checking on those 3rd party headers --- Release/CMakeLists.txt | 13 ++++++------- Release/libs/websocketpp/CMakeLists.txt | 2 +- Release/src/CMakeLists.txt | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Release/CMakeLists.txt b/Release/CMakeLists.txt index cbe840b663..1274102599 100644 --- a/Release/CMakeLists.txt +++ b/Release/CMakeLists.txt @@ -149,7 +149,7 @@ if(ANDROID) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-strict-aliasing") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-pedantic") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-attributes -Wno-pointer-arith") - include_directories( + include_directories(SYSTEM "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.8/include" "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include" "${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.8/include/backward" @@ -197,7 +197,7 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Binaries) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/Binaries) # These settings can be used by the test targets -set(Casablanca_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) +set(Casablanca_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include) if (NOT CPPREST_EXCLUDE_WEBSOCKETS) find_path(WEBSOCKETPP_CONFIG websocketpp-config.cmake HINTS /usr/lib/cmake/websocketpp) @@ -207,20 +207,19 @@ if (NOT CPPREST_EXCLUDE_WEBSOCKETS) include(${WEBSOCKETPP_CONFIG}/websocketpp-config.cmake) include(${WEBSOCKETPP_CONFIG}/websocketpp-configVersion.cmake) message("-- Found websocketpp version " ${PACKAGE_VERSION} " on system") - set(Casablanca_INCLUDE_DIRS ${Casablanca_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${WEBSOCKETPP_INCLUDE_DIR}) + set(Casablanca_SYSTEM_INCLUDE_DIRS ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${WEBSOCKETPP_INCLUDE_DIR}) else(WEBSOCKETPP_CONFIG AND WEBSOCKETPP_CONFIG_VERSION) - set(Casablanca_INCLUDE_DIRS ${Casablanca_INCLUDE_DIR} ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libs/websocketpp) + set(Casablanca_SYSTEM_INCLUDE_DIRS ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/libs/websocketpp) message("-- websocketpp not found, using the embedded version") endif(WEBSOCKETPP_CONFIG AND WEBSOCKETPP_CONFIG_VERSION) -else() - set(Casablanca_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include) endif() set(Casablanca_LIBRARY cpprest) set(Casablanca_LIBRARIES cpprest ${Boost_LIBRARIES}) # Everything in the project needs access to the casablanca include directories -include_directories(${Casablanca_INCLUDE_DIRS}) +include_directories( ${Casablanca_INCLUDE_DIRS}) +include_directories(SYSTEM ${Casablanca_SYSTEM_INCLUDE_DIRS}) # Finally, the tests all use the same style declaration to build themselves, so we use a function function(add_casablanca_test NAME SOURCES_VAR) diff --git a/Release/libs/websocketpp/CMakeLists.txt b/Release/libs/websocketpp/CMakeLists.txt index 8279156029..b30a0ed464 100644 --- a/Release/libs/websocketpp/CMakeLists.txt +++ b/Release/libs/websocketpp/CMakeLists.txt @@ -190,7 +190,7 @@ if (BUILD_TESTS OR BUILD_EXAMPLES) if (Boost_FOUND) # Boost is a project wide global dependency. - include_directories (${Boost_INCLUDE_DIRS}) + include_directories (SYSTEM ${Boost_INCLUDE_DIRS}) link_directories (${Boost_LIBRARY_DIRS}) # Pretty print status diff --git a/Release/src/CMakeLists.txt b/Release/src/CMakeLists.txt index cf086ed47e..3c98d8a22e 100644 --- a/Release/src/CMakeLists.txt +++ b/Release/src/CMakeLists.txt @@ -1,6 +1,6 @@ include_directories(../include pch) if (NOT CPPREST_EXCLUDE_WEBSOCKETS) - include_directories(${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR}) + include_directories(SYSTEM ${Boost_INCLUDE_DIR} ${OPENSSL_INCLUDE_DIR}) endif() add_definitions(${WARNINGS}) From 02119a190a0c694446248ca0c5729909e6d003d0 Mon Sep 17 00:00:00 2001 From: ajneu Date: Tue, 19 Jul 2016 20:31:06 +0200 Subject: [PATCH 2/2] have BingRequest honour http_proxy environment variable --- Release/samples/BingRequest/bingrequest.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Release/samples/BingRequest/bingrequest.cpp b/Release/samples/BingRequest/bingrequest.cpp index bf1e749817..16c630865a 100644 --- a/Release/samples/BingRequest/bingrequest.cpp +++ b/Release/samples/BingRequest/bingrequest.cpp @@ -30,6 +30,23 @@ using namespace web::http; using namespace web::http::client; using namespace concurrency::streams; +/* Can pass proxy information via environment variable http_proxy. + Example: + Linux: export http_proxy=http://192.1.8.1:8080 + */ +web::http::client::http_client_config client_config_for_proxy() +{ + web::http::client::http_client_config client_config; + + if(const char* env_http_proxy = std::getenv("http_proxy")) { + web::web_proxy proxy(env_http_proxy); + client_config.set_proxy(proxy); + } + + return client_config; +} + + #ifdef _WIN32 int wmain(int argc, wchar_t *args[]) #else @@ -52,7 +69,7 @@ int main(int argc, char *args[]) // Create an HTTP request. // Encode the URI query since it could contain special characters like spaces. - http_client client(U("http://www.bing.com/")); + http_client client(U("http://www.bing.com/"), client_config_for_proxy()); return client.request(methods::GET, uri_builder(U("/search")).append_query(U("q"), searchTerm).to_string()); }) @@ -74,4 +91,4 @@ int main(int argc, char *args[]) .wait(); return 0; -} \ No newline at end of file +}