From: Felix Paul Kühne Date: Fri, 23 Jul 2010 11:10:49 +0000 (+0200) Subject: Universal Binary creation skript: updated to the re-worked version from 1.1-bugfix X-Git-Tag: 1.2.0-pre1~5693 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=26731f234a225f4fb977e47d897f2f4ad6c77ea9;p=vlc Universal Binary creation skript: updated to the re-worked version from 1.1-bugfix --- diff --git a/extras/package/macosx/ub.sh b/extras/package/macosx/ub.sh index a4ad0090a1..2d58f2694f 100644 --- a/extras/package/macosx/ub.sh +++ b/extras/package/macosx/ub.sh @@ -1,6 +1,7 @@ #!/bin/bash +set -e -# This script allows you to create a Universal Binary of VLC.app. It requires +# This script allows you to create a Universal Binary of VLC.app. It requires # pre-compiled binaries for Intel-, Intel64- and PowerPC-based Macs; no sources. # PPC64 is not supported right now, but could be added with little effort. # Using different OS X SDKs for both platforms is absolutely fine of course. @@ -9,44 +10,116 @@ # INTELROOT == path to VLC.app compiled on an Intel-based Mac (e.g. jones). # INTEL64ROOT == path to VLC.app compiled in 64bit mode (e.g. on jones with -m64). -INTELROOT=/Applications/VLC.app -INTEL64ROOT=/Users/fpk/VLC-release.app # PPCROOT == path to VLC.app compiled on a PowerPC-based Mac (e.g. veda). -PPCROOT=/Volumes/vlc-1.0.2/VLC.app +# PPCROOT=/Volumes/vlc-1.0.2/VLC.app # Note that these roots only require read-access and won't be changed at all. # UBROOT == path to a VLC.app bundle which will contain the Universal Binary. -# Note that you should empty the following folders: lib, modules -# and remove the VLC binary in MacOS -UBROOT=/Users/fpk/VLC.app -for i in `ls $INTELROOT/Contents/MacOS/lib/` +SRCROOT=`dirname $0`/../../.. +WD=`pwd` +cd $SRCROOT +SRCROOT=`pwd` +cd $WD + +############################################# +# Config + +INTELROOT=$SRCROOT/build32/VLC-release.app +INTEL64ROOT=$SRCROOT/build64/VLC-release.app +# PPCROOT +UBROOT=$SRCROOT/build-fat/VLC.app + +# +############################################# + +echo "Creating VLC in $UBROOT" +rm -Rf $UBROOT +cp -Rf $INTEL64ROOT $UBROOT + +LIBS=Contents/MacOS/lib +PLUGINS=Contents/MacOS/plugins +rm -Rf $SRCROOT/build-fat/VLC.app/$LIBS/* +rm -Rf $SRCROOT/build-fat/VLC.app/Contents/MacOS/VLC +rm -Rf $SRCROOT/build-fat/VLC.app/$PLUGINS/* + +function do_lipo { + file="$1" + files="" + echo "..."$file + if [ "x$PPCROOT" != "x" ]; then + if [ -e "$PPCROOT/$file" ]; then + files="$PPCROOT/$file $files" + fi + fi + if [ "x$INTELROOT" != "x" ]; then + if [ -e "$INTELROOT/$file" ]; then + files="$INTELROOT/$file $files" + fi + fi + if [ "x$INTEL64ROOT" != "x" ]; then + if [ -e "$INTEL64ROOT/$file" ]; then + files="$INTEL64ROOT/$file $files" + fi + fi + if [ "x$files" != "x" ]; then + lipo $files -create -output $UBROOT/$file + fi; +} + +echo "Installing libs" +for i in `ls $INTELROOT/$LIBS/ | grep .dylib` do - echo $i - lipo $INTELROOT/Contents/MacOS/lib/$i $INTEL64ROOT/Contents/MacOS/lib/$i $PPCROOT/Contents/MacOS/lib/$i -create -output $UBROOT/Contents/MacOS/lib/$i + do_lipo $LIBS/$i done -for i in `ls $INTELROOT/Contents/MacOS/modules/` + +echo "Installing modules" +for i in `ls $INTELROOT/$PLUGINS/ | grep .dylib` do - echo $i - lipo $INTELROOT/Contents/MacOS/modules/$i $INTEL64ROOT/Contents/MacOS/modules/$i $PPCROOT/Contents/MacOS/modules/$i -create -output $UBROOT/Contents/MacOS/modules/$i + do_lipo $PLUGINS/$i done -lipo $INTELROOT/Contents/MacOS/VLC $INTEL64ROOT/Contents/MacOS/VLC $PPCROOT/Contents/MacOS/VLC -create -output $UBROOT/Contents/MacOS/VLC + + +echo "Installing VLC" +do_lipo Contents/MacOS/VLC + +echo "Installing Extra modules" # The following fixes modules, which aren't available on all platforms -lipo $INTELROOT/Contents/MacOS/lib/libSDL_image.0.dylib $PPCROOT/Contents/MacOS/lib/libSDL_image.0.dylib -create -output $UBROOT/Contents/MacOS/lib/libSDL_image.0.dylib -lipo $INTELROOT/Contents/MacOS/lib/libSDL-1.3.0.dylib $PPCROOT/Contents/MacOS/lib/libSDL-1.3.0.dylib -create -output $UBROOT/Contents/MacOS/lib/libSDL-1.3.0.dylib -lipo $INTELROOT/Contents/MacOS/lib/libjpeg.7.dylib $PPCROOT/Contents/MacOS/lib/libjpeg.7.dylib -create -output $UBROOT/Contents/MacOS/lib/libjpeg.7.dylib -lipo $INTELROOT/Contents/MacOS/lib/libtiff.3.dylib $PPCROOT/Contents/MacOS/lib/libtiff.3.dylib -create -output $UBROOT/Contents/MacOS/lib/libtiff.3.dylib -lipo $INTELROOT/Contents/MacOS/modules/libsdl_image_plugin.dylib $PPCROOT/Contents/MacOS/modules/libsdl_image_plugin.dylib -create -output $UBROOT/Contents/MacOS/modules/libsdl_image_plugin.dylib -lipo $INTELROOT/Contents/MacOS/modules/libquartztext_plugin.dylib $PPCROOT/Contents/MacOS/modules/libquartztext_plugin.dylib -create -output $UBROOT/Contents/MacOS/modules/libquartztext_plugin.dylib -lipo $INTELROOT/Contents/MacOS/modules/libgoom_plugin.dylib $PPCROOT/Contents/MacOS/modules/libgoom_plugin.dylib -create -output $UBROOT/Contents/MacOS/modules/libgoom_plugin.dylib -cp $INTELROOT/Contents/MacOS/modules/*mmx* $UBROOT/Contents/MacOS/modules/ -cp $INTELROOT/Contents/MacOS/modules/*sse* $UBROOT/Contents/MacOS/modules/ -cp $INTELROOT/Contents/MacOS/modules/*3dn* $UBROOT/Contents/MacOS/modules/ -cp $PPCROOT/Contents/MacOS/modules/*altivec* $UBROOT/Contents/MacOS/modules/ -cp $PPCROOT/Contents/MacOS/lib/libvlc.dylib $UBROOT/Contents/MacOS/lib/ -cp $PPCROOT/Contents/MacOS/lib/libvlccore.dylib $UBROOT/Contents/MacOS/lib/ - -# Now, you need to copy the resulting UBROOT bundle into VLC's build directory +do_lipo $LIBS/libSDL_image.0.dylib +do_lipo $LIBS/libtiff.3.dylib +do_lipo $LIBS/libtiff.3.dylib +do_lipo $PLUGINS/libsdl_image_plugin.dylib +do_lipo $PLUGINS/libquartztext_plugin.dylib +do_lipo $PLUGINS/libgoom_plugin.dylib +if [ "x$INTELROOT" != "x" ]; then + cp $INTELROOT/$PLUGINS/*mmx* $UBROOT/$PLUGINS/ + cp $INTELROOT/$PLUGINS/*3dn* $UBROOT/$PLUGINS/ +fi +if [ "x$INTEL64ROOT" != "x" ]; then + cp $INTEL64ROOT/$PLUGINS/*sse* $UBROOT/$PLUGINS/ +fi +if [ "x$PPCROOT" != "x" ]; then + cp $PPCROOT/Contents/MacOS/modules/*altivec* $UBROOT/Contents/MacOS/modules/ + cp $PPCROOT/Contents/MacOS/lib/libvlc.dylib $UBROOT/Contents/MacOS/lib/ + cp $PPCROOT/Contents/MacOS/lib/libvlccore.dylib $UBROOT/Contents/MacOS/lib/ +fi + + +echo "Copying plugins.dat" +set +x + +if [ "x$PPCROOT" != "x" ]; then + cp $PPCROOT/$PLUGINS/plugins-*.dat $UBROOT/$PLUGINS/ +fi +if [ "x$INTELROOT" != "x" ]; then + cp $INTELROOT/$PLUGINS/plugins-*.dat $UBROOT/$PLUGINS/ +fi +if [ "x$INTEL64ROOT" != "x" ]; then + cp $INTEL64ROOT/$PLUGINS/plugins-*.dat $UBROOT/$PLUGINS/ +fi + + +# Now, you need to copy the resulting UBROOT bundle into VLC's build directory # and make sure it is named "VLC-release.app". # Afterwards, run 'make package-macosx' and follow release_howto.txt in /doc