diff --git a/recipes/cereal/all/CMakeLists.txt b/recipes/cereal/all/CMakeLists.txt new file mode 100644 index 0000000000000..d17aaff199b4a --- /dev/null +++ b/recipes/cereal/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/cereal/all/conandata.yml b/recipes/cereal/all/conandata.yml new file mode 100644 index 0000000000000..b49969281eb0b --- /dev/null +++ b/recipes/cereal/all/conandata.yml @@ -0,0 +1,4 @@ +sources: + "1.3.0": + url: "https://github.com/USCiLab/cereal/archive/v1.3.0.tar.gz" + sha256: "329ea3e3130b026c03a4acc50e168e7daff4e6e661bc6a7dfec0d77b570851d5" diff --git a/recipes/cereal/all/conanfile.py b/recipes/cereal/all/conanfile.py new file mode 100644 index 0000000000000..3cad29c66f348 --- /dev/null +++ b/recipes/cereal/all/conanfile.py @@ -0,0 +1,42 @@ +import os + +from conans import ConanFile, CMake, tools + +class CerealConan(ConanFile): + name = "cereal" + description = "Serialization header-only library for C++11." + license = "BSD-3-Clause" + topics = ("conan", "cereal", "header-only", "serialization", "cpp11") + homepage = "https://github.com/USCiLab/cereal" + url = "https://github.com/conan-io/conan-center-index" + exports_sources = "CMakeLists.txt" + generators = "cmake" + settings = "os" + options = {"thread_safe": [True, False]} + default_options = {"thread_safe": False} + no_copy_source = True + + @property + def _source_subfolder(self): + return "source_subfolder" + + 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.definitions["JUST_INSTALL_CEREAL"] = True + 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.thread_safe: + self.cpp_info.defines = ["CEREAL_THREAD_SAFE=1"] + if self.settings.os == "Linux": + self.cpp_info.system_libs.append("pthread") diff --git a/recipes/cereal/all/test_package/CMakeLists.txt b/recipes/cereal/all/test_package/CMakeLists.txt new file mode 100644 index 0000000000000..94e2f7e9e4627 --- /dev/null +++ b/recipes/cereal/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/cereal/all/test_package/conanfile.py b/recipes/cereal/all/test_package/conanfile.py new file mode 100644 index 0000000000000..ea57a464900be --- /dev/null +++ b/recipes/cereal/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/cereal/all/test_package/test_package.cpp b/recipes/cereal/all/test_package/test_package.cpp new file mode 100644 index 0000000000000..fc970fbdc0d14 --- /dev/null +++ b/recipes/cereal/all/test_package/test_package.cpp @@ -0,0 +1,27 @@ +#include +#include + +#include + + +struct Data +{ + int x, y, z; + template + void serialize(Archive & archive) { archive( x, y, z ); } +}; + + +int main() { + std::cout << "Serialized data: "; + { + cereal::BinaryOutputArchive oarchive(std::cout); + Data d1{42, 12, 52}; + Data d2{33, 34, 35}; + Data d3{74, 34, 45}; + oarchive(d1, d2, d3); + } + std::cout << std::endl; + + return EXIT_SUCCESS; +} diff --git a/recipes/cereal/config.yml b/recipes/cereal/config.yml new file mode 100644 index 0000000000000..426a0e4c79e9b --- /dev/null +++ b/recipes/cereal/config.yml @@ -0,0 +1,3 @@ +versions: + "1.3.0": + folder: all