diff options
author | Jo Shields <directhex@apebox.org> | 2010-10-18 13:25:11 +0100 |
---|---|---|
committer | Jo Shields <directhex@apebox.org> | 2010-10-18 13:25:11 +0100 |
commit | 5c6aba561a13a666267e90e0109e9d82e7a7d59d (patch) | |
tree | d9a1153ea300350607189fd2ae2bd0cb428aa318 /build-mingw32.sh | |
parent | 665316e3fe5fcc613bf7ba81d33c05004889d7cf (diff) | |
download | mono-5c6aba561a13a666267e90e0109e9d82e7a7d59d.tar.gz |
Imported Upstream version 2.8upstream/2.8
Diffstat (limited to 'build-mingw32.sh')
-rwxr-xr-x | build-mingw32.sh | 72 |
1 files changed, 63 insertions, 9 deletions
diff --git a/build-mingw32.sh b/build-mingw32.sh index 200c5fa718..16b91cefe6 100755 --- a/build-mingw32.sh +++ b/build-mingw32.sh @@ -1,19 +1,32 @@ #!/bin/bash -e CURDIR="`pwd`" -CROSS_DIR=${1:-/opt/cross/} -MINGW=${1:-i386-mingw32msvc} -CROSS_BIN_DIR="$CROSS_DIR/bin" -CROSS_DLL_DIR="$CROSS_DIR/$MINGW/bin" -CROSS_PKG_CONFIG_DIR=$CROSS_DIR/$MINGW/lib/pkgconfig +MINGW=i386-mingw32msvc +CROSS_DIR=/opt/cross/$MINGW COPY_DLLS="libgio*.dll libglib*.dll libgmodule*.dll libgthread*.dll libgobject*.dll" -PATH=$CROSS_BIN_DIR:$PATH INSTALL_DESTDIR="$CURDIR/mono-win32" -PROFILES="default net_2_0 net_2_1 net_3_5" +PROFILES="default net_2_0 net_3_5 net_4_0 moonlight" +TEMPORARY_PKG_CONFIG_DIR=/tmp/$RANDOM-pkg-config-$RANDOM +ORIGINAL_PATH="$PATH" -export PATH +export CPPFLAGS_FOR_EGLIB CFLAGS_FOR_EGLIB CPPFLAGS_FOR_LIBGC CFLAGS_FOR_LIBGC + +function cleanup () +{ + if [ -d "$TEMPORARY_PKG_CONFIG_DIR" ]; then + rm -rf "$TEMPORARY_PKG_CONFIG_DIR" + fi +} function setup () { + local pcname + + CROSS_BIN_DIR="$CROSS_DIR/bin" + CROSS_DLL_DIR="$CROSS_DIR/bin" + CROSS_PKG_CONFIG_DIR=$CROSS_DIR/lib/pkgconfig + PATH=$CROSS_BIN_DIR:$PATH + + export PATH if [ -d ./.git/svn ]; then SVN_INFO='git svn info' elif [ -d ./.svn ]; then @@ -37,6 +50,15 @@ function setup () NOCONFIGURE=yes export NOCONFIGURE + if [ -d "$CROSS_PKG_CONFIG_DIR" ]; then + install -d -m 755 "$TEMPORARY_PKG_CONFIG_DIR" + for pc in "$CROSS_PKG_CONFIG_DIR"/*.pc; do + pcname="`basename $pc`" + sed -e "s;^prefix=.*;prefix=$CROSS_DIR;g" < $pc > "$TEMPORARY_PKG_CONFIG_DIR"/$pcname + done + CROSS_PKG_CONFIG_DIR="$TEMPORARY_PKG_CONFIG_DIR" + fi + echo Mono Win32 installation prefix: $MONO_PREFIX } @@ -44,8 +66,11 @@ function build () { ./autogen.sh + BUILD="`./config.guess`" + if [ -f ./Makefile ]; then make distclean + rm -rf autom4te.cache fi if [ ! -d "$CURDIR/build-cross-windows" ]; then @@ -54,13 +79,18 @@ function build () cd "$CURDIR/build-cross-windows" rm -rf * - ../configure --prefix=$MONO_PREFIX --with-crosspkgdir=$CROSS_PKG_CONFIG_DIR --target=$MINGW --host=$MINGW --enable-parallel-mark --program-transform-name="" + ../configure --prefix=$MONO_PREFIX --with-crosspkgdir=$CROSS_PKG_CONFIG_DIR --build=$BUILD --target=$MINGW --host=$MINGW --enable-parallel-mark --program-transform-name="" --with-tls=none --disable-mcs-build --disable-embed-check --enable-win32-dllmain=yes --with-libgc-threads=win32 --with-profile4=yes make cd "$CURDIR" if [ ! -d "$CURDIR/build-cross-windows-mcs" ]; then mkdir "$CURDIR/build-cross-windows-mcs" fi + + rm -rf autom4te.cache + unset PATH + PATH="$ORIGINAL_PATH" + export PATH cd "$CURDIR/build-cross-windows-mcs" rm -rf * ../configure --prefix=$MONO_PREFIX --enable-parallel-mark @@ -101,8 +131,32 @@ function doinstall () } +function usage () +{ + cat <<EOF +Usage: build-mingw32.sh [OPTIONS] + +where OPTIONS are: + + -d DIR Sets the location of directory where MINGW is installed [$CROSS_DIR] + -m MINGW Sets the MINGW target name to be passed to configure [$MINGW] +EOF + + exit 1 +} + +trap cleanup 0 + pushd . > /dev/null +while getopts "d:m:h" opt; do + case "$opt" in + d) CROSS_DIR="$OPTARG" ;; + m) MINGW="$OPTARG" ;; + *) usage ;; + esac +done + setup build doinstall |