@@ -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
5658endif
5759
5860ifeq ($(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
6872endif
6973
7074ifeq ($(detected_OS ) ,Darwin)
@@ -74,14 +78,13 @@ ifeq ($(detected_OS),Darwin)
7478else ifeq ($(detected_OS),Windows)
7579 GOBIN_SHARED_LIB_EXT := dll
7680 LIBWAKU_EXT := dll
77- GOBIN_SHARED_LIB_CGO_LDFLAGS := CGO_LDFLAGS=""
7881else
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"
8285endif
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
8588export GOPATH ?= $(HOME ) /go
8689
8790GIT_ROOT ?= $(dir $(realpath $(lastword $(MAKEFILE_LIST ) ) ) )
@@ -91,7 +94,12 @@ GIT_AUTHOR ?= $(shell git config user.email || echo $$USER)
9194BUILD_TAGS ?= gowaku_no_rln
9295
9396ifeq ($(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
95103endif
96104
97105BUILD_FLAGS ?= -ldflags=""
@@ -165,21 +173,41 @@ nix-purge: ##@nix Completely remove Nix setup, including /nix directory
165173all : $(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
178187ifeq ($(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)
181190endif
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+
183211statusgo : # #@build Build status-go as status-backend server
184212statusgo : build/bin/status-backend
185213
@@ -213,6 +241,7 @@ statusgo-c-bindings:
213241statusgo-library : generate
214242statusgo-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-
227254statusgo-shared-library : generate
228255statusgo-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
246274statusgo-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:
314343docker-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-
326346test : test-unit # #@tests Run basic, short tests during development
327347
328348test-unit-prep : generate
0 commit comments