blob: a6d47a224af8cbef690ca357809f1b59b20cd8f4 (
plain) (
blame)
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
.POSIX:
DATE = 1970-01-01
VERSION = 0.1.0
NAME = wscat
NAME_UC = $(NAME)
LANGUAGES = en
## Installation prefix. Defaults to "/usr".
PREFIX = /usr
BINDIR = $(PREFIX)/bin
LIBDIR = $(PREFIX)/lib
INCLUDEDIR = $(PREFIX)/include
SRCDIR = $(PREFIX)/src/$(NAME)
SHAREDIR = $(PREFIX)/share
LOCALEDIR = $(SHAREDIR)/locale
MANDIR = $(SHAREDIR)/man
EXEC = ./
## Where to store the installation. Empty by default.
DESTDIR =
LDLIBS =
GOFLAGS =
.SUFFIXES:
.SUFFIXES: .go .bin
all:
include deps.mk
sources = \
src/lib.go \
src/cmd/main.go \
derived-assets = \
$(NAME).bin \
tests/lib_test.bin \
side-assets = \
$(NAME).socket \
## Default target. Builds all artifacts required for testing
## and installation.
all: $(derived-assets)
$(NAME).bin: src/lib.go src/cmd/main.go Makefile
go build $(GOFLAGS) -v -o $@ src/cmd/main.go
tests/lib_test.bin: src/lib.go tests/lib_test.go Makefile
go test $(GOFLAGS) -v -o $@ -c $*.go
check-unit: tests/lib_test.bin
./tests/lib_test.bin
integration-tests = \
tests/cli-opts.sh \
tests/integration.sh \
$(integration-tests): $(NAME).bin
$(integration-tests): ALWAYS
sh $@
check-integration: $(integration-tests)
## Run all tests. Each test suite is isolated, so that a parallel
## build can run tests at the same time. The required artifacts
## are created if missing.
check: check-unit check-integration
## Remove *all* derived artifacts produced during the build.
## A dedicated test asserts that this is always true.
clean:
rm -rf $(derived-assets) $(side-assets)
## Installs into $(DESTDIR)$(PREFIX). Its dependency target
## ensures that all installable artifacts are crafted beforehand.
install: all
mkdir -p \
'$(DESTDIR)$(BINDIR)' \
cp $(NAME).bin '$(DESTDIR)$(BINDIR)'/$(NAME)
for f in $(sources); do \
dir='$(DESTDIR)$(SRCDIR)'/"`dirname "$${f#src/}"`"; \
mkdir -p "$$dir"; \
cp -P "$$f" "$$dir"; \
done
## Uninstalls from $(DESTDIR)$(PREFIX). This is a perfect mirror
## of the "install" target, and removes *all* that was installed.
## A dedicated test asserts that this is always true.
uninstall:
rm -rf \
'$(DESTDIR)$(BINDIR)'/$(NAME) \
'$(DESTDIR)$(SRCDIR)' \
## Run it locally.
run: all
rm -f $(NAME).socket
./$(NAME).bin wscat.socket retcp.socket
ALWAYS:
|