From 3463d1d3725bd4ec70acb2656ff20571b9b59294 Mon Sep 17 00:00:00 2001 From: wolfgang Date: Sun, 23 Jan 2005 18:18:05 +0000 Subject: [PATCH] [project @ 2005-01-23 18:18:05 by wolfgang] Darwin / Mac OS X: For builds with dynamic libraries, fix up dynamic library paths ("install names") for binaries. Otherwise, a dynamically-linked stage2 ghc would contain the path names of the build directories. --- mk/fix_install_names.sh | 21 +++++++++++++++++++++ mk/target.mk | 3 +++ 2 files changed, 24 insertions(+) create mode 100644 mk/fix_install_names.sh diff --git a/mk/fix_install_names.sh b/mk/fix_install_names.sh new file mode 100644 index 0000000..7e51f23 --- /dev/null +++ b/mk/fix_install_names.sh @@ -0,0 +1,21 @@ +# Darwin / Mac OS X only +# sh fix_install_names.sh directory binary +# +# Changes 'binary' to assume that all libHS*_dyn.dylib libraries +# are to be found in 'directory'. + +prefix=$1 +file=$2 + +if `test x${prefix%/} != x"" ` +then + prefix=${prefix%/}/ +fi + +for i in `otool -L $file \ + | grep 'libHS.*_dyn.dylib' \ + | sed 's/.\(.*libHS.*_dyn.dylib\).*/\1/'` +do + install_name_tool -change $i $prefix`basename $i` $file +done + diff --git a/mk/target.mk b/mk/target.mk index 6749e29..4ef96a4 100644 --- a/mk/target.mk +++ b/mk/target.mk @@ -727,6 +727,9 @@ install:: $(INSTALL_PROGS) @for i in $(INSTALL_PROGS); do \ echo $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir); \ $(INSTALL_PROGRAM) $(INSTALL_BIN_OPTS) $$i $(bindir) ; \ + if `test $(darwin_TARGET_OS) == 1` ; \ + then sh $(FPTOOLS_TOP)/mk/fix_install_names.sh $(libdir) $(bindir)/$$i ; \ + fi ; \ done endif -- 1.7.10.4