blind.mk - blind - suckless command-line video editing utility | |
git clone git://git.suckless.org/blind | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
blind.mk (3551B) | |
--- | |
1 .POSIX: | |
2 | |
3 CONFIGFILE = config.mk | |
4 | |
5 SCRIPTS = $(SH_SCRIPTS) $(KSH_SCRIPTS) | |
6 MAN1 = $(BIN:=.1) $(SCRIPTS:=.1) | |
7 MAN7 = blind.7 | |
8 BOBJ = $(BIN:=.bo) | |
9 OBJ = $(BIN:=.o) $(COMMON_OBJ) | |
10 | |
11 DIST_MAN = $(MAN1) $(MAN7) | |
12 DIST_MISC = $(HDR) $(SRC) $(SCRIPTS) $(MISCFILES) $(EXAMPLEFILES) | |
13 | |
14 DEPS = build/common-files.mk blind.mk $(CONFIGFILE) | |
15 MCB_DEPS = build/files.mk $(DEPS) | |
16 | |
17 include $(CONFIGFILE) | |
18 include build/files.mk | |
19 include build/common-files.mk | |
20 | |
21 all: $(BIN) | |
22 mcb: blind-mcb | |
23 | |
24 $(BIN): $(@:=.o) $(COMMON_OBJ) $(DEPS) | |
25 .o: | |
26 $(CC) -o $@ $< $(COMMON_OBJ) $(LDFLAGS) | |
27 | |
28 $(OBJ): src/$(@:.o=:c) $(HDR) build/platform.h $(DEPS) | |
29 $(OBJ): | |
30 $(CC) $(CFLAGS) -c -o $$$$.$@ src/$*.c && mv $$$$.$@ $@ | |
31 | |
32 build/blind-mcb.o: $(MCB_DEPS) | |
33 .c.o: | |
34 $(CC) $(CFLAGS) -c -o $@ $< | |
35 | |
36 $(BOBJ): src/$(@:.bo=:c) $(HDR) build/platform.h $(DEPS) | |
37 $(BOBJ): | |
38 $(CC) $(CFLAGS) -Dmain="$$(printf 'main_%s\n' $* | tr -- - _)" -… | |
39 | |
40 build/blind-mcb.c: $(MCB_DEPS) | |
41 mkdir -p $(@D) | |
42 printf '#include <%s.h>\n' stdio string > $@ | |
43 printf 'int main_%s(int argc, char *argv[]);\n' $(BIN) | tr -- -… | |
44 printf 'int main(int argc, char *argv[]) {\n' >> $@ | |
45 printf 'char *cmd = strrchr(*argv, '"'/'"');\n' >> $@ | |
46 printf 'cmd = cmd ? &cmd[1] : *argv;\n' >> $@ | |
47 set -e && for c in $(BIN); do \ | |
48 printf 'if (!strcmp(cmd, "%s"))\n\treturn main_%s(argc, … | |
49 sed '/^\t/s/-/_/g'; \ | |
50 done >> $@ | |
51 printf 'fprintf(stderr, "Invalid command: %%s\\n", cmd);\n' >> $@ | |
52 printf 'return 1;\n' >> $@ | |
53 printf '}\n' >> $@ | |
54 | |
55 blind-mcb: build/blind-mcb.o $(BOBJ) $(COMMON_OBJ) $(MCB_DEPS) | |
56 $(CC) -o $@ build/blind-mcb.o $(BOBJ) $(COMMON_OBJ) $(LDFLAGS) | |
57 | |
58 build/generate-macros: src/generate-macros.c $(DEPS) | |
59 @mkdir -p -- $(@D) | |
60 $(CC) $(CFLAGS) -o $@.$$$$ src/generate-macros.c $(LDFLAGS) && m… | |
61 | |
62 src/../build/platform.h: build/platform.h | |
63 build/platform.h: build/generate-macros $(DEPS) | |
64 @mkdir -p -- $(@D) | |
65 build/generate-macros > $@.$$$$ && mv $@.$$$$ $@ | |
66 | |
67 install: all install-common | |
68 cp -f -- $(BIN) "$(DESTDIR)$(PREFIX)/bin" | |
69 cd -- "$(DESTDIR)$(PREFIX)/bin" && chmod 755 $(BIN) | |
70 | |
71 install-mcb: mcb install-common | |
72 for c in $(BIN); do \ | |
73 $(LN) -f -- blind-single-colour "$(DESTDIR)$(PREFIX)/bin… | |
74 rm -f -- "$(DESTDIR)$(PREFIX)/bin/blind-single-colour" | |
75 cp -f -- blind-mcb "$(DESTDIR)$(PREFIX)/bin/blind-single-colour" | |
76 cd -- "$(DESTDIR)$(PREFIX)/bin" && chmod 755 -- blind-single-col… | |
77 | |
78 install-common: | |
79 mkdir -p -- "$(DESTDIR)$(PREFIX)/bin" | |
80 mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man1" | |
81 mkdir -p -- "$(DESTDIR)$(MANPREFIX)/man7" | |
82 cp -f -- $(SCRIPTS) "$(DESTDIR)$(PREFIX)/bin" | |
83 cd -- "$(DESTDIR)$(PREFIX)/bin" && sed -i '1s:bash$$:$(KORN_SHEL… | |
84 cd -- "$(DESTDIR)$(PREFIX)/bin" && chmod 755 -- $(SCRIPTS) | |
85 set -e && for m in $(MAN); do \ | |
86 sed '1s/ blind$$/ " blind $(VERSION)"/g' \ | |
87 < "man/$$(basename $$m)" > "$(DESTDIR)$(MANPREFIX)/$$m";… | |
88 done | |
89 cd -- "$(DESTDIR)$(MANPREFIX)" && chmod 644 $(MAN) | |
90 | |
91 uninstall: | |
92 cd -- "$(DESTDIR)$(PREFIX)/bin" && rm -f $(BIN) $(SCRIPTS) | |
93 cd -- "$(DESTDIR)$(MANPREFIX)" && rm -f $(MAN) | |
94 | |
95 dist: | |
96 -rm -rf "blind-$(VERSION)" | |
97 mkdir -p "blind-$(VERSION)" | |
98 cd "blind-$(VERSION)" && mkdir -p src/util man $(EXAMPLEDIRS) | |
99 cd man && cp $(DIST_MAN) "../blind-$(VERSION)/man" | |
100 set -e && for s in $(DIST_MISC); do cp "$$s" "../blind-$(VERSION… | |
101 tar -cf "blind-$(VERSION).tar" "blind-$(VERSION)" | |
102 gzip -9 "blind-$(VERSION).tar" | |
103 rm -rf "blind-$(VERSION)" | |
104 | |
105 .SUFFIXES: | |
106 .SUFFIXES: .o .bo .c | |
107 | |
108 .PHONY: all mcb install install-mcb install-common uninstall dist | |
109 .PRECIOUS: $(COMMON_OBJ) build/platform.h |