1CONFIGFILE = config.mk
2include $(CONFIGFILE)
3
4BIN =\
5	blind-arithm\
6	blind-colour-ciexyz\
7	blind-colour-srgb\
8	blind-compress\
9	blind-concat\
10	blind-crop\
11	blind-cut\
12	blind-decompress\
13	blind-dissolve\
14	blind-extend\
15	blind-flip\
16	blind-flop\
17	blind-from-image\
18	blind-from-text\
19	blind-from-video\
20	blind-gauss-blur\
21	blind-invert-luma\
22	blind-next-frame\
23	blind-read-head\
24	blind-repeat\
25	blind-reverse\
26	blind-rewrite-head\
27	blind-set-alpha\
28	blind-set-luma\
29	blind-set-saturation\
30	blind-single-colour\
31	blind-skip-pattern\
32	blind-split\
33	blind-stack\
34	blind-time-blur\
35	blind-to-image\
36	blind-to-text\
37	blind-to-video\
38	blind-translate\
39	blind-transpose\
40	blind-write-head
41
42SCRIPTS =\
43	blind-rotate-90\
44	blind-rotate-180\
45	blind-rotate-270
46
47MAN1 = $(BIN:=.1) $(SCRIPTS:=.1)
48MAN7 = blind.7
49
50SRC = $(BIN:=.c) util.c stream.c
51
52HDR =\
53	arg.h\
54	stream.h\
55	util.h\
56	util/to.h\
57	util/jobs.h\
58	util/emalloc.h\
59	util/eopen.h\
60	util/endian.h\
61	util/colour.h\
62	util/io.h\
63	util/efflush.h\
64	util/efunc.h\
65	util/eprintf.h\
66	util/fshut.h
67
68MISCFILES = Makefile config.mk LICENSE README TODO
69
70EXAMPLEDIRS =\
71	inplace-flop\
72	reverse\
73	split
74
75EXAMPLEFILES =\
76	inplace-flop/Makefile\
77	reverse/Makefile\
78	split/Makefile
79
80all: $(BIN)
81
82%: %.o util.o stream.o
83	$(CC) $(LDFLAGS) -o $@ $^
84
85%.o: src/%.c src/*.h src/*/*.h
86	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
87
88install: all
89	mkdir -p -- "$(DESTDIR)$(PREFIX)/bin"
90	cp -f -- $(BIN) "$(DESTDIR)$(PREFIX)/bin"
91	cd -- "$(DESTDIR)$(PREFIX)/bin" && chmod 755 $(BIN)
92	mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man1"
93	set -e && for m in $(MAN1); do \
94		sed '1s/ blind$$/ " blind $(VERSION)"/g' \
95		< "man/$$m" > "$(DESTDIR)$(MANPREFIX)/man1/$$m"; \
96	done
97	cd -- "$(DESTDIR)$(MANPREFIX)/man1" && chmod 644 $(MAN1)
98	mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7"
99	set -e && for m in $(MAN7); do \
100		sed '1s/ blind$$/ " blind $(VERSION)"/g' \
101		< "man/$$m" > "$(DESTDIR)$(MANPREFIX)/man7/$$m"; \
102	done
103	cd -- "$(DESTDIR)$(MANPREFIX)/man7" && chmod 644 $(MAN7)
104
105uninstall:
106	cd -- "$(DESTDIR)$(PREFIX)/bin" && rm -f $(BIN)
107	cd -- "$(DESTDIR)$(MANPREFIX)/man1" && rm -f $(MAN1)
108	cd -- "$(DESTDIR)$(MANPREFIX)/man7" && rm -f $(MAN7)
109
110dist:
111	-rm -rf "blind-$(VERSION)"
112	mkdir -p "blind-$(VERSION)/src/util" "blind-$(VERSION)/man"
113	cp $(MISCFILES) $(SCRIPTS) "blind-$(VERSION)"
114	cd man && cp $(MAN1) $(MAN7) "../blind-$(VERSION)/man"
115	set -e && cd src && for s in $(SRC) $(HDR); do \
116		cp "$$s" "../blind-$(VERSION)/src/$$s"; done
117	set -e && for e in $(EXAMPLEDIRS); do \
118		mkdir -p "blind-$(VERSION)/examples/$$e"; done
119	set -e && cd examples && for e in $(EXAMPLEFILES); \
120		do cp "$$e" "../blind-$(VERSION)/examples/$$e"; done
121	tar -cf "blind-$(VERSION).tar" "blind-$(VERSION)"
122	gzip -9 "blind-$(VERSION).tar"
123	rm -rf "blind-$(VERSION)"
124
125clean:
126	-rm -f $(BIN) *.o blind-$(VERSION).tar.gz
127	-rm -rf "blind-$(VERSION)"
128
129.PHONY: all install uninstall dist clean
130.PRECIOUS: util.o stream.o
131