aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
blob: d6ff343a9ed83feb2e9755a87f0145feb3fc1821 (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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
CONFIGFILE = config.mk
include $(CONFIGFILE)

BIN =\
	blind-arithm\
	blind-colour-ciexyz\
	blind-colour-srgb\
	blind-compress\
	blind-concat\
	blind-crop\
	blind-cut\
	blind-decompress\
	blind-dissolve\
	blind-extend\
	blind-flip\
	blind-flop\
	blind-from-image\
	blind-from-text\
	blind-from-video\
	blind-gauss-blur\
	blind-invert-luma\
	blind-next-frame\
	blind-read-head\
	blind-repeat\
	blind-reverse\
	blind-rewrite-head\
	blind-set-alpha\
	blind-set-luma\
	blind-set-saturation\
	blind-single-colour\
	blind-split\
	blind-stack\
	blind-time-blur\
	blind-to-image\
	blind-to-text\
	blind-to-video\
	blind-transpose\
	blind-write-head

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

MAN1 = $(BIN:=.1) $(SCRIPTS:=.1)
MAN7 = blind.7

SRC = $(BIN:=.c) util.c stream.c

HDR =\
	arg.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/eprintf.h\
	util/fshut.h

MISCFILES = Makefile config.mk LICENSE README TODO

EXAMPLEDIRS =\
	inplace-flop\
	reverse\
	split

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

all: $(BIN)

%: %.o util.o stream.o
	$(CC) $(LDFLAGS) -o $@ $^

%.o: src/%.c src/*.h src/*/*.h
	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<

install: all
	mkdir -p -- "$(DESTDIR)$(PREFIX)/bin"
	cp -f -- $(BIN) "$(DESTDIR)$(PREFIX)/bin"
	cd -- "$(DESTDIR)$(PREFIX)/bin" && chmod 755 $(BIN)
	mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man1"
	set -e && for m in $(MAN1); do \
		sed '1s/ blind$$/ " blind $(VERSION)"/g' \
		< "man/$$m" > "$(DESTDIR)$(MANPREFIX)/man1/$$m"; \
	done
	cd -- "$(DESTDIR)$(MANPREFIX)/man1" && chmod 644 $(MAN1)
	mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7"
	set -e && for m in $(MAN7); do \
		sed '1s/ blind$$/ " blind $(VERSION)"/g' \
		< "man/$$m" > "$(DESTDIR)$(MANPREFIX)/man7/$$m"; \
	done
	cd -- "$(DESTDIR)$(MANPREFIX)/man7" && chmod 644 $(MAN7)

uninstall:
	cd -- "$(DESTDIR)$(PREFIX)/bin" && rm -f $(BIN)
	cd -- "$(DESTDIR)$(MANPREFIX)/man1" && rm -f $(MAN1)
	cd -- "$(DESTDIR)$(MANPREFIX)/man7" && rm -f $(MAN7)

dist:
	-rm -rf "blind-$(VERSION)"
	mkdir -p "blind-$(VERSION)/src/util" "blind-$(VERSION)/man"
	cp $(MISCFILES) $(SCRIPTS) "blind-$(VERSION)"
	cd man && cp $(MAN1) $(MAN7) "../blind-$(VERSION)/man"
	set -e && cd src && for s in $(SRC) $(HDR); do \
		cp "$$s" "../blind-$(VERSION)/src/$$s"; done
	set -e && for e in $(EXAMPLEDIRS); do \
		mkdir -p "blind-$(VERSION)/examples/$$e"; done
	set -e && cd examples && for e in $(EXAMPLEFILES); \
		do cp "$$e" "../blind-$(VERSION)/examples/$$e"; done
	tar -cf "blind-$(VERSION).tar" "blind-$(VERSION)"
	gzip -9 "blind-$(VERSION).tar"
	rm -rf "blind-$(VERSION)"

clean:
	-rm -f $(BIN) *.o blind-$(VERSION).tar.gz
	-rm -rf "blind-$(VERSION)"

.PHONY: all install uninstall dist clean
.PRECIOUS: util.o stream.o