⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mono-build-w32.sh

📁 C#语言编译器和库文件源码
💻 SH
字号:
#!/bin/bash# Script to automate the building of mono and its dependencies on# cygwin.  Relies on wget being installed (could make it fall back to# using lynx, links, w3, curl etc), assumes that gcc, make, tar,# automake, etc are already installed too (may be worth testing for# all that right at the top and bailing out if missing/too old/too new# etc).# See where we are.  This will become the top level directory for the# installation, unless we are given an alternative locationhere=$1test -z "$here" && here=`pwd`echo "Building Mono and dependencies in $here, installing to $here/install"PATH=$here/install/bin:$here/install/lib:$PATH# Make sure cygwin's libiconv is installed, or libtool blows its tiny mindif [ ! -f /usr/lib/libiconv.la ]; then    echo "You need to install the cygwin \"libiconv\" package!"    exit -1fi# 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@anoncvs.go-mono.com:/monoexport CVSROOTecho "Updating mono"# cvs checkout does the same as cvs update, except that it copes with# new modules being added# Older versions of cvs insist on a cvs login for :pserver: methods# Make sure cvs is using ssh for :ext: methodsif [ ${CVSROOT:0:5} = ":ext:" ]; then    CVS_RSH=ssh    export CVS_RSHelif [ ${CVSROOT:0:9} = ":pserver:" ]; then    if ! grep $CVSROOT ~/.cvspass > /dev/null 2>&1 ; then	echo "Logging into CVS server.  Anonymous CVS password is probably empty"	cvs login || exit -1    fificvs checkout mono || exit -1echo "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 -1else	echo "Automake version new enough."fi# 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.# --print-ac-dir was added in 1.2h according to the ChangeLog.  This# should mean that any automake new enough for us has it.# This sets ACLOCAL_FLAGS to point to the freshly installed pkgconfig# if it doesnt already exist on the system (otherwise auto* breaks if# 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). 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_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 existsif aclocal_scan pkg.m4 ; then    install_pkgconfig=noelse    install_pkgconfig=yesfi# But we still need to use the mingw libs for glib & coACLOCAL_FLAGS="-I $here/install/share/aclocal $ACLOCAL_FLAGS"export PATHexport ACLOCAL_FLAGS# Grab pkg-config, glib etcif [ ! -d $here/install ]; then    mkdir $here/install || exit -1fi# Fetch and install pkg-config, glib, iconv, intlif [ $install_pkgconfig = "yes" ]; then    install_package pkgconfig-0.11-20020310.zip bin/pkg-config.exe pkgconfigelse    echo "Not installing pkgconfig, you already seem to have it installed"fiinstall_package glib-2.0.4-20020703.zip lib/libglib-2.0-0.dll glibinstall_package glib-dev-2.0.4-20020703.zip lib/glib-2.0.lib glib-devinstall_package libiconv-1.7.zip lib/iconv.dll iconvinstall_package libintl-0.10.40-20020101.zip lib/libintl-1.dll intlinstall_package libgc-dev.zip lib/gc.dll gc-devif [ $install_pkgconfig = "no" ]; then    echo "Fixing up the pkgconfig paths"    for i in $here/install/lib/pkgconfig/*.pc    do	mv $i $i.orig	sed -e "s@^prefix=/target\$@prefix=$here/install@" < $i.orig > $i    done    export PKG_CONFIG_PATH=$here/install/lib/pkgconfigfi# Needed to find the libgc bitsCPPFLAGS="$CPPFLAGS -I$here/install/include"LDFLAGS="$LDFLAGS -L$here/install/lib"export CPPFLAGSexport LDFLAGS# Make sure we build native w32, not cygwin#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# '/' to avoid quoting issues during the build.prefix=`cygpath -w $here/install | sed -e 's@\\\\@/@g'`# Build and install monoecho "Building and installing mono"(cd $here/mono; ./autogen.sh --prefix=$prefix || exit -1; make || exit -1; make install || exit -1) || exit -1echo ""echo ""echo "All done."echo "Add $here/install/bin and $here/install/lib to \$PATH"echo "Don't forget to copy the class libraries to $here/install/lib"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -