another hack to accommodate different project names
[ardour.git] / tools / osx_packaging / osx_build
index b555688f52c21c9d8be8ca1934a93fe0947d003b..a9343640ff826c8007929cdcfce78a5da9324421 100755 (executable)
@@ -20,12 +20,13 @@ MIXBUS32C=
 WITH_HARVID=1
 WITH_HARRISON_LV2=
 WITH_X42_LV2=
-WITH_LADSPA=1
 STRIP=1
 PRINT_SYSDEPS=
 WITH_NLS=
 
 : ${HARRISONCHANNELSTRIP=harrison_channelstrip}
+: ${HARRISONLV2=harrison_lv2s-n}
+: ${HARRISONDSPURL=http://www.harrisonconsoles.com/plugins/releases/public}
 
 . ../define_versions.sh
 
@@ -39,20 +40,22 @@ while [ $# -gt 0 ] ; do
 
        --sae)
                SAE=1 ;
-               WITH_LADSPA=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= ;
-               WITH_LADSPA=;
                STRIP= ;
                PRODUCT_PKG_DIR=Mixbus;
                APPNAME=Mixbus ;
+               BUNDLENAME=Mixbus${major_version} ;
+               lower_case_appname=mixbus;
                shift ;;
        --mixbus32c) MIXBUS=1;
                MIXBUS32C=1;
@@ -60,31 +63,32 @@ while [ $# -gt 0 ] ; do
                WITH_X42_LV2=1 ;
                WITH_NLS=1 ;
                SAE= ;
-               WITH_LADSPA=;
                STRIP= ;
                PRODUCT_PKG_DIR=Mixbus32C;
+               lower_case_appname=mixbus32c;
                APPNAME=Mixbus32C-${major_version} ;
-               major_version=""
+               BUNDLENAME=Mixbus32C-${major_version} ;
                shift ;;
        --public)
                SAE= ;
-               WITH_LADSPA=1;
+               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= ;
-               WITH_LADSPA=1;
                STRIP= ;
                PRODUCT_PKG_DIR=Ardour ;
                shift ;;
-       --test) SAE= ; WITH_LADSPA=; STRIP= ; 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 ;;
@@ -118,7 +122,7 @@ fi
 
 # setup directory structure
 
-APPDIR=${APPNAME}${major_version}.app
+APPDIR=${BUNDLENAME}.app
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
@@ -181,37 +185,18 @@ mkdir -p $Etc
 mkdir -p $MackieControl
 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>"
 
@@ -223,7 +208,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?" \
@@ -345,20 +330,6 @@ cp $GTKSTACK_ROOT/lib/gtk-2.0/2.10.0/engines/libpixmap.so $Frameworks
 (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
@@ -398,6 +369,10 @@ 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
 
@@ -431,6 +406,18 @@ if test -f $BUILD_ROOT/libs/vfork/ardour-exec-wrapper ; then
     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
+
 # 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\+\+'
@@ -492,21 +479,35 @@ cp -r ../../gtk2_ardour/icons/cursor_* ${Resources}/icons/
 cp ../../gtk2_ardour/ArdourMono.ttf $Shared
 cp ../../gtk2_ardour/resources/${PRODUCT_PKG_DIR}-* ${Resources}/resources/
 
-# Themes. Grab only the ones for this program
-lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
-for colors in `echo ../../gtk2_ardour/themes/*-${lower_case_appname}.colors`
-do
-    install_name=`echo $colors | sed "s/-$lower_case_appname//"`
-    install_name=`basename $install_name`
-    cp $colors $Themes/$install_name
-done    
 
+# 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
 
+# 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/
 
@@ -524,8 +525,19 @@ executables=$MAIN_EXECUTABLE
 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
+    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
@@ -539,7 +551,7 @@ 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
+for libdir in $Frameworks $Frameworks/modules $Surfaces $Panners $Backends $Frameworks/LV2/* ; do
 
     libbase=`basename $libdir`
     
@@ -625,13 +637,13 @@ 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
@@ -678,33 +690,14 @@ if test x$WITH_X42_LV2 != x ; then
        echo "bundling x42 plugins"
        mkdir -p "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2"
 
-       METERS_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-meters.latest.txt)
-       rsync -a -q --partial \
-               rsync://x42-plugins.com/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"
-
-       EQ_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-eq.latest.txt)
-       rsync -a -q --partial \
-               rsync://x42-plugins.com/x42/osx/x42-eq-lv2-osx-${EQ_VERSION}.zip \
-               "$CACHEDIR/x42-eq-lv2-osx-${EQ_VERSION}.zip"
-       bsdtar -C "${PRODUCT_PKG_DIR}/${APPROOT}/lib/LV2/" -xf \
-               "$CACHEDIR/x42-eq-lv2-osx-${EQ_VERSION}.zip"
-
-       SETBFREE_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/setBfree.latest.txt)
-       rsync -a -q --partial \
-               rsync://x42-plugins.com/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"
-
-       MIDIFILTER_VERSION=$(curl -s -S http://x42-plugins.com/x42/osx/x42-midifilter.latest.txt)
-       rsync -a -q --partial \
-               rsync://x42-plugins.com/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"
+       for proj in x42-meters x42-midifilter x42-midimap x42-stereoroute x42-eq setBfree; 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
@@ -720,7 +713,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"
@@ -730,11 +723,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