--- a
+++ b/ohbuild.sh
@@ -0,0 +1,153 @@
+#!/bin/sh
+
+# Helper script for building the openhome libs prior to building
+# scmpdcli. This is far from foolproof or knowledgeable, but it seems
+# to get me usable (static) libs. We first clone the git repositories,
+# checkout a known ok version (it's more or less random, based on the
+# 1st date I tried this, but some further versions don't build), then
+# build th edifferent dirs.
+# You should create a top empty dir first, then "sh ohbuild.sh mytopdir"
+
+fatal()
+{
+ echo $*; exit 1
+}
+usage()
+{
+ fatal "Usage: ohbuild.sh <topdir>"
+}
+test $# = 1 || usage
+topdir=$1
+
+cd $topdir || exit 1
+topdir=`pwd`
+
+
+otherfiles=`echo *.*`
+test "$otherfiles" != '*.*' && fatal not in top dir
+
+arch=
+debug=
+
+clone_oh()
+{
+ cd $topdir
+ for rep in \
+ https://github.com/openhome/ohNet.git \
+ https://github.com/openhome/ohdevtools.git \
+ https://github.com/openhome/ohNetGenerated.git \
+ https://github.com/openhome/ohTopology.git \
+ https://github.com/openhome/ohSongcast.git \
+ ; do
+ dir=`echo $rep | sed -e 's+https://github.com/openhome/++' \
+ -e 's/\.git$//'`
+ echo $dir
+ test ! -d $dir && git clone $rep
+ done
+}
+
+build_ohNet()
+{
+ cd $topdir
+ dir=ohNet
+ echo building $dir
+ cd $dir
+ git checkout b2207ce19d638b55f660896d5b42c49900e8e2cd
+ make ohNetCore proxies devices TestFramework bundle || exit 1
+
+ cd ..
+}
+
+build_ohNetGenerated()
+{
+ dir=ohNetGenerated
+ echo building $dir
+ cd $dir
+ git checkout b436c4f098cd3417c2b1e97f9a94b5875e71f200
+ # e.g. Linux-x64, Linux-armhf
+ arch=`basename $topdir/ohNet/Build/Bundles/ohNet-*-*.tar.gz | \
+ sed -e s/ohNet-// -e s/-[A-Z][a-z][a-z]*\.tar\.gz$//`
+ # e.g. Debug, Release
+ debug=`basename $topdir/ohNet/Build/Bundles/ohNet-*-*.tar.gz | \
+ sed -e s/.*-// -e s/\.tar\.gz$//`
+
+ sd=dependencies/${arch}
+ mkdir -p "$sd"
+ (cd $sd;
+ tar xvzf $topdir/ohNet/Build/Bundles/ohNet-${arch}-${debug}.tar.gz
+ ) || exit 1
+
+ # This should fail looking for some dll (csharp again), but that's ok
+ make
+
+ # Copy the includes from here to the ohNet dir where ohTopology
+ # will want them
+ tar cf - Build/Include | (cd $topdir/ohNet/;tar xvf -) || exit 1
+
+ cd ..
+}
+
+build_ohdevtools()
+{
+ cd $topdir
+ dir=ohdevtools
+ echo building $dir
+ cd $dir
+ git checkout 33d8e940a7737df1b2a500efc28ef1429df8f304
+ # Nothing to build
+ cd ..
+}
+
+build_ohTopology()
+{
+ cd $topdir
+ dir=ohTopology
+ echo building $dir
+ cd $dir
+ git checkout 11767b53dda79564548b522a72db895f24e27437
+
+ ./go fetch --all --clean
+
+ ./waf configure --ohnet=../ohNet --dest-platform=Linux-x86
+ # This fails, but it creates what we need.
+ ./waf build
+
+ cd ..
+}
+
+build_ohSongcast()
+{
+ cd $topdir
+ dir=ohSongcast
+ echo building $dir
+ cd $dir
+ git checkout 315fe6a191f512b2faf2502eb07613c4a3335bd3
+
+ # This fails because the link options are wrong (-lpthread should be
+ # at the end of the link line), but it builds the objs we need.
+ make release=1 Receiver
+}
+
+official_way()
+{
+# from README, actually Does not work, for reference
+ cd ohNet
+ make ohNetCore proxies devices TestFramework
+ cd ../ohNetGenerated
+ make
+ cd ../ohNetmon
+ make
+ cd ../ohTopology
+ ./waf configure --ohnet=../ohNet --debug --dest-platform=[Windows-x86|Mac-x86|Linux-x86]
+ ./waf build
+ cd ../ohSongcast
+ make release=1
+}
+
+#clone_oh
+
+build_ohNet
+build_ohNetGenerated
+build_ohdevtools
+build_ohTopology
+build_ohSongcast