Commit 051ef22f authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

extras/package/macosx/ub.sh: Allow building without an arch, and remove redundancy.

parent 97d06000
#!/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,115 @@
# 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=""
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
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment