Files
2026-05-24 09:36:42 +02:00

93 lines
2.3 KiB
Makefile

GO = go
GOFLAGS =
LDFLAGS = -s -w
TAGS =
PKG = ./...
SRCDIR = dnscrypt-proxy
BIN = dnscrypt-proxy
PREFIX = /usr/local
BINDIR = $(PREFIX)/bin
INSTALL = install
.PHONY: all build install uninstall test test-short test-race test-suite \
bench fmt vet tidy vendor staticcheck lint clean distclean run \
version help
all: build
help:
@echo "Available targets:"
@echo " build Build the $(BIN) binary"
@echo " install Install $(BIN) to \$$PREFIX/bin (default /usr/local/bin)"
@echo " uninstall Remove the installed binary"
@echo " test Run the full test suite"
@echo " test-short Run tests with -short"
@echo " test-race Run tests with the race detector"
@echo " test-suite Run the categorized test script (run_tests.sh)"
@echo " bench Run benchmarks"
@echo " fmt Format the code with gofmt"
@echo " vet Run go vet"
@echo " staticcheck Run staticcheck (must be installed)"
@echo " lint Run fmt, vet and staticcheck"
@echo " tidy Run go mod tidy"
@echo " vendor Refresh the vendor directory"
@echo " run Build and run the binary in place"
@echo " version Print the application version"
@echo " clean Remove build artifacts"
@echo " distclean clean + remove the vendor directory"
build:
cd $(SRCDIR) && $(GO) build $(GOFLAGS) -ldflags "$(LDFLAGS)" -tags "$(TAGS)" -o $(BIN) .
install: build
$(INSTALL) -d $(DESTDIR)$(BINDIR)
$(INSTALL) -m 0755 $(SRCDIR)/$(BIN) $(DESTDIR)$(BINDIR)/$(BIN)
uninstall:
rm -f $(DESTDIR)$(BINDIR)/$(BIN)
test:
cd $(SRCDIR) && $(GO) test $(GOFLAGS) -tags "$(TAGS)" $(PKG)
test-short:
cd $(SRCDIR) && $(GO) test $(GOFLAGS) -short -tags "$(TAGS)" $(PKG)
test-race:
cd $(SRCDIR) && $(GO) test $(GOFLAGS) -race -tags "$(TAGS)" $(PKG)
test-suite:
cd $(SRCDIR) && sh ./run_tests.sh
bench:
cd $(SRCDIR) && $(GO) test $(GOFLAGS) -run=^$$ -bench=. -benchmem $(PKG)
fmt:
$(GO) fmt ./...
vet:
cd $(SRCDIR) && $(GO) vet $(PKG)
staticcheck:
cd $(SRCDIR) && staticcheck $(PKG)
lint: fmt vet staticcheck
tidy:
$(GO) mod tidy
vendor:
$(GO) mod vendor
run: build
cd $(SRCDIR) && ./$(BIN)
version: build
@$(SRCDIR)/$(BIN) -version
clean:
rm -f $(SRCDIR)/$(BIN)
cd $(SRCDIR) && $(GO) clean $(PKG)
distclean: clean
rm -rf vendor