Introduction
Introduction Statistics Contact Development Disclaimer Help
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
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.