Freeze harvid/xjadeo PPC version
[ardour.git] / tools / osx_packaging / osx_build
index 1673db36224a67256ae1b105e20b759f352cd268..402cad208c086ba8b5965905a29c074d34fedaa7 100755 (executable)
@@ -16,13 +16,20 @@ mkdir -p "$CACHEDIR"
 
 SAE=
 MIXBUS=
 
 SAE=
 MIXBUS=
+MIXBUS32C=
 WITH_HARVID=1
 WITH_HARRISON_LV2=
 WITH_HARVID=1
 WITH_HARRISON_LV2=
-WITH_LADSPA=1
+WITH_X42_LV2=
 STRIP=1
 PRINT_SYSDEPS=
 WITH_NLS=
 
 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
 while [ $# -gt 0 ] ; do
     echo "arg = $1"
     case $1 in
@@ -31,44 +38,61 @@ while [ $# -gt 0 ] ; do
        # top level build targets
        #
 
        # 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 ;;
 
        #
        # specific build flags
        #
 
        --noharvid) WITH_HARVID= ; shift ;;
-       --noladspa) WITH_LADSPA= ; shift ;;
        --nostrip) STRIP= ; shift ;;
        --sysdeps) PRINT_SYSDEPS=1; shift ;;
        --nls) WITH_NLS=1 ; shift ;;
        --nostrip) STRIP= ; shift ;;
        --sysdeps) PRINT_SYSDEPS=1; shift ;;
        --nls) WITH_NLS=1 ; shift ;;
+       --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
     esac
 done
 
     esac
 done
 
@@ -77,7 +101,6 @@ if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
        exit 1
 fi
 
        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`"
 echo "Version is $release_version"
 if [ "x$commit" != "x" ] ; then
     info_string="$release_version ($commit) built on `hostname` by `whoami` on `date`"
@@ -99,7 +122,7 @@ fi
 
 # setup directory structure
 
 
 # setup directory structure
 
-APPDIR=${APPNAME}.app
+APPDIR=${BUNDLENAME}.app
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
@@ -111,25 +134,26 @@ Resources=$APPROOT/Resources
 Shared=$Resources
 Etc=$Resources
 Locale=$Resources/locale
 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
 Surfaces=$Frameworks/surfaces
 Panners=$Frameworks/panners
 Backends=$Frameworks/backends
 MidiMaps=$Shared/midi_maps
+PluginMetadata=$Shared/plugin_metadata
 ExportFormats=$Shared/export
 Templates=$Shared/templates
 PatchFiles=$Shared/patchfiles
 ExportFormats=$Shared/export
 Templates=$Shared/templates
 PatchFiles=$Shared/patchfiles
+LuaScripts=$Shared/scripts
 MackieControl=$Shared/mcp
 MackieControl=$Shared/mcp
+OSC=$Shared/osc
+Themes=$Shared/themes
 
 if [ x$PRINT_SYSDEPS != x ] ; then
 #
 # print system dependencies
 #
 
 
 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
        if ! file $file | grep -qs Mach-O ; then
            continue
        fi
@@ -148,54 +172,42 @@ echo "Building new app directory structure ..."
 
 mkdir -p $APPROOT/MacOS
 mkdir -p $APPROOT/Resources
 
 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 $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 $Frameworks/modules
 mkdir -p $Etc
 mkdir -p $MackieControl
+mkdir -p $OSC
 mkdir -p $PatchFiles
 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="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
 #
 
 
 #
 # 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>"
 
 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" \
 # 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" \
 # and plist strings
 sed -e "s?@APPNAME@?$appname?" \
     -e "s?@ENV@?$env?g" \
@@ -213,24 +225,26 @@ rm -f Resources/InfoPlist.strings
 
 #
 # if we build a bundle without jack, then
 
 #
 # 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.
 #
 
 # 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
 
 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
+elif test x$MIXBUS32C != x ; then
+    cp  Mixbus32C.icns $Resources/appIcon.icns
 elif test x$MIXBUS != x ; then
     cp  Mixbus.icns $Resources/appIcon.icns
 else
 elif test x$MIXBUS != x ; then
     cp  Mixbus.icns $Resources/appIcon.icns
 else
-    cp  Ardour3.icns $Resources/appIcon.icns
+    cp  Ardour.icns $Resources/appIcon.icns
 fi
 cp  typeArdour.icns $Resources/
 
 fi
 cp  typeArdour.icns $Resources/
 
@@ -298,24 +312,8 @@ fi
 # 
 
 cp -R $GTKSTACK_ROOT/etc/* $Etc
 # 
 
 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
 
 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
 
 # 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
 
@@ -330,20 +328,6 @@ cp $GTKSTACK_ROOT/lib/gtk-2.0/2.10.0/engines/libpixmap.so $Frameworks
 (cd $GTK_ENGINE_DIR && ln -s ../../libpixmap.so)
 
 
 (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
 # Control Surface shared libraries
 cp $BUILD_ROOT/libs/surfaces/*/libardour_*.dylib $Surfaces
 cp $BUILD_ROOT/libs/surfaces/control_protocol/libardourcp*.dylib $Frameworks
@@ -361,12 +345,11 @@ for f in $BUILD_ROOT/../export/*.preset $BUILD_ROOT/../export/*.format ; do
     cp "$f" $ExportFormats ; 
 done
 
     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
 
 # MidiMaps
 # got to be careful with names here
@@ -380,12 +363,28 @@ for x in $BUILD_ROOT/../patchfiles/*.midnam ; do
     cp "$x" $PatchFiles
 done
 
     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
 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
 done
 
+# OSC data
+# got to be careful with names here
+for x in $BUILD_ROOT/../osc/*.preset ; do
+    cp "$x" $OSC
+done
+
 # VAMP plugins that we use
 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
 
 # VAMP plugins that we use
 cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
 
@@ -410,19 +409,47 @@ if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
     cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
 fi
 
     cp $BUILD_ROOT/libs/vfork/ardour-exec-wrapper $Frameworks/
 fi
 
+# 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
+
+# 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
 
 while [ true ] ; do 
     missing=false
-    for file in $APPROOT/MacOS/* $Frameworks/* $Frameworks/modules/* $Panners/*.dylib $Backends/*.dylib $Surfaces/*.dylib $Plugins/*.so ; do 
+    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
        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
 
 
        if test x$STRIP != x ; then
                strip -u -r -arch all $file &>/dev/null
        fi
 
-       deps=`otool -L $file | awk '{print $1}' | egrep "($GTKSTACK_ROOT|$ARDOURSTACK_ROOT|/opt/|/local/|libs/)" | grep -v 'libjack\.' | grep -v "$(basename $file)"`
+       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`
        # echo -n "."
        for dep in $deps ; do
            base=`basename $dep`
@@ -445,31 +472,50 @@ echo
 
 echo "Copying other stuff to $APPDIR  ..."
 
 
 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
 
 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 ../../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
 done
 
 
 # go through and recursively remove any .svn dirs in the bundle
 for svndir in `find $APPDIR -name .svn -type dir`; do
     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/
 
 # install bundled LV2s to <app>/Contents/lib/LV2/
 cp -R $BUILD_ROOT/libs/LV2 $Frameworks/
 
@@ -487,11 +533,22 @@ executables=$MAIN_EXECUTABLE
 if test x$SAE != x ; then
     executables="$executables"
 fi
 if test x$SAE != x ; then
     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
 
 for exe in $executables; do
+    echo "Processing Executable: $exe"
     EXE=$APPROOT/MacOS/$exe
     changes=""
     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
+    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
       base=`basename $lib`
       changes="$changes -change $lib @executable_path/../lib/$base"
     done
@@ -502,7 +559,7 @@ done
 
 echo "Fixing up library names ..."
 # now do the same for all the libraries we include
 
 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
+for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends $Frameworks/LV2/* ; do
 
     libbase=`basename $libdir`
     
 
     libbase=`basename $libdir`
     
@@ -517,7 +574,7 @@ for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends ; do
         # change all the dependencies
        
        changes=""
         # 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
+       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"
            base=`basename $lib`
            if echo $lib | grep -s libbase; then
                changes="$changes -change $lib @executable_path/../$libbase/$base"
@@ -575,20 +632,38 @@ else
 
 fi
 
 
 fi
 
+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
 if test x$WITH_HARRISON_LV2 != x ; then
-       if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
-               OSX_ARCH=osx64
-       else 
-               OSX_ARCH=osx32
-       fi
-       curl -s http://www.harrisonconsoles.com/mixbus/mb3/${OSX_ARCH}/harrison_lv2s.zip \
-               | bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf -
+       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.."
 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 ..."
 
        MULTIARCH=osx
        echo "copying harvid and xjadeo ..."
 
@@ -608,6 +683,14 @@ if test x$WITH_HARVID != x ; then
        cp -r "${JADEO}/Jadeo.app" "$PRODUCT_PKG_DIR/"
        hdiutil detach "${JADEO}"
 
        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}}"
        DMGWINBOTTOM=580
        YPOS=$[ $DMGWINBOTTOM - 300 ]
        XJADEOPOS="set position of item \"Jadeo.app\" of container window to {310, ${YPOS}}"
@@ -615,45 +698,81 @@ if test x$WITH_HARVID != x ; then
        DMGBACKGROUND=${DMGBACKGROUND}xj
 fi
 
        DMGBACKGROUND=${DMGBACKGROUND}xj
 fi
 
-###################################################################
+################################################################################
 ### Mixbus plugins, etc
 ### Mixbus plugins, etc
-if test -n "$MIXBUS"; then
-       echo "bundling x42 plugins"
-       if file ${PRODUCT_PKG_DIR}/$APPROOT/MacOS/$MAIN_EXECUTABLE | grep -q x86_64; then
-               OSX_ARCH=x86_64
-       else
-               OSX_ARCH=i386
-       fi
-
+if true; then
+       echo "Bundling General MIDI Synth LV2"
        mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
 
        mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
 
-       METERS_VERSION=$(curl -s -S http://gareus.org/x42/osx/x42-meters.latest.txt)
-       rsync -a -q --partial \
-               rsync://gareus.org/x42/osx/x42-meters-lv2-osx-${METERS_VERSION}.zip \
-               "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
-       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
-               "$CACHEDIR/x42-meters-lv2-osx-${METERS_VERSION}.zip"
+       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
 
 
-       SETBFREE_VERSION=$(curl -s -S http://gareus.org/x42/osx/setBfree.latest.txt)
-       rsync -a -q --partial \
-               rsync://gareus.org/x42/osx/setBfree-lv2-osx-${SETBFREE_VERSION}.zip \
-               "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
-       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
-               "$CACHEDIR/setBfree-lv2-osx-${SETBFREE_VERSION}.zip"
+       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
 
 
-       MIDIFILTER_VERSION=$(curl -s -S http://gareus.org/x42/osx/x42-midifilter.latest.txt)
-       rsync -a -q --partial \
-               rsync://gareus.org/x42/osx/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip \
-               "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
-       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
-               "$CACHEDIR/x42-midifilter-lv2-osx-${MIDIFILTER_VERSION}.zip"
+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-midimap x42-stereoroute x42-eq setBfree x42-avldrums x42-whirl x42-limiter; 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
 
        for file in ${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/*/*.dylib ; do
-               lipo -thin ${OSX_ARCH} ${file} -output ${file}.thin
+               lipo -extract_family ${OSX_ARCH} ${file} -output ${file}.thin
                mv ${file}.thin ${file}
        done
                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
 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
 ################################################################################
 
 ( cd $PRODUCT_PKG_DIR ; find . ) > file_list.txt
@@ -686,9 +805,8 @@ TMPDMG="${TMPDMG}.dmg"
 
 trap "rm -rf $MNTPATH $TMPDMG ${TMPDMG}.dmg $ICNSTMP" EXIT
 
 
 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 ' ')
 DiskDevice=$(hdid -nomount "$TMPDMG" | grep Apple_HFS | cut -f 1 -d ' ')
-newfs_hfs -v "${VOLNAME}" "${DiskDevice}"
 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
 
 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
 mount -t hfs -o nobrowse "${DiskDevice}" "${MNTPATH}"
 
 cp -r ${PRODUCT_PKG_DIR}/* "${MNTPATH}" || exit
@@ -710,6 +828,7 @@ osascript << EOF
     activate
     tell disk "${DISKNAME}"
       open
     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
       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
@@ -727,7 +846,16 @@ osascript << EOF
       close
       open
       update without registering applications
       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
       eject
     end tell
   end tell
@@ -745,6 +873,7 @@ hdiutil eject "${DiskDevice}" || true
 # Create a read-only version, use zlib compression
 hdiutil convert -format UDZO "${TMPDMG}" -imagekey zlib-level=9 -o "${UC_DMG}"
 
 # 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
 echo "setting file icon ..."
 
 cp ${PRODUCT_PKG_DIR}/$Resources/appIcon.icns ${ICNSTMP}.icns
@@ -754,6 +883,8 @@ Rez -append ${ICNSTMP}.rsrc -o "$UC_DMG"
 SetFile -a C "$UC_DMG"
 
 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
 SetFile -a C "$UC_DMG"
 
 rm ${ICNSTMP}.icns ${ICNSTMP}.rsrc
+fi
+
 rm -rf ${PRODUCT_PKG_DIR}
 
 echo
 rm -rf ${PRODUCT_PKG_DIR}
 
 echo