Bundle x42-limiter with binaries
[ardour.git] / tools / osx_packaging / osx_build
index 6564539b28a1ca8d82c596ec54a4f7a64d62f0e8..7502d73bf1112805f62a13a5859ac426a0e6e2ff 100755 (executable)
@@ -43,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 ;
@@ -52,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;
@@ -61,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= ;
@@ -70,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= ;
@@ -113,11 +120,9 @@ else
        fi
 fi
 
-lower_case_appname=`echo $APPNAME | tr '[:upper:]' '[:lower:]'`
-
 # setup directory structure
 
-APPDIR=${APPNAME}${major_version}.app
+APPDIR=${BUNDLENAME}.app
 APPROOT=$APPDIR/Contents
 Frameworks=$APPROOT/lib
 Resources=$APPROOT/Resources
@@ -129,19 +134,18 @@ Resources=$APPROOT/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
 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
@@ -149,7 +153,7 @@ 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
@@ -168,50 +172,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>"
 
@@ -223,7 +206,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?" \
@@ -362,12 +345,11 @@ 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
@@ -397,6 +379,12 @@ 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
 
@@ -433,6 +421,12 @@ for file in $BUILD_ROOT/session_utils/${lower_case_appname}${major_version}-*; d
        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\+\+'
@@ -442,7 +436,7 @@ fi
 
 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
@@ -488,7 +482,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
@@ -547,6 +540,10 @@ if test "$HAVE_SESSION_UTILS" = true ; then
        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
@@ -697,11 +694,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-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 \
@@ -823,7 +840,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