From d5b795176d125b492940fa123c0493b582073243 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Wed, 26 Jun 2019 17:16:43 +0700 Subject: [PATCH] add embedded curl --- .travis.yml | 3 +-- CMakeLists.txt | 46 +++++++++++++++++++++++++++++++++++++++++- sources/curly.cpp | 8 ++++++++ untests/CMakeLists.txt | 4 ++-- 4 files changed, 56 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index db390df..ad44ccc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,14 +20,13 @@ matrix: - os: osx osx_image: xcode10 compiler: clang - addons: { homebrew: { packages: ["lcov"] } } after_success: ./scripts/upload_coverage.sh before_install: - eval "${MATRIX_EVAL}" - if [ "$TRAVIS_OS_NAME" == 'osx' ]; then brew update; brew upgrade cmake; - brew install git-lfs; + brew install lcov git-lfs; fi - if [ "$TRAVIS_OS_NAME" == 'linux' ]; then mkdir $HOME/cmake; diff --git a/CMakeLists.txt b/CMakeLists.txt index 56012db..7263b06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,11 @@ endif() project(curly.hpp) -option(CURLY_USE_SYSTEM_CURL "Link with cURL from system paths" ON) +option(CURLY_USE_SYSTEM_CURL "Build with cURL from system paths" OFF) +option(CURLY_USE_EMBEDDED_CURL "Build with embedded cURL library" ON) + +# set(CURLY_USE_SYSTEM_CURL ON CACHE BOOL "" FORCE) +# set(CURLY_USE_EMBEDDED_CURL ON CACHE BOOL "" FORCE) add_library(${PROJECT_NAME} STATIC headers/curly.hpp/curly.hpp @@ -36,6 +40,46 @@ if(CURLY_USE_SYSTEM_CURL) target_include_directories(${PROJECT_NAME} PRIVATE ${CURL_INCLUDE_DIRS}) endif() +if(CURLY_USE_EMBEDDED_CURL) + include(FetchContent) + FetchContent_Declare( + embedded_curl + GIT_REPOSITORY https://github.com/curl/curl + GIT_TAG curl-7_65_1) + + FetchContent_GetProperties(embedded_curl) + if(NOT embedded_curl_POPULATED) + FetchContent_Populate(embedded_curl) + endif() + + set(HTTP_ONLY ON CACHE BOOL "" FORCE) + set(BUILD_TESTING OFF CACHE BOOL "" FORCE) + set(BUILD_CURL_EXE OFF CACHE BOOL "" FORCE) + set(BUILD_SHARED_LIBS OFF CACHE BOOL "" FORCE) + + if(WIN32) + set(CMAKE_USE_WINSSL ON CACHE BOOL "" FORCE) + set(CURL_CA_PATH "none" CACHE STRING "" FORCE) + set(CURL_CA_BUNDLE "none" CACHE STRING "" FORCE) + endif() + + if(APPLE) + set(CMAKE_USE_SECTRANSP ON CACHE BOOL "" FORCE) + set(CURL_CA_PATH "none" CACHE STRING "" FORCE) + set(CURL_CA_BUNDLE "none" CACHE STRING "" FORCE) + endif() + + if(UNIX AND NOT APPLE) + set(CMAKE_USE_OPENSSL ON CACHE BOOL "" FORCE) + set(CURL_CA_PATH "auto" CACHE STRING "" FORCE) + set(CURL_CA_BUNDLE "auto" CACHE STRING "" FORCE) + endif() + + add_subdirectory(${embedded_curl_SOURCE_DIR} ${embedded_curl_BINARY_DIR}) + target_link_libraries(${PROJECT_NAME} PUBLIC libcurl) + target_include_directories(${PROJECT_NAME} PRIVATE ${CURL_SOURCE_DIR}/include) +endif() + if(BUILD_AS_STANDALONE) option(BUILD_WITH_UNTESTS "Build with unit tests" ON) if(BUILD_WITH_UNTESTS) diff --git a/sources/curly.cpp b/sources/curly.cpp index 1f2370b..2a4ebcf 100644 --- a/sources/curly.cpp +++ b/sources/curly.cpp @@ -15,6 +15,14 @@ #include #include +#ifndef NOMINMAX +# define NOMINMAX +#endif + +#ifndef WIN32_LEAN_AND_MEAN +# define WIN32_LEAN_AND_MEAN +#endif + #include // ----------------------------------------------------------------------------- diff --git a/untests/CMakeLists.txt b/untests/CMakeLists.txt index 1ecfbf7..f2c526a 100644 --- a/untests/CMakeLists.txt +++ b/untests/CMakeLists.txt @@ -3,8 +3,6 @@ cmake_minimum_required(VERSION 3.11 FATAL_ERROR) project(curly.hpp.untests) -include(FetchContent) - # # coverage # @@ -39,6 +37,7 @@ add_test(${PROJECT_NAME} ${PROJECT_NAME}) # catchorg/catch2 # +include(FetchContent) FetchContent_Declare( catchorg_catch2 GIT_REPOSITORY https://github.com/catchorg/catch2) @@ -54,6 +53,7 @@ endif() # tencent/rapidjson # +include(FetchContent) FetchContent_Declare( tencent_rapidjson GIT_REPOSITORY https://github.com/tencent/rapidjson)