Changing active-state needs no color lookup
[ardour.git] / tools / osx_packaging / osx_build
index 7c7020dd527979415b9ab99a7f4771bd540c0aba..8d6efc6ed8475dbc00d28daa0a19ebd5f13ec53d 100755 (executable)
@@ -25,12 +25,14 @@ 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
@@ -41,6 +43,8 @@ while [ $# -gt 0 ] ; do
                STRIP= ;
                PRODUCT_PKG_DIR=ArdourSAE ;
                APPNAME=Ardour ;
+               BUNDLENAME=Ardour${major_version} ;
+               lower_case_appname=ardour;
                shift ;;
        --mixbus) MIXBUS=1;
                WITH_HARRISON_LV2=1 ;
@@ -50,6 +54,8 @@ while [ $# -gt 0 ] ; do
                STRIP= ;
                PRODUCT_PKG_DIR=Mixbus;
                APPNAME=Mixbus ;
+               BUNDLENAME=Mixbus${major_version} ;
+               lower_case_appname=mixbus;
                shift ;;
        --mixbus32c) MIXBUS=1;
                MIXBUS32C=1;
@@ -59,8 +65,9 @@ while [ $# -gt 0 ] ; do
                SAE= ;
                STRIP= ;
                PRODUCT_PKG_DIR=Mixbus32C;
-               APPNAME=Mixbus32C-${major_version} ;
-               major_version=""
+               lower_case_appname=mixbus32c;
+               APPNAME=Mixbus32C ;
+               BUNDLENAME=Mixbus32C-${major_version} ;
                shift ;;
        --public)
                SAE= ;
@@ -68,6 +75,8 @@ while [ $# -gt 0 ] ; do
                WITH_X42_LV2=1 ;
                PRODUCT_PKG_DIR=Ardour;
                APPNAME=Ardour ;
+               BUNDLENAME=Ardour${major_version} ;
+               lower_case_appname=ardour;
                shift ;;
        --allinone) SAE= ;
                STRIP= ;
@@ -84,7 +93,7 @@ while [ $# -gt 0 ] ; do
        --sysdeps) PRINT_SYSDEPS=1; shift ;;
        --nls) WITH_NLS=1 ; shift ;;
        --chanstrip) HARRISONCHANNELSTRIP=$2 ; shift; shift ;;
-    esac
+       esac
 done
 
 if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then
@@ -94,9 +103,9 @@ fi
 
 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"
 
@@ -113,7 +122,7 @@ fi
 
 # setup directory structure
 
-APPDIR=${APPNAME}${major_version}.app
+APPDIR=${BUNDLENAME}.app
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
@@ -121,23 +130,23 @@ 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
@@ -145,13 +154,13 @@ 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 ..."
@@ -164,50 +173,29 @@ echo "Building new app directory structure ..."
 
 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="Ardour${major_version}-SAE"
-    EXECUTABLE=${appname}
-    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=$APPNAME
-    EXECUTABLE=${appname}${major_version}
-    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="Ardour${major_version}"
-    EXECUTABLE=${appname}
-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>"
 
@@ -219,7 +207,7 @@ sed -e "s?@ENV@?$env?g" \
     -e "s?@VERSION@?$release_version?g" \
     -e "s?@INFOSTRING@?$info_string?g" \
     -e "s?@IDSUFFIX@?$EXECUTABLE?g" \
-    -e "s?@BUNDLENAME@?${APPNAME}${major_version}?g" \
+    -e "s?@BUNDLENAME@?$BUNDLENAME?g" \
     -e "s?@EXECUTABLE@?$EXECUTABLE?g" < Info.plist.in > Info.plist
 # and plist strings
 sed -e "s?@APPNAME@?$appname?" \
@@ -250,14 +238,14 @@ 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
+       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  Ardour.icns $Resources/appIcon.icns
+       cp  Ardour.icns $Resources/appIcon.icns
 fi
 cp  typeArdour.icns $Resources/
 
@@ -265,64 +253,64 @@ set +e # things below are not error-free (optional files etc) :(
 
 # 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
 cp -R $GTKSTACK_ROOT/lib/charset.alias $Resources
@@ -350,47 +338,58 @@ cp $BUILD_ROOT/libs/panners/*/lib*.dylib $Panners
 
 # Backends
 for backend in jack wavesaudio dummy coreaudio; do
-    cp $BUILD_ROOT/libs/backends/$backend/lib*.dylib $Backends
+       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
+       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
@@ -398,25 +397,53 @@ cp $BUILD_ROOT/libs/vamp-plugins/libardourvampplugins.dylib $Frameworks
 
 # 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
 
+# 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 $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
+
+# 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\+\+'
@@ -424,39 +451,40 @@ else
 STDCPP=
 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
-       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
+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
 
-       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
+               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
 
@@ -472,7 +500,6 @@ cp $BUILD_ROOT/gtk2_ardour/clearlooks.rc $Resources
 mkdir ${Resources}/icons
 mkdir ${Resources}/resources
 cp ../../system_config $Resources/system_config
-cp ../../instant.xml $Resources/instant.xml
 cp ../../gtk2_ardour/icons/*.png ${Resources}/icons/
 cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/
 cp ../../gtk2_ardour/ArdourMono.ttf $Shared
@@ -480,14 +507,33 @@ cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/
 
 
 # Themes: only install those named for this app
-lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
 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/
 
@@ -503,65 +549,76 @@ fi
 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/$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
+       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 $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
+       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
@@ -570,26 +627,26 @@ DMGWINBOTTOM=440
 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 Mixbus packaging directory"
+       mv $APPDIR $PRODUCT_PKG_DIR/
+       DMGBACKGROUND=dmgbgMB
+else
 
-    echo "Creating $APPNAME packaging directory"
-    mv $APPDIR $PRODUCT_PKG_DIR/
+       echo "Creating $APPNAME packaging directory"
+       mv $APPDIR $PRODUCT_PKG_DIR/
 
 fi
 
@@ -606,19 +663,25 @@ fi
 
 if test x$WITH_HARRISON_LV2 != x ; then
        curl -s -S --fail -#  \
-               -z "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \
-               -o "${CACHEDIR}/harrison_lv2s.${OSX_BENSID}.zip" \
-               "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/harrison_lv2s.${OSX_BENSID}.zip"
+               -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}/harrison_lv2s.${OSX_BENSID}.zip"
+               "${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 ..."
 
@@ -655,11 +718,31 @@ 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-midimap x42-stereoroute x42-eq setBfree; do
+       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 \
@@ -682,7 +765,7 @@ if test -n "$MIXBUS"; then
        curl -s -S --fail -#  \
                -z "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
                -o "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
-               "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so"
+               "${HARRISONDSPURL}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so"
 
        cp "${CACHEDIR}/${HARRISONCHANNELSTRIP}.${OSX_BENSID}.so" \
                "${PRODUCT_PKG_DIR}/${APPROOT}/lib/ladspa/strip/${HARRISONCHANNELSTRIP}.so"
@@ -692,11 +775,22 @@ if test -n "$MIXBUS"; then
        curl -s -S --fail -#  \
                -z "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
                -o "${CACHEDIR}/harrison_vamp.${OSX_BENSID}.dylib" \
-               "http://www.harrisonconsoles.com/mixbus/mb3/beta/harrison-dsp/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
@@ -770,7 +864,16 @@ osascript << EOF
       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