SAE=
MIXBUS=
+MIXBUS32C=
WITH_HARVID=1
-WITH_LADSPA=1
+WITH_HARRISON_LV2=
+WITH_X42_LV2=
STRIP=1
PRINT_SYSDEPS=
WITH_NLS=
+: ${HARRISONCHANNELSTRIP=harrison_channelstrip}
+: ${HARRISONLV2=harrison_lv2s-n}
+: ${HARRISONDSPURL=http://www.harrisonconsoles.com/plugins/releases/public}
+
+. ../define_versions.sh
+
while [ $# -gt 0 ] ; do
- echo "arg = $1"
- case $1 in
+ echo "arg = $1"
+ case $1 in
#
# top level build targets
#
- --sae) WITH_NLS= ;
- SAE=1 ;
- WITH_LADSPA=1;
- STRIP= ;
- PRODUCT_PKG_DIR=ArdourSAE ;
- APPNAME=Ardour ;
- shift ;;
- --mixbus) MIXBUS=1;
- WITH_NLS=1 ;
- SAE= ;
- WITH_LADSPA=;
- STRIP= ;
- PRODUCT_PKG_DIR=MixBus;
- APPNAME=Mixbus ;
- shift ;;
- --public) WITH_NLS= ;
- SAE= ;
- WITH_LADSPA=1;
- PRODUCT_PKG_DIR=Ardour;
- APPNAME=Ardour ;
- shift ;;
- --allinone) SAE= ;
- WITH_NLS= ;
- WITH_LADSPA=1;
- STRIP= ;
- PRODUCT_PKG_DIR=Ardour ;
- shift ;;
- --test) SAE= ; WITH_LADSPA=; STRIP= ; shift ;;
+ --sae)
+ SAE=1 ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=ArdourSAE ;
+ APPNAME=Ardour ;
+ BUNDLENAME=Ardour${major_version} ;
+ lower_case_appname=ardour;
+ shift ;;
+ --mixbus) MIXBUS=1;
+ WITH_HARRISON_LV2=1 ;
+ WITH_X42_LV2=1 ;
+ WITH_NLS=1 ;
+ SAE= ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=Mixbus;
+ APPNAME=Mixbus ;
+ BUNDLENAME=Mixbus${major_version} ;
+ lower_case_appname=mixbus;
+ shift ;;
+ --mixbus32c) MIXBUS=1;
+ MIXBUS32C=1;
+ WITH_HARRISON_LV2=1 ;
+ WITH_X42_LV2=1 ;
+ WITH_NLS=1 ;
+ SAE= ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=Mixbus32C;
+ lower_case_appname=mixbus32c;
+ APPNAME=Mixbus32C ;
+ BUNDLENAME=Mixbus32C-${major_version} ;
+ shift ;;
+ --public)
+ SAE= ;
+ WITH_HARRISON_LV2=1 ;
+ WITH_X42_LV2=1 ;
+ PRODUCT_PKG_DIR=Ardour;
+ APPNAME=Ardour ;
+ BUNDLENAME=Ardour${major_version} ;
+ lower_case_appname=ardour;
+ shift ;;
+ --allinone) SAE= ;
+ STRIP= ;
+ PRODUCT_PKG_DIR=Ardour ;
+ shift ;;
+ --test) SAE= ; STRIP= ; shift ;;
#
# specific build flags
#
--noharvid) WITH_HARVID= ; shift ;;
- --noladspa) WITH_LADSPA= ; shift ;;
--nostrip) STRIP= ; shift ;;
--sysdeps) PRINT_SYSDEPS=1; shift ;;
--nls) WITH_NLS=1 ; shift ;;
- esac
+ --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
+ esac
done
if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
exit 1
fi
-. ../define_versions.sh
echo "Version is $release_version"
if [ "x$commit" != "x" ] ; then
- info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`"
+ info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`"
else
- info_string="$release_version built on `hostname` by `whoami` on `date`"
+ info_string="$release_version built on `hostname` by `whoami` on `date`"
fi
echo "Info string is $info_string"
# setup directory structure
-APPDIR=${APPNAME}.app
+APPDIR=${BUNDLENAME}.app
APPROOT=$APPDIR/Contents
Frameworks=$APPROOT/lib
Resources=$APPROOT/Resources
# Since this is OS X, don't try to distinguish between etc and shared
# (machine dependent and independent data) - just put everything
# into Resources.
-#
+#
Shared=$Resources
Etc=$Resources
Locale=$Resources/locale
-#
-# Bundled Plugins live in a top level folder
-#
-Plugins=$APPROOT/Plugins
+
Surfaces=$Frameworks/surfaces
Panners=$Frameworks/panners
Backends=$Frameworks/backends
MidiMaps=$Shared/midi_maps
+PluginMetadata=$Shared/plugin_metadata
+MixerSettings=$Shared/mixer_settings
ExportFormats=$Shared/export
Templates=$Shared/templates
PatchFiles=$Shared/patchfiles
+LuaScripts=$Shared/scripts
MackieControl=$Shared/mcp
+OSC=$Shared/osc
+Themes=$Shared/themes
if [ x$PRINT_SYSDEPS != x ] ; then
#
# print system dependencies
#
-for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Plugins/*.so ; do
+for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* ; do
if ! file $file | grep -qs Mach-O ; then
continue
fi
- otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)"
- done | sort | uniq
- exit 0
+ otool -L $file | awk '{print $1}' | egrep -v "(^@executable_path|^Ardour[0-9][.0-9]*.app)"
+ done | sort | uniq
+ exit 0
fi
echo "Removing old $APPDIR tree ..."
mkdir -p $APPROOT/MacOS
mkdir -p $APPROOT/Resources
-mkdir -p $Plugins
mkdir -p $Surfaces
mkdir -p $Panners
mkdir -p $Backends
mkdir -p $MidiMaps
mkdir -p $ExportFormats
-mkdir -p $Templates
mkdir -p $Frameworks/modules
mkdir -p $Etc
mkdir -p $MackieControl
+mkdir -p $OSC
mkdir -p $PatchFiles
+mkdir -p $LuaScripts
+mkdir -p $Themes
-# maybe set variables
-env=""
-if test x$SAE != x ; then
- appname="Ardour3/SAE"
- env="$env<key>ARDOUR_SAE</key><string>true</string>"
- #
- # current default for SAE version is German keyboard layout without a keypad
- #
- env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>de-nokeypad</string>"
- env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui_sae.conf</string>"
-elif test x$MIXBUS != x ; then
- appname="Ardour3/Mixbus"
- env="$env<key>ARDOUR_MIXBUS</key><string>true</string>"
- #
- # current default for MIXBUS version is US keyboard layout without a keypad
- #
- env="$env<key>ARDOUR_KEYBOARD_LAYOUT</key><string>us-nokeypad</string>"
- env="$env<key>ARDOUR_UI_CONF</key><string>ardour3_ui.conf</string>"
-else
- appname="Ardour3"
-fi
+
+
+EXECUTABLE=${BUNDLENAME}
#
# if we're not going to bundle JACK, make sure we can find
# jack in the places where it might be
#
+env=""
env="$env<key>PATH</key><string>/usr/local/bin:/opt/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>"
env="$env<key>DYLIB_FALLBACK_LIBRARY_PATH</key><string>/usr/local/lib:/opt/lib</string>"
env="<key>LSEnvironment</key><dict>$env<key>ARDOUR_BUNDLED</key><string>true</string></dict>"
+
# edit plist
sed -e "s?@ENV@?$env?g" \
-e "s?@VERSION@?$release_version?g" \
- -e "s?@INFOSTRING@?$info_string?g" < Info.plist.in > Info.plist
+ -e "s?@INFOSTRING@?$info_string?g" \
+ -e "s?@IDSUFFIX@?$EXECUTABLE?g" \
+ -e "s?@BUNDLENAME@?$BUNDLENAME?g" \
+ -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist
# and plist strings
sed -e "s?@APPNAME@?$appname?" \
-e "s?@ENV@?$env?g" \
#
# if we build a bundle without jack, then
-# make the Ardour3 executable a helper
+# make the Ardour executable a helper
# script that checks to see if JACK is
# installed.
#
-cp startup_script $APPROOT/MacOS/Ardour3
-chmod 775 $APPROOT/MacOS/Ardour3
-MAIN_EXECUTABLE=Ardour3.bin
+cp startup_script $APPROOT/MacOS/$EXECUTABLE
+chmod 775 $APPROOT/MacOS/$EXECUTABLE
+MAIN_EXECUTABLE=Ardour.bin ## used in startup_script
echo "Copying ardour executable ...."
cp $BUILD_ROOT/gtk2_ardour/ardour-$release_version $APPROOT/MacOS/$MAIN_EXECUTABLE
if test x$SAE != x ; then
- # cp $BUILD_ROOT/gtk2_ardour/evtest $APPROOT/MacOS/gtkevents
- cp Ardour3-SAE.icns $Resources/appIcon.icns
+ # cp $BUILD_ROOT/gtk2_ardour/evtest $APPROOT/MacOS/gtkevents
+ cp Ardour3-SAE.icns $Resources/appIcon.icns
+elif test x$MIXBUS32C != x ; then
+ cp Mixbus32C.icns $Resources/appIcon.icns
elif test x$MIXBUS != x ; then
- cp Mixbus.icns $Resources/appIcon.icns
+ cp Mixbus.icns $Resources/appIcon.icns
else
- cp Ardour3.icns $Resources/appIcon.icns
+ cp Ardour.icns $Resources/appIcon.icns
fi
cp typeArdour.icns $Resources/
# copy locale files
if test x$WITH_NLS != x ; then
- echo "NLS support ..."
- echo "I hope you remembered to run waf i18n"
- LINGUAS=
-
- for pkg in gtk2_ardour libs/ardour libs/gtkmm2ext ; do
- files=`find ../../$pkg -name "*.mo"`
-
- #
- # the package name is appended with a number so that
- # it can be parallel installed during a regular install
- # with older (and newer) versions. it is just the major
- # number of the release (i.e. leading digits)
- #
-
- vsuffix=`echo $release_version | sed 's/^\([0-9][0-9]*\).*/\1/'`
-
- if [ -z "$files" ]; then
- echo ""
- echo "!!!! WARNING !!!! - Did not find any .mo files in ../../$pkg"
- echo ""
- fi
-
- for file in $files
+ echo "NLS support ..."
+ echo "I hope you remembered to run waf i18n"
+ LINGUAS=
+
+ for pkg in gtk2_ardour libs/ardour libs/gtkmm2ext ; do
+ files=`find ../../$pkg -name "*.mo"`
+
+ #
+ # the package name is appended with a number so that
+ # it can be parallel installed during a regular install
+ # with older (and newer) versions. it is just the major
+ # number of the release (i.e. leading digits)
+ #
+
+ vsuffix=`echo $release_version | sed 's/^\([0-9][0-9]*\).*/\1/'`
+
+ if [ -z "$files" ]; then
+ echo ""
+ echo "!!!! WARNING !!!! - Did not find any .mo files in ../../$pkg"
+ echo ""
+ fi
+
+ for file in $files
+ do
+ echo $file
+ lang=`basename $file | sed 's/\.mo//'`
+ mkdir -p $Locale/$lang/LC_MESSAGES
+ cp $file $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
+ echo copy $file to $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
+ if echo $LINGUAS | grep $lang >/dev/null 2>&1 ; then
+ :
+ else
+ LINGUAS="$LINGUAS $lang"
+ fi
+ done
+ done
+
+ for l in $LINGUAS
do
- echo $file
- lang=`basename $file | sed 's/\.mo//'`
- mkdir -p $Locale/$lang/LC_MESSAGES
- cp $file $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
- echo copy $file to $Locale/$lang/LC_MESSAGES/`basename $pkg`$vsuffix.mo
- if echo $LINGUAS | grep $lang >/dev/null 2>&1 ; then
- :
- else
- LINGUAS="$LINGUAS $lang"
- fi
+ if [ -d $GTKSTACK_ROOT/share/locale/$l ] ; then
+ echo "Copying GTK i18n files for $l..."
+ cp -r $GTKSTACK_ROOT/share/locale/$l $Locale
+ else
+ # try with just the language spec
+ just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
+ if [ -d $GTKSTACK_ROOT/share/locale/$just_lang ] ; then
+ echo "Copying GTK i18n files for $l..."
+ cp -r $GTKSTACK_ROOT/share/locale/$just_lang $Locale
+ fi
+ fi
done
- done
-
- for l in $LINGUAS
- do
- if [ -d $GTKSTACK_ROOT/share/locale/$l ] ; then
- echo "Copying GTK i18n files for $l..."
- cp -r $GTKSTACK_ROOT/share/locale/$l $Locale
- else
- # try with just the language spec
- just_lang=`echo $l | sed 's/_[A-Z][A-Z]$//'`
- if [ -d $GTKSTACK_ROOT/share/locale/$just_lang ] ; then
- echo "Copying GTK i18n files for $l..."
- cp -r $GTKSTACK_ROOT/share/locale/$just_lang $Locale
- fi
- fi
- done
else
- echo "Skipping NLS support"
+ echo "Skipping NLS support"
fi
#
# Copy stuff that may be dynamically loaded
-#
+#
cp -R $GTKSTACK_ROOT/etc/* $Etc
-echo "Copying all Pango modules ..."
-cp -R $GTKSTACK_ROOT/lib/pango/1.8.0/modules/*.so $Frameworks/modules
-echo "Copying all GDK Pixbuf loaders ..."
-cp -R $GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/*.so $Frameworks/modules
-# charset alias file
cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources
-# generate new Pango module file
-cat > pangorc <<EOF
-[Pango]
-ModulesPath=$GTKSTACK_ROOT/lib/pango/1.8.0/modules
-EOF
-env PANGO_RC_FILE=pangorc $GTKSTACK_ROOT/bin/pango-querymodules | sed "s?$GTKSTACK_ROOT/lib/pango/1.8.0/modules/?@executable_path/../lib/modules/?" > $Resources/pango.modules
-rm pangorc
-
-# generate a new GDK pixbufs loaders file
-gdk-pixbuf-query-loaders | sed "s?$GTKSTACK_ROOT/lib/gdk-pixbuf-2.0/2.10.0/loaders/?@executable_path/../lib/modules/?" > $Resources/gdk-pixbuf.loaders
-
# We rely on clearlooks, so include a version from our own build tree
# this one is special - we will set GTK_PATH to $Frameworks/gtkengines
(cd $GTK_ENGINE_DIR && ln -s ../../libpixmap.so)
-if test x$WITH_LADSPA != x ; then
- if test x$SAE != x ; then
- plugdir=sae_ladspa
- elif test x$MIXBUS != x ; then
- plugdir=mixbus_ladspa
- else
- plugdir=ladspa
- fi
- if [ -d $plugdir -a "x$(ls $plugdir)" != x ] ; then
- echo "Copying `ls $plugdir | wc -l` plugins ..."
- cp -r $plugdir/* $Plugins
- fi
-fi
-
# Control Surface shared libraries
cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
# Backends
-for backend in jack wavesaudio dummy; do
- cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
+for backend in jack wavesaudio dummy coreaudio; do
+ cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
done
# Export Formats/Presets
-for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
- cp "$f" $ExportFormats ;
+for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
+ cp "$f" $ExportFormats ;
done
-# Session and Route templates
-#for f in $BUILD_ROOT/../templates/* ; do
-# if [ -d "$f" ] ; then
-# cp -r "$f" $Templates ;
-# fi
-#done
+#Session templates
+cp -av $BUILD_ROOT/../templates $Templates
+
+# PluginMetadata
+cp -av $BUILD_ROOT/../plugin_metadata $PluginMetadata
# MidiMaps
# got to be careful with names here
for x in $BUILD_ROOT/../midi_maps/*.map ; do
- cp "$x" $MidiMaps
+ cp "$x" $MidiMaps
done
# MIDNAM Patch Files
# got to be careful with names here
for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
- cp "$x" $PatchFiles
+ cp "$x" $PatchFiles
+done
+
+# Lua Script Files
+# got to be careful with names here
+for x in $BUILD_ROOT/../scripts/*.lua ; do
+ BN=$(basename $x)
+ if test "${BN:0:1}" = "_"; then
+ continue;
+ fi
+ cp "$x" $LuaScripts
done
# MackieControl data
# got to be careful with names here
for x in $BUILD_ROOT/../mcp/*.device $BUILD_ROOT/../mcp/*.profile ; do
- cp "$x" $MackieControl
+ cp "$x" $MackieControl
+done
+
+# OSC data
+# got to be careful with names here
+for x in $BUILD_ROOT/../osc/*.preset ; do
+ cp "$x" $OSC
+done
+
+# Mixbus MixerSettings (if any)
+for x in $BUILD_ROOT/../mixer_settings/*.lua ; do
+ mkdir -p $MixerSettings # create on demand
+ cp "$x" $MixerSettings
done
# VAMP plugins that we use
# Suil modules (new dir 'build-stack')
if test -d $GTKSTACK_ROOT/lib/suil-0/ ; then
- cp $GTKSTACK_ROOT/lib/suil-0/lib* $Frameworks
+ cp $GTKSTACK_ROOT/lib/suil-0/lib* $Frameworks
fi
# Suil modules (old dir 'build-ardour-stack')
if test -d $ARDOURSTACK_ROOT/lib/suil-0/ ; then
- cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
+ cp $ARDOURSTACK_ROOT/lib/suil-0/lib* $Frameworks
fi
# VST scanner app and wrapper script, if they exist
if test -d $BUILD_ROOT/libs/fst ; then
- cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
+ cp $BUILD_ROOT/libs/fst/ardour-vst-scanner* $Frameworks/
fi
# vfork wrapper
if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
- mkdir -p $Frameworks/vfork
- cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
+ mkdir -p $Frameworks/vfork
+ cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
fi
-
-while [ true ] ; do
- missing=false
- for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do
- if ! file $file | grep -qs Mach-O ; then
- continue
+# session-utils
+HAVE_SESSION_UTILS=false
+for file in $BUILD_ROOT/session_utils/${lower_case_appname}${major_version}-*; do
+ BN=$(basename $file)
+ cp -v $file $Frameworks/
+ if test x$STRIP = xall ; then
+ strip -s $Frameworks/${BN}
fi
+ ln -s ../lib/ardour-util.sh ${APPROOT}/MacOS/${BN}
+ HAVE_SESSION_UTILS=true
+done
- if test x$STRIP != x ; then
- strip -u -r -arch all $file &>/dev/null
+if test -x $BUILD_ROOT/tools/luadevel/luasession; then
+ BN=${lower_case_appname}${major_version}-lua
+ cp -v $BUILD_ROOT/tools/luadevel/luasession $Frameworks/$BN
+ if test x$STRIP = xall ; then
+ strip -s $Frameworks/${BN}
fi
+ ln -s ../lib/ardour-util.sh ${APPROOT}/MacOS/${BN}
+ HAVE_SESSION_UTILS=true
+fi
- deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | grep -v 'libjack\.'`
- # echo -n "."
- for dep in $deps ; do
- base=`basename $dep`
- if ! test -f $Frameworks/$base; then
- if echo $dep | grep -sq '^libs' ; then
- cp $BUILD_ROOT/$dep $Frameworks
- else
- cp $dep $Frameworks
+# dynamically loaded NSS/SSL libs
+nsslibs="libsoftokn3.dylib libnsspem.dylib libnssckbi.dylib libfreebl3.dylib libnssdbm3.dylib libplds4.dylib"
+for nsslib in $nsslibs; do
+ cp $GTKSTACK_ROOT/lib/$nsslib $Frameworks/ || true
+done
+
+# TODO check if this is still needed, even when building on 10.5
+if file $BUILD_ROOT/gtk2_ardour/ardour-$release_version | grep -q ppc; then
+STDCPP='|libstdc\+\+'
+else
+STDCPP=
+fi
+
+while [ true ] ; do
+ missing=false
+ for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib ; do
+ if ! file $file | grep -qs Mach-O ; then
+ continue
+ fi
+ # libffi contains "S" (other section symbols) that should not be stripped.
+ if [[ $file == *"libffi"* ]] ; then
+ continue
+ fi
+
+ if test x$STRIP != x ; then
+ strip -u -r -arch all $file &>/dev/null
fi
- missing=true
- fi
+
+ deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | grep -v 'libjack\.' | grep -v "$(basename $file)"`
+ # echo -n "."
+ for dep in $deps ; do
+ base=`basename $dep`
+ if ! test -f $Frameworks/$base; then
+ if echo $dep | grep -sq '^libs' ; then
+ cp $BUILD_ROOT/$dep $Frameworks
+ else
+ cp $dep $Frameworks
+ fi
+ missing=true
+ chmod 755 $Frameworks/$base
+ fi
+ done
done
- done
- if test x$missing = xfalse ; then
- # everything has been found
- break
- fi
+ if test x$missing = xfalse ; then
+ # everything has been found
+ break
+ fi
done
echo
echo "Copying other stuff to $APPDIR ..."
-#cp $BUILD_ROOT/gtk2_ardour/ergonomic-us.bindings $Resources
-
-cp $BUILD_ROOT/gtk2_ardour/mnemonic-us.bindings $Resources
+cp $BUILD_ROOT/gtk2_ardour/ardour.keys $Resources
cp $BUILD_ROOT/gtk2_ardour/ardour.menus $Resources
cp $BUILD_ROOT/gtk2_ardour/default_ui_config $Resources
cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources
# Copied directly from source tree
+mkdir ${Resources}/icons
+mkdir ${Resources}/resources
cp ../../system_config $Resources/system_config
-cp ../../instant.xml $Resources/instant.xml
-cp ../../gtk2_ardour/step_editing.bindings $Resources
-cp ../../gtk2_ardour/mixer.bindings $Resources
-cp -r ../../gtk2_ardour/icons $Resources
-cp -r ../../gtk2_ardour/pixmaps $Resources
-cp ../../gtk2_ardour/dark.colors $Resources
-cp -R ../../gtk2_ardour/splash.png $Shared
-cp -R ../../gtk2_ardour/small-splash.png $Shared
-cp -R ../../gtk2_ardour/ArdourMono.ttf $Shared
+cp ../../gtk2_ardour/icons/*.png ${Resources}/icons/
+cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/
+cp ../../gtk2_ardour/ArdourMono.ttf $Shared
+cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/
+
+
+# Themes: only install those named for this app
+cp ../../gtk2_ardour/themes/*-${lower_case_appname}.colors $Themes
# go through and recursively remove any .svn dirs in the bundle
for svndir in `find $APPDIR -name .svn -type dir`; do
- rm -rf $svndir
+ rm -rf $svndir
done
+# session utils start script
+if test "$HAVE_SESSION_UTILS" = true ; then
+ cat >> $Frameworks/ardour-util.sh << EOF
+#!/bin/sh
+
+BIN_DIR=\$(dirname "\$0")
+BUNDLE_DIR=\$(dirname "\$BIN_DIR")
+
+export ARDOUR_DATA_PATH="\$BUNDLE_DIR/share"
+export ARDOUR_CONFIG_PATH="\$BUNDLE_DIR/etc"
+export ARDOUR_DLL_PATH="\$BUNDLE_DIR/lib"
+export VAMP_PATH="\$BUNDLE_DIR/lib"\${VAMP_PATH:+:\$VAMP_PATH}
+
+SELF=\$(basename "\$0")
+exec "\$BUNDLE_DIR/lib/\$SELF" "\$@"
+EOF
+ chmod +x $Frameworks/ardour-util.sh
+fi
+
+
# install bundled LV2s to <app>/Contents/lib/LV2/
cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
+# lv2 core, classifications etc - TODO check if we need the complete LV2 ontology
+if test -d $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
+ cp -R $ARDOURSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
+elif test -d $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 ; then
+ cp -R $GTKSTACK_ROOT/lib/lv2/lv2core.lv2 $Frameworks/LV2/
+fi
+
+
# now fix up the executables
echo "Fixing up executable dependency names ..."
executables=$MAIN_EXECUTABLE
if test x$SAE != x ; then
- executables="$executables"
+ executables="$executables"
+fi
+if test "$HAVE_SESSION_UTILS" = true ; then
+ for file in $Frameworks/${lower_case_appname}${major_version}-*; do
+ BN=$(basename $file)
+ executables="$executables ../lib/${BN}"
+ done
+fi
+
+if test -f "$Frameworks/ardour-vst-scanner"; then
+ executables="$executables ../lib/ardour-vst-scanner"
fi
for exe in $executables; do
- EXE=$APPROOT/MacOS/$exe
- changes=""
- for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
- base=`basename $lib`
- changes="$changes -change $lib @executable_path/../lib/$base"
- done
- if test "x$changes" != "x" ; then
- install_name_tool $changes $EXE
- fi
+ echo "Processing Executable: $exe"
+ EXE=$APPROOT/MacOS/$exe
+ changes=""
+ for lib in `otool -L $EXE | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
+ base=`basename $lib`
+ changes="$changes -change $lib @executable_path/../lib/$base"
+ done
+ if test "x$changes" != "x" ; then
+ install_name_tool $changes $EXE
+ fi
done
echo "Fixing up library names ..."
# now do the same for all the libraries we include
-for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do
-
- libbase=`basename $libdir`
-
- for dylib in $libdir/*.dylib $libdir/*.so ; do
-
- # skip symlinks
-
- if test -L $dylib ; then
- continue
- fi
-
- # change all the dependencies
-
- changes=""
- for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
- base=`basename $lib`
- if echo $lib | grep -s libbase; then
- changes="$changes -change $lib @executable_path/../$libbase/$base"
- else
- changes="$changes -change $lib @executable_path/../lib/$base"
- fi
+for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends $Frameworks/LV2/* ; do
+
+ libbase=`basename $libdir`
+
+ for dylib in $libdir/*.dylib $libdir/*.so ; do
+
+ # skip symlinks
+
+ if test -L $dylib ; then
+ continue
+ fi
+
+ # change all the dependencies
+
+ changes=""
+ for lib in `otool -L $dylib | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/$STDCPP)" | awk '{print $1}' | grep -v 'libjack\.'` ; do
+ base=`basename $lib`
+ if echo $lib | grep -s libbase; then
+ changes="$changes -change $lib @executable_path/../$libbase/$base"
+ else
+ changes="$changes -change $lib @executable_path/../lib/$base"
+ fi
+ done
+
+ if test "x$changes" != x ; then
+ if install_name_tool $changes $dylib ; then
+ :
+ else
+ exit 1
+ fi
+ fi
+
+ # now the change what the library thinks its own name is
+
+ base=`basename $dylib`
+ install_name_tool -id @executable_path/../$libbase/$base $dylib
done
-
- if test "x$changes" != x ; then
- if install_name_tool $changes $dylib ; then
- :
- else
- exit 1
- fi
- fi
-
- # now the change what the library thinks its own name is
-
- base=`basename $dylib`
- install_name_tool -id @executable_path/../$libbase/$base $dylib
- done
done
#
# and now ... the DMG
-#
+#
rm -rf $PRODUCT_PKG_DIR
mkdir $PRODUCT_PKG_DIR
DMGWINBOTTOM=440
-DMGBACKGROUND=dmgbg.png
+DMGBACKGROUND=dmgbg
if [ x$SAE != x ] ; then
-
- # SAE packaging
-
- echo "Creating SAE packaging directory"
- mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
- cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
- cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
- cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
-
+
+ # SAE packaging
+
+ echo "Creating SAE packaging directory"
+ mv $APPDIR $PRODUCT_PKG_DIR/Ardour3-SAE.app
+ cp HowToInstallArdourSAE.pdf "$PRODUCT_PKG_DIR/How To Install Ardour SAE.pdf"
+ cp SAE-de-keypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts (keypad).pdf"
+ cp SAE-de-nokeypad.pdf "$PRODUCT_PKG_DIR/Ardour SAE Shortcuts.pdf"
+
elif [ x$MIXBUS != x ] ; then
- # Mixbus packaging
+ # Mixbus packaging
+
+ echo "Creating Mixbus packaging directory"
+ mv $APPDIR $PRODUCT_PKG_DIR/
+ DMGBACKGROUND=dmgbgMB
+else
+
+ echo "Creating $APPNAME packaging directory"
+ mv $APPDIR $PRODUCT_PKG_DIR/
- echo "Creating Mixbus packaging directory"
- mv $APPDIR $PRODUCT_PKG_DIR/
- cp MixBus_Install_QuickStart.pdf "$PRODUCT_PKG_DIR/Mixbus Install & Quick Start Guide.pdf"
- DMGWINBOTTOM=580
- YPOS=$[ $DMGWINBOTTOM - 300 ]
- MIXBUSPOS="set position of item \"MixBus_Install_QuickStart.pdf\" of container window to {90, ${YPOS}}"
-else
+fi
- echo "Creating $APPNAME packaging directory"
- mv $APPDIR $PRODUCT_PKG_DIR/
+if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
+ OSX_ARCH=x86_64
+ OSX_BENSID=osx64
+elif file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q ppc; then
+ OSX_ARCH=ppc
+ OSX_BENSID=osxppc
+else
+ OSX_ARCH=i386
+ OSX_BENSID=osx32
+fi
+if test x$WITH_HARRISON_LV2 != x ; then
+ curl -s -S --fail -# \
+ -z "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" \
+ -o "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip" \
+ "${HARRISONDSPURL}/${HARRISONLV2}.${OSX_BENSID}.zip"
+
+ mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
+ bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
+ "${CACHEDIR}/${HARRISONLV2}.${OSX_BENSID}.zip"
fi
if test x$WITH_HARVID != x ; then
echo "installing video tools.."
- HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
- XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
+ if test $OSX_ARCH = ppc; then
+ # EOL
+ HARVID_VERSION=v0.8.2
+ XJADEO_VERSION=v0.8.8
+ else
+ HARVID_VERSION=$(curl -s -S http://ardour.org/files/video-tools/harvid_version.txt)
+ XJADEO_VERSION=$(curl -s -S http://ardour.org/files/video-tools/xjadeo_version.txt)
+ fi
MULTIARCH=osx
echo "copying harvid and xjadeo ..."
cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
hdiutil detach "${JADEO}"
+ XJCONTENT=${PRODUCT_PKG_DIR}/Jadeo.app/Contents
+ HVLIBS=${PRODUCT_PKG_DIR}/$APPROOT/lib/harvid
+
+ for file in ${XJCONTENT}/MacOS/Jadeo-bin ${XJCONTENT}/Frameworks/*.dylib ${HVLIBS}/*.dylib ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/*harvid* ; do
+ lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin && \
+ mv ${file}.thin ${file}
+ done
+
DMGWINBOTTOM=580
YPOS=$[ $DMGWINBOTTOM - 300 ]
XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
- DMGBACKGROUND=dmgbgxj.png
+ DMGBACKGROUND=${DMGBACKGROUND}xj
fi
+################################################################################
+### Mixbus plugins, etc
+if true; then
+ echo "Bundling General MIDI Synth LV2"
+ mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
+
+ for proj in x42-gmsynth; do
+ X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/${proj}.latest.txt)
+ rsync -a -q --partial \
+ rsync://x42-plugins.com/x42/osx/${proj}-lv2-osx-${X42_VERSION}.zip \
+ "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
+ bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
+ "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
+ done
+
+ for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
+ lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
+ mv ${file}.thin ${file}
+ done
+
+fi
+
+if test x$WITH_X42_LV2 != x ; then
+ echo "bundling x42 plugins"
+ mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
+
+ for proj in x42-meters x42-midifilter x42-stereoroute x42-eq setBfree x42-avldrums x42-whirl x42-limiter x42-tuner; do
+ X42_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/${proj}.latest.txt)
+ rsync -a -q --partial \
+ rsync://x42-plugins.com/x42/osx/${proj}-lv2-osx-${X42_VERSION}.zip \
+ "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
+ bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
+ "$CACHEDIR/${proj}-lv2-osx-${X42_VERSION}.zip"
+ done
+
+ for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
+ lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
+ mv ${file}.thin ${file}
+ done
+fi
+
+if test -n "$MIXBUS"; then
+ echo "deploying harrison channelstrip for $OSX_BENSID"
+
+ mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip"
+
+ curl -s -S --fail -# \
+ -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
+ -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
+ "${HARRISONDSPURL}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so"
+
+ cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
+ "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/${HARRISONCHANNELSTRIP}.so"
+
+ echo "deploying harrison vamp plugins for $OSX_BENSID"
+
+ curl -s -S --fail -# \
+ -z "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
+ -o "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
+ "${HARRISONDSPURL}/harrison_vamp.${OSX_BENSID}.dylib"
+
+ cp "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
+ "${PRODUCT_PKG_DIR}/${APPROOT}/lib/harrison_vamp.dylib"
+fi
+
+################################################################################
+
+if test x$DEMO_SESSION_URL != x ; then
+ mkdir -p $Shared/sessions
+ DEMO_SESSIONS=$(curl -s -S --fail $DEMO_SESSION_URL/index.txt)
+ for demo in $DEMO_SESSIONS; do
+ curl -s -S --fail -# -o $Shared/sessions/$demo $DEMO_SESSION_URL/$demo
+ done
+fi
+
+################################################################################
+
+( cd $PRODUCT_PKG_DIR ; find . ) > file_list.txt
+
echo "Building DMG ..."
# UC_DMG=$APPNAME-${release_version}-UC.dmg
trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
-hdiutil create -megabytes $DMGMEGABYTES "$TMPDMG"
+hdiutil create -megabytes $DMGMEGABYTES -fs HFS+ -volname "${VOLNAME}" "$TMPDMG"
DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
-newfs_hfs -v "${VOLNAME}" "${DiskDevice}"
-mount -t hfs "${DiskDevice}" "${MNTPATH}"
+mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
mkdir "${MNTPATH}/.background"
-cp -vi ${DMGBACKGROUND} "${MNTPATH}/.background/dmgbg.png"
+cp -vi ${DMGBACKGROUND}.png "${MNTPATH}/.background/dmgbg.png"
echo "setting DMG background ..."
activate
tell disk "${DISKNAME}"
open
+ delay 2
set current view of container window to icon view
set toolbar visible of container window to false
set statusbar visible of container window to false
close
open
update without registering applications
- delay 5
+ delay 3
+ set position of item "${APPDIR}" of container window to {90, 100}
+ set position of item "Applications" of container window to {310, 100}
+ ${MIXBUSPOS}
+ ${HARVIDPOS}
+ ${XJADEOPOS}
+ close
+ open
+ update without registering applications
+ delay 3
eject
end tell
end tell
set -e
echo "compressing Image ..."
-# Umount the image
-umount "${DiskDevice}"
-hdiutil eject "${DiskDevice}"
+# Umount the image ('eject' above may already have done that)
+umount "${DiskDevice}" || true
+hdiutil eject "${DiskDevice}" || true
# Create a read-only version, use zlib compression
hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
+if test $(sw_vers -productVersion | cut -d '.' -f 2) -gt 5; then
echo "setting file icon ..."
cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
SetFile -a C "$UC_DMG"
rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
+fi
+
+rm -rf ${PRODUCT_PKG_DIR}
echo
echo "packaging suceeded."