summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile42
1 files changed, 30 insertions, 12 deletions
diff --git a/Makefile b/Makefile
index 2ca519a..abd4ca9 100644
--- a/Makefile
+++ b/Makefile
@@ -24,7 +24,7 @@ GOLDFLAGS = -L $(GOLIBDIR)
.SUFFIXES:
-.SUFFIXES: .go .a .bin .bin-check
+.SUFFIXES: .go .a .bin .bin-check .adoc
.go.a:
go tool compile -I $(@D) $(GOCFLAGS) -o $@ -p $(*F) \
@@ -34,22 +34,27 @@ GOLDFLAGS = -L $(GOLIBDIR)
.a.bin:
go tool link -L $(@D) $(GOLDFLAGS) -o $@ --extldflags '$(LDLIBS)' $<
+.adoc:
+ asciidoctor -b manpage -o $@ $<
+
all:
include deps.mk
-libs.a = $(libs.go:.go=.a)
-mains.a = $(mains.go:.go=.a)
-mains.bin = $(mains.go:.go=.bin)
-functional/lib.a = $(functional/lib.go:.go=.a)
-fuzz/lib.a = $(fuzz/lib.go:.go=.a)
-benchmarks/lib.a = $(benchmarks/lib.go:.go=.a)
+libs.a = $(libs.go:.go=.a)
+mains.a = $(mains.go:.go=.a)
+mains.bin = $(mains.go:.go=.bin)
+functional-tests/lib.a = $(functional-tests/lib.go:.go=.a)
+fuzz-targets/lib.a = $(fuzz-targets/lib.go:.go=.a)
+benchmarks/lib.a = $(benchmarks/lib.go:.go=.a)
+manpages.N = $(manpages.N.adoc:.adoc=)
sources = \
src/$(NAME).go \
src/version.go \
+ src/main.go \
derived-assets = \
@@ -57,6 +62,8 @@ derived-assets = \
$(libs.a) \
$(mains.a) \
$(mains.bin) \
+ $(NAME).bin \
+ $(manpages.N) \
side-assets = \
tests/fuzz/corpus/ \
@@ -73,18 +80,21 @@ $(libs.a): Makefile deps.mk
$(libs.a): src/$(NAME).go src/version.go
-$(fuzz/lib.a):
+$(fuzz-targets/lib.a):
go tool compile $(GOCFLAGS) -o $@ -p $(NAME) -d=libfuzzer \
$*.go src/$(NAME).go src/version.go
src/version.go: Makefile
echo 'package $(NAME); const Version = "$(VERSION)"' > $@
+$(NAME).bin: src/main.bin
+ ln -fs src/main.bin $@
+
tests.bin-check = \
tests/main.bin-check \
- $(functional/main.go:.go=.bin-check) \
+ $(functional-tests/main.go:.go=.bin-check) \
$(tests.bin-check):
$(EXEC)$*.bin
@@ -93,6 +103,8 @@ check-unit: $(tests.bin-check)
integration-tests = \
+ tests/cli-opts.sh \
+ tests/integration.sh \
.PRECIOUS: $(integration-tests)
$(integration-tests): $(NAME).bin
@@ -111,12 +123,12 @@ check: check-unit check-integration
FUZZSEC=1
-fuzz/main.bin-check = $(fuzz/main.go:.go=.bin-check)
-$(fuzz/main.bin-check):
+fuzz-targets/main.bin-check = $(fuzz-targets/main.go:.go=.bin-check)
+$(fuzz-targets/main.bin-check):
$(EXEC)$*.bin --test.fuzztime=$(FUZZSEC)s \
--test.fuzz='.*' --test.fuzzcachedir=tests/fuzz/corpus
-fuzz: $(fuzz/main.bin-check)
+fuzz: $(fuzz-targets/main.bin-check)
@@ -140,20 +152,26 @@ clean:
## ensures that all installable artifacts are crafted beforehand.
install: all
mkdir -p \
+ '$(DESTDIR)$(BINDIR)' \
'$(DESTDIR)$(GOLIBDIR)' \
'$(DESTDIR)$(SRCDIR)' \
+ cp $(NAME).bin '$(DESTDIR)$(BINDIR)'/$(NAME)
cp src/$(NAME).a '$(DESTDIR)$(GOLIBDIR)'
cp $(sources) '$(DESTDIR)$(SRCDIR)'
+ mandir install '$(DESTDIR)$(MANDIR)' $(manpages.N)
## 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)$(GOLIBDIR)'/$(NAME).a \
'$(DESTDIR)$(SRCDIR)' \
+ mandir uninstall '$(DESTDIR)$(MANDIR)' $(manpages.N)
+
ALWAYS: