- Notifications
You must be signed in to change notification settings - Fork 337
/
Copy pathfixup_dylib_paths.sh
executable file
·37 lines (27 loc) · 935 Bytes
/
fixup_dylib_paths.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/bash
# Fix paths from dylibs in MacOSX so that they're loaded from the app bundle
# instead of /usr/local
# <file to fix>
iftest"$NEWTARGETPATH" = "";then
NEWTARGETPATH="@executable_path/../Frameworks"
fi
iftest"$CHANGEPATHS" = "";then
CHANGEPATHS="/usr/local"
fi
forfilein$*;do
if [ -f$file ];then
new_targetid=$NEWTARGETPATH/$(basename $file)
# change the id of the library if its a dylib
ifecho$new_targetid|grep dylib > /dev/null;then
# and not already a relative path
if! otool -DX $file|grep @ > /dev/null;then
install_name_tool -id $new_targetid$file
install_name_tool -change $(otool -DX $file|head -1)$new_targetid$file
fi
fi
forlibin$(otool -L $file|egrep "$CHANGEPATHS"|grep .dylib|cut -f2|cut -f1 -d\ );do
new_id=$NEWTARGETPATH/$(basename $lib)
install_name_tool -change $lib$new_id$file
done
fi
done