2024-11-27 12:08:50 +02:00
|
|
|
# Waku Go Bindings
|
|
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
Go bindings for the Waku library.
|
2024-11-27 12:08:50 +02:00
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
## Install
|
2024-11-27 12:08:50 +02:00
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
```
|
|
|
|
|
go get -u github.com/waku-org/waku-go-bindings
|
|
|
|
|
```
|
2024-11-27 12:08:50 +02:00
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
## Dependencies
|
2024-11-27 12:08:50 +02:00
|
|
|
|
2025-10-30 10:59:13 +00: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-10-30 10:59:13 +00: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-10-30 10:59:13 +00:00
|
|
|
Example environment setup (adjust paths to your nwaku checkout):
|
|
|
|
|
```
|
|
|
|
|
export NWAKU_DIR=/path/to/nwaku
|
|
|
|
|
export CGO_CFLAGS="-I${NWAKU_DIR}/library"
|
|
|
|
|
export CGO_LDFLAGS="-L${NWAKU_DIR}/build -lwaku -Wl,-rpath,${NWAKU_DIR}/build"
|
|
|
|
|
```
|
2024-11-27 12:08:50 +02:00
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
Such setup would look like this in a `Makefile`:
|
|
|
|
|
```Makefile
|
|
|
|
|
NWAKU_DIR ?= /path/to/nwaku
|
|
|
|
|
CGO_CFLAGS = -I$(NWAKU_DIR)/library
|
|
|
|
|
CGO_LDFLAGS = -L$(NWAKU_DIR)/build -lwaku -Wl,-rpath,$(NWAKU_DIR)/build
|
2025-03-13 15:22:58 +02:00
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
build: ## Your project build command
|
|
|
|
|
go build ./...
|
|
|
|
|
```
|
2025-03-13 15:22:58 +02:00
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
For a reference integration, see how `status-go` wires `CGO_CFLAGS` and `CGO_LDFLAGS` in its build setup.
|
2025-03-13 15:22:58 +02:00
|
|
|
|
2025-10-30 10:59:13 +00: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-10-30 10:59:13 +00:00
|
|
|
## Development
|
2025-03-26 16:29:51 +02:00
|
|
|
|
2025-10-30 10:59:13 +00:00
|
|
|
When working on this repository itself, `nwaku` is included as a git submodule for convenience.
|
2025-03-26 16:29:51 +02:00
|
|
|
|
2025-10-30 10:59:13 +00: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
|
|
|
|
|
```
|