Skip to content

Commit

Permalink
Feature/first draft conan support (#8)
Browse files Browse the repository at this point in the history
* commiting

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* adding missing

* updating

* adjusting examples

* Update README.md

* Update README.md

---------

Co-authored-by: Michael Melamud <michael.melamud@gm.com>
  • Loading branch information
MelamudMichael and Michael Melamud committed Feb 8, 2024
1 parent d9c8554 commit 6e49a6f
Show file tree
Hide file tree
Showing 8 changed files with 113 additions and 88 deletions.
44 changes: 27 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,57 @@ This module contains the implementation for pub-sub and RPC API`s defined in the
### Requirements:
- Compiler: GCC/G++ 11 or Clang 13
- Ubuntu 22.04
- conan : 1.59
- conan : 1.59 or latest 2.X

#### Zenoh dependencies

At first to make it working, you have to install zenoh-c , using the following instructions https://github.com/eclipse-zenoh/zenoh-c/tree/master
1. install up-cpp library https://github.com/eclipse-uprotocol/up-cpp
2. install zenoh-c , using the following instructions https://github.com/eclipse-zenoh/zenoh-c/tree/master

```
$ git clone https://github.com/eclipse-uprotocol/up-client-zenoh-cpp.git
```
## How to Use the Library
To add up-cpp to your conan build dependencies, simply add the following to your conanfile.txt:
```
[requires]
up-cpp/0.1
up-cpp-client-zenoh/0.1
protobuf/3.21.12
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
#### Building locally
```
**NOTE:** If using conan version 1.59 Ensure that the conan profile is configured to use ABI 11 (libstdc++11: New ABI.) standards according to https://docs.conan.io/en/1.60/howtos/manage_gcc_abi.html

### Building locally
```
$ cd up-cpp-client-zenoh
$ mkdir build
$ cd build
$ conan install ../conaninfo
$ cmake ../
$ conan install conaninfo/ --output-folder=.
$ cd build/Release
$ cmake ../../ -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
$ make -j
```

#### Creating conan package locally

ensure that the conan profile is configured to use ABI 11 (libstdc++11: New ABI.) standards according to https://docs.conan.io/en/1.60/howtos/manage_gcc_abi.html
```
$ cd up-cpp-client-zenoh
$ conan create . --build=missing
$ conan create .
```


#### Compiling sample apps


ensure that the conan profile is configured to use ABI 11 (libstdc++11: New ABI.) standards according to https://docs.conan.io/en/1.60/howtos/manage_gcc_abi.html
```
$ cd up-cpp-client-zenoh
$ cd samples
$ mkdir build
$ cd build
$ conan install ../conaninfo
$ cmake ../
$ conan install samples/conaninfo/ --output-folder=.
$ cd build/Release
$ cmake ../../ -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release
$ make -j
```

Expand Down
48 changes: 26 additions & 22 deletions conanfile.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,39 @@
from conan import ConanFile, tools
from conans import ConanFile, CMake
from conan import ConanFile
from conan.tools.cmake import CMake, CMakeToolchain, cmake_layout
from conan.tools.files import apply_conandata_patches, copy, export_conandata_patches, get, replace_in_file, rm, rmdir
import os

from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout
import shutil

class up_client_zenog_cpp(ConanFile):
class UpClientZenoh(ConanFile):
name = "up-client-zenoh-cpp"
version = "0.1"

# Optional metadata
package_type = "library"
license = "Apache-2.0 license"
url = "https://github.com/eclipse-uprotocol/up-client-zenoh-cpp"
homepage = "https://github.com/eclipse-uprotocol"
url = "https://github.com/conan-io/conan-center-index"
description = "C++ uLink Library for zenoh transport"

topics = ("ulink client", "transport")
# Binary configuration
settings = "os", "compiler", "build_type", "arch"
options = {"shared": [True, False], "fPIC": [False, False]}
default_options = {"shared": True, "fPIC": False}

# Sources are located in the same place as this recipe, copy them to the recipe
exports_sources = "CMakeLists.txt", "lib/*"
requires = [
"up-cpp/0.1"
]
options = {"shared": [True, False], "fPIC": [True, False]}
conan_version = None
generators = "CMakeDeps"
version = "0.1"
exports_sources = "CMakeLists.txt", "lib/*"

options = {
"shared": [True, False],
"fPIC": [True, False],
}

default_options = {
"shared": False,
"fPIC": False,
}

def requirements(self):
self.requires("up-cpp/0.1")

def layout(self):
cmake_layout(self)
self.requires("spdlog/1.13.0")
self.requires("fmt/10.2.1")
self.requires("protobuf/3.21.12")

def generate(self):
tc = CMakeToolchain(self)
Expand Down
13 changes: 7 additions & 6 deletions conaninfo/conanfile.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
[requires]
up-cpp/0.1

protobuf/3.21.12
spdlog/1.13.0

[generators]
cmake_paths
cmake_find_package
CMakeDeps
CMakeToolchain

[imports]
up-core-api, *.h -> ./up-core-api
include, *.h -> ./include
[layout]
cmake_layout
22 changes: 10 additions & 12 deletions lib/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
cmake_minimum_required(VERSION 3.20)

project(up-client-zenoh-cpp_lib LANGUAGES CXX)
project(up-client-zenoh-cpp LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)

# Using the "cmake_find_package" and "cmake_paths" generators
if (EXISTS ${CMAKE_BINARY_DIR}/conan_paths.cmake)
include(${CMAKE_BINARY_DIR}/conan_paths.cmake)
endif()

include_directories(include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)

find_library(ZENOH_LIB zenohc)
find_package(up-cpp REQUIRED)
find_package(Protobuf REQUIRED)
find_package(spdlog REQUIRED)

add_definitions(-DSPDLOG_FMT_EXTERNAL)

add_library(
up-client-zenoh-cpp SHARED
${PROJECT_NAME} SHARED
src/zenohUTransport.cpp
src/zenohRpcClient.cpp
src/zenohSessionManager.cpp
src/messageBuilder.cpp
src/messageParser.cpp)

target_link_libraries(up-client-zenoh-cpp PRIVATE up-cpp::up-cpp ${ZENOH_LIB})
INSTALL(TARGETS up-client-zenoh-cpp)
target_include_directories(${PROJECT_NAME} PRIVATE
${up-cpp_INCLUDE_DIR}
include)

target_link_libraries(${PROJECT_NAME} PRIVATE up-cpp::up-cpp ${ZENOH_LIB})
INSTALL(TARGETS ${PROJECT_NAME})
INSTALL(DIRECTORY include DESTINATION .)
3 changes: 2 additions & 1 deletion samples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
project(demo LANGUAGES CXX)
cmake_minimum_required(VERSION 3.20)
project(samples LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)

Expand Down
14 changes: 8 additions & 6 deletions samples/conaninfo/conanfile.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
[requires]
up-cpp/0.1
up-client-zenoh-cpp/0.1

protobuf/3.21.12
spdlog/1.13.0

[generators]
cmake_paths
cmake_find_package
CMakeDeps
CMakeToolchain

[layout]
cmake_layout

[imports]
up-core-api, *.h -> ./up-core-api
include, *.h -> ./include
30 changes: 17 additions & 13 deletions samples/pubsub/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
cmake_minimum_required(VERSION 3.20)
project(demo LANGUAGES CXX)
project(pubsub LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)

include(${CMAKE_BINARY_DIR}/conan_paths.cmake)

include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)

find_library(ZENOH_LIB zenohc)
find_package(up-cpp REQUIRED)
find_package(up-client-zenoh-cpp REQUIRED)
find_package(fmt REQUIRED)
find_package(spdlog REQUIRED)
find_package(Protobuf REQUIRED)

add_definitions(-DSPDLOG_FMT_EXTERNAL)

Expand All @@ -23,19 +20,26 @@ target_link_libraries(
sub
up-client-zenoh-cpp::up-client-zenoh-cpp
up-cpp::up-cpp
${ZENOH_LIB}
fmt
spdlog::spdlog)
fmt::fmt
spdlog::spdlog
${ZENOH_LIB})

target_include_directories(sub PRIVATE
${up-client-zenoh-cpp_INCLUDE_DIR}
${spdlog_INCLUDE_DIR})

#rpc client
add_executable(
pub
src/main_pub.cpp)

target_link_libraries(
pub
up-client-zenoh-cpp::up-client-zenoh-cpp
up-cpp::up-cpp
${ZENOH_LIB}
fmt
spdlog::spdlog)
fmt::fmt
spdlog::spdlog
${ZENOH_LIB})

target_include_directories(pub PRIVATE
${up-client-zenoh-cpp_INCLUDE_DIR}
${spdlog_INCLUDE_DIR})
27 changes: 16 additions & 11 deletions samples/rpc/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,17 +1,14 @@
cmake_minimum_required(VERSION 3.20)
project(demo LANGUAGES CXX)
project(rpc LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 17)

include(${CMAKE_BINARY_DIR}/conan_paths.cmake)

include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)

find_library(ZENOH_LIB zenohc)
find_package(up-cpp REQUIRED)
find_package(up-client-zenoh-cpp REQUIRED)
find_package(fmt REQUIRED)
find_package(spdlog REQUIRED)
find_package(Protobuf REQUIRED)

add_definitions(-DSPDLOG_FMT_EXTERNAL)

Expand All @@ -23,9 +20,13 @@ target_link_libraries(
rpc_server
up-client-zenoh-cpp::up-client-zenoh-cpp
up-cpp::up-cpp
${ZENOH_LIB}
fmt
spdlog::spdlog)
fmt::fmt
spdlog::spdlog
${ZENOH_LIB})

target_include_directories(rpc_server PRIVATE
${up-client-zenoh-cpp_INCLUDE_DIR}
${spdlog_INCLUDE_DIR})

#rpc client
add_executable(
Expand All @@ -36,6 +37,10 @@ target_link_libraries(
rpc_client
up-client-zenoh-cpp::up-client-zenoh-cpp
up-cpp::up-cpp
${ZENOH_LIB}
fmt
spdlog::spdlog)
fmt::fmt
spdlog::spdlog
${ZENOH_LIB})

target_include_directories(rpc_client PRIVATE
${up-client-zenoh-cpp_INCLUDE_DIR}
${spdlog_INCLUDE_DIR})

0 comments on commit 6e49a6f

Please sign in to comment.