TARGET=mingw32
cwd=`pwd`
+
cd ${TOPDIR}
# Make TOPDIR absolute
TOPDIR=`pwd`
-BUILDDIR=${TOPDIR}/${CROSSTOOLS}
+
+cd ${cwd}/`dirname $0`
+SCRIPTDIR=`pwd`
cd ${cwd}
+BUILDDIR=${TOPDIR}/${CROSSTOOLS}
+
# Where does the cross-compiler go?
# This should be the directory into which your cross-compiler
# will be installed. Remember that if you set this to a directory
# You need to set both the URL they will be downloaded from
# and the exact name of the individual component files.
-MINGW_URL="http://heanet.dl.sourceforge.net/sourceforge/mingw"
+MINGW_URL="http://superb-west.dl.sourceforge.net/sourceforge/mingw"
# GCC_CORE is required; the other components are optional.
# Set any you don't want to "". You need binutils,
W32API_ARCHIVE="w32api-3.7.tar.gz"
+MINGW_UTILS_ARCHIVE="mingw-utils-0.3-src.tar.gz"
# These are the files from the SDL website
# These are optional, set them to "" if you don't want them)
#-----------------------------------------------------
-function download_files
+download_files()
{
# Download a file from a given url, only if it is not present
mkdir -p "$SRCDIR"
download_file "$MINGW_ARCHIVE" "$MINGW_URL"
download_file "$W32API_ARCHIVE" "$MINGW_URL"
+ if [ "x$MINGW_UTILS_ARCHIVE" != "x" ]; then
+ download_file "$MINGW_UTILS_ARCHIVE" "$MINGW_URL"
+ fi
+
if [ "x$OPENGL_ARCHIVE" != "x" ]; then
download_file "$OPENGL_ARCHIVE" "$SDL_URL"
fi
}
-function download_file
+download_file()
{
cd "$SRCDIR"
if test ! -f $1 ; then
}
-function purge_existing_install
+purge_existing_install()
{
echo "Purging the existing files in $PREFIX"
if cd "$PREFIX"; then
}
-function install_libs
+install_libs()
{
echo "Installing cross libs and includes"
mkdir -p "$PREFIX/$TARGET"
}
-function extract_binutils
+extract_binutils()
{
cd "$SRCDIR"
BINUTILS=`tar -tzf "$SRCDIR/$BINUTILS_ARCHIVE" | head -n 1`
}
-function configure_binutils
+configure_binutils()
{
cd "$BUILDDIR"
rm -rf "binutils-$TARGET"
cd "binutils-$TARGET"
echo "Configuring binutils"
"$SRCDIR/$BINUTILS/configure" --prefix="$PREFIX" --target=$TARGET --disable-nls \
- --with-gcc --with-gnu-as --with-gnu-ld --disable-shared &> configure.log
+ --with-gcc --with-gnu-as --with-gnu-ld --disable-shared 2>&1 > configure.log
cd "$BUILDDIR"
}
-function build_binutils
+build_binutils()
{
cd "$BUILDDIR/binutils-$TARGET"
echo "Building binutils"
- make CFLAGS="-O2 -fno-exceptions" LDFLAGS="-s" &> make.log
+ make CFLAGS="-O2 -fno-exceptions" LDFLAGS="-s" 2>&1 > make.log
if test $? -ne 0; then
echo "make of binutils failed - log available: binutils-$TARGET/make.log"
exit 1
}
-function install_binutils
+install_binutils()
{
cd "$BUILDDIR/binutils-$TARGET"
echo "Installing binutils"
- make install &> make-install.log
+ make install 2>&1 > make-install.log
if test $? -ne 0; then
echo "install of binutils failed - log available: binutils-$TARGET/make-install.log"
exit 1
}
-function extract_gcc
+extract_gcc()
{
cd "$SRCDIR"
GCC=`tar -tzf "$SRCDIR/$GCC_CORE_ARCHIVE" | head -n 1`
}
-function patch_gcc
+patch_gcc()
{
if [ "$GCC_PATCH" != "" ]; then
echo "Patching gcc"
}
-function configure_gcc
+configure_gcc()
{
cd "$BUILDDIR"
rm -rf "gcc-$TARGET"
--disable-win32-registry --disable-shared --enable-sjlj-exceptions --enable-libgcj \
--disable-java-awt --without-x --enable-java-gc=boehm --disable-libgcj-debug \
--enable-interpreter --enable-hash-synchronization --enable-libstdcxx-debug \
- &> configure.log
+ 2>&1 > configure.log
cd "$BUILDDIR"
}
-function build_gcc
+build_gcc()
{
cd "$BUILDDIR/gcc-$TARGET"
echo "Building gcc"
- make CFLAGS="-O2" CXXFLAGS="-O2" GCJFLAGS="-O2" LDFLAGS="-s" DEBUG_FLAGS="-g0" &> make.log
+ make CFLAGS="-O2" CXXFLAGS="-O2" GCJFLAGS="-O2" LDFLAGS="-s" DEBUG_FLAGS="-g0" 2>&1 > make.log
if test $? -ne 0; then
echo "make of gcc failed - log available: gcc-$TARGET/make.log"
exit 1
fi
if [ "x$GCC_ADA" != "x" ]; then
cd gcc
- make "CFLAGS=-O2" "LDFLAGS=-s" gnatlib_and_tools &> make-gnatlib.log
+ make "CFLAGS=-O2" "LDFLAGS=-s" gnatlib_and_tools 2>&1 > make-gnatlib.log
if test $? -ne 0; then
echo "make of gnatlib and tools failed - log available: gcc-$TARGET/make-gnatlib.log"
exit 1
}
-function install_gcc
+install_gcc()
{
cd "$BUILDDIR/gcc-$TARGET"
echo "Installing gcc"
- make install &> make-install.log
+ make install 2>&1 > make-install.log
if test $? -ne 0; then
echo "install of gcc failed - log available: gcc-$TARGET/make-install.log"
exit 1
}
-function final_tweaks
+extract_mingw_utils()
+{
+ cd "$SRCDIR"
+ MINGW_UTILS=`tar -tzf "$SRCDIR/$MINGW_UTILS_ARCHIVE" | head -n 1`
+ if [ "x${MINGW_UTILS}" != "x./" ]; then
+ rm -rf "$MINGW_UTILS"
+ fi
+ echo "Extracting mingw-utils"
+ tar -xzf "$SRCDIR/$MINGW_UTILS_ARCHIVE"
+ cd "$BUILDDIR"
+}
+
+
+patch_mingw_utils()
+{
+ MINGW_UTILS=`tar -tzf "$SRCDIR/$MINGW_UTILS_ARCHIVE" | head -n 1`
+ cd "${SRCDIR}/${MINGW_UTILS}"
+ echo "Patching mingw-utils"
+ patch -p0 < ${SCRIPTDIR}/patches/mingw-utils.patch 2>&1 > patch.log
+ cd "$BUILDDIR"
+}
+
+
+configure_mingw_utils()
+{
+ cd "$BUILDDIR"
+ rm -rf "mingw-utils"
+ mkdir "mingw-utils"
+ cd "mingw-utils"
+ echo "Configuring mingw-utils"
+ "$SRCDIR/$MINGW_UTILS/configure" --disable-nonportable --prefix="${PREFIX}/${TARGET}" 2>&1 > configure.log
+ cd "$BUILDDIR"
+}
+
+
+build_mingw_utils()
+{
+ cd "$BUILDDIR/mingw-utils"
+ echo "Building mingw-utils"
+ make CFLAGS="-O2 -fno-exceptions" LDFLAGS="-s" 2>&1 > make.log
+ if test $? -ne 0; then
+ echo "make of mingw-utils failed - log available: mingw-utils/make.log"
+ exit 1
+ fi
+ cd "$BUILDDIR"
+}
+
+
+install_mingw_utils()
+{
+ cd "$BUILDDIR/mingw-utils"
+ echo "Installing mingw-utils"
+ make install 2>&1 > make-install.log
+ if test $? -ne 0; then
+ echo "install of mingw-utils failed - log available: mingw-utils/make-install.log"
+ exit 1
+ fi
+ cd "$BUILDDIR"
+}
+
+
+final_tweaks()
{
echo "Finalizing installation"
if [ ! -f "$PREFIX/$TARGET/bin/objdump" ]; then
ln "$PREFIX/bin/$TARGET-objdump" "$PREFIX/$TARGET/bin/objdump"
fi
+ if [ ! -f "$PREFIX/$TARGET/bin/dllwrap" ]; then
+ ln "$PREFIX/bin/$TARGET-dllwrap" "$PREFIX/$TARGET/bin/dllwrap"
+ fi
# make cc and c++ symlinks to gcc and g++
if [ ! -f "$PREFIX/$TARGET/bin/g++" ]; then
build_gcc
install_gcc
+if test -n "${MINGW_UTILS_ARCHIVE}"; then
+ extract_mingw_utils
+ patch_mingw_utils
+ configure_mingw_utils
+ build_mingw_utils
+ install_mingw_utils
+fi
+
final_tweaks