#!/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