Add multi-call binary installation - blind - suckless command-line video editin… | |
git clone git://git.suckless.org/blind | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit d0c94265c042fe419926ee3e42fe4821c5e464cb | |
parent 6cde3f62419e656ae874a2d2b43c0a91da8a43e8 | |
Author: Mattias Andrée <[email protected]> | |
Date: Sat, 15 Jul 2017 21:56:07 +0200 | |
Add multi-call binary installation | |
Signed-off-by: Mattias Andrée <[email protected]> | |
Diffstat: | |
M Makefile | 44 +++++++++++++++++++++++++++++… | |
M config.mk | 3 +++ | |
2 files changed, 46 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/Makefile b/Makefile | |
@@ -151,6 +151,7 @@ MAN7 = blind.7 | |
all: $(BIN) | |
+mcb: blind-mcb | |
%: %.o $(COMMON_OBJ) | |
$(CC) -o $@ $^ $(LDFLAGS) | |
@@ -158,6 +159,26 @@ all: $(BIN) | |
%.o: src/%.c src/*.h src/*/*.h platform.h | |
$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< | |
+%.mcb.o: src/%.c src/*.h src/*/*.h platform.h | |
+ $(CC) $(CFLAGS) $(CPPFLAGS) -Dmain="$$(printf 'main_%s\n' $* | tr -- -… | |
+ | |
+blind-mcb.c: Makefile | |
+ printf '#include <%s.h>\n' stdio string > blind-mcb.c | |
+ printf 'int main_%s(int argc, char *argv[]);\n' $(BIN) | tr -- - _ >> … | |
+ printf 'int main(int argc, char *argv[]) {\n' >> blind-mcb.c | |
+ printf 'char *cmd = strrchr(*argv, '"'/'"');\n' >> blind-mcb.c | |
+ printf 'cmd = cmd ? cmd + 1 : *argv;\n' >> blind-mcb.c | |
+ for c in $(BIN); do \ | |
+ printf 'if (!strcmp(cmd, "%s"))\n\treturn main_%s(argc, argv);… | |
+ sed '/^\t/s/-/_/g'; \ | |
+ done >> blind-mcb.c | |
+ printf 'fprintf(stderr, "Invalid command: %%s\\n", cmd);\n' >> blind-m… | |
+ printf 'return 1;\n' >> blind-mcb.c | |
+ printf '}\n' >> blind-mcb.c | |
+ | |
+blind-mcb: blind-mcb.o $(BIN:=.mcb.o) $(COMMON_OBJ) | |
+ $(CC) -o $@ $^ $(LDFLAGS) | |
+ | |
generate-macros: src/generate-macros.c | |
$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ $< $(LDFLAGS) | |
@@ -181,6 +202,26 @@ install: all | |
done | |
cd -- "$(DESTDIR)$(MANPREFIX)/man7" && chmod 644 $(MAN7) | |
+install-mcb: mcb | |
+ mkdir -p -- "$(DESTDIR)$(PREFIX)/bin" | |
+ for c in $(BIN); do \ | |
+ $(LN) -f -- blind-single-colour "$(DESTDIR)$(PREFIX)/bin/$$c";… | |
+ rm -f -- "$(DESTDIR)$(PREFIX)/bin/blind-single-colour" | |
+ cp -f -- blind-mcb "$(DESTDIR)$(PREFIX)/bin/blind-single-colour" | |
+ chmod 755 -- "$(DESTDIR)$(PREFIX)/bin/blind-single-colour" | |
+ 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) | |
@@ -203,8 +244,9 @@ dist: | |
clean: | |
-rm -f $(BIN) *.o blind-$(VERSION).tar.gz platform.h generate-macros | |
+ -rm -f blind-mcb.c blind-mcb.o blind-mcb | |
-rm -rf "blind-$(VERSION)" | |
-.PHONY: all install uninstall dist clean | |
+.PHONY: all mcb install install-mcb uninstall dist clean | |
.PRECIOUS: $(COMMON_OBJ) platform.h | |
diff --git a/config.mk b/config.mk | |
@@ -5,6 +5,9 @@ VERSION = 1.1 | |
PREFIX = /usr/local | |
MANPREFIX = $(PREFIX)/share/man | |
+# Commands | |
+LN = ln -s | |
+ | |
# You may want to remove -DHAVE_PRCTL, -DHAVE_EPOLL, and | |
# -DHAVE_SENDFILE from CPPFLAGS if you are not using Linux. | |
CFLAGS = -std=c11 -Wall -pedantic -O2 |