# I'm sure there is better way. But I would need to find it first MK_FILE_PATH = $(lastword $(MAKEFILE_LIST)) PRJ_DIR = $(abspath $(dir $(MK_FILE_PATH))) GO ?= go VENDOR_DIR = tls_vendor OPTS ?= -v NOASM ?= TEST_PATH ?= ./... GOCACHE ?= off BENCH_OPTS ?= -v -bench=. -run="^_" -benchmem TEST_PATH ?= ./... DBG = 1 OPTS_ENV = OPTS_TAGS ?= -tags noasm ARCH = $(shell uname -m) ifeq ($(ARCH), ppc64le) NOASM+=1 endif ifeq ($(ARCH), riscv64) NOASM+=1 OPTS_TAGS+= -timeout 0 endif ifeq ($(NOASM),1) OPTS+=$(OPTS_TAGS) endif ifeq ($(PPROF),1) BENCH_OPTS+= -cpuprofile=cpu.out -memprofile=mem0.out endif ifeq ($(DBG),1) DBG_FLAGS+= #-m # escape analysis DBG_FLAGS+= -l # no inline DBG_FLAGS+= -N # debug symbols #OPTS+=-gcflags=all="$(DBG_FLAGS)" OPTS+=-gcflags "$(DBG_FLAGS)" OPTS_ENV+= GOTRACEBACK=crash # enable core dumps endif test: $(OPTS_ENV) $(GO) test $(OPTS) $(TEST_PATH) cover: $(GO) test \ -coverprofile=coverage.txt -covermode=atomic $(OPTS) $(TEST_PATH) bench: $(GO) test $(BENCH_OPTS) $(TEST_PATH) clean: rm -rf $(VENDOR_DIR) rm -rf coverage.txt vendor-sidh-for-tls: clean mkdir -p $(VENDOR_DIR)/github_com/henrydcase/nobs/ rsync -a . $(VENDOR_DIR)/github_com/henrydcase/nobs/ --exclude=$(VENDOR_DIR) --exclude=.git --exclude=.travis.yml --exclude=README.md find $(VENDOR_DIR) -type f -print0 -name "*.go" | xargs -0 sed -i 's/github\.com/github_com/g' gen: clean $(GO) generate -v ./... $(GO) mod tidy pprof-cpu: $(GO) tool pprof cpu.out pprof-mem: $(GO) tool pprof mem0.out