mirror of
https://github.com/Quad4-Software/Reticulum-Go
synced 2026-08-29 23:48:44 -04:00
109 lines
3.8 KiB
Makefile
109 lines
3.8 KiB
Makefile
.PHONY: all build install uninstall clean test fmt vet lint vulncheck gosec check deps run
|
|
.PHONY: build-linux build-windows build-darwin build-all
|
|
.PHONY: test-short test-race test-crossref test-wasm test-all coverage bench debug release
|
|
|
|
GOCMD := go
|
|
# Use committed vendor/ for builds and tests; targets that fetch modules or tools clear these.
|
|
GOFLAGS := -mod=vendor
|
|
GOPROXY := off
|
|
export GOFLAGS GOPROXY
|
|
GOVULNCHECK_VER ?= v1.1.4
|
|
BINARY_NAME := reticulum-go
|
|
BUILD_DIR := bin
|
|
MAIN_PACKAGE := ./cmd/reticulum-go
|
|
PREFIX ?= /usr/local
|
|
INSTALL_DIR := $(PREFIX)/bin
|
|
|
|
all: build
|
|
|
|
build:
|
|
@mkdir -p $(BUILD_DIR)
|
|
CGO_ENABLED=0 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME) $(MAIN_PACKAGE)
|
|
|
|
debug:
|
|
@mkdir -p $(BUILD_DIR)
|
|
$(GOCMD) build -o $(BUILD_DIR)/$(BINARY_NAME) $(MAIN_PACKAGE)
|
|
|
|
release: build
|
|
|
|
install: build
|
|
@mkdir -p $(INSTALL_DIR)
|
|
@cp $(BUILD_DIR)/$(BINARY_NAME) $(INSTALL_DIR)/$(BINARY_NAME)
|
|
@echo "Installed $(BINARY_NAME) to $(INSTALL_DIR)"
|
|
|
|
uninstall:
|
|
@rm -f $(INSTALL_DIR)/$(BINARY_NAME)
|
|
@echo "Removed $(INSTALL_DIR)/$(BINARY_NAME)"
|
|
|
|
clean:
|
|
$(GOCMD) clean
|
|
rm -rf $(BUILD_DIR)
|
|
|
|
deps:
|
|
env GOFLAGS= GOPROXY=https://proxy.golang.org,direct $(GOCMD) mod download
|
|
env GOFLAGS= GOPROXY=https://proxy.golang.org,direct $(GOCMD) mod verify
|
|
|
|
test:
|
|
$(GOCMD) test -v ./...
|
|
|
|
test-short:
|
|
$(GOCMD) test -short -v ./...
|
|
|
|
test-race:
|
|
$(GOCMD) test -race -v ./...
|
|
|
|
test-crossref:
|
|
@bash tests/crossref/run_crossref.sh
|
|
|
|
# js/wasm packages are not included in `go test ./...` on native GOOS; requires Node (see GOROOT/lib/wasm/go_js_wasm_exec).
|
|
test-wasm:
|
|
env -i HOME=$$HOME PATH="/usr/local/bin:/usr/bin:/bin" GOROOT=$(shell go env GOROOT) TMPDIR=/tmp GOOS=js GOARCH=wasm $(GOCMD) test -count=1 -exec="$(shell go env GOROOT)/lib/wasm/go_js_wasm_exec" ./pkg/wasm/... ./cmd/reticulum-wasm/...
|
|
|
|
test-all: test test-wasm test-crossref
|
|
|
|
coverage:
|
|
$(GOCMD) test -coverprofile=coverage.out ./...
|
|
$(GOCMD) tool cover -html=coverage.out
|
|
|
|
bench:
|
|
$(GOCMD) test -run=^$ -bench=. -benchmem ./...
|
|
|
|
fmt:
|
|
$(GOCMD) fmt ./...
|
|
|
|
vet:
|
|
$(GOCMD) vet ./...
|
|
|
|
lint:
|
|
revive -config revive.toml -formatter friendly ./pkg/* ./cmd/* ./internal/*
|
|
|
|
vulncheck:
|
|
env GOFLAGS= GOPROXY=https://proxy.golang.org,direct $(GOCMD) run golang.org/x/vuln/cmd/govulncheck@$(GOVULNCHECK_VER) ./...
|
|
|
|
# Scope packages so module cache under .cache/ is not scanned (avoids false positives from dependencies).
|
|
gosec:
|
|
env GOFLAGS= GOPROXY=https://proxy.golang.org,direct CGO_ENABLED=0 $(GOCMD) run github.com/securego/gosec/v2/cmd/gosec@latest -quiet ./pkg/... ./cmd/... ./internal/... ./tests/...
|
|
|
|
check: fmt vet lint test-short vulncheck gosec
|
|
|
|
run:
|
|
$(GOCMD) run $(MAIN_PACKAGE)
|
|
|
|
build-linux:
|
|
@mkdir -p $(BUILD_DIR)
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 $(MAIN_PACKAGE)
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64 $(MAIN_PACKAGE)
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-linux-arm $(MAIN_PACKAGE)
|
|
CGO_ENABLED=0 GOOS=linux GOARCH=riscv64 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-linux-riscv64 $(MAIN_PACKAGE)
|
|
|
|
build-windows:
|
|
@mkdir -p $(BUILD_DIR)
|
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe $(MAIN_PACKAGE)
|
|
CGO_ENABLED=0 GOOS=windows GOARCH=arm64 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-windows-arm64.exe $(MAIN_PACKAGE)
|
|
|
|
build-darwin:
|
|
@mkdir -p $(BUILD_DIR)
|
|
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-amd64 $(MAIN_PACKAGE)
|
|
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 $(GOCMD) build -ldflags="-s -w" -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 $(MAIN_PACKAGE)
|
|
|
|
build-all: build-linux build-windows build-darwin
|