2025-09-29 21:45:23 +01:00

51 lines
1.2 KiB
Makefile

# Makefile for Waku Go Bindings
# 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
# 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..."
@cd $(NWAKU_DIR) && make libwaku
# Build Waku Go Bindings
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 -f $(LIBWAKU_HEADER) $(LIBWAKU)
@rm -f waku-go-bindings