#!/bin/bash APP="${1?}" PLUGINS="${APP}/Contents/Plugins" OP_PLUGINS="${APP}/Contents/Plugins/OpenPilot" QT_LIBS="QtDeclarative QtXmlPatterns QtGui QtTest QtCore QtSvg QtSql QtOpenGL QtNetwork QtXml QtScript" 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 imageformats/libqgif.dylib imageformats/libqico.dylib imageformats/libqjpeg.dylib imageformats/libqmng.dylib imageformats/libqtiff.dylib imageformats/libqsvg.dylib qmltooling/libqmldbg_tcp.dylib sqldrivers/libqsqlodbc.dylib sqldrivers/libqsqlpsql.dylib sqldrivers/libqsqlite.dylib imageformats/libqtga.dylib iconengines/libqsvgicon.dylib" OSG_EXTRA="libosgViewer.90.dylib" if [ -z "${QT_DIR}" ] then # QT_DIR is empty, then we have (presumably): QT_FRAMEWORKS="/Library/Frameworks" QT_PLUGINS="/Developer/Applications/Qt/plugins" else # Typical Nokia SDK paths QT_FRAMEWORKS="${QT_DIR}" QT_PLUGINS="${QT_DIR}/../plugins" QT_DIR="${QT_DIR}/" fi echo "Qt library directory is \"${QT_DIR}\"" echo "Running macdeployqt" macdeployqt "${APP}" -no-strip echo "Processing Qt libraries in ${APP}" for f in "${PLUGINS}/"*.dylib "${OP_PLUGINS}/"*.dylib do # Only process plain files [ ! -L "${f}" ] && for g in $QT_LIBS do install_name_tool -change \ "${QT_DIR}${g}.framework/Versions/5/${g}" \ @executable_path/../Frameworks/${g}.framework/Versions/5/${g} \ "${f}" done done #echo "Copying other libraries that were missed" # should be redundant but some libs missed by main app and macdeployqt #for f in ${QT_LIBS} #do #echo "Copying ${f}" #cp -a "${QT_FRAMEWORKS}/${f}.framework" "${APP}/Contents/Frameworks/" #echo "Changing package identification of ${f}" #install_name_tool -id \ #@executable_path/../Frameworks/${f}.framework/Versions/5/${f} \ #"${APP}/Contents/Frameworks/${f}.framework/Versions/5/${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/5/${g}" \ #@executable_path/../Frameworks/${g}.framework/Versions/5/${g} \ #"${APP}/Contents/Frameworks/${f}.framework/Versions/5/${f}" #done #done #for f in ${QT_EXTRA} #do #echo "Copying package ${f}" #d=$(dirname ${f}) #[ ! -d "${APP}/Contents/Plugins/${d}" ] && mkdir "${APP}/Contents/Plugins/${d}" #cp "${QT_PLUGINS}/${f}" "${APP}/Contents/Plugins/${f}" #echo "Changing package identification of ${f}" #install_name_tool -id \ #@executable_path/../Plugins/${f} \ #"${PLUGINS}/${f}" #echo "Changing package linkages" #for g in $QT_LIBS #do #install_name_tool -change \ #"${QT_DIR}${g}.framework/Versions/5/${g}" \ #@executable_path/../Frameworks/${g}.framework/Versions/5/${g} \ #"${APP}/Contents/Plugins/${f}" #done #done echo "Copying SDL" cp -a "/Library/Frameworks/SDL.framework" "${APP}/Contents/Frameworks/" echo "Changing package identification of SDL" install_name_tool -id \ @executable_path/../Frameworks/SDL.framework/SDL \ "${APP}/Contents/Frameworks/SDL.framework/SDL" install_name_tool -change \ @rpath/SDL.framework/Versions/A/SDL \ "@executable_path/../Frameworks/SDL.framework/SDL" \ "${APP}/Contents/Plugins/libsdlgamepad.1.dylib" # echo "Copying OSG libraries" # for f in ${OSG_EXTRA} # do # echo "Copying library ${f}" # cp /usr/local/lib/{$f} "${APP}/Contents/Plugins/${f}" # echo "Changing package identification of ${f} # install_name_tool -id \ # @executable_path/../Frameworks/SDL.framework/Versions/A/SDL \ # "${APP}/Contents/Frameworks/SDL.framework/Versions/A/SDL" #done # 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 \{\} \;