summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwolfgang <unknown>2005-03-22 06:37:59 +0000
committerwolfgang <unknown>2005-03-22 06:37:59 +0000
commit2b811329caa54eee7c1b159384e1e1aa3a5e9feb (patch)
tree120e26e01d5aca360ab7774d310039bb94389bb3
parentc6f9cbaa3bfdc411e3605ca21fc9d6a44463cc85 (diff)
downloadhaskell-2b811329caa54eee7c1b159384e1e1aa3a5e9feb.tar.gz
[project @ 2005-03-22 06:37:57 by wolfgang]
Mac OS X: Make bindist work with dynamic libraries MERGE TO STABLE
-rw-r--r--Makefile4
-rw-r--r--distrib/Makefile-bin.in7
-rw-r--r--mk/fix_install_names.sh13
3 files changed, 23 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index 4f900d50c9..f9e10beca7 100644
--- a/Makefile
+++ b/Makefile
@@ -211,6 +211,10 @@ BIN_DIST_TOP= distrib/Makefile-bin.in \
config.sub \
aclocal.m4
+ifeq "$(darwin_TARGET_OS)" "1"
+BIN_DIST_TOP+=mk/fix_install_names.sh
+endif
+
#
# binary-dist creates a binary bundle, set BIN_DIST_NAME
# to package name and do `make binary-dist Project=<project-name>'
diff --git a/distrib/Makefile-bin.in b/distrib/Makefile-bin.in
index f4497da52e..197a2e1675 100644
--- a/distrib/Makefile-bin.in
+++ b/distrib/Makefile-bin.in
@@ -173,6 +173,13 @@ config-pkgs ::
$(SED) -e "s|\$$libdir|$(libdir)|g;s|\$$datadir|$(datadir)|g" <lib/$(platform)/$$i.bak >lib/$(platform)/$$i; \
fi; \
done
+ @if test "$(platform)" == "powerpc-apple-darwin"; then \
+ echo "Configuring install names..."; \
+ for i in lib/$(platform)/*; do \
+ sh fix_install_names.sh "$(libdir)" "$$i"; \
+ done; \
+ echo "Done."; \
+ fi
in-place ::
$(MAKE) $(MFLAGS) config-pkgs bindir=`pwd`/bin/$(platform) libdir=`pwd`/lib/$(platform) datadir=`pwd`/share
diff --git a/mk/fix_install_names.sh b/mk/fix_install_names.sh
index 7e51f23390..f6278ce2d7 100644
--- a/mk/fix_install_names.sh
+++ b/mk/fix_install_names.sh
@@ -7,6 +7,13 @@
prefix=$1
file=$2
+type=`file "$file"`
+
+if `test "${type/Mach-O}" == "$type"`
+then
+ exit
+fi
+
if `test x${prefix%/} != x"" `
then
prefix=${prefix%/}/
@@ -16,6 +23,10 @@ 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
+ install_name_tool -change $i "$prefix`basename $i`" $file
done
+if `test "${file%.dylib}" != "${file}"`
+then
+ install_name_tool -id "$prefix`basename $file`" $file
+fi