#!/bin/bash

APP="${1?}"
PLUGINS="${APP}/Contents/Plugins"
OP_PLUGINS="${APP}/Contents/Plugins/OpenPilot"
QT_LIBS="QtGui QtTest QtCore QtSvg QtSql QtOpenGL QtNetwork QtXml QtDBus QtScript phonon"
QT_DIR=$(otool -L "${APP}/Contents/MacOS/OpenPilot GCS"  | sed -n -e 's/\/QtCore\.framework.*//p' | sed -n -E 's:^.::p')
QT_EXTRA="accessible/libqtaccessiblewidgets.dylib bearer/libqgenericbearer.dylib codecs/libqcncodecs.dylib codecs/libqjpcodecs.dylib  codecs/libqkrcodecs.dylib codecs/libqtwcodecs.dylib graphicssystems/libqtracegraphicssystem.dylib imageformats/libqgif.dylib imageformats/libqico.dylib imageformats/libqjpeg.dylib imageformats/libqmng.dylib imageformats/libqtiff.dylib qmltooling/libqmldbg_inspector.dylib qmltooling/libqmldbg_tcp.dylib"


echo "Qt library directory is \"${QT_DIR}\""

echo "Processing Qt libraries in $1"
macdeployqt "${APP}"

for f in "${PLUGINS}/"*.dylib "${OP_PLUGINS}/"*.dylib
do
    for g in $QT_LIBS
    do
	install_name_tool -change \
	    "${QT_DIR}/${g}.framework/Versions/4/${g}" \
	    @executable_path/../Frameworks/${g}.framework/Versions/4/${g} \
	    "${f}"
    done
done


# should be redundant but some libs missed by main app and macdeployqt
for f in ${QT_LIBS}
do
    echo "Copying ${f}"
    cp -r "${QT_DIR}/${f}.framework" "${APP}/Contents/Frameworks/"

    echo "Changing package identification of ${f}"
    install_name_tool -id \
	@executable_path/../Frameworks/${f}.framework/Versions/4/${f} \
	"${APP}/Contents/Frameworks/${f}.framework/Versions/4/${f}"

    rm "${APP}/Contents/Frameworks/${f}.framework/${f}"

    echo "Changing package linkages"
    for g in $QT_LIBS
    do
	install_name_tool -change \
	    "${QT_DIR}/${g}.framework/Versions/4/${g}" \
	    @executable_path/../Frameworks/${g}.framework/Versions/4/${g} \
	    "${APP}/Contents/Frameworks/${f}.framework/Versions/4/${f}"
    done
done

for f in ${QT_EXTRA}
do
	echo "Changing package identification of ${f}"
	install_name_tool -id \
		@executable_path/../Plugins/${f} \
		"${PLUGINS}/${f}"
done

echo "Copying SDL"
cp -r "/Library/Frameworks/SDL.framework" "${APP}/Contents/Frameworks/"

echo "Changing package identification of SDL"
install_name_tool -id \
	@executable_path/../Frameworks/SDL.framework/Versions/A/SDL \
	"${APP}/Contents/Frameworks/SDL.framework/Versions/A/SDL"

# deleting unnecessary files
echo "Deleting unnecessary files"
find "${APP}/Contents/Frameworks" -iname "current" -exec rm -rf \{\} \;
find "${APP}/Contents/Frameworks" -iname "4.0" -exec rm -rf \{\} \;
find "${APP}/Contents/Frameworks" -iname "*_debug" -exec rm -rf \{\} \;