summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: 5263ef4ee5123500679d25ba23c745c095cdeb2b (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
.POSIX:

CONFIGFILE = config.mk

CALLTYPE = multicall-hardlinks
# multicall-hardlinks = multiple hardlinks of the same multicall binary is installed
# multicall-symlinks  = multiple links to a multicall binary named $(PREFIX)/bin/pdatools are installed
# singlecall          = separate binaries are install for each command


BIN =\
	backlight\
	checklist\
	clock\
	counter\
	dice\
	stopwatch\
	timer

HDR =\
        common.h\
	large.h

COMMON =\
	large-digits.o\
	large-colon.o\
	large-dot.o\
	large-minus.o

OBJ = $(BIN:=.o) $(COMMON)
BOBJ = $(OBJ:.o=.bo)
MAN1 = $(BIN:=.1)


include $(CONFIGFILE)
include $(CALLTYPE).mk


$(OBJ): $(@:.o=.c) $(HDR)
$(BOBJ): $(@:.bo=.c) $(HDR)

.c.o:
	$(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS)

.c.bo:
	$(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) -Dmain="$$(printf '%s\n' main__$* | tr - _)" -DMULTICALL_BINARY

pdatools: pdatools.o $(BOBJ)
	$(CC) -o $@ $@.o $(BOBJ) $(LDFLAGS)

pdatools.c: pdatools.c.in Makefile
	printf '#define LIST_COMMANDS' > $@
	printf '\\\n\tX(%s)' $(BIN) | tr - _ >> $@
	printf '\n\n' >> $@
	cat pdatools.c.in >> $@

large.h: large.sh
	./large.sh h > $@

large-digits.c: large.sh
	./large.sh c 0 1 2 3 4 5 6 7 8 9 > $@

large-colon.c: large.sh
	./large.sh c colon > $@

large-dot.c: large.sh
	./large.sh c dot > $@

large-minus.c: large.sh
	./large.sh c minus > $@

backlight: backlight.o
	$(CC) -o $@ $@.o $(LDFLAGS)

checklist: checklist.o
	$(CC) -o $@ $@.o $(LDFLAGS)

clock: clock.o large-digits.o large-colon.o
	$(CC) -o $@ $@.o large-digits.o large-colon.o $(LDFLAGS)

counter: counter.o large-digits.o large-minus.o
	$(CC) -o $@ $@.o large-digits.o large-minus.o $(LDFLAGS)

dice: dice.o
	$(CC) -o $@ $@.o $(LDFLAGS)

stopwatch: stopwatch.o
	$(CC) -o $@ $@.o $(LDFLAGS)

timer: timer.o large-digits.o large-colon.o large-dot.o large-minus.o
	$(CC) -o $@ $@.o large-digits.o large-colon.o large-dot.o large-minus.o $(LDFLAGS)

install-common:
	mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man1"
	cp -- $(MAN1) "$(DESTDIR)$(MANPREFIX)/man1"

post-install:
	chown -- '0:$(VIDEO_GROUP)' "$(DESTDIR)$(PREFIX)/bin/backlight"
	chmod -- 4754 "$(DESTDIR)$(PREFIX)/bin/backlight"

uninstall:
	-cd -- "$(DESTDIR)$(PREFIX)/bin" && rm -f -- $(BIN_)
	-cd -- "$(DESTDIR)$(MANPREFIX)/man1" && rm -f -- $(MAN1)
	-rm -f -- "$(DESTDIR)$(PREFIX)/lib/pdatools"

clean:
	-rm -rf -- *.o *.a *.lo *.so *.bo *.su $(BIN) large.h large-*.c pdatools pdatools.c

.SUFFIXES:
.SUFFIXES: .o .c .bo

.PHONY: all install install-common post-install uninstall clean