Skip to content

Commit a6b965d

Browse files
committed
fix: common cgo_cflags and cgo_ldflags
1 parent 022b143 commit a6b965d

File tree

1 file changed

+24
-19
lines changed

1 file changed

+24
-19
lines changed

Makefile

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ else
4040
detected_OS := $(strip $(shell uname))
4141
endif
4242

43+
CGO_CFLAGS =
44+
CGO_LDFLAGS = -v
45+
4346
ifeq ($(MAKECMDGOALS),statusgo-android-library)
4447
ARCH ?= arm64
4548
ANDROID_NDK_ROOT ?= $(shell find /nix/store -path "*android-sdk-ndk-27.2.12479018/libexec/android-sdk/ndk/27.2.12479018" -type d 2>/dev/null | head -1)
@@ -50,7 +53,9 @@ ifeq ($(MAKECMDGOALS),statusgo-android-library)
5053
else
5154
MOBILE_GOARCH := $(ARCH)
5255
endif
53-
ANDROID_BUILD_FLAGS := CC="$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_OS)-x86_64/bin/clang --target=aarch64-linux-android$(ANDROID_API) --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)
56+
ANDROID_BUILD_FLAGS := CC="$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_OS)-x86_64/bin/clang --target=aarch64-linux-android$(ANDROID_API) --sysroot=$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(HOST_OS)-x86_64/sysroot" CGO_ENABLED=1 GOOS=android GOARCH=$(MOBILE_GOARCH)
57+
CGO_CFLAGS += -Os -flto -fembed-bitcode
58+
CGO_LDFLAGS += -Os -flto
5459
endif
5560

5661
ifeq ($(MAKECMDGOALS),statusgo-ios-library)
@@ -62,7 +67,9 @@ ifeq ($(MAKECMDGOALS),statusgo-ios-library)
6267
else
6368
MOBILE_GOARCH := $(ARCH)
6469
endif
65-
IOS_BUILD_FLAGS := CGO_LDFLAGS="-Os -flto" CGO_ENABLED=1 GOOS=ios GOARCH=$(MOBILE_GOARCH)
70+
IOS_BUILD_FLAGS := CGO_ENABLED=1 GOOS=ios GOARCH=$(MOBILE_GOARCH)
71+
CGO_CFLAGS += -Os -flto -arch $(ARCH) -isysroot $$(xcrun --sdk $(IPHONE_SDK) --show-sdk-path) -miphoneos-version-min=$(IOS_TARGET) -fembed-bitcode
72+
CGO_LDFLAGS += -Os -flto
6673
endif
6774

6875
ifeq ($(detected_OS),Darwin)
@@ -79,7 +86,6 @@ else
7986
GOBIN_SHARED_LIB_CGO_LDFLAGS := CGO_LDFLAGS="-Wl,-soname,libstatus.so.0"
8087
endif
8188

82-
CGO_CFLAGS = -I/$(JAVA_HOME)/include -I/$(JAVA_HOME)/include/darwin
8389
export GOPATH ?= $(HOME)/go
8490

8591
GIT_ROOT ?= $(dir $(realpath $(lastword $(MAKEFILE_LIST))))
@@ -88,12 +94,16 @@ GIT_AUTHOR ?= $(shell git config user.email || echo $$USER)
8894

8995
BUILD_TAGS ?= gowaku_no_rln
9096

97+
NWAKU_DIR ?= $(CURDIR)/third_party/nwaku
9198
ifeq ($(USE_NWAKU), true)
92-
BUILD_TAGS += use_nwaku
99+
BUILD_TAGS += use_nwaku
100+
CGO_CFLAGS += -I${NWAKU_DIR}/library/
101+
CGO_LDFLAGS += -L${NWAKU_DIR}/build/ -lwaku -Wl,-rpath,${NWAKU_DIR}/build/
93102
endif
94103

95104
BUILD_FLAGS ?= -ldflags=""
96105
BUILD_FLAGS_MOBILE ?=
106+
BUILD_ENV = CGO_CFLAGS="$(CGO_CFLAGS)" CGO_LDFLAGS="$(CGO_LDFLAGS)"
97107

98108
networkid ?= StatusChain
99109

@@ -165,34 +175,30 @@ all: $(GO_CMD_NAMES)
165175
.PHONY: $(GO_CMD_NAMES) $(GO_CMD_PATHS) $(GO_CMD_BUILDS)
166176
$(GO_CMD_BUILDS): generate
167177
$(GO_CMD_BUILDS): ##@build Build any Go project from cmd folder
168-
go build -mod=vendor -v \
178+
$(BUILD_ENV) go build -mod=vendor -v \
169179
-tags '$(BUILD_TAGS)' $(BUILD_FLAGS) \
170180
-o ./$@ ./cmd/$(notdir $@)
171181
@echo "Compilation done."
172182
@echo "Run \"build/bin/$(notdir $@) -h\" to view available commands."
173183

174184

175-
NWAKU_DIR ?= $(CURDIR)/third_party/nwaku
176185
LIBWAKU := $(NWAKU_DIR)/build/libwaku.$(LIBWAKU_EXT)
177-
export CGO_CFLAGS = -I${NWAKU_DIR}/library/
178-
export CGO_LDFLAGS = -L${NWAKU_DIR}/build/ -lwaku -L${NWAKU_DIR} -Wl,-rpath,${NWAKU_DIR}/build/
179186

180187
$(LIBWAKU):
181188
ifeq ($(USE_NWAKU),true)
182189
@echo "Building libwaku"
183-
git submodule update --init
190+
git submodule update --init --recursive
184191
$(MAKE) -C $(NWAKU_DIR) libwaku
185192
endif
186193

187-
build-libwaku: $(LIBWAKU))
194+
build-libwaku: $(LIBWAKU)
188195

189196
test-libwaku: | $(LIBWAKU)
190-
go test -tags '$(BUILD_TAGS) use_nwaku' -run TestDial ./wakuv2/... -count 1 -v -json | jq -r '.Output'
197+
$(BUILD_ENV) go test -tags '$(BUILD_TAGS)' -run TestDial ./wakuv2/... \-count 1 -v -json | jq -r '.Output'
191198

192-
clean-libwaku: WAKU_GO_BINDINGS_DIR ?= $$(go list -m -f '{{.Dir}}' github.com/waku-org/waku-go-bindings)
193199
clean-libwaku:
194200
@echo "Removing libwaku"
195-
$(MAKE) -C "${WAKU_GO_BINDINGS_DIR}/waku" clean
201+
$(MAKE) -C "${NWAKU_DIR}/waku" clean
196202

197203
rebuild-libwaku: | clean-libwaku $(LIBWAKU)
198204

@@ -229,7 +235,7 @@ statusgo-c-bindings:
229235
statusgo-library: generate
230236
statusgo-library: statusgo-c-bindings $(LIBWAKU) ##@cross-compile Build status-go as static library for current platform
231237
@echo "Building static library..."
232-
go build \
238+
$(BUILD_ENV) go build \
233239
-tags '$(BUILD_TAGS)' \
234240
$(BUILD_FLAGS) \
235241
-buildmode=c-archive \
@@ -242,7 +248,7 @@ statusgo-shared-library: generate
242248
statusgo-shared-library: statusgo-c-bindings $(LIBWAKU) ##@cross-compile Build status-go as shared library for current platform
243249
@echo "Building shared library..."
244250
@echo "Tags: $(BUILD_TAGS)"
245-
$(GOBIN_SHARED_LIB_CFLAGS) $(GOBIN_SHARED_LIB_CGO_LDFLAGS) go build \
251+
$(BUILD_ENV) $(GOBIN_SHARED_LIB_CFLAGS) $(GOBIN_SHARED_LIB_CGO_LDFLAGS) go build \
246252
-tags '$(BUILD_TAGS)' \
247253
$(BUILD_FLAGS) \
248254
-buildmode=c-shared \
@@ -259,7 +265,7 @@ endif
259265

260266
statusgo-android-library: generate statusgo-c-bindings $(LIBWAKU) ##@cross-compile Build status-go as Android mobile library
261267
@echo "Building Android mobile library..."
262-
$(ANDROID_BUILD_FLAGS) go build -buildmode=c-shared -tags 'gowaku_no_rln nowatchdog disable_torrent' \
268+
$(BUILD_ENV) $(ANDROID_BUILD_FLAGS) go build -buildmode=c-shared -tags 'gowaku_no_rln nowatchdog disable_torrent' \
263269
-ldflags="-checklinkname=0 -X github.com/status-im/status-go/vendor/github.com/ethereum/go-ethereum/metrics.EnabledStr=true" \
264270
-o "build/bin/libstatus.so" ./build/bin/statusgo-lib
265271
@echo "Android library built"
@@ -269,8 +275,7 @@ statusgo-ios-library: generate statusgo-c-bindings $(LIBWAKU) ##@cross-compile B
269275
@echo "Building iOS mobile library..."
270276
DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" \
271277
CC="$$(xcrun --sdk $(IPHONE_SDK) --find clang)" \
272-
CGO_CFLAGS="-Os -flto -arch $(ARCH) -isysroot $$(xcrun --sdk $(IPHONE_SDK) --show-sdk-path) -miphoneos-version-min=$(IOS_TARGET) -fembed-bitcode" \
273-
$(IOS_BUILD_FLAGS) go build -buildmode=c-archive -tags 'gowaku_no_rln nowatchdog disable_torrent' \
278+
$(BUILD_ENV) $(IOS_BUILD_FLAGS) go build -buildmode=c-archive -tags 'gowaku_no_rln nowatchdog disable_torrent' \
274279
-ldflags="-checklinkname=0 -X github.com/status-im/status-go/vendor/github.com/ethereum/go-ethereum/metrics.EnabledStr=true" \
275280
-o "build/bin/libstatus.a" ./build/bin/statusgo-lib
276281
@echo "iOS library built"
@@ -305,7 +310,7 @@ generate: GO_GENERATE_CMD ?= $$(which go-generate-fast || echo 'go generate')
305310
generate: export GO_GENERATE_FAST_DEBUG ?= false
306311
generate: export GO_GENERATE_FAST_RECACHE ?= false
307312
generate: ##@ Run generate for all given packages using go-generate-fast, fallback to `go generate` (e.g. for docker)
308-
@GOROOT=$$(go env GOROOT) $(GO_GENERATE_CMD) $(PACKAGES)
313+
@#GOROOT=$$(go env GOROOT) $(GO_GENERATE_CMD) $(PACKAGES)
309314

310315
generate-contracts:
311316
go generate ./contracts

0 commit comments

Comments
 (0)