mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-02-19 05:13:07 +00:00
* Initial for liblogosdelivery library (static & dynamic) based on current state of API. * nix build support added. * logosdelivery_example * Added support for missing logLevel/logFormat in new API create_node * Added full JSON to NodeConfig support * Added ctx and ctx.myLib check to avoid uninitialzed calls and crash. Adjusted logosdelivery_example with proper error handling and JSON config format * target aware install phase * Fix base64 decode of payload
2.6 KiB
2.6 KiB
Building liblogosdelivery and Examples
Prerequisites
- Nim 2.x compiler
- Rust toolchain (for RLN dependencies)
- GCC or Clang compiler
- Make
Building the Library
Dynamic Library
make liblogosdelivery
This creates build/liblogosdelivery.dylib (macOS) or build/liblogosdelivery.so (Linux).
Static Library
nim liblogosdelivery STATIC=1
This creates build/liblogosdelivery.a.
Building Examples
liblogosdelivery Example
Compile the C example that demonstrates all library features:
# Using Make (recommended)
make liblogosdelivery_example
## Running Examples
```bash
./build/liblogosdelivery_example
The example will:
- Create a Logos Messaging node
- Register event callbacks for message events
- Start the node
- Subscribe to a content topic
- Send a message
- Show message delivery events (sent, propagated, or error)
- Unsubscribe and cleanup
Build Artifacts
After building, you'll have:
build/
├── liblogosdelivery.dylib # Dynamic library (34MB)
├── liblogosdelivery.dylib.dSYM/ # Debug symbols
└── liblogosdelivery_example # Compiled example (34KB)
Library Headers
The main header file is:
liblogosdelivery/liblogosdelivery.h- C API declarations
Troubleshooting
Library not found at runtime
If you get "library not found" errors when running the example:
macOS:
export DYLD_LIBRARY_PATH=/path/to/build:$DYLD_LIBRARY_PATH
./build/liblogosdelivery_example
Linux:
export LD_LIBRARY_PATH=/path/to/build:$LD_LIBRARY_PATH
./build/liblogosdelivery_example
Cross-Compilation
For cross-compilation, you need to:
- Build the Nim library for the target platform
- Use the appropriate cross-compiler
- Link against the target platform's liblogosdelivery
Example for Linux from macOS:
# Build library for Linux (requires Docker or cross-compilation setup)
# Then compile with cross-compiler
Integration with Your Project
CMake
find_library(LMAPI_LIBRARY NAMES lmapi PATHS ${PROJECT_SOURCE_DIR}/build)
include_directories(${PROJECT_SOURCE_DIR}/liblogosdelivery)
target_link_libraries(your_target ${LMAPI_LIBRARY})
Makefile
CFLAGS += -I/path/to/liblogosdelivery
LDFLAGS += -L/path/to/build -llmapi -Wl,-rpath,/path/to/build
your_program: your_program.c
$(CC) $(CFLAGS) $< -o $@ $(LDFLAGS)
API Documentation
See:
- liblogosdelivery.h - API function declarations
- MESSAGE_EVENTS.md - Message event handling guide