summaryrefslogtreecommitdiff
path: root/.makefile
blob: 7d6e57239003732de22f3473f43e129dcc617676 (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
60
61
62
63
64
65
# This file is used for common development targets that can be done with
# needing the cumbersome bootstrapping process.
#
# You can use it like this:
#
#   make -f .makefile indent
#
# If you copy or link this file to `GNUmakefile` then you can just do:
#
#   make indent
#
# When copied to `GNUmakefile`, this file is can also be used for bootstrapping
# Makefile targets. Since GNUmakefile is loaded before Makefile, we do the
# bootstrapping tasks need to get a Makefile first, then we use the Makefile to
# make our target.

# Remind user when they are using GNUmakefile:
ifeq ($(lastword $(MAKEFILE_LIST)),GNUmakefile)
    $(info *** NOTE: GNUmakefile in use. ***)
endif

MAKE_TARGETS := \
	all \
	all-am \
	all-recursive \
	docker-build \
	docker-dist \
	install \
	test \
	test-all \
	test-suite \

# SOURCE_FILES := $(shell find . | grep '\.c$$')
SOURCE_FILES := $(shell find tests/run-test-suite | grep '\.c$$')
ifneq ($(shell which gindent),)
INDENT := gindent
else
INDENT := indent
endif

#
# Proxy make targets:
#
default: all

# Proxy these targets to the real Makefile, after bootstrapping is necessary.
$(MAKE_TARGETS): Makefile
	@make -f $< $@

Makefile: Makefile.in
	./configure

Makefile.in:
	./bootstrap

#
# Development make targets:
#
indent:
	$(INDENT) $(SOURCE_FILES)

distclean purge:
	git clean -dxf -e GNUmakefile
	rm -fr tests/run-test-suite
	git worktree prune