summaryrefslogtreecommitdiff
path: root/Makefile
blob: dfbfbf37a86b586adcf9e6383961e0adc7ea9994 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
BINARY = linum

GO = go
MAIN = .
OUTPUT = build/$(BINARY)
LDFLAGS = -ldflags="-s -w -X main.version=$(VERSION)"
DESTDIR ?=
BINDIR ?= /usr/bin
SYSTEMD_DIR ?= /usr/lib/systemd/system

.PHONY: default build test lint fmt clean run install install-service install-config fuzz race \
	build-linux build-darwin build-arm

default: test lint build

build:
	$(GO) build $(LDFLAGS) -o $(OUTPUT) $(MAIN)

test:
	$(GO) test -race -count=1 ./...

lint:
	$(GO) vet ./...

fmt:
	gofmt -w .

clean:
	rm -f $(OUTPUT)

run: build
	./$(OUTPUT)

install:
	mkdir -p $(DESTDIR)$(BINDIR) $(DESTDIR)/etc/linum/blocklist
	cp $(OUTPUT) $(DESTDIR)$(BINDIR)/$(BINARY)

install-service:
	mkdir -p $(DESTDIR)$(SYSTEMD_DIR)
	cp etc/linum.service $(DESTDIR)$(SYSTEMD_DIR)/linum.service

install-config:
	install -d $(DESTDIR)/etc/linum
	install -m 0644 linum.toml $(DESTDIR)/etc/linum/linum.toml

fuzz:
	$(GO) test -fuzz=FuzzBuildResponse -fuzztime=30s ./internal/server/

build-linux:
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build $(LDFLAGS) -o build/$(BINARY)-linux-amd64 $(MAIN)

build-darwin:
	GOOS=darwin GOARCH=amd64 $(GO) build $(LDFLAGS) -o build/$(BINARY)-darwin-amd64 $(MAIN)

build-arm:
	GOOS=linux GOARCH=arm64 $(GO) build $(LDFLAGS) -o build/$(BINARY)-linux-arm64 $(MAIN)

race:
	$(GO) test -race -count=1 ./...