#!/bin/bash
#
# Low brow build script for Mono 2.0.
# Uses metadata available in VS2005 project files.
#
# Replace with Mono's new XBuild when details are fully released.
# Note: XBuild is a clone of MSBuild.
#
#MCS_FLAGS="-debug+"
MCS_FLAGS="-optimize"
outDir=$PWD/build/mono
FindExternalReferences()
{
assembly=$1
grep HintPath $assembly.csproj | sed -e 's-.*\(.*\)-\1-' -e 's-\\-/-g' |
while read ref; do
echo $PWD/$ref
done
}
Build()
{
assembly=$1; shift
echo "===================================================="
echo Building $assembly
references=$(grep 'tmp.build.sources
externalReferences=$(FindExternalReferences $assembly)
# Strip Control-M characters from external references...
externalReferences=$(echo $externalReferences | sed 's/\r//g')
echo "externalReferences = [$externalReferences]"
echo "regularRefs = [$regularRefs]"
echo PWD=$PWD
# construct "-r" argument.
fullrefs=""
for ref in $regularRefs $externalReferences; do
if [[ -z $fullrefs ]]; then
fullrefs="-r:$ref"
else
fullrefs="$fullrefs,$ref"
fi
done
echo "fullrefs = [$fullrefs]"
# Copy external references to output directory.
for ref in $externalReferences; do
cp $ref $outDir
done
# Strip Control-M character here too. Not sure how they get there...
echo $fullrefs >tmp.references
mcs $MCS_FLAGS -out:$outDir/$assembly.dll -target:library @tmp.references @tmp.build.sources
)
}
mkdir -p $outDir
# Tried to magically get projects from Qpid.NET.sln but wrong order for building..
#for project in $(grep ^Project Qpid.NET.sln | sed 's/.*\\\(.*\).csproj.*/\1/'); do
# Build $project
#done
Build Qpid.Messaging &&
Build Qpid.Buffer &&
Build Qpid.Codec &&
Build Qpid.Common &&
Build Qpid.Common.Tests &&
Build Qpid.Client &&
Build Qpid.Client.Transport.Socket.Blocking &&
Build Qpid.Client.Tests