#!/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}" 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}" install_name_tool -change \ "${QT_DIR}/${g}.framework/Versions/4/${g}" \ @executable_path/../Frameworks/${g}.framework/Versions/4/${g} \ "${APP}/Contents/Frameworks/${f}.framework/${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 \{\} \;