diff options
Diffstat (limited to 'dotnet/build-mono')
| -rwxr-xr-x | dotnet/build-mono | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/dotnet/build-mono b/dotnet/build-mono new file mode 100755 index 0000000000..83a8198307 --- /dev/null +++ b/dotnet/build-mono @@ -0,0 +1,85 @@ +#!/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-.*<HintPath>\(.*\)</HintPath>-\1-' -e 's-\\-/-g' | + while read ref; do + echo $PWD/$ref + done +} + +Build() +{ + assembly=$1; shift + + echo "====================================================" + echo Building $assembly + references=$(grep '<ProjectReference' $assembly/$assembly.csproj | sed -e 's-.*"\(.*\)".*-\1-' -e 's-\\-/-g' | + while read file; do + echo $(basename $file .csproj); + done) + references=$(echo $references) + echo "Projects referenced = [$references]" + ( + regularRefs="" + for ref in $references; do + regularRefs="$regularRefs $outDir/$ref.dll" + done + cd $assembly + find . -name \*.cs >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 |
