Introduction
Introduction Statistics Contact Development Disclaimer Help
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
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.