2021-11-09 09:21:31 +00:00
2022-12-10 16:05:01 +00:00
CC_TEST_REPORTER_ID := c09efa7c67c269bfdc6f8a356785d8f7ed55c9dc2b9a1d07b78c384f55c4e527
2021-11-09 09:21:31 +00:00
GO_HTML_COV := ./coverage.html
GO_TEST_OUTFILE := ./c.out
2022-11-09 19:53:01 +00:00
CC_PREFIX := github.com/waku-org/go-waku
2021-11-09 09:21:31 +00:00
2022-03-21 23:15:53 +00:00
SHELL := bash # the shell used internally by Make
2022-06-03 01:55:11 +00:00
GOBIN ?= $( shell which go)
2022-04-14 15:41:44 +00:00
.PHONY : all build lint test coverage build -example static -library dynamic -library test -c test -c -template mobile -android mobile -ios
2022-03-21 23:15:53 +00:00
i f e q ( $( OS ) , W i n d o w s _ N T ) # is Windows_NT on XP, 2000, 7, Vista, 10...
detected_OS := Windows
e l s e
detected_OS := $( strip $( shell uname) )
e n d i f
i f e q ( $( detected_OS ) , D a r w i n )
GOBIN_SHARED_LIB_EXT := dylib
e l s e i f e q ( $( detected_OS ) , W i n d o w s )
# on Windows need `--export-all-symbols` flag else expected symbols will not be found in libgowaku.dll
GOBIN_SHARED_LIB_CGO_LDFLAGS := CGO_LDFLAGS = "-Wl,--export-all-symbols"
GOBIN_SHARED_LIB_EXT := dll
e l s e
GOBIN_SHARED_LIB_EXT := so
GOBIN_SHARED_LIB_CGO_LDFLAGS := CGO_LDFLAGS = "-Wl,-soname,libgowaku.so.0"
e n d i f
2021-04-13 18:54:15 +00:00
2022-05-05 18:12:11 +00:00
GIT_COMMIT = $( shell git rev-parse --short HEAD)
2022-06-19 21:47:39 +00:00
VERSION = $( shell cat ./VERSION)
2022-11-26 15:57:11 +00:00
UID := $( shell id -u)
GID := $( shell id -g)
2022-05-05 18:12:11 +00:00
BUILD_FLAGS ?= $( shell echo " -ldflags='\
2022-11-25 21:24:34 +00:00
-X github.com/waku-org/go-waku/waku/v2/node.GitCommit= $( GIT_COMMIT) \
-X github.com/waku-org/go-waku/waku/v2/node.Version= $( VERSION) ' " )
2022-05-05 18:12:11 +00:00
2022-12-12 18:04:15 +00:00
ANDROID_TARGET ?= 23
2022-08-12 12:44:13 +00:00
# control rln code compilation
i f e q ( $( RLN ) , t r u e )
BUILD_TAGS := gowaku_rln
e n d i f
2021-04-13 18:54:15 +00:00
all : build
2021-08-16 09:48:11 +00:00
deps : lint -install
2021-04-13 18:54:15 +00:00
build :
2022-11-26 15:57:11 +00:00
${ GOBIN } build -tags= " ${ BUILD_TAGS } " $( BUILD_FLAGS) -o build/waku ./cmd/waku
2021-07-29 12:40:54 +00:00
2022-08-15 23:29:19 +00:00
chat2 :
pushd ./examples/chat2 && \
${ GOBIN } build -tags= "gowaku_rln" -o ../../build/chat2 . && \
popd
2021-09-27 17:52:56 +00:00
vendor :
2022-06-03 01:55:11 +00:00
${ GOBIN } mod tidy
2021-09-27 17:52:56 +00:00
2021-08-16 09:48:11 +00:00
lint-install :
curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | \
2023-04-03 13:48:07 +00:00
bash -s -- -b $( shell ${ GOBIN } env GOPATH) /bin v1.52.2
2021-08-16 09:48:11 +00:00
2021-07-29 12:40:54 +00:00
lint :
@echo "lint"
2021-08-13 11:56:09 +00:00
@golangci-lint --exclude= SA1019 run ./... --deadline= 5m
2021-10-13 12:48:29 +00:00
2021-08-13 11:56:09 +00:00
test :
2022-12-16 00:53:35 +00:00
${ GOBIN } test -timeout 300s ./waku/... -coverprofile= ${ GO_TEST_OUTFILE } .tmp
2021-11-09 13:18:36 +00:00
cat ${ GO_TEST_OUTFILE } .tmp | grep -v ".pb.go" > ${ GO_TEST_OUTFILE }
2022-06-03 01:55:11 +00:00
${ GOBIN } tool cover -html= ${ GO_TEST_OUTFILE } -o ${ GO_HTML_COV }
2021-11-09 09:21:31 +00:00
2023-04-13 20:41:22 +00:00
COVERAGE_FILE := ./coverage/cc-test-reporter
$(COVERAGE_FILE) :
curl -sfL https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 --output ./coverage/cc-test-reporter # TODO: support mac and windows
chmod +x ./coverage/cc-test-reporter
_before-cc : $( COVERAGE_FILE )
2021-11-09 09:21:31 +00:00
CC_TEST_REPORTER_ID = ${ CC_TEST_REPORTER_ID } ./coverage/cc-test-reporter before-build
_after-cc :
2022-09-12 14:13:38 +00:00
GIT_COMMIT = $( git log | grep -m1 -oE '[^ ]+$' ) CC_TEST_REPORTER_ID = ${ CC_TEST_REPORTER_ID } ./coverage/cc-test-reporter after-build --prefix ${ CC_PREFIX }
2021-11-09 09:21:31 +00:00
test-ci : _before -cc test _after -cc
2021-10-14 09:03:25 +00:00
generate :
2023-02-06 22:16:20 +00:00
${ GOBIN } generate ./...
2022-07-05 21:28:34 +00:00
2021-11-01 16:23:00 +00:00
coverage :
2022-08-15 17:13:45 +00:00
${ GOBIN } test -count 1 -coverprofile= coverage.out ./...
2022-06-03 01:55:11 +00:00
${ GOBIN } tool cover -html= coverage.out -o= coverage.html
2021-11-01 16:23:00 +00:00
2021-10-15 10:47:23 +00:00
# build a docker image for the fleet
docker-image : DOCKER_IMAGE_TAG ?= latest
docker-image : DOCKER_IMAGE_NAME ?= statusteam /go -waku :$( DOCKER_IMAGE_TAG )
docker-image :
docker build --tag $( DOCKER_IMAGE_NAME) \
--build-arg= " GIT_COMMIT= $( shell git rev-parse HEAD) " .
2021-11-01 16:23:00 +00:00
build-example-basic2 :
2021-11-02 00:05:55 +00:00
cd examples/basic2 && $( MAKE)
2021-11-01 16:23:00 +00:00
build-example-chat-2 :
2021-11-02 00:05:55 +00:00
cd examples/chat2 && $( MAKE)
2021-11-01 16:23:00 +00:00
build-example-filter2 :
2021-11-02 00:05:55 +00:00
cd examples/filter2 && $( MAKE)
2021-11-01 16:23:00 +00:00
2022-03-22 16:30:14 +00:00
build-example-c-bindings :
cd examples/c-bindings && $( MAKE)
build-example : build -example -basic 2 build -example -chat -2 build -example -filter 2 build -example -c -bindings
2022-03-21 23:15:53 +00:00
2022-04-12 12:12:14 +00:00
static-library :
2022-03-21 23:15:53 +00:00
@echo "Building static library..."
2022-06-03 01:55:11 +00:00
${ GOBIN } build \
2022-03-21 23:15:53 +00:00
-buildmode= c-archive \
2022-08-12 12:44:13 +00:00
-tags= " ${ BUILD_TAGS } " \
2022-03-21 23:15:53 +00:00
-o ./build/lib/libgowaku.a \
./library/
@echo "Static library built:"
@ls -la ./build/lib/libgowaku.*
2022-04-12 12:12:14 +00:00
dynamic-library :
2022-03-21 23:15:53 +00:00
@echo "Building shared library..."
2022-06-03 01:55:11 +00:00
$( GOBIN_SHARED_LIB_CFLAGS) $( GOBIN_SHARED_LIB_CGO_LDFLAGS) ${ GOBIN } build \
2022-03-21 23:15:53 +00:00
-buildmode= c-shared \
2022-08-12 12:44:13 +00:00
-tags= " ${ BUILD_TAGS } " \
2022-03-21 23:15:53 +00:00
-o ./build/lib/libgowaku.$( GOBIN_SHARED_LIB_EXT) \
./library/
i f e q ( $( detected_OS ) , L i n u x )
cd ./build/lib && \
ls -lah . && \
mv ./libgowaku.$( GOBIN_SHARED_LIB_EXT) ./libgowaku.$( GOBIN_SHARED_LIB_EXT) .0 && \
ln -s ./libgowaku.$( GOBIN_SHARED_LIB_EXT) .0 ./libgowaku.$( GOBIN_SHARED_LIB_EXT)
e n d i f
@echo "Shared library built:"
@ls -la ./build/lib/libgowaku.*
2022-04-12 12:12:14 +00:00
mobile-android :
2022-12-12 18:04:15 +00:00
@echo " Android target: ${ ANDROID_TARGET } (override with ANDROID_TARGET var) "
2022-04-12 12:12:14 +00:00
gomobile init && \
2022-09-21 13:22:22 +00:00
${ GOBIN } get -d golang.org/x/mobile/cmd/gomobile && \
2022-12-12 18:04:15 +00:00
gomobile bind -v -target= android -androidapi= ${ ANDROID_TARGET } -ldflags= "-s -w" -tags= " ${ BUILD_TAGS } " $( BUILD_FLAGS) -o ./build/lib/gowaku.aar ./mobile
2022-04-12 12:12:14 +00:00
@echo "Android library built:"
2022-04-14 15:41:44 +00:00
@ls -la ./build/lib/*.aar ./build/lib/*.jar
mobile-ios :
gomobile init && \
2022-09-21 13:22:22 +00:00
${ GOBIN } get -d golang.org/x/mobile/cmd/gomobile && \
2022-10-23 13:18:12 +00:00
gomobile bind -target= ios -ldflags= "-s -w" -tags= " nowatchdog ${ BUILD_TAGS } " $( BUILD_FLAGS) -o ./build/lib/Gowaku.xcframework ./mobile
2022-04-14 15:41:44 +00:00
@echo "IOS library built:"
2022-06-03 01:55:11 +00:00
@ls -la ./build/lib/*.xcframework
2022-06-19 21:50:37 +00:00
install-xtools :
2022-09-21 13:22:22 +00:00
${ GOBIN } install golang.org/x/tools/...@v0.1.10
install-bindata :
${ GOBIN } install github.com/kevinburke/go-bindata/go-bindata@v3.13.0
2022-06-19 21:50:37 +00:00
install-gomobile : install -xtools
2022-09-21 13:22:22 +00:00
${ GOBIN } install golang.org/x/mobile/cmd/gomobile@v0.0.0-20220518205345-8578da9835fd
${ GOBIN } install golang.org/x/mobile/cmd/gobind@v0.0.0-20220518205345-8578da9835fd
2022-06-19 21:50:37 +00:00
build-linux-pkg :
2022-11-26 15:57:11 +00:00
docker build --build-arg UID = ${ UID } --build-arg GID = ${ GID } -f ./scripts/linux/Dockerfile -t statusteam/gowaku-linux-pkgs:latest .
2022-06-19 21:50:37 +00:00
./scripts/linux/docker-run.sh
ls -la ./build/*.rpm ./build/*.deb
2022-08-10 13:03:25 +00:00
TEST_MNEMONIC = "swim relax risk shy chimney please usual search industry board music segment"
start-ganache :
docker run -p 8545:8545 --name ganache-cli --rm -d trufflesuite/ganache-cli:latest -m ${ TEST_MNEMONIC }
stop-ganache :
docker stop ganache-cli
2022-08-12 12:44:13 +00:00
test-onchain : BUILD_TAGS += include_onchain_tests
2022-08-10 17:10:23 +00:00
test-onchain :
2022-11-09 19:53:01 +00:00
${ GOBIN } test -v -count 1 -tags= " ${ BUILD_TAGS } " github.com/waku-org/go-waku/waku/v2/protocol/rln
2022-08-10 17:10:23 +00:00