Skip to content

Commit a442bdb

Browse files
authored
feat: externally provided nwaku (#7026)
* chore: bump go-waku-bindings * chore(Makefile): group libwaku targets * chore: cleanup cgo env vars * feat(Makefile): expect nwaku to be provided externally * ci: clone nwaku * ci: cleanup nwaku * fix(Makefile): nwaku target as dependency * feat: only compile libwaku * chore: bump go-waku-bindings
1 parent d165cf8 commit a442bdb

File tree

7 files changed

+62
-53
lines changed

7 files changed

+62
-53
lines changed

Makefile

Lines changed: 46 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,9 @@ ifeq ($(MAKECMDGOALS),statusgo-android-library)
5252
MOBILE_GOARCH := $(ARCH)
5353
ANDROID_CLANG_TARGET := aarch64-linux-android$(ANDROID_API)
5454
endif
55-
ANDROID_BUILD_FLAGS := CC="$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_OS)-x86_64/bin/clang --target=$(ANDROID_CLANG_TARGET) --sysroot=$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_OS)-x86_64/sysroot" CGO_CFLAGS="-Os -flto -fembed-bitcode" CGO_LDFLAGS="-Os -flto" CGO_ENABLED=1 GOOS=android GOARCH=$(MOBILE_GOARCH)
55+
ANDROID_BUILD_FLAGS := CC="$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_OS)-x86_64/bin/clang --target=$(ANDROID_CLANG_TARGET) --sysroot=$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_OS)-x86_64/sysroot" CGO_ENABLED=1 GOOS=android GOARCH=$(MOBILE_GOARCH)
56+
CGO_CFLAGS+=-Os -flto -fembed-bitcode
57+
CGO_LDFLAGS+=-Os -flto
5658
endif
5759

5860
ifeq ($(MAKECMDGOALS),statusgo-ios-library)
@@ -64,7 +66,9 @@ ifeq ($(MAKECMDGOALS),statusgo-ios-library)
6466
else
6567
MOBILE_GOARCH := $(ARCH)
6668
endif
67-
IOS_BUILD_FLAGS := CGO_LDFLAGS="-Os -flto" CGO_ENABLED=1 GOOS=ios GOARCH=$(MOBILE_GOARCH)
69+
IOS_BUILD_FLAGS := CGO_ENABLED=1 GOOS=ios GOARCH=$(MOBILE_GOARCH)
70+
CGO_CFLAGS+=-Os -flto -arch $(ARCH) -isysroot $$(xcrun --sdk $(IPHONE_SDK) --show-sdk-path) -miphoneos-version-min=$(IOS_TARGET) -fembed-bitcode
71+
CGO_LDFLAGS+=-Os -flto
6872
endif
6973

7074
ifeq ($(detected_OS),Darwin)
@@ -74,14 +78,13 @@ ifeq ($(detected_OS),Darwin)
7478
else ifeq ($(detected_OS),Windows)
7579
GOBIN_SHARED_LIB_EXT := dll
7680
LIBWAKU_EXT := dll
77-
GOBIN_SHARED_LIB_CGO_LDFLAGS := CGO_LDFLAGS=""
7881
else
7982
GOBIN_SHARED_LIB_EXT := so
8083
LIBWAKU_EXT := so
81-
GOBIN_SHARED_LIB_CGO_LDFLAGS := CGO_LDFLAGS="-Wl,-soname,libstatus.so.0"
84+
CGO_LDFLAGS += "-Wl,-soname,libstatus.so.0"
8285
endif
8386

84-
CGO_CFLAGS = -I/$(JAVA_HOME)/include -I/$(JAVA_HOME)/include/darwin
87+
CGO_CFLAGS+=-I/$(JAVA_HOME)/include -I/$(JAVA_HOME)/include/darwin
8588
export GOPATH ?= $(HOME)/go
8689

8790
GIT_ROOT ?= $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
@@ -91,7 +94,12 @@ GIT_AUTHOR ?= $(shell git config user.email || echo $$USER)
9194
BUILD_TAGS ?= gowaku_no_rln
9295

9396
ifeq ($(USE_NWAKU), true)
94-
BUILD_TAGS += use_nwaku
97+
BUILD_TAGS += use_nwaku
98+
NWAKU_VERSION ?= v0.37.0-rc.3
99+
NWAKU_SOURCE_DIR ?= $(GIT_ROOT)/../nwaku
100+
LIBWAKU := $(NWAKU_SOURCE_DIR)/build/libwaku.$(LIBWAKU_EXT)
101+
CGO_CFLAGS+=-I$(NWAKU_SOURCE_DIR)/library
102+
CGO_LDFLAGS+=-L$(NWAKU_SOURCE_DIR)/build -lwaku -Wl,-rpath,$(NWAKU_SOURCE_DIR)/build
95103
endif
96104

97105
BUILD_FLAGS ?= -ldflags=""
@@ -165,21 +173,41 @@ nix-purge: ##@nix Completely remove Nix setup, including /nix directory
165173
all: $(GO_CMD_NAMES)
166174

167175
.PHONY: $(GO_CMD_NAMES) $(GO_CMD_PATHS) $(GO_CMD_BUILDS)
168-
$(GO_CMD_BUILDS): generate
176+
$(GO_CMD_BUILDS): generate $(LIBWAKU)
169177
$(GO_CMD_BUILDS): ##@build Build any Go project from cmd folder
178+
CGO_LDFLAGS="$(CGO_LDFLAGS)" CGO_CFLAGS="$(CGO_CFLAGS)" \
170179
go build -mod=vendor -v \
171180
-tags '$(BUILD_TAGS)' $(BUILD_FLAGS) \
172181
-o ./$@ ./cmd/$(notdir $@)
173182
@echo "Compilation done."
174183
@echo "Run \"build/bin/$(notdir $@) -h\" to view available commands."
175184

176-
LIBWAKU := $(CURDIR)/vendor/github.com/waku-org/waku-go-bindings/third_party/nwaku/build/libwaku.$(LIBWAKU_EXT)
177-
$(LIBWAKU):
185+
186+
$(NWAKU_SOURCE_DIR): ##@build Clone nwaku
178187
ifeq ($(USE_NWAKU),true)
179-
@echo "Building libwaku"
180-
$(MAKE) -C $(CURDIR)/vendor/github.com/waku-org/waku-go-bindings/waku SHELL=/bin/bash
188+
@echo "Cloning nwaku $(NWAKU_VERSION)..."
189+
git clone --branch $(NWAKU_VERSION) https://github.com/waku-org/nwaku.git $(NWAKU_SOURCE_DIR)
181190
endif
182191

192+
clone-nwaku: $(NWAKU_SOURCE_DIR)
193+
194+
$(LIBWAKU): clone-nwaku
195+
ifeq ($(USE_NWAKU),true)
196+
@echo "Building libwaku" $(LIBWAKU)
197+
$(MAKE) -C $(NWAKU_SOURCE_DIR) libwaku SHELL=/bin/bash
198+
endif
199+
200+
build-libwaku: $(LIBWAKU)
201+
202+
test-libwaku: | $(LIBWAKU)
203+
go test -tags '$(BUILD_TAGS) use_nwaku' -run TestDial ./wakuv2/... -count 1 -v -json | jq -r '.Output'
204+
205+
clean-libwaku:
206+
@echo "Removing libwaku"
207+
rm $(LIBWAKU)
208+
209+
rebuild-libwaku: | clean-libwaku $(LIBWAKU)
210+
183211
statusgo: ##@build Build status-go as status-backend server
184212
statusgo: build/bin/status-backend
185213

@@ -213,6 +241,7 @@ statusgo-c-bindings:
213241
statusgo-library: generate
214242
statusgo-library: statusgo-c-bindings $(LIBWAKU) ##@cross-compile Build status-go as static library for current platform
215243
@echo "Building static library..."
244+
CGO_LDFLAGS="$(CGO_LDFLAGS)" CGO_CFLAGS="$(CGO_CFLAGS)" \
216245
go build \
217246
-tags '$(BUILD_TAGS)' \
218247
$(BUILD_FLAGS) \
@@ -222,13 +251,12 @@ statusgo-library: statusgo-c-bindings $(LIBWAKU) ##@cross-compile Build status-g
222251
@echo "Static library built:"
223252
@ls -la build/bin/libstatus.*
224253

225-
build-libwaku: $(LIBWAKU)
226-
227254
statusgo-shared-library: generate
228255
statusgo-shared-library: statusgo-c-bindings $(LIBWAKU) ##@cross-compile Build status-go as shared library for current platform
229256
@echo "Building shared library..."
230257
@echo "Tags: $(BUILD_TAGS)"
231-
$(GOBIN_SHARED_LIB_CFLAGS) $(GOBIN_SHARED_LIB_CGO_LDFLAGS) go build \
258+
CGO_LDFLAGS="$(CGO_LDFLAGS)" CGO_CFLAGS="$(CGO_CFLAGS)" \
259+
go build \
232260
-tags '$(BUILD_TAGS)' \
233261
$(BUILD_FLAGS) \
234262
-buildmode=c-shared \
@@ -245,7 +273,8 @@ endif
245273

246274
statusgo-android-library: generate statusgo-c-bindings $(LIBWAKU) ##@cross-compile Build status-go as Android mobile library
247275
@echo "Building Android mobile library..."
248-
$(ANDROID_BUILD_FLAGS) go build -buildmode=c-shared -tags 'gowaku_no_rln nowatchdog disable_torrent' \
276+
$(ANDROID_BUILD_FLAGS) CGO_LDFLAGS="$(CGO_LDFLAGS)" CGO_CFLAGS="$(CGO_CFLAGS)" \
277+
go build -buildmode=c-shared -tags 'gowaku_no_rln nowatchdog disable_torrent' \
249278
-ldflags="-checklinkname=0 -X github.com/status-im/status-go/vendor/github.com/ethereum/go-ethereum/metrics.EnabledStr=true" \
250279
-o "build/bin/libstatus.so" ./build/bin/statusgo-lib
251280
@echo "Android library built"
@@ -255,8 +284,8 @@ statusgo-ios-library: generate statusgo-c-bindings $(LIBWAKU) ##@cross-compile B
255284
@echo "Building iOS mobile library..."
256285
DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" \
257286
CC="$$(xcrun --sdk $(IPHONE_SDK) --find clang)" \
258-
CGO_CFLAGS="-Os -flto -arch $(ARCH) -isysroot $$(xcrun --sdk $(IPHONE_SDK) --show-sdk-path) -miphoneos-version-min=$(IOS_TARGET) -fembed-bitcode" \
259-
$(IOS_BUILD_FLAGS) go build -buildmode=c-archive -tags 'gowaku_no_rln nowatchdog disable_torrent' \
287+
$(IOS_BUILD_FLAGS) CGO_LDFLAGS="$(CGO_LDFLAGS)" CGO_CFLAGS="$(CGO_CFLAGS)" \
288+
go build -buildmode=c-archive -tags 'gowaku_no_rln nowatchdog disable_torrent' \
260289
-ldflags="-checklinkname=0 -X github.com/status-im/status-go/vendor/github.com/ethereum/go-ethereum/metrics.EnabledStr=true" \
261290
-o "build/bin/libstatus.a" ./build/bin/statusgo-lib
262291
@echo "iOS library built"
@@ -314,15 +343,6 @@ lint-fix:
314343
docker-test: ##@tests Run tests in a docker container with golang.
315344
docker run --privileged --rm -it -v "$(PWD):$(DOCKER_TEST_WORKDIR)" -w "$(DOCKER_TEST_WORKDIR)" $(DOCKER_TEST_IMAGE) go test ${ARGS}
316345

317-
test-libwaku: | $(LIBWAKU)
318-
go test -tags '$(BUILD_TAGS) use_nwaku' -run TestDial ./wakuv2/... -count 1 -v -json | jq -r '.Output'
319-
320-
clean-libwaku:
321-
@echo "Removing libwaku"
322-
rm $(LIBWAKU)
323-
324-
rebuild-libwaku: | clean-libwaku $(LIBWAKU)
325-
326346
test: test-unit ##@tests Run basic, short tests during development
327347

328348
test-unit-prep: generate

_assets/ci/Jenkinsfile.nwaku

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ pipeline {
6464
/* Ensure env var is set on first run. */
6565
USE_NWAKU = "${params.USE_NWAKU}"
6666

67+
/* nwaku source directory */
68+
NWAKU_SOURCE_DIR = "${WORKSPACE_TMP}/nwaku"
69+
6770
/* fixes nim cache collision */
6871
XDG_CACHE_HOME = "${env.WORKSPACE_TMP}/.cache"
6972
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ require (
100100
github.com/status-im/extkeys v1.4.0
101101
github.com/status-im/go-wallet-sdk v0.0.0-20251027141302-43edbd6abc92
102102
github.com/waku-org/go-waku v0.10.1-0.20251003225121-06c9af60f35b
103-
github.com/waku-org/waku-go-bindings v0.0.0-20250714110306-6feba5b0df4d
103+
github.com/waku-org/waku-go-bindings v0.0.0-20251030105913-aa64c47d2bf3
104104
github.com/wk8/go-ordered-map/v2 v2.1.7
105105
go.lsp.dev/jsonrpc2 v0.10.0
106106
go.lsp.dev/protocol v0.12.0

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2212,8 +2212,8 @@ github.com/waku-org/go-zerokit-rln-arm v0.0.0-20230916171929-1dd9494ff065 h1:Sd7
22122212
github.com/waku-org/go-zerokit-rln-arm v0.0.0-20230916171929-1dd9494ff065/go.mod h1:7cSGUoGVIla1IpnChrLbkVjkYgdOcr7rcifEfh4ReR4=
22132213
github.com/waku-org/go-zerokit-rln-x86_64 v0.0.0-20230916171518-2a77c3734dd1 h1:4HSdWMFMufpRo3ECTX6BrvA+VzKhXZf7mS0rTa5cCWU=
22142214
github.com/waku-org/go-zerokit-rln-x86_64 v0.0.0-20230916171518-2a77c3734dd1/go.mod h1:+LeEYoW5/uBUTVjtBGLEVCUe9mOYAlu5ZPkIxLOSr5Y=
2215-
github.com/waku-org/waku-go-bindings v0.0.0-20250714110306-6feba5b0df4d h1:k22pZ7dnQ5vTplQ7ZwTfkaZgEUl9IwO9NlbwzRsg73M=
2216-
github.com/waku-org/waku-go-bindings v0.0.0-20250714110306-6feba5b0df4d/go.mod h1:v6ogkMCyQRUTazRyQR5LIouukY4/2bkjjHpnBKBxcAY=
2215+
github.com/waku-org/waku-go-bindings v0.0.0-20251030105913-aa64c47d2bf3 h1:VimYvS377VZh/b/kipnv2rp0a2r8Dd7D+4ihVd3hipI=
2216+
github.com/waku-org/waku-go-bindings v0.0.0-20251030105913-aa64c47d2bf3/go.mod h1:v6ogkMCyQRUTazRyQR5LIouukY4/2bkjjHpnBKBxcAY=
22172217
github.com/wealdtech/go-ens/v3 v3.5.0 h1:Huc9GxBgiGweCOGTYomvsg07K2QggAqZpZ5SuiZdC8o=
22182218
github.com/wealdtech/go-ens/v3 v3.5.0/go.mod h1:bVuYoWYEEeEu7Zy95rIMjPR34QFJarxt8p84ywSo0YM=
22192219
github.com/wealdtech/go-multicodec v1.4.0 h1:iq5PgxwssxnXGGPTIK1srvt6U5bJwIp7k6kBrudIWxg=

vendor/github.com/waku-org/waku-go-bindings/waku/Makefile

Lines changed: 7 additions & 19 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/waku-org/waku-go-bindings/waku/nwaku.go

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1365,7 +1365,7 @@ github.com/waku-org/go-zerokit-rln-x86_64/libs/x86_64-pc-windows-gnu
13651365
github.com/waku-org/go-zerokit-rln-x86_64/libs/x86_64-unknown-linux-gnu
13661366
github.com/waku-org/go-zerokit-rln-x86_64/libs/x86_64-unknown-linux-musl
13671367
github.com/waku-org/go-zerokit-rln-x86_64/rln
1368-
# github.com/waku-org/waku-go-bindings v0.0.0-20250714110306-6feba5b0df4d
1368+
# github.com/waku-org/waku-go-bindings v0.0.0-20251030105913-aa64c47d2bf3
13691369
## explicit; go 1.21
13701370
github.com/waku-org/waku-go-bindings/utils
13711371
github.com/waku-org/waku-go-bindings/waku

0 commit comments

Comments
 (0)