#!/bin/sh
#$Id: set_dylib_dep,v 1.13 2020/05/08 01:06:27 marcum Exp $

# ==============================================================================
# For dynamic libraries: Set ID and dependency names with loader relative path
#
# set_dylib_ndep [list of dylib names]
# ==============================================================================

if [ "$1" = "" ]; then

	echo "
For dynamic libraries: Set ID and dependency names with loader relative path

set_dylib_ndep [list of dylib names]
"
	exit
fi

if [ "`uname -s`" != "Darwin" ]; then

	exit
fi

working_dir="`pwd`"

names="$*"

for name in ${names}; do

	if [ -e "${name}" ] && [ ! -h "${name}" ] && [ "`file ${name} | grep \ shared\ `" ]; then

		dylib_dir="`dirname ${name}`"
		dylib_name="`basename ${name}`"

		echo ""
		echo "Changing dependencies for ${dylib_name}"

		cd ${dylib_dir}

		install_name_tool -id @loader_path/${dylib_name} ${dylib_name}

		info="`otool -L ${dylib_name}`"

		set -- ${info}
		
		shift 1

		while [ X"$1" != X-- ]; do

			case "$1"
			in  

				"")	set -- -- $@
					;;

				*)	old_name=$1
					if [ ! "`echo ${old_name} | grep /usr/`" ] && [ ! "`echo ${old_name} | grep /opt/`" ]; then
						new_name="@loader_path/`basename ${old_name}`"
						new_name="`echo ${new_name} | sed s/'\.'0'\.'dylib/.dylib/`"

						install_name_tool -change ${old_name} ${new_name} ${dylib_name}
					fi
					shift 7
					;;
			esac
		done

		echo ""

		otool -L ${dylib_name}
	fi
done

cd ${working_dir}
