2021-11-09 10:21:31 +01:00
2022-12-10 12:05:01 -04:00
CC_TEST_REPORTER_ID := c09efa7c67c269bfdc6f8a356785d8f7ed55c9dc2b9a1d07b78c384f55c4e527
2021-11-09 10:21:31 +01:00
GO_HTML_COV := ./coverage.html
GO_TEST_OUTFILE := ./c.out
2022-11-09 15:53:01 -04:00
CC_PREFIX := github.com/waku-org/go-waku
2021-11-09 10:21:31 +01:00
2022-03-21 19:15:53 -04:00
SHELL := bash # the shell used internally by Make
2022-06-03 11:55:11 +10:00
GOBIN ?= $( shell which go)
2022-04-14 11:41:44 -04: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 19:15:53 -04: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 14:54:15 -04:00
2022-05-05 14:12:11 -04:00
GIT_COMMIT = $( shell git rev-parse --short HEAD)
2022-06-19 17:47:39 -04:00
VERSION = $( shell cat ./VERSION)
2022-11-26 11:57:11 -04:00
UID := $( shell id -u)
GID := $( shell id -g)
2022-05-05 14:12:11 -04:00
BUILD_FLAGS ?= $( shell echo " -ldflags='\
2022-11-25 17:24:34 -04: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 14:12:11 -04:00
2022-12-12 14:04:15 -04:00
ANDROID_TARGET ?= 23
2022-08-12 08:44:13 -04: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 14:54:15 -04:00
all : build
2021-08-16 11:48:11 +02:00
deps : lint -install
2021-04-13 14:54:15 -04:00
build :
2022-11-26 11:57:11 -04:00
${ GOBIN } build -tags= " ${ BUILD_TAGS } " $( BUILD_FLAGS) -o build/waku ./cmd/waku
2021-07-29 08:40:54 -04:00
2022-08-15 19:29:19 -04:00
chat2 :
pushd ./examples/chat2 && \
${ GOBIN } build -tags= "gowaku_rln" -o ../../build/chat2 . && \
popd
2021-09-27 18:52:56 +01:00
vendor :
2022-06-03 11:55:11 +10:00
${ GOBIN } mod tidy
2021-09-27 18:52:56 +01:00
2021-08-16 11:48:11 +02:00
lint-install :
curl -sfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | \
2023-04-03 09:48:07 -04:00
bash -s -- -b $( shell ${ GOBIN } env GOPATH) /bin v1.52.2
2021-08-16 11:48:11 +02:00
2021-07-29 08:40:54 -04:00
lint :
@echo "lint"
2021-08-13 13:56:09 +02:00
@golangci-lint --exclude= SA1019 run ./... --deadline= 5m
2021-10-13 14:48:29 +02:00
2021-08-13 13:56:09 +02:00
test :
2022-12-15 20:53:35 -04:00
${ GOBIN } test -timeout 300s ./waku/... -coverprofile= ${ GO_TEST_OUTFILE } .tmp
2021-11-09 09:18:36 -04:00
cat ${ GO_TEST_OUTFILE } .tmp | grep -v ".pb.go" > ${ GO_TEST_OUTFILE }
2022-06-03 11:55:11 +10:00
${ GOBIN } tool cover -html= ${ GO_TEST_OUTFILE } -o ${ GO_HTML_COV }
2021-11-09 10:21:31 +01:00
2023-04-13 16:41:22 -04: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 10:21:31 +01:00
CC_TEST_REPORTER_ID = ${ CC_TEST_REPORTER_ID } ./coverage/cc-test-reporter before-build
_after-cc :
2022-09-12 10:13:38 -04: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 10:21:31 +01:00
test-ci : _before -cc test _after -cc
2021-10-14 11:03:25 +02:00
generate :
2023-02-06 18:16:20 -04:00
${ GOBIN } generate ./...
2022-07-05 17:28:34 -04:00
2021-11-01 17:23:00 +01:00
coverage :
2022-08-15 13:13:45 -04:00
${ GOBIN } test -count 1 -coverprofile= coverage.out ./...
2022-06-03 11:55:11 +10:00
${ GOBIN } tool cover -html= coverage.out -o= coverage.html
2021-11-01 17:23:00 +01:00
2021-10-15 12:47:23 +02: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 17:23:00 +01:00
build-example-basic2 :
2021-11-01 20:05:55 -04:00
cd examples/basic2 && $( MAKE)
2021-11-01 17:23:00 +01:00
build-example-chat-2 :
2021-11-01 20:05:55 -04:00
cd examples/chat2 && $( MAKE)
2021-11-01 17:23:00 +01:00
build-example-filter2 :
2021-11-01 20:05:55 -04:00
cd examples/filter2 && $( MAKE)
2021-11-01 17:23:00 +01:00
2022-03-22 12:30:14 -04: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 19:15:53 -04:00
2022-04-12 08:12:14 -04:00
static-library :
2022-03-21 19:15:53 -04:00
@echo "Building static library..."
2022-06-03 11:55:11 +10:00
${ GOBIN } build \
2022-03-21 19:15:53 -04:00
-buildmode= c-archive \
2022-08-12 08:44:13 -04:00
-tags= " ${ BUILD_TAGS } " \
2022-03-21 19:15:53 -04:00
-o ./build/lib/libgowaku.a \
./library/
@echo "Static library built:"
@ls -la ./build/lib/libgowaku.*
2022-04-12 08:12:14 -04:00
dynamic-library :
2022-03-21 19:15:53 -04:00
@echo "Building shared library..."
2022-06-03 11:55:11 +10:00
$( GOBIN_SHARED_LIB_CFLAGS) $( GOBIN_SHARED_LIB_CGO_LDFLAGS) ${ GOBIN } build \
2022-03-21 19:15:53 -04:00
-buildmode= c-shared \
2022-08-12 08:44:13 -04:00
-tags= " ${ BUILD_TAGS } " \
2022-03-21 19:15:53 -04: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 08:12:14 -04:00
mobile-android :
2022-12-12 14:04:15 -04:00
@echo " Android target: ${ ANDROID_TARGET } (override with ANDROID_TARGET var) "
2022-04-12 08:12:14 -04:00
gomobile init && \
2022-09-21 09:22:22 -04:00
${ GOBIN } get -d golang.org/x/mobile/cmd/gomobile && \
2022-12-12 14:04:15 -04: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 08:12:14 -04:00
@echo "Android library built:"
2022-04-14 11:41:44 -04:00
@ls -la ./build/lib/*.aar ./build/lib/*.jar
mobile-ios :
gomobile init && \
2022-09-21 09:22:22 -04:00
${ GOBIN } get -d golang.org/x/mobile/cmd/gomobile && \
2022-10-23 09:18:12 -04:00
gomobile bind -target= ios -ldflags= "-s -w" -tags= " nowatchdog ${ BUILD_TAGS } " $( BUILD_FLAGS) -o ./build/lib/Gowaku.xcframework ./mobile
2022-04-14 11:41:44 -04:00
@echo "IOS library built:"
2022-06-03 11:55:11 +10:00
@ls -la ./build/lib/*.xcframework
2022-06-19 17:50:37 -04:00
install-xtools :
2022-09-21 09:22:22 -04: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 17:50:37 -04:00
install-gomobile : install -xtools
2022-09-21 09:22:22 -04: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 17:50:37 -04:00
build-linux-pkg :
2022-11-26 11:57:11 -04:00
docker build --build-arg UID = ${ UID } --build-arg GID = ${ GID } -f ./scripts/linux/Dockerfile -t statusteam/gowaku-linux-pkgs:latest .
2022-06-19 17:50:37 -04:00
./scripts/linux/docker-run.sh
ls -la ./build/*.rpm ./build/*.deb
2022-08-10 09:03:25 -04: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 08:44:13 -04:00
test-onchain : BUILD_TAGS += include_onchain_tests
2022-08-10 13:10:23 -04:00
test-onchain :
2022-11-09 15:53:01 -04:00
${ GOBIN } test -v -count 1 -tags= " ${ BUILD_TAGS } " github.com/waku-org/go-waku/waku/v2/protocol/rln
2022-08-10 13:10:23 -04:00