shithub: aubio

Download patch

ref: e9df13713385d5af72722ae4f8c587b13cf631e0
parent: ae1a9bac90c71ce0428211ddfbc777f49894b236
author: Paul Brossier <piem@piem.org>
date: Mon Mar 7 16:07:19 EST 2016

scripts/build_apple_frameworks: add script to build macosx and ios frameworks (improves #34)

--- /dev/null
+++ b/scripts/build_apple_frameworks
@@ -1,0 +1,100 @@
+#! /bin/sh
+
+AUBIO_TMPDIR=`mktemp -d /var/tmp/aubio-build-XXXX`
+PACKAGE=aubio
+source VERSION
+VERSION=$AUBIO_MAJOR_VERSION.$AUBIO_MINOR_VERSION.$AUBIO_PATCH_VERSION$AUBIO_VERSION_STATUS
+LIBVERSION=$LIBAUBIO_LT_CUR.$LIBAUBIO_LT_REV.$LIBAUBIO_LT_AGE
+OUTPUTDIR=$PWD/dist
+mkdir -p $OUTPUTDIR
+# add git abbreviated commit hash
+#VERSION+=+$(git log --pretty=format:"%h" -1)
+
+CFLAGS="-Werror -Ofast"
+WAFCONF="--disable-sndfile --disable-avcodec --disable-samplerate --enable-fat" # --disable-memcpy --disable-accelerate"
+
+export VERSION
+
+function cleanup () {
+  rm -rf $AUBIO_TMPDIR
+}
+
+trap cleanup SIGINT SIGTERM
+
+function create_tarballs() {
+  # name version platform
+  # create tarball
+  tarfile=$OUTPUTDIR/$1-$2.$3_binary.tar.bz2
+  tar -C $AUBIO_TMPDIR/dist-$3/ -jcf $tarfile .
+  #rm -rf $AUBIO_TMPDIR/dist-$3
+}
+
+function create_framework() {
+  rm -rf $AUBIO_TMPDIR/framework-$3
+  mkdir -p $AUBIO_TMPDIR/framework-$3/$1-$2.$3_framework/$1.framework
+  cp -pr COPYING README.md $AUBIO_TMPDIR/framework-$3/$1-$2.$3_framework
+  pushd $AUBIO_TMPDIR/framework-$3
+  cp -pr $OLDPWD/build/src/lib$1.a $1-$2.$3_framework/$1.framework/$1 || \
+    cp -pr $AUBIO_TMPDIR/dist-$3/usr/local/lib/lib$1.$LIBVERSION.dylib \
+    $AUBIO_TMPDIR/framework-$3/$1-$2.$3_framework/$1.framework/$1
+  cp -pr $AUBIO_TMPDIR/dist-$3/usr/local/include/$1 $1-$2.$3_framework/$1.framework/Headers
+  cp -pr $OLDPWD/scripts/apple/Modules $1-$2.$3_framework/$1.framework/
+  popd
+}
+
+function create_framework_fat() {
+  rm -rf $AUBIO_TMPDIR/framework-$3
+  mkdir -p $AUBIO_TMPDIR/framework-$3/$1-$2.$3_framework/$1.framework
+  cp -pr COPYING README.md $AUBIO_TMPDIR/framework-$3/$1-$2.$3_framework
+  pushd $AUBIO_TMPDIR/framework-$3
+  cp -pr $AUBIO_TMPDIR/framework-ios/$1-$2.ios_framework/$1.framework/Headers $1-$2.$3_framework/$1.framework
+  cp -pr $AUBIO_TMPDIR/framework-ios/$1-$2.ios_framework/$1.framework/Modules $1-$2.$3_framework/$1.framework
+  lipo $AUBIO_TMPDIR/framework-ios/$1-$2.ios_framework/$1.framework/$1 \
+       $AUBIO_TMPDIR/framework-iosimulator/$1-$2.iosimulator_framework/$1.framework/$1 \
+       -output $1-$2.$3_framework/$1.framework/$1 -create
+  popd
+}
+
+function create_framework_zip() {
+  # create zip
+  pushd $AUBIO_TMPDIR/framework-$3
+  zipfile=$1-$2.$3_framework.zip
+  zip -qr $zipfile $1-$2.$3_framework
+  popd
+  mv $AUBIO_TMPDIR/framework-$3/$zipfile $OUTPUTDIR
+}
+
+set -x
+set -e
+
+#./waf dist --verbose
+
+for PLATFORM in darwin ios iosimulator
+do
+  rm -rf $AUBIO_TMPDIR/dist-$PLATFORM
+  WAF_OPTIONS="--verbose --destdir $AUBIO_TMPDIR/dist-$PLATFORM --with-target-platform $PLATFORM $WAFCONF"
+  for target in distclean configure build install
+  do
+    CFLAGS="$CFLAGS" ./waf $target $WAF_OPTIONS
+  done
+
+  create_framework $PACKAGE $VERSION $PLATFORM
+  if [ $PLATFORM == 'darwin' ]
+  then
+    # on darwin, build a .tar.bz2 of /usr and a .zip of aubio.framework
+    create_tarballs $PACKAGE $VERSION $PLATFORM
+    create_framework_zip $PACKAGE $VERSION $PLATFORM
+  fi
+  ./waf uninstall $WAF_OPTIONS
+
+done
+
+# after both ios and iosimulator have been built
+PLATFORM=iosuniversal
+create_framework_fat $PACKAGE $VERSION $PLATFORM
+create_framework_zip $PACKAGE $VERSION $PLATFORM
+
+./waf clean
+./waf distclean
+
+cleanup