diff --git a/recipes/cpp-httplib/all/CMakeLists.txt b/recipes/cpp-httplib/all/CMakeLists.txt new file mode 100644 index 0000000000000..d17aaff199b4a --- /dev/null +++ b/recipes/cpp-httplib/all/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 2.8.11) +project(cmake_wrapper) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +add_subdirectory("source_subfolder") diff --git a/recipes/cpp-httplib/all/conandata.yml b/recipes/cpp-httplib/all/conandata.yml new file mode 100644 index 0000000000000..ab9a31b467eea --- /dev/null +++ b/recipes/cpp-httplib/all/conandata.yml @@ -0,0 +1,4 @@ +sources: + "0.5.4": + url: "https://github.com/yhirose/cpp-httplib/archive/v0.5.4.tar.gz" + sha256: "40dcce66ec002e2631ef918e1b3bfc9ec1662d02007291ea4743e17ac9c7d43f" diff --git a/recipes/cpp-httplib/all/conanfile.py b/recipes/cpp-httplib/all/conanfile.py new file mode 100644 index 0000000000000..7220b224be6bf --- /dev/null +++ b/recipes/cpp-httplib/all/conanfile.py @@ -0,0 +1,50 @@ +import os + +from conans import ConanFile, CMake, tools + +class CpphttplibConan(ConanFile): + name = "cpp-httplib" + description = "A C++11 single-file header-only cross platform HTTP/HTTPS library." + license = "MIT" + topics = ("conan", "cpp-httplib", "http", "https", "header-only") + homepage = "https://github.com/yhirose/cpp-httplib" + url = "https://github.com/conan-io/conan-center-index" + exports_sources = "CMakeLists.txt" + generators = "cmake" + settings = "os" + options = {"with_openssl": [True, False], "with_zlib": [True, False]} + default_options = {"with_openssl": False, "with_zlib": False} + no_copy_source = True + + @property + def _source_subfolder(self): + return "source_subfolder" + + def requirements(self): + if self.options.with_openssl: + self.requires.add("openssl/1.1.1d") + if self.options.with_zlib: + self.requires.add("zlib/1.2.11") + + def source(self): + tools.get(**self.conan_data["sources"][self.version]) + os.rename(self.name + "-" + self.version, self._source_subfolder) + + def package(self): + self.copy("LICENSE", dst="licenses", src=self._source_subfolder) + cmake = CMake(self) + cmake.configure() + cmake.install() + tools.rmdir(os.path.join(self.package_folder, "share")) + + def package_id(self): + self.info.header_only() + + def package_info(self): + if self.options.with_openssl: + self.cpp_info.defines.append("CPPHTTPLIB_OPENSSL_SUPPORT") + if self.options.with_zlib: + self.cpp_info.defines.append("CPPHTTPLIB_ZLIB_SUPPORT") + if self.settings.os == "Linux": + self.cpp_info.system_libs.append("pthread") + self.cpp_info.includedirs = ["include", os.path.join("include", "httplib")] diff --git a/recipes/cpp-httplib/all/test_package/CMakeLists.txt b/recipes/cpp-httplib/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..94e2f7e9e4627 --- /dev/null +++ b/recipes/cpp-httplib/all/test_package/CMakeLists.txt @@ -0,0 +1,9 @@ +cmake_minimum_required(VERSION 2.8.11) +project(test_package) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +add_executable(${PROJECT_NAME} test_package.cpp) +target_link_libraries(${PROJECT_NAME} ${CONAN_LIBS}) +set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 11) diff --git a/recipes/cpp-httplib/all/test_package/conanfile.py b/recipes/cpp-httplib/all/test_package/conanfile.py new file mode 100644 index 0000000000000..ea57a464900be --- /dev/null +++ b/recipes/cpp-httplib/all/test_package/conanfile.py @@ -0,0 +1,17 @@ +import os + +from conans import ConanFile, CMake, tools + +class TestPackageConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "cmake" + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def test(self): + if not tools.cross_building(self.settings): + bin_path = os.path.join("bin", "test_package") + self.run(bin_path, run_environment=True) diff --git a/recipes/cpp-httplib/all/test_package/test_package.cpp b/recipes/cpp-httplib/all/test_package/test_package.cpp new file mode 100644 index 0000000000000..3e9fe638f7b17 --- /dev/null +++ b/recipes/cpp-httplib/all/test_package/test_package.cpp @@ -0,0 +1,20 @@ +#include + +int main() { + httplib::Server svr; + + svr.Get("/hi", [](const httplib::Request& req, httplib::Response& res) { + res.set_content("Hello World!", "text/plain"); + }); + + svr.Get(R"(/numbers/(\d+))", [&](const httplib::Request& req, httplib::Response& res) { + auto numbers = req.matches[1]; + res.set_content(numbers, "text/plain"); + }); + + svr.Get("/stop", [&](const httplib::Request& req, httplib::Response& res) { + svr.stop(); + }); + + return 0; +} diff --git a/recipes/cpp-httplib/config.yml b/recipes/cpp-httplib/config.yml new file mode 100644 index 0000000000000..46308e7db2ce0 --- /dev/null +++ b/recipes/cpp-httplib/config.yml @@ -0,0 +1,3 @@ +versions: + "0.5.4": + folder: all