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
```
2025-12-12 22:48:53 +01:00
go get -u github.com/logos-messaging/logos-messaging-go-bindings
2025-10-30 10:59:13 +00:00
```
2024-11-27 12:08:50 +02:00
2025-12-19 14:43:52 +05:30
## Building & Dependencies
2024-11-27 12:08:50 +02:00
2025-12-19 14:43:52 +05:30
`libwaku` (from `logos-messaging-nim` ) is required at compile-time. The Makefile gives you two ways to satisfy this:
2024-11-27 12:08:50 +02:00
2025-12-19 15:58:52 +05:30
1. **Reuse an existing clone** – if you already have `logos-messaging-nim` checked out, point the build to it:
### Manual build without Makefile
If you want to invoke `go build` or `go test` directly, export the same variables the Makefile sets:
2025-12-19 14:43:52 +05:30
```bash
2025-12-19 15:58:52 +05:30
# path to your existing logos-messaging-nim clone
2025-12-20 00:14:00 +05:30
export LMN_DIR=/absolute/path/to/logos-messaging-nim
export CGO_CFLAGS="-I${LMN_DIR}/library"
export CGO_LDFLAGS="-L${LMN_DIR}/build -lwaku -Wl,-rpath,${LMN_DIR}/build"
2025-12-19 15:58:52 +05:30
# compile all packages
2025-12-20 00:14:00 +05:30
go build ./waku
2025-12-19 15:58:52 +05:30
2025-12-20 00:14:00 +05:30
# run all tests
go test ./waku
# run a specific test
2025-12-19 15:58:52 +05:30
go test ./waku -count=1 -run TestConnectedPeersInfo -v
2025-12-19 14:43:52 +05:30
```
2025-01-22 18:58:40 +01:00
2025-12-19 15:58:52 +05:30
2. **Automatic clone (default)** – if `LMN_DIR` is **unset** , running
2025-12-19 14:43:52 +05:30
```bash
make -C waku build
```
2025-12-19 15:58:52 +05:30
will clone a shallow copy of `logos-messaging-nim` into `third_party/nwaku` , build `libwaku` , and compile the Go bindings. This is what CI uses.
2025-03-13 15:22:58 +02:00
2025-12-19 14:43:52 +05:30
> **Downstream projects**: When importing `logos-messaging-go-bindings` in another Go module you must ensure `LMN_DIR` is exported (or vendor `libwaku`) before running `go build`. Otherwise the CGO step will fail.
2025-03-13 15:22:58 +02:00
2025-12-19 14:43:52 +05:30
---
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-12-16 03:06:15 +05:30
When working on this repository itself, `logos-messaging-nim` 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
```