2025-09-29 22:10:50 +01:00

49 lines
1.1 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):
@chmod +x ../scripts/download_nwaku.sh
@../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: 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