Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 94 additions & 46 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ set(RUST_TARGET_DIR "target/debug")
file(GLOB_RECURSE CXXBRIDGE_HEADERS "${RUST_TARGET_DIR}/build/*lib.rs.h")
file(GLOB_RECURSE CXXBRIDGE_SOURCES_ALL "${RUST_TARGET_DIR}/build/*lib.rs.cc")
file(GLOB_RECURSE CXX_CORE_HEADER "${RUST_TARGET_DIR}/build/*/cxx.h")
file(GLOB RUST_STATIC_LIB "${RUST_TARGET_DIR}/libfluvio*.a")
list(GET RUST_STATIC_LIB 0 FLUVIO_STATIC_LIB)
set(FLUVIO_STATIC_LIB "${CMAKE_CURRENT_SOURCE_DIR}/${RUST_TARGET_DIR}/libfluvio_client_cpp.a")

list(GET CXXBRIDGE_SOURCES_ALL 0 CXXBRIDGE_SOURCES)
list(GET CXXBRIDGE_HEADERS 0 CXXBRIDGE_HEADER)
Expand All @@ -27,71 +26,120 @@ list(GET CXX_CORE_HEADER 0 CXX_CORE_HDR)
get_filename_component(CXX_CORE_DIR ${CXX_CORE_HDR} DIRECTORY)
get_filename_component(CXX_ROOT_DIR ${CXX_CORE_DIR} DIRECTORY)

# Producer Test
add_executable(test_producer tests/test_producer.cpp ${CXXBRIDGE_SOURCES})
target_include_directories(test_producer PRIVATE
${CXXBRIDGE_HDR_DIR}/../..
${CXX_ROOT_DIR}
set(GENERATED_INCLUDE_DIR ${CMAKE_CURRENT_BINARY_DIR}/generated_include/fluvio_client_cpp)
file(MAKE_DIRECTORY ${GENERATED_INCLUDE_DIR}/rust)

configure_file(
${CXXBRIDGE_HEADER}
${GENERATED_INCLUDE_DIR}/lib.rs.h
COPYONLY
)
target_link_libraries(test_producer PRIVATE
${FLUVIO_STATIC_LIB}
pthread dl m

configure_file(
${CXX_CORE_HDR}
${GENERATED_INCLUDE_DIR}/rust/cxx.h
COPYONLY
)
add_test(NAME fluvio_producer_test COMMAND test_producer)

# Consumer Test
add_executable(test_consumer tests/test_consumer.cpp ${CXXBRIDGE_SOURCES})
target_include_directories(test_consumer PRIVATE
${CXXBRIDGE_HDR_DIR}/../..
${CXX_ROOT_DIR}
add_library(fluvio_client_cpp STATIC ${CXXBRIDGE_SOURCES})
add_library(ASTRAOS::fluvio_client_cpp ALIAS fluvio_client_cpp)

target_link_libraries(fluvio_client_cpp
INTERFACE
$<INSTALL_INTERFACE:${CMAKE_INSTALL_FULL_LIBDIR}/libfluvio_client_cpp.a>
$<BUILD_INTERFACE:${FLUVIO_STATIC_LIB}>
pthread
${CMAKE_DL_LIBS}
)
target_link_libraries(test_consumer PRIVATE
${FLUVIO_STATIC_LIB}
pthread dl m

target_include_directories(fluvio_client_cpp
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<BUILD_INTERFACE:${GENERATED_INCLUDE_DIR}>
$<INSTALL_INTERFACE:include>

PRIVATE
${CXXBRIDGE_HDR_DIR}/../..
${CXX_ROOT_DIR}
)

# Producer Test
add_executable(test_producer tests/test_producer.cpp)
target_link_libraries(test_producer PRIVATE fluvio_client_cpp)
add_test(NAME fluvio_producer_test COMMAND test_producer)

# Consumer Test
add_executable(test_consumer tests/test_consumer.cpp)
target_link_libraries(test_consumer PRIVATE fluvio_client_cpp)
add_test(NAME fluvio_consumer_test COMMAND test_consumer)

# Admin Test
add_executable(test_admin tests/test_admin.cpp ${CXXBRIDGE_SOURCES})
target_include_directories(test_admin PRIVATE ${CXXBRIDGE_HDR_DIR}/../.. ${CXX_ROOT_DIR})
target_link_libraries(test_admin PRIVATE
${FLUVIO_STATIC_LIB}
pthread dl m
)
add_executable(test_admin tests/test_admin.cpp)
target_link_libraries(test_admin PRIVATE fluvio_client_cpp)
add_test(NAME fluvio_admin_test COMMAND test_admin)

# Config Test
add_executable(test_config tests/test_config.cpp ${CXXBRIDGE_SOURCES})
target_include_directories(test_config PRIVATE ${CXXBRIDGE_HDR_DIR}/../.. ${CXX_ROOT_DIR})
target_link_libraries(test_config PRIVATE
${FLUVIO_STATIC_LIB}
pthread dl m
)
add_executable(test_config tests/test_config.cpp)
target_link_libraries(test_config PRIVATE fluvio_client_cpp)
add_test(NAME fluvio_config_test COMMAND test_config)

# Pure C Native Test
add_executable(test_c tests/test_c.c)
target_include_directories(test_c PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(test_c PRIVATE
${FLUVIO_STATIC_LIB}
stdc++ pthread dl m
)
target_link_libraries(test_c PRIVATE fluvio_client_cpp)
add_test(NAME fluvio_c_native_test COMMAND test_c)

# Auth E2E CXX Test
add_executable(test_auth tests/test_auth.cpp ${CXXBRIDGE_SOURCES})
target_include_directories(test_auth PRIVATE ${CXXBRIDGE_HDR_DIR}/../.. ${CXX_ROOT_DIR})
target_link_libraries(test_auth PRIVATE
${FLUVIO_STATIC_LIB}
pthread dl m
)
add_executable(test_auth tests/test_auth.cpp)
target_link_libraries(test_auth PRIVATE fluvio_client_cpp)
add_test(NAME fluvio_auth_test COMMAND test_auth)

# Auth E2E C Native Test
add_executable(test_auth_c tests/test_auth_c.c)
target_include_directories(test_auth_c PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_link_libraries(test_auth_c PRIVATE
target_link_libraries(test_auth_c PRIVATE fluvio_client_cpp)
add_test(NAME fluvio_auth_c_test COMMAND test_auth_c)

# Installation
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

install(DIRECTORY
include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

install(DIRECTORY
${CMAKE_CURRENT_BINARY_DIR}/generated_include/
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
)

install(FILES
${FLUVIO_STATIC_LIB}
stdc++ pthread dl m
DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

install(TARGETS fluvio_client_cpp
EXPORT fluvio_client_cppTargets

ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)

install(EXPORT fluvio_client_cppTargets
FILE fluvio_client_cppTargets.cmake
NAMESPACE ASTRAOS::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/fluvio_client_cpp
)

configure_package_config_file(
cmake/fluvio_client_cppConfig.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/fluvio_client_cppConfig.cmake
INSTALL_DESTINATION
${CMAKE_INSTALL_LIBDIR}/cmake/fluvio_client_cpp
)

install(FILES
${CMAKE_CURRENT_BINARY_DIR}/fluvio_client_cppConfig.cmake
DESTINATION
${CMAKE_INSTALL_LIBDIR}/cmake/fluvio_client_cpp
)
add_test(NAME fluvio_auth_c_test COMMAND test_auth_c)
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "fluvio-client-cpp"
version = "0.1.0"
version = "0.2.0"
edition = "2024"

[lib]
Expand Down
21 changes: 14 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,17 +18,24 @@ The public API follows the same object-oriented layout as the original Fluvio cl

## Installation

You can install the client effortlessly without compiling the heavy Rust toolchain by using `vcpkg`.
### vcpkg

```bash
vcpkg install fluvio-client-cpp
```
> **Note**
> The vcpkg port is currently under development and is not yet available in the official vcpkg registry.

Until then, use the CMake FetchContent method below.

In your `CMakeLists.txt`, simply find the package and link it:
You can build the library from source by fetching it during the CMake configure step and building it as part of your project:

```cmake
find_package(fluvio_client_cpp CONFIG REQUIRED)
target_link_libraries(main PRIVATE fluvio_client_cpp::fluvio_client_cpp)
include(FetchContent)
FetchContent_Declare(
fluvio_client_cpp
GIT_REPOSITORY https://github.com/ASTRAOS-de/fluvio-client-cpp.git
)
FetchContent_MakeAvailable(fluvio_client_cpp)

target_link_libraries(main PRIVATE ASTRAOS::fluvio_client_cpp)
```

# Example Usage
Expand Down
3 changes: 3 additions & 0 deletions cmake/fluvio_client_cppConfig.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/fluvio_client_cppTargets.cmake")
10 changes: 0 additions & 10 deletions fluvio_client_cppConfig.cmake

This file was deleted.

File renamed without changes.
3 changes: 3 additions & 0 deletions include/fluvio_client_cpp/fluvio_client_cpp.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
#pragma once

#include "lib.rs.h"
2 changes: 1 addition & 1 deletion tests/test_admin.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "fluvio-client-cpp/src/lib.rs.h"
#include <fluvio_client_cpp/fluvio_client_cpp.hpp>
#include <iostream>

int main() {
Expand Down
3 changes: 1 addition & 2 deletions tests/test_auth.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include "fluvio-client-cpp/src/lib.rs.h"
#include <fluvio_client_cpp/fluvio_client_cpp.hpp>
#include <iostream>
#include <cstdlib>

int main() {
try {
Expand Down
2 changes: 1 addition & 1 deletion tests/test_auth_c.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "fluvio.h"
#include <fluvio_client_c/fluvio_client_c.h>
#include <stdio.h>

int main() {
Expand Down
2 changes: 1 addition & 1 deletion tests/test_c.c
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "fluvio.h"
#include <fluvio_client_c/fluvio_client_c.h>
#include <stdio.h>
#include <string.h>

Expand Down
2 changes: 1 addition & 1 deletion tests/test_config.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#include "fluvio-client-cpp/src/lib.rs.h"
#include <fluvio_client_cpp/fluvio_client_cpp.hpp>
#include <iostream>

int main() {
Expand Down
3 changes: 1 addition & 2 deletions tests/test_consumer.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#include "fluvio-client-cpp/src/lib.rs.h"
#include "rust/cxx.h"
#include <fluvio_client_cpp/fluvio_client_cpp.hpp>
#include <iostream>

int main() {
Expand Down
3 changes: 1 addition & 2 deletions tests/test_producer.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#include "fluvio-client-cpp/src/lib.rs.h"
#include "rust/cxx.h"
#include <fluvio_client_cpp/fluvio_client_cpp.hpp>
#include <iostream>

int main() {
Expand Down
Loading