aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: e2f12c48ee8c78e0117637c7e2e511a179ea4248 (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
.POSIX:

CONFIGFILE = config.mk
include files.mk
include $(CONFIGFILE)

SH_SCRIPTS =\
	blind-rotate-90\
	blind-rotate-180\
	blind-rotate-270

KSH_SCRIPTS =\
	blind-primary-key

COMMON_OBJ =\
	libblind.o\
	stream.o\
	util.o

HDR =\
	arg.h\
	common.h\
	define-functions.h\
	libblind.h\
	stream.h\
	util.h\
	util/to.h\
	util/jobs.h\
	util/emalloc.h\
	util/eopen.h\
	util/endian.h\
	util/colour.h\
	util/io.h\
	util/efflush.h\
	util/efunc.h\
	util/eprintf.h\
	util/fshut.h\
	video-math.h

MISCFILES =\
	Makefile\
	config.mk\
	blind.mk\
	LICENSE\
	README\
	TODO\
	src/generate-macros.c

EXAMPLEFILES =\
	inplace-flop/Makefile\
	reverse/Makefile\
	split/Makefile

MAN7 =\
	blind

all: build/files.mk build/common-files.mk
	@make -f blind.mk $@

build/files.mk: files.mk
	mkdir -p -- $(@D)
	(	printf 'BIN =' && \
		printf '\\\n\t%s' $(BIN) && \
		printf '\n\nSRC =' && \
		printf '\\\n\tsrc/%s' $(BIN:=.c) $(COMMON_OBJ:.o=.c) && \
		printf '\n\nEXAMPLEDIRS =' && \
		printf '\\\n\texamples/%s' $(EXAMPLEFILES) | sed 's|/[^/\\]*\(\\*\)$$|\1|' | uniq && \
		printf '\n\nEXAMPLEFILES =' && \
		printf '\\\n\texamples/%s' $(EXAMPLEFILES) && \
		printf '\n\nMISCFILES =' && \
		printf '\\\n\t%s' $(MISCFILES) && \
		printf '\n\nSH_SCRIPTS =' && \
		printf '\\\n\t%s' $(SH_SCRIPTS) && \
		printf '\n\nKSH_SCRIPTS =' && \
		printf '\\\n\t%s' $(KSH_SCRIPTS) && \
		printf '\n\nMAN =' && \
		printf '\\\n\tman1/%s.1' $(BIN) $(SH_SCRIPTS) $(KSH_SCRIPTS) && \
		printf '\\\n\tman7/%s.7' $(MAN7) && \
		printf '\n\nMAN1 =' && \
		printf '\\\n\t%s.1' $(BIN) $(SH_SCRIPTS) $(KSH_SCRIPTS) && \
		printf '\n\nMAN7 =' && \
		printf '\\\n\t%s.7' $(MAN7) && \
		printf '\n' \
	) > $@.$$$$ && mv $@.$$$$ $@

build/common-files.mk: Makefile
	mkdir -p -- $(@D)
	(	printf 'HDR =' && \
		printf '\\\n\tsrc/%s' $(HDR) && \
		printf '\n\nCOMMON_OBJ =' && \
		printf '\\\n\t%s' $(COMMON_OBJ) && \
		printf '\n' \
	) > $@.$$$$ && mv $@.$$$$ $@

clean:
	-rm -rf -- $(BIN) build *.o *.a *.bo blind-mcb
	-rm -rf -- blind-$(VERSION).tar.gz "blind-$(VERSION)"

.DEFAULT:
	@make build/files.mk build/common-files.mk
	@make -f blind.mk $@

.PHONY: all clean
.PRECIOUS: build/files.mk build/common-files.mk