+2010-04-02 Marek Habersack <mhabersack@novell.com>
+
+ * configure.in: include -lkernel32 in LDFLAGS when cross-compiling
+ with MINGW or compiling on Cygwin.
+
+ * build-mingw32.sh: some changes to make the compilation work
+ better on non-SuSE systems.
+
2010-04-01 Mark Probst <mark.probst@gmail.com>
* scripts/mono-heapviz: Process and output detailed pinning
#!/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 moonlight net_3_5"
+TEMPORARY_PKG_CONFIG_DIR=/tmp/$RANDOM-pkg-config-$RANDOM
-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
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
}
{
./autogen.sh
+ BUILD="`./config.guess`"
+
if [ -f ./Makefile ]; then
make distclean
fi
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
make
cd "$CURDIR"
}
+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
HOST_CC="gcc"
# Windows 2000 is required that includes Internet Explorer 5.01
CPPFLAGS="$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024"
- LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm"
+ LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32"
libmono_cflags="-mno-cygwin -mms-bitfields -mwindows"
libmono_ldflags="-mno-cygwin -mms-bitfields -mwindows"
libdl=
eglib_dir=eglib
;;
system)
- if test "x$cross_compiling" = "xyes"; then
- pkg_config_path="$PKG_CONFIG_PATH"
- unset PKG_CONFIG_PATH
- fi
+ echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
+ echo "cross_compiling=$cross_compiling"
BUILD_GLIB_CFLAGS=`$PKG_CONFIG --cflags glib-2.0 gthread-2.0`
BUILD_GLIB_LIBS=`$PKG_CONFIG --libs glib-2.0 gthread-2.0`
- if test "x$cross_compiling" = "xyes"; then
- PKG_CONFIG_PATH=$pkg_config_path
- export PKG_CONFIG_PATH
- fi
## Versions of dependencies
GLIB_REQUIRED_VERSION=2.4.0