#!/bin/sh

# Given a list of files, rewrite the non-system shared library
# dependencies of executables and libraries to be
# @executable_path/../lib/condor/... or @executable_path/../lib/...
# Other types of files are ignored.

if [ "$1" = "" ] ; then
  echo "Usage:" `basename $0` "<executable/library> ..."
  exit 1
fi
for filename in "$@" ; do
  type=`file -h $filename`
  if echo $type | grep -q -e 'dynamically linked shared library' -e 'executable' ; then
    basefile=`basename $filename`
    libraries=`otool -L $filename | grep '^[[:space:]][^@]' | sed 's|^.\([^ ]*\) .*|\1|' | grep -v '^/usr/lib' | grep -v '^/System/' | grep -v "$basefile "`
    external_resolver="@executable_path/../lib/condor"
    internal_resolver="@executable_path/../lib"
    if echo $type | grep -q -e 'dynamically linked shared library' ; then
      install_name_tool -id $basefile $filename
      if echo $filename | grep -q -e 'libcondor_utils' -e 'libpyclassad' -e 'libclassad' -e 'libchirp_client' -e 'libcondorapi' ; then
        external_resolver="@loader_path/condor"
        internal_resolver="@loader_path"
      else
        external_resolver="@loader_path"
        internal_resolver="@loader_path/.."
      fi
    fi
    if echo $filename | grep -q -e 'htcondor.so' -e 'classad.so' ; then
      external_resolver="@loader_path/../condor"
      internal_resolver="@loader_path/.."
    fi
    
    for lib in $libraries ; do
      echo $lib
      baselib=`basename $lib`
      if echo $baselib | grep -q -e 'classad' -e 'condor' ; then
        install_name_tool -change "$lib" "$internal_resolver/$baselib" $filename
      else
        install_name_tool -change "$lib" "$external_resolver/$baselib" $filename
      fi
    done
  fi
done
