53 lines
1.4 KiB
Markdown
Raw Normal View History

2024-11-27 12:08:50 +02:00
# Waku Go Bindings
2025-09-26 14:58:18 +01:00
Go bindings for the Waku library.
2024-11-27 12:08:50 +02:00
2025-09-26 14:58:18 +01:00
## Install
2024-11-27 12:08:50 +02:00
2025-09-26 14:58:18 +01:00
```
go get -u github.com/waku-org/waku-go-bindings
```
2024-11-27 12:08:50 +02:00
2025-09-26 14:58:18 +01:00
## Dependencies
2024-11-27 12:08:50 +02:00
2025-09-26 14:58:18 +01:00
This repository doesn't download or build `nwaku`. You must provide `libwaku` and its headers.
2024-11-27 12:08:50 +02:00
2025-09-26 14:58:18 +01:00
To do so, you can:
- Build `libwaku` from https://github.com/waku-org/nwaku.
- Point `cgo` to the headers and compiled library when building your project.
2025-01-22 18:58:40 +01:00
2025-09-26 14:58:18 +01:00
Example environment setup (adjust paths to your nwaku checkout):
```
export NWAKU_DIR=/path/to/nwaku
2025-10-20 12:39:50 +01:00
export NWAKU_INCLUDE_DIR="{NWAKU_DIR}/library"
export NWAKU_LIB_DIR="${NWAKU_DIR}/build"
2025-09-26 14:58:18 +01:00
```
2024-11-27 12:08:50 +02:00
2025-09-26 14:58:18 +01:00
Such setup would look like this in a `Makefile`:
```Makefile
NWAKU_DIR ?= /path/to/nwaku
2025-03-13 15:22:58 +02:00
2025-10-20 12:39:50 +01:00
build: NWAKU_INCLUDE_DIR ?= $(NWAKU_DIR)/library
build: NWAKU_LIB_DIR ?= $(NWAKU_DIR)/build
2025-09-26 14:58:18 +01:00
build: ## Your project build command
go build ./...
```
2025-03-13 15:22:58 +02:00
2025-10-20 12:39:50 +01:00
For a reference integration, see how `status-go` wires `NWAKU_INCLUDE_DIR` and `NWAKU_LIB_DIR` in its build setup.
2025-03-13 15:22:58 +02:00
2025-09-26 14:58:18 +01:00
NOTE: If your project is itself used as a Go dependency, all its clients will have to follow the same nwaku setup.
2025-03-13 15:22:58 +02:00
2025-09-26 14:58:18 +01:00
## Development
2025-09-26 14:58:18 +01:00
When working on this repository itself, `nwaku` is included as a git submodule for convenience.
2025-09-26 14:58:18 +01:00
- Initialize and update the submodule, then build `libwaku`
```sh
git submodule update --init --recursive
make -C waku build-libwaku
```
- Build the project. Submodule paths are used by default to find `libwaku`.
```shell
make -C waku build
```