author | insilmaril |
Tue May 06 10:45:26 2008 +0000 (2008-05-06) | |
changeset 700 | 848511683413 |
permissions | -rwxr-xr-x |
insilmaril@399 | 1 |
#!/bin/bash |
insilmaril@399 | 2 |
# |
insilmaril@399 | 3 |
# Link application bundle to QT as framework |
insilmaril@399 | 4 |
# |
insilmaril@399 | 5 |
# written by Uwe Drechsel (c) 2006 |
insilmaril@399 | 6 |
# |
insilmaril@399 | 7 |
# License GPL 2 |
insilmaril@399 | 8 |
# |
insilmaril@399 | 9 |
|
insilmaril@399 | 10 |
APPNAME=vym |
insilmaril@399 | 11 |
BUNDLE=$APPNAME.app |
insilmaril@399 | 12 |
FWORKS=$BUNDLE/Contents/Frameworks |
insilmaril@399 | 13 |
QTDIR=/usr/local/Trolltech/Qt-4.2.0 |
insilmaril@399 | 14 |
QTLIB=$QTDIR/lib |
insilmaril@399 | 15 |
|
insilmaril@399 | 16 |
declare -a FWLIST |
insilmaril@399 | 17 |
|
insilmaril@399 | 18 |
function cleanup |
insilmaril@399 | 19 |
{ |
insilmaril@399 | 20 |
echo ***Cleaning up... |
insilmaril@399 | 21 |
rm -rf $BUNDLE |
insilmaril@399 | 22 |
make clean |
insilmaril@399 | 23 |
} |
insilmaril@399 | 24 |
|
insilmaril@399 | 25 |
function compile |
insilmaril@399 | 26 |
{ |
insilmaril@399 | 27 |
echo ***Compiling... |
insilmaril@399 | 28 |
qmake -config release |
insilmaril@399 | 29 |
make |
insilmaril@399 | 30 |
} |
insilmaril@399 | 31 |
|
insilmaril@399 | 32 |
function fixLinking |
insilmaril@399 | 33 |
{ |
insilmaril@399 | 34 |
echo ***Setting identification names... |
insilmaril@399 | 35 |
for i in ${FWLIST[@]} |
insilmaril@399 | 36 |
do |
insilmaril@399 | 37 |
COM="install_name_tool -id @executable_path/../Frameworks/$i.framework/Versions/4/$i $BUNDLE/Contents/Frameworks/$i.framework/Versions/4/$i" |
insilmaril@399 | 38 |
done |
insilmaril@399 | 39 |
echo " $COM" |
insilmaril@399 | 40 |
`$COM` |
insilmaril@399 | 41 |
|
insilmaril@399 | 42 |
echo ***Tell dynamic linker where to look for frameworks... |
insilmaril@399 | 43 |
for i in ${FWLIST[@]} |
insilmaril@399 | 44 |
do |
insilmaril@399 | 45 |
COM="install_name_tool -change $QTLIB/$i.framework/Versions/4/$i @executable_path/../Frameworks/$i.framework/Versions/4/$i $BUNDLE/Contents/MacOs/$APPNAME" |
insilmaril@399 | 46 |
echo " $COM" |
insilmaril@399 | 47 |
`$COM` |
insilmaril@399 | 48 |
done |
insilmaril@399 | 49 |
|
insilmaril@399 | 50 |
|
insilmaril@399 | 51 |
for fw in ${FWLIST[@]} |
insilmaril@399 | 52 |
do |
insilmaril@399 | 53 |
echo ***Adjust dynamic linking in $fw |
insilmaril@399 | 54 |
for i in ` otool -L vym.app/Contents/Frameworks/$fw.framework/$fw | grep Trolltech | sed "s/^.*\///" | sed "s/ .*$//"` |
insilmaril@399 | 55 |
do |
insilmaril@399 | 56 |
COM="install_name_tool -change $QTLIB/$i.framework/Versions/4/$i @executable_path/../Frameworks/$i.framework/Versions/4/$i $FWORKS/$fw.framework/$fw" |
insilmaril@399 | 57 |
echo " $COM" |
insilmaril@399 | 58 |
`$COM` |
insilmaril@399 | 59 |
done |
insilmaril@399 | 60 |
done |
insilmaril@399 | 61 |
|
insilmaril@399 | 62 |
} |
insilmaril@399 | 63 |
|
insilmaril@399 | 64 |
function copyFrameworks |
insilmaril@399 | 65 |
{ |
insilmaril@399 | 66 |
# Copy found frameworks into bundle, preserve symbolic links with -R |
insilmaril@399 | 67 |
mkdir -p $FWORKS |
insilmaril@399 | 68 |
for i in ${FWLIST[@]} |
insilmaril@399 | 69 |
do |
insilmaril@399 | 70 |
echo ***Copying $QTLIB/$i.framework |
insilmaril@399 | 71 |
#cp -R $QTLIB/$i.framework $FWORKS |
insilmaril@399 | 72 |
rsync -avz $QTLIB/$i.framework $FWORKS --exclude 'Qt*_debug' |
insilmaril@399 | 73 |
done |
insilmaril@399 | 74 |
} |
insilmaril@399 | 75 |
|
insilmaril@399 | 76 |
function copyRessources |
insilmaril@399 | 77 |
{ |
insilmaril@399 | 78 |
echo ***Copying ressources |
insilmaril@399 | 79 |
mkdir -p $BUNDLE/Contents/Resources |
insilmaril@399 | 80 |
cp -r icons flags scripts styles vym.app/Contents/Resources/ |
insilmaril@399 | 81 |
cp icons/vym.icns $BUNDLE/Contents/Resources |
insilmaril@399 | 82 |
} |
insilmaril@399 | 83 |
|
insilmaril@399 | 84 |
function findFrameworks |
insilmaril@399 | 85 |
{ |
insilmaril@399 | 86 |
FWLIST=`otool -L $BUNDLE/Contents/MacOS/$APPNAME | grep Trolltech | sed "s/^.*\///" | sed "s/ .*$//"` |
insilmaril@399 | 87 |
#FWLIST=( Qt3Support QtSql QtNetwork QtXml QtGui QtCore ) |
insilmaril@399 | 88 |
|
insilmaril@399 | 89 |
echo ***The following Qt frameworks are needed: |
insilmaril@399 | 90 |
for i in ${FWLIST[@]} |
insilmaril@399 | 91 |
do |
insilmaril@399 | 92 |
echo $i |
insilmaril@399 | 93 |
done |
insilmaril@399 | 94 |
} |
insilmaril@399 | 95 |
|
insilmaril@399 | 96 |
|
insilmaril@399 | 97 |
#cleanup |
insilmaril@399 | 98 |
#compile |
insilmaril@399 | 99 |
|
insilmaril@399 | 100 |
|
insilmaril@399 | 101 |
#findFrameworks |
insilmaril@399 | 102 |
#copyFrameworks |
insilmaril@399 | 103 |
#fixLinking |
insilmaril@399 | 104 |
copyRessources |
insilmaril@399 | 105 |