summaryrefslogtreecommitdiff
path: root/Makefile
blob: 4e77ce415499c0122a8b12f10289e01129533b97 (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
.POSIX:

.SILENT: all clean .util.mk

CFLAGS=-std=gnu99 -D_XOPEN_SOURCE=700 -g

all: .util.mk
	make -f .util.mk --no-print-directory

deps: clean .util.mk

clean:
	[ -f .util.mk ] && make -k --no-print-directory -f .util.mk clean || true
	rm -f .util.mk

.util.mk: . Makefile
	printf '.POSIX:\n\n' > $@
	printf '.SUFFIXES: .cat .msg\n\n' >> $@
	printf 'default: all\n\n' >> $@
	printf 'CFLAGS=$(CFLAGS)\n' >> $@
	printf 'UTILITY=%s\n' "$$(basename -s .c $$(grep -l ^main *.c | head -n1))" >> $@
	printf 'SOURCES=%s\n' "$$(ls -1 *.c | tr '\n' ' ')" >> $@
	printf 'HEADERS=%s\n' "$$(ls -1 *.h 2>/dev/null | tr '\n' ' ')" >> $@
	printf 'OBJECTS=%s\n' "$$(ls -1 *.c | sed -e 's/\.c$$/.o/' | tr '\n' ' ')" >> $@
	printf 'L10N=%s\n' "$$(ls -1 *.msg 2>/dev/null | sed -e 's/\.msg$$/\.cat/' | tr '\n' ' ')" >> $@
	printf 'L11N=' >> $@
	sed -ne '/^\/\*\*cat/,/cat\*\*\//p;' *.c | head -n1 | awk '{print $$2 ".cat"}' >> $@
	printf '\n' >> $@
	printf 'all: $$(UTILITY) $$(L10N)\n\n' >> $@
	printf '$$(UTILITY): $$(OBJECTS) $$(HEADERS)\n\n' >> $@
	printf '.msg.cat:\n\tgencat $$@ $$<\n\n' >> $@
	printf ".c.cat:\n\tsed -ne '/^\/\*\*cat/,/cat\*\*\//p;' $$< | grep -v ^/ | grep -v ^\* | gencat \$$@ -\n\n" >> $@
	printf 'clean:\n\trm -f *.o $$(L10N) $$(UTILITY)\n\n' >> $@