aboutsummaryrefslogtreecommitdiff
path: root/go/Makefile
blob: 01240dadfb671f335b7dc4de8556f2d3b219ec5b (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
PACKAGES := activities assets game server client dummy-ui draftsim/server draftsim/client ui

SHELL := bash

APPS := server client dummy-ui draftsim/client draftsim/server
OBJS := $(foreach app,$(APPS),$(app)/$(app))
WASM := client/client.wasm webtools/webtools.wasm dummy-ui/dummy-ui.wasm draftsim/client/client.wasm

GOFMT ?= gofumpt -l -w .

.PHONY: all fmt test check $(OBJS) $(WASM)
all: $(OBJS) $(WASM)

.PHONY: client server dummy-ui draftsim
client: client/client
server: server/server
dummy-ui: dummy-ui/dummy-ui
draftsim: draftsim/server draftsim/client

$(OBJS):
	@echo Building $(@F)
	@pushd $(@D) >/dev/null && go build && popd >/dev/null

$(WASM):
	@echo Building $(@F) ...
	@pushd $(@D) >/dev/null && env GOOS=js GOARCH=wasm go build -o $(@F) && popd >/dev/null

fmt:
	@set -e; for package in $(PACKAGES) webtools; do \
		pushd $$package >/dev/null && $(GOFMT); popd >/dev/null; \
	done

test:
	@STATUS=0; \
	for package in $(PACKAGES); do \
		if pushd "$$package" >/dev/null; then \
			go test; \
			status="$$?"; \
			if [ "$$status" -ne 0 ]; then STATUS="$$status"; fi; \
			popd >/dev/null; \
		fi; \
	done; \
	exit "$$STATUS"

check:
	@STATUS=0; \
	for package in $(PACKAGES); do \
		if pushd "$$package" >/dev/null; then \
			golangci-lint run; \
			status="$$?"; \
			if [ "$$status" -ne 0 ]; then STATUS="$$status"; fi; \
			popd >/dev/null; \
		fi; \
	done; \
	exit "$$STATUS"