feat: nwaku download script

This commit is contained in:
Igor Sirotin 2025-09-29 21:45:23 +01:00
parent 8360dbaa6b
commit c03874e35a
No known key found for this signature in database
GPG Key ID: 0EABBCB40CB9AD4A
2 changed files with 64 additions and 6 deletions

37
scripts/download_nwaku.sh Executable file
View File

@ -0,0 +1,37 @@
#!/usr/bin/env bash
set -euo pipefail
VERSION="${VERSION:-v0.36.0}"
NWAKU_DIR="../third_party/nwaku"
OS="$(uname | tr '[:upper:]' '[:lower:]')"
ARCH="$(uname -m)"
EXT="so"
if [ ! -d "$NWAKU_DIR" ]; then
echo "Error: Directory $NWAKU_DIR does not exist. Please create it first."
exit 1
fi
case "$OS" in
darwin) OS="darwin" ;;
linux) OS="linux" ;;
*) echo "Unsupported OS: $OS"; exit 1 ;;
esac
case "$ARCH" in
x86_64|amd64) ARCH="x86_64" ;;
arm64|aarch64) ARCH="arm64" ;;
*) echo "Unsupported ARCH: $ARCH"; exit 1 ;;
esac
URL_BASE="https://github.com/waku-org/nwaku/releases/download"
URL="${URL_BASE}/${VERSION}/libwaku-${VERSION}-${OS}-${ARCH}.${EXT}"
HEADER_URL="${URL_BASE}/${VERSION}/libwaku.h"
echo "Downloading nwaku $VERSION for $OS-$ARCH..."
echo "Downloading library header from $HEADER_URL"
curl -sfL -o "$NWAKU_DIR/libwaku.h" "$HEADER_URL"
echo "Downloading library binary from $URL"
curl -sfL -o "$NWAKU_DIR/libwaku.${EXT}" "$URL"

View File

@ -1,15 +1,36 @@
# Makefile for Waku Go Bindings
# Directories
# Determine OS and set library extension
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
EXT := so
else ifeq ($(UNAME_S),Darwin)
EXT := so
else ifeq ($(OS),Windows_NT)
EXT := dll
else
$(error Unsupported OS: $(UNAME_S))
endif
THIRD_PARTY_DIR := $(shell pwd)/../third_party
NWAKU_REPO := https://github.com/waku-org/nwaku
NWAKU_DIR := $(THIRD_PARTY_DIR)/nwaku
LIBWAKU_HEADER := $(NWAKU_DIR)/libwaku.h
LIBWAKU := $(NWAKU_DIR)/libwaku.${EXT}
.PHONY: all clean build-libwaku build
.PHONY: all clean build libwaku
# Default target
all: build
# Prepare third_party directory and clone nwaku
# NOTE: Currently we download a library release.
# In the future we should get nwaku from Nimble package manager.
$(LIBWAKU) $(LIBWAKU_HEADER):
@../scripts/download_nwaku.sh
libwaku: $(LIBWAKU) $(LIBWAKU_HEADER)
# Build libwaku
build-libwaku:
@echo "Building libwaku..."
@ -17,14 +38,14 @@ build-libwaku:
# Build Waku Go Bindings
build: export CGO_CFLAGS = "-I${NWAKU_DIR}/library/"
build: export CGO_LDFLAGS = "-L${NWAKU_DIR}/build/ -lwaku -L${NWAKU_DIR} -Wl,-rpath,${NWAKU_DIR}/build/"
build:
build: export CGO_CFLAGS = "-I${NWAKU_DIR}"
build: export CGO_LDFLAGS = "-L${NWAKU_DIR} -lwaku -L${NWAKU_DIR} -Wl,-rpath,${NWAKU_DIR}"
build: libwaku
@echo "Building Waku Go Bindings..."
go build ./...
# Clean up generated files
clean:
@echo "Cleaning up..."
@rm -rf $(THIRD_PARTY_DIR)
@rm -f $(LIBWAKU_HEADER) $(LIBWAKU)
@rm -f waku-go-bindings