X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=web%2Fmono-build-w32.sh;h=fe9d061fe51311684dbe497f30c7d60d2415b790;hb=a4b17da1b4f2befb86d04d7f178901c0a56f1875;hp=fa0a1ee5c417fedeff6df687eba27a399e996e47;hpb=eb4fe4d252b573a33af0a320d59b8026e7d90e51;p=mono.git diff --git a/web/mono-build-w32.sh b/web/mono-build-w32.sh index fa0a1ee5c41..fe9d061fe51 100755 --- a/web/mono-build-w32.sh +++ b/web/mono-build-w32.sh @@ -16,10 +16,17 @@ test -z "$here" && here=`pwd` echo "Building Mono and dependencies in $here, installing to $here/install" PATH=$here/install/bin:$here/install/lib:$PATH +export C_INCLUDE_PATH=$here/install/include + +# Make sure cygwin's libiconv is installed, or libtool blows its tiny mind +if [ ! -f /usr/lib/libiconv.la ]; then + echo "You need to install the cygwin \"libiconv\" package!" + exit -1 +fi # Check mono out first, so we can run aclocal from inside the mono dir (it # needs to see which version of the real aclocal to run) -test -z "$CVSROOT" && CVSROOT=:pserver:anonymous@reypastor.hispalinux.es:/mono +test -z "$CVSROOT" && CVSROOT=:pserver:anonymous@anoncvs.go-mono.com:/mono export CVSROOT echo "Updating mono" @@ -42,10 +49,28 @@ fi cvs checkout mono || exit -1 +echo "Checking automake version" +automake_required="1.6.2" +automake_version=`automake --version | head -1 | awk '{print $4}' | tr -d '[a-zA-Z]' | sed 's/-.*$//g'` +echo "Found automake version $automake_version" +if expr $automake_version \< $automake_required > /dev/null; then + echo "Your automake is too old! You need version $automake_required or newer." + exit -1 +else + echo "Automake version new enough." +fi + +# This causes libgc-not-found problem +# +## Select the stable version anyway... +#if [ ! -z "${AUTO_STABLE}" -o -e /usr/autotool/stable ]; then +# export AUTO_STABLE=${AUTO_STABLE:-/usr/autotool/stable} +# export AUTO_DEVEL=${AUTO_STABLE} +#fi + # Need to install pkgconfig and set ACLOCAL_FLAGS if there is not a # pkgconfig installed already. Otherwise set PKG_CONFIG_PATH to the -# glib we're about to install in $here/install. This script could -# attempt to be clever and see if glib 2 is already installed, too. +# glib we're about to install in $here/install. # --print-ac-dir was added in 1.2h according to the ChangeLog. This @@ -56,36 +81,107 @@ cvs checkout mono || exit -1 # it finds two copies of the m4 macros). The GIMP for Windows # pkgconfig sets its prefix based on the location of its binary, so we # dont need PKG_CONFIG_PATH (the internal pkgconfig config file -# $prefix is handled similarly). +# $prefix is handled similarly). For the cygwin pkgconfig we do need to +# set it, and we need to edit the mingw pc files too. + +function aclocal_scan () { + # Quietly ignore the rogue '-I' and other aclocal flags that + # aren't actually directories... + # + # cd into mono/ so that the aclocal wrapper can work out which version + # of aclocal to run, and add /usr/share/aclocal too cos aclocal looks there + # too. + for i in `(cd mono && aclocal --print-ac-dir)` /usr/share/aclocal $ACLOCAL_FLAGS + do + if [ -f $i/$1 ]; then + return 0 + fi + done + + return 1 +} + +function install_icuconfig() { + if [ ! -f $here/install/bin/icu-config ]; then + wget http://www.go-mono.com/archive/icu-config + mv icu-config $here/install/bin + chmod 755 $here/install/bin/icu-config + fi +} -if [ ! -f `(cd mono; aclocal --print-ac-dir)`/pkg.m4 ]; then - ACLOCAL_FLAGS="-I $here/install/share/aclocal $ACLOCAL_FLAGS" + +function install_package() { + zipfile=$1 + markerfile=$2 + name=$3 + + echo "Installing $name..." + if [ ! -f $here/$zipfile ]; then + wget http://www.go-mono.com/archive/$zipfile + fi + + # Assume that the package is installed correctly if the marker + # file is there + if [ ! -f $here/install/$markerfile ]; then + (cd $here/install || exit -1; unzip -o $here/$zipfile || exit -1) || exit -1 + fi +} + +# pkgconfig is only used during the build, so we can use the cygwin version +# if it exists +if aclocal_scan pkg.m4 ; then + install_pkgconfig=no +else + install_pkgconfig=yes fi -export PATH -export ACLOCAL_FLAGS +# This causes libgc-not-found problem +# +## But we still need to use the mingw libs for glib & co +#ACLOCAL_FLAGS="-I $here/install/share/aclocal $ACLOCAL_FLAGS" + +#export PATH +#export ACLOCAL_FLAGS # Grab pkg-config, glib etc if [ ! -d $here/install ]; then mkdir $here/install || exit -1 +fi - # Fetch and install pkg-config, glib, iconv, intl - for i in pkgconfig-0.80-tml-20020101.zip glib-1.3.12-20020101.zip glib-dev-1.3.12-20020101.zip libiconv-1.7.zip libiconv-dev-1.7.zip libintl-0.10.40-20020101.zip +# Fetch and install pkg-config, glib, iconv, intl + +if [ $install_pkgconfig = "yes" ]; then + install_package pkgconfig-0.11-20020310.zip bin/pkg-config.exe pkgconfig +else + echo "Not installing pkgconfig, you already seem to have it installed" +fi +install_package glib-2.0.4-20020703.zip lib/libglib-2.0-0.dll glib +install_package glib-dev-2.0.4-20020703.zip lib/glib-2.0.lib glib-dev +install_package libiconv-1.7.zip lib/iconv.dll iconv +install_package libintl-0.10.40-20020101.zip lib/libintl-1.dll intl +install_package libgc-dev.zip lib/gc.dll gc-dev +install_package icu-2.6.1-Win32_msvc7.zip icu/bin/icuuc26.dll icu + +install_icuconfig + +if [ $install_pkgconfig = "no" ]; then + echo "Fixing up the pkgconfig paths" + for i in $here/install/lib/pkgconfig/*.pc do - wget http://www.go-mono.org/archive/$i - (cd $here/install || exit -1; unzip -o ../$i || exit -1) || exit -1 + mv $i $i.orig + sed -e "s@^prefix=/target\$@prefix=$here/install@" < $i.orig > $i done + export PKG_CONFIG_PATH=$here/install/lib/pkgconfig fi -# Needed to find the libiconv bits -CPPFLAGS="-I$here/install/include" -LDFLAGS="-L$here/install/lib" -export CPPFLAGS -export LDFLAGS +# Needed to find the libgc bits +export CFLAGS="-I $here/install/include -I $here/install/icu/include" +export LDFLAGS="-L$here/install/lib -L$here/install/icu/lib" +export PATH="$here/install/icu/bin:$PATH" # Make sure we build native w32, not cygwin -CC="gcc -mno-cygwin" -export CC +#CC="gcc -mno-cygwin" +#export CC # --prefix is used to set the class library dir in mono, and it needs # to be in windows-native form. It also needs to have '\' turned into