summary refs log tree commit diff
path: root/port/wcwidth
diff options
context:
space:
mode:
Diffstat (limited to 'port/wcwidth')
-rw-r--r--port/wcwidth/.gitignore3
-rw-r--r--port/wcwidth/Makefile24
-rw-r--r--port/wcwidth/wcfix.in7
3 files changed, 25 insertions, 9 deletions
diff --git a/port/wcwidth/.gitignore b/port/wcwidth/.gitignore
index aa25f78d..132e8098 100644
--- a/port/wcwidth/.gitignore
+++ b/port/wcwidth/.gitignore
@@ -1,2 +1,3 @@
 *.o
-*.dylib
+libwcwidth.dylib
+wcfix
diff --git a/port/wcwidth/Makefile b/port/wcwidth/Makefile
index f6932d6d..50faa653 100644
--- a/port/wcwidth/Makefile
+++ b/port/wcwidth/Makefile
@@ -1,19 +1,27 @@
-PREFIX = ~/.local
+PREFIX ?= ~/.local
 
 OBJS = wcwidth.o wcswidth.o
-DYLIB = libwcwidth.dylib
 
-${DYLIB}: ${OBJS}
+all: libwcwidth.dylib wcfix
+
+libwcwidth.dylib: ${OBJS}
 	${CC} -dynamiclib ${LDFLAGS} ${OBJS} -o $@
 
 wcwidth.o: nonspacing.h wide.h
 
+.SUFFIXES: .in
+
+.in:
+	sed 's|%%PREFIX%%|${PREFIX}|g' $< > $@
+	chmod a+x $@
+
 clean:
-	rm -f ${DYLIB} ${OBJS}
+	rm -f libwcwidth.dylib wcfix ${OBJS}
 
-install: ${DYLIB}
-	install -d ${PREFIX}/lib
-	install -m 644 ${DYLIB} ${PREFIX}/lib
+install: libwcwidth.dylib wcfix
+	install -d ${PREFIX}/lib ${PREFIX}/bin
+	install -m 644 libwcwidth.dylib ${PREFIX}/lib
+	install wcfix ${PREFIX}/bin
 
 uninstall:
-	rm -f ${PREFIX}/lib/${DYLIB}
+	rm -f ${PREFIX}/lib/libwcwidth.dylib ${PREFIX}/bin/wcfix
diff --git a/port/wcwidth/wcfix.in b/port/wcwidth/wcfix.in
new file mode 100644
index 00000000..832c83d6
--- /dev/null
+++ b/port/wcwidth/wcfix.in
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -eu
+
+export DYLD_FORCE_FLAT_NAMESPACE=1
+export DYLD_INSERT_LIBRARIES=%%PREFIX%%/lib/libwcwidth.dylib
+
+exec "$@"