Skip to content

Commit a95680d

Browse files
committed
astarte-device-sdk-cpp: Add new library v0.8.1
Signed-off-by: Simone Orru <[email protected]>
1 parent 7c94526 commit a95680d

File tree

6 files changed

+134
-0
lines changed

6 files changed

+134
-0
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
sources:
2+
"0.8.1":
3+
url:
4+
- "https://github.com/astarte-platform/astarte-device-sdk-cpp/archive/v0.8.1.tar.gz"
5+
sha256: "21f4cb1686e9b0e78ca2805f3615e4033f04130fd80326688f3bca225e1eabb0"
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
from conan.tools.cmake import CMake, CMakeToolchain, CMakeDeps
2+
from conan import ConanFile
3+
from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, rm, rmdir
4+
from conan.tools.build import check_min_cppstd, check_min_compiler_version
5+
import os
6+
7+
required_conan_version = ">=2.1"
8+
9+
class AstarteConan(ConanFile):
10+
name = "astarte-device-sdk"
11+
package_type = "library"
12+
languages = "C++"
13+
license = "Apache-2.0"
14+
author = "Simone Orru ([email protected])"
15+
url = "https://github.com/astarte-platform/astarte-device-sdk-cpp"
16+
homepage = "https://docs.astarte-platform.org/"
17+
description = "Astarte device SDK package written in C++"
18+
topics = ("mqtt", "astarte", "iot")
19+
20+
# Settings and options
21+
settings = "os", "compiler", "build_type", "arch"
22+
options = {"shared": [True, False], "fPIC": [True, False]}
23+
default_options = {"shared": False, "fPIC": True}
24+
25+
# Build configuration
26+
build_policy = "missing"
27+
28+
def config_options(self):
29+
if self.settings.os == "Windows":
30+
del self.options.fPIC
31+
32+
def requirements(self):
33+
self.requires("grpc/1.72.0")
34+
self.requires("protobuf/6.30.1", override = True)
35+
self.requires("spdlog/1.15.3", options={"use_std_fmt": "True"}, transitive_headers=True, transitive_libs=True)
36+
37+
def build_requirements(self):
38+
self.tool_requires("protobuf/6.30.1")
39+
40+
def validate(self):
41+
check_min_cppstd(self, 20)
42+
compiler_restrictions = [
43+
("gcc", "13", "Requires C++20 std::format"),
44+
("clang", "15", "Requires C++20 std::format"),
45+
("apple-clang", "15", "Requires C++20 std::format"),
46+
("msvc", "193", "Requires C++20 std::format") # Visual Studio 2022
47+
]
48+
check_min_compiler_version(self, compiler_restrictions)
49+
50+
def source(self):
51+
get(self, **self.conan_data["sources"][self.version], strip_root=True)
52+
# exports_sources = "CMakeLists.txt", "cmake/AstarteMQTTTransport.cmake", "cmake/AstarteGRPCTransport.cmake", "cmake/Config.cmake.in", "cmake/pkg-config-template.pc.in", "src/*", "include/*", "private/*"
53+
54+
def package_info(self):
55+
self.cpp_info.libs = ["astarte_device_sdk", "astarte_msghub_proto"]
56+
self.cpp_info.set_property("cmake_file_name", "astarte_device_sdk")
57+
self.cpp_info.set_property("cmake_target_name", "astarte_device_sdk::astarte_device_sdk")
58+
59+
def generate(self):
60+
tc = CMakeToolchain(self)
61+
tc.variables["ASTARTE_USE_SYSTEM_SPDLOG"] = "ON"
62+
tc.variables["ASTARTE_USE_SYSTEM_GRPC"] = "ON"
63+
tc.generate()
64+
cmake_deps = CMakeDeps(self)
65+
cmake_deps.generate()
66+
67+
def build(self):
68+
cmake = CMake(self)
69+
cmake.configure()
70+
cmake.build()
71+
72+
def package(self):
73+
copy(self, "LICENSE",
74+
src=self.source_folder,
75+
dst=os.path.join(self.package_folder, "licenses"))
76+
77+
cmake = CMake(self)
78+
cmake.install()
79+
80+
rmdir(self, os.path.join(self.package_folder, "lib", "cmake"))
81+
rmdir(self, os.path.join(self.package_folder, "lib", "pkgconfig"))
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
cmake_minimum_required(VERSION 3.20)
2+
project(test_package LANGUAGES CXX)
3+
4+
find_package(astarte_device_sdk REQUIRED)
5+
6+
add_executable(${PROJECT_NAME} test_package.cpp)
7+
target_link_libraries(${PROJECT_NAME} PRIVATE astarte_device_sdk::astarte_device_sdk)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from conan import ConanFile
2+
from conan.tools.build import can_run
3+
from conan.tools.cmake import cmake_layout, CMake
4+
import os
5+
6+
7+
class TestPackageConan(ConanFile):
8+
settings = "os", "arch", "compiler", "build_type"
9+
generators = "CMakeDeps", "CMakeToolchain"
10+
11+
def layout(self):
12+
cmake_layout(self)
13+
14+
def requirements(self):
15+
self.requires(self.tested_reference_str)
16+
17+
def build(self):
18+
cmake = CMake(self)
19+
cmake.configure()
20+
cmake.build()
21+
22+
def test(self):
23+
if can_run(self):
24+
bin_path = os.path.join(self.cpp.build.bindir, "test_package")
25+
self.run(bin_path, env="conanrun")
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include <cstdlib>
2+
#include <astarte_device_sdk/device_grpc.hpp>
3+
4+
using AstarteDeviceSdk::AstarteDeviceGRPC;
5+
6+
int main(void) {
7+
std::string server_addr = "localhost:50051";
8+
std::string node_id("aa04dade-9401-4c37-8c6a-d8da15b083ae");
9+
std::shared_ptr<AstarteDeviceGRPC> device =
10+
std::make_shared<AstarteDeviceGRPC>(server_addr, node_id);
11+
12+
return EXIT_SUCCESS;
13+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
versions:
2+
"0.8.1":
3+
folder: all

0 commit comments

Comments
 (0)