| @@ -1 +1,2 @@ | |||
| build/* | |||
| test_package/build/* | |||
| @@ -0,0 +1,44 @@ | |||
| from conans import ConanFile, CMake | |||
| class ScopeguardConan(ConanFile): | |||
| name = "scope-guard" | |||
| version = "v0.3.4" | |||
| license = "MIT" | |||
| author = "offa <offa@github>" | |||
| url = "https://github.com.offa/scope-guard" | |||
| description = "Implementation of Scoped Guards and Unique Resource as proposed in P0052." | |||
| homepage = "https://github.com/offa/scope-guard" | |||
| topics = ("cpp", "cpp17", "p0052", "scope-guard", | |||
| "scope-exit", "scope-fail", "scope-success", "unique-resource", "cmake") | |||
| no_copy_source = True | |||
| _source_dir = "{}-{}".format(name, version) | |||
| scm = { | |||
| "type": "git", | |||
| "subfolder": _source_dir, | |||
| "url": "{}.git".format(homepage), | |||
| "revision": version | |||
| } | |||
| requires = ( | |||
| "Catch2/2.11.0@catchorg/stable", | |||
| "trompeloeil/v35@rollbear/stable" | |||
| ) | |||
| options = { | |||
| "unittest": ["ON", "OFF"], | |||
| "enable_compat_header": ["ON", "OFF"] | |||
| } | |||
| default_options = ( | |||
| "unittest=ON", | |||
| "enable_compat_header=OFF" | |||
| ) | |||
| def _configure_cmake(self): | |||
| cmake = CMake(self) | |||
| cmake.definitions["UNITTEST"] = self.options.unittest | |||
| cmake.definitions["ENABLE_COMPAT_HEADER"] = self.options.enable_compat_header | |||
| cmake.configure(source_folder=self._source_dir, build_folder="build") | |||
| return cmake | |||
| def package(self): | |||
| cmake = self._configure_cmake() | |||
| cmake.install() | |||
| @@ -1,8 +0,0 @@ | |||
| [requires] | |||
| Catch2/2.9.2@catchorg/stable | |||
| trompeloeil/v35@rollbear/stable | |||
| [generators] | |||
| cmake_find_package | |||
| cmake_paths | |||
| @@ -5,18 +5,21 @@ set -ex | |||
| # Conan | |||
| apt-get install -y python3-pip | |||
| pip3 install conan | |||
| conan profile new default --detect | |||
| if [[ "${CXX}" == clang* ]] | |||
| then | |||
| export CXXFLAGS="-stdlib=libc++" | |||
| CONAN_STDLIB=libc++ | |||
| else | |||
| CONAN_STDLIB=libstdc++11 | |||
| conan profile update settings.compiler.libcxx=libstdc++11 default | |||
| fi | |||
| mkdir build && cd build | |||
| conan install -s compiler.libcxx=${CONAN_STDLIB} .. | |||
| conan install \ | |||
| -g cmake_find_package \ | |||
| -g cmake_paths \ | |||
| .. | |||
| cmake .. | |||
| make | |||
| @@ -0,0 +1,14 @@ | |||
| cmake_minimum_required(VERSION 3.11) | |||
| project(PackageTest CXX) | |||
| set(CMAKE_CXX_STANDARD 17) | |||
| set(CMAKE_CXX_STANDARD_REQUIRED ON) | |||
| set(CMAKE_CXX_EXTENSIONS OFF) | |||
| include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) | |||
| conan_basic_setup() | |||
| add_executable(example example.cpp) | |||
| target_link_libraries(example ${CONAN_LIBS}) | |||
| @@ -0,0 +1,25 @@ | |||
| import os | |||
| from conans import ConanFile, CMake, tools | |||
| class ScopeguardTestConan(ConanFile): | |||
| settings = "os", "compiler", "build_type", "arch" | |||
| generators = "cmake" | |||
| def build(self): | |||
| cmake = CMake(self) | |||
| # Current dir is "test_package/build/<build_id>" and CMakeLists.txt is | |||
| # in "test_package" | |||
| cmake.configure() | |||
| cmake.build() | |||
| def imports(self): | |||
| self.copy("*.dll", dst="bin", src="bin") | |||
| self.copy("*.dylib*", dst="bin", src="lib") | |||
| self.copy('*.so*', dst='bin', src='lib') | |||
| def test(self): | |||
| if not tools.cross_building(self.settings): | |||
| os.chdir("bin") | |||
| self.run(".%sexample" % os.sep) | |||
| @@ -0,0 +1,12 @@ | |||
| #include <iostream> | |||
| #include <scope.h> | |||
| int main() | |||
| { | |||
| sr::scope_exit se{[]{}}; | |||
| sr::scope_fail sf{[]{}}; | |||
| sr::scope_success ss{[]{}}; | |||
| sr::unique_resource ur{3, [](auto x){}}; | |||
| return 0; | |||
| } | |||