development/x86-mingw32-build: Added (Minimalistic GNU for Windows)

Signed-off-by: dsomero <xgizzmo@slackbuilds.org>
This commit is contained in:
Roberto Metere 2012-06-30 12:31:26 -04:00 committed by dsomero
parent b1aabf801d
commit 0e2c27359e
5 changed files with 355 additions and 0 deletions

View file

@ -0,0 +1,32 @@
MinGW cross compiler for Linux build environment
As of this writing, the MinGW Project does not support any official
build of GCC, more recent than GCC-3.4.5, for use as a cross hosted
MinGW development tool, on any platform. This is unlikely to change,
until after an officially supported stable GCC-4.x version has been
released, for native use on the MS-Windows platform.
This slackbuild will compile MinGW with
GCC: 3.4.5
Binutils: 2.20.1
MinGW Runtime: 3.18
W32Api: 3.14
GCC packages included are:
ada (no)
c++ (yes)
f77 (yes)
java (yes)
objc (yes)
If you're planning to compile MinGW with different versions of the
packages, like GCC-4.4.0 (stable), you might download them before in
a specified directory. In this case you might want to modify the
configuration file "x86-mingw32-build.sh.conf".
Moreover, if you're planning to disable/enable some GCC package, like
disabling "java" or "objc", just modify the configuration file
"x86-mingw32-build.sh.conf" commenting or not the corresponding lines,
which are very easy to find.
Actually "ada" gave me some problem and I disabled it from this
SlackBuild.

View file

@ -0,0 +1,19 @@
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.
|-----handy-ruler------------------------------------------------------|
x86-mingw32-build: MinGW (Minimalistic GNU for Windows)
x86-mingw32-build:
x86-mingw32-build: MinGW is a collection of freely available and freely
x86-mingw32-build: distributable Windows specific header files and import
x86-mingw32-build: libraries combined with GNU toolsets that allow one to produce
x86-mingw32-build: native Windows programs that do not rely on any 3rd-party C
x86-mingw32-build: runtime DLLs.
x86-mingw32-build:
x86-mingw32-build:
x86-mingw32-build:
x86-mingw32-build:

View file

@ -0,0 +1,119 @@
#!/bin/sh
# Slackware build script for x86-mingw32-build
# Copyright (c) 2010 Roberto Metere. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are
# met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PRGNAM=x86-mingw32-build
VERSION=1.0.1
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i486 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
CWD=$(pwd)
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i486" ]; then
SLKCFLAGS="-O2 -march=i486 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
tar -xvf $CWD/$PRGNAM-$VERSION-sh.tar.*
cd $PRGNAM-$VERSION
chown -R root:root .
chmod -R a-s,u+w,go+r-w .
# Creating the configuration script
CONF_SCRIPT=$CWD/x86-mingw32-build.sh.conf
CONF_SCRIPT_WDIR=/$TMP/$PRGNAM/mingw32
CONF_SCRIPT_PDIR=$CWD
CONF_SCRIPT_IDIR=$PKG/usr/share/mingw32
cat ${CONF_SCRIPT}_src_1 > $CONF_SCRIPT
echo " assume WORKING_DIR $CONF_SCRIPT_WDIR" >> $CONF_SCRIPT
echo " assume PACKAGE_DIR $CONF_SCRIPT_PDIR" >> $CONF_SCRIPT
echo " assume INSTALL_DIR $CONF_SCRIPT_IDIR" >> $CONF_SCRIPT
cat ${CONF_SCRIPT}_src_2 >> $CONF_SCRIPT
# Patch configuration and script files overwriting slackbuild-ready files
cp $CONF_SCRIPT .
sh x86-mingw32-build.sh \
--unattended
# Link the binaries to the /usr/bin directory
cd $PKG/usr/share/mingw32/bin/
BINARY_LIST=`ls | grep '-'`
cd $TMP
mkdir -p $PKG/usr/bin
cd $PKG/usr/bin
for i in $BINARY_LIST
do
# They MUST be relative
ln -sf "../share/mingw32/bin/$i" $i
done
cd $TMP/$PRGNAM-$VERSION
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mv $PKG/usr/share/mingw32/man $PKG/usr
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
# Don't clobber out stock man pages.
rm -rf $PKG/usr/man/man7
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING LICENSE README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}

View file

@ -0,0 +1,26 @@
PRGNAM="x86-mingw32-build"
VERSION="1.0.1"
HOMEPAGE="http://www.mingw.org/"
DOWNLOAD="http://downloads.sourceforge.net/project/mingw/Other/Cross-Hosted%20MinGW%20Build%20Tool/x86-mingw32-build-1.0.1-rc1/x86-mingw32-build-1.0.1-sh.tar.bz2 \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/binutils/binutils-2.20.1/binutils-2.20.1-src.tar.gz \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/mingw-rt/mingwrt-3.18/mingwrt-3.18-mingw32-src.tar.gz \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/w32api/w32api-3.14/w32api-3.14-mingw32-src.tar.gz \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/gcc/Version3/Previous%20Release_%20gcc-3.4.5-20060117-2/gcc-objc-3.4.5-20060117-2-src.tar.gz \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/gcc/Version3/Previous%20Release_%20gcc-3.4.5-20060117-2/gcc-java-3.4.5-20060117-2-src.tar.gz \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/gcc/Version3/Previous%20Release_%20gcc-3.4.5-20060117-2/gcc-g77-3.4.5-20060117-2-src.tar.gz \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/gcc/Version3/Previous%20Release_%20gcc-3.4.5-20060117-2/gcc-g%2B%2B-3.4.5-20060117-2-src.tar.gz \
http://downloads.sourceforge.net/project/mingw/MinGW/Base/gcc/Version3/Previous%20Release_%20gcc-3.4.5-20060117-2/gcc-core-3.4.5-20060117-2-src.tar.gz"
MD5SUM=" e637fac77ddd09103c136e0ca791cb75 \
dd70eff338497b3c9fa1f9f964d5cd26 \
34b54cb3379f871f0dcd5c20b69b0350 \
c31baedaf2a8d38874e056a112a4fbc8 \
2bffc1e314f2efb1034b3d3ea1ce2f7d \
96b039f4e11bff4d3d8a4e7da6e3998d \
57d489658743f0d9048e440b312740c8 \
ca81c8420ab9d1d05ff9c73a9d4f7d63 \
d0dc9d57d493889bc1ca88b127290b9d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
MAINTAINER="Roberto Metere"
EMAIL="roberto@metere.it"
APPROVED="dsomero"

View file

@ -0,0 +1,159 @@
# x86-mingw32-build.sh.conf -*- sh -*- vim: filetype=sh
# $Id: x86-mingw32-build.sh.conf,v 1.10 2010/03/10 22:16:55 keithmarshall Exp $
#
# Define user configurable parameters for mingw32 cross-compiler build.
#
# This file is a component of the x86-mingw32-build script; it is not
# intended for stand alone use.
#
# x86-mingw32-build is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2, or (at your option) any later
# version.
#
# x86-mingw32-build is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
# for further details.
#
# You should have received a copy of the GNU General Public License along
# with x86-mingw32-build; see the file COPYING. If not, write to the Free
# Software Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301,
# USA.
#
#
# 1) Whether the build script should run interactively, or unattended;
# change this ONLY if you wish to PERMANENTLY disable interactive
# operation; it may be overridden on a per-invocation basis, by
# invoking the script with the `--unattended' option.
#
assume BUILD_METHOD interactive
#
# 2) The preferred host, from which to download source packages.
# Note that this will not resolve to an acceptable host, without
# modification; substitute one of the host names selected from
# the `x86-mingw32-build.sh.hosts' file for the `mirror' field
# in the following URL, to establish a default download host.
#
assume DOWNLOAD_HOST http://prdownloads.sourceforge.net/mingw
assume DOWNLOAD_OPTIONS '?download&use_mirror=mirror'
#
# 3) Directories to use for temporary working space, package storage,
# and ultimate compiler installation. You should adjust these to
# match your own host configuration; note that you MUST have WRITE
# permission for each directory specified.
#
assume WORKING_DIR //tmp/SBo/x86-mingw32-build/mingw32
assume PACKAGE_DIR /home/gizzmo/build/stage1/x86-mingw32-build
assume INSTALL_DIR /tmp/SBo/package-x86-mingw32-build/usr/share/mingw32
#
# 4) Package versions, from which the compiler will be built.
#
assume GCC_VERSION 3.4.5-20060117-2
assume BINUTILS_VERSION 2.20.1
assume RUNTIME_VERSION 3.18
assume W32API_VERSION 3.14
#
# 5) Automatic patching of downloaded packages: if any appropriately
# named patch sets are placed in the nominated patches directory,
# they will be automatically applied, when the package archive is
# expanded. Patches are associated with their related package by
# naming convention; i.e. `binutils-<version>-patch-<nn>' will be
# associated with the `binutils-<version>-src' package. Multiple
# patches may be associated with any single source package; they
# will be applied in increasing order of the <nn> serialisation
# suffix, (which should ideally be a two digit number).
#
# All patches should be prepared consistently, assuming that they
# will be applied with the current working directory being that in
# which the package archive is expanded, using a patch command of
# the form `patch $PATCHFLAGS < $PATCHES_DIR/<patch-file>'.
#
assume PATCHFLAGS -p0
assume PATCHES_DIR $PACKAGE_DIR/patches
#
# 6) Components to be built. These are listed in the order they
# should be built; DO NOT CHANGE IT! If you wish to omit any
# component, you may comment it out.
#
option BUILD_COMPONENTS headers
option BUILD_COMPONENTS binutils
option BUILD_COMPONENTS gcc
option BUILD_COMPONENTS w32api
option BUILD_COMPONENTS mingw-runtime
#
# 7) GCC language options. The compiler MUST be built to support
# at least `C' language.
#
assume GCC_LANGUAGE_SET c
#
# Support for other languages is available at the user's option;
# for interactive use, any of the following may be selected at
# run time; for batch use, ALL listed here will be selected, if
# the corresponding package is available in the PACKAGE_DIR, or
# if it is selected for download.
#
# option GCC_LANGUAGE_OPTIONS ada
option GCC_LANGUAGE_OPTIONS c++
option GCC_LANGUAGE_OPTIONS f77
option GCC_LANGUAGE_OPTIONS java
option GCC_LANGUAGE_OPTIONS objc
#
# 8) User preferences for configuration options. These have been
# preconfigured to match the setup of the prebuilt compiler suite,
# as distributed by the MinGW Project, for native use on MS-Win32
# hosts; comment out any which you do not want to apply, for your
# cross-compiler build.
#
# Note: DO NOT add `--enable-languages=...' to any `USER' or `BASE'
# options class; this is properly defined by `GCC_LANGUAGE_OPTIONS',
# as specified above.
#
# Caution: DO NOT add `--with-sysroot=...' to any `USER' or `BASE'
# options class. `--with-sysroot=$INSTALL_DIR' is hardwired in the
# build script; tampering with it here may damage the build.
#
option GLOBAL_USER_OPTIONS --disable-nls
option GLOBAL_USER_OPTIONS --disable-shared
option GLOBAL_USER_OPTIONS --disable-debug
#
option GCC_USER_OPTIONS --enable-sjlj-exceptions
#
# 9) Standard settings, as used for the prebuilt Win32 native compiler
# suite. Only advanced users should tinker with these settings.
#
option GLOBAL_BASE_OPTIONS --with-gcc
option GLOBAL_BASE_OPTIONS --with-gnu-as
option GLOBAL_BASE_OPTIONS --with-gnu-ld
#
option GCC_BASE_OPTIONS --enable-threads=win32
option GCC_BASE_OPTIONS --disable-win32-registry
#
option GCC_JAVA_BASE_OPTIONS --enable-libgcj
option GCC_JAVA_BASE_OPTIONS --disable-libgcj-debug
option GCC_JAVA_BASE_OPTIONS --disable-java-awt
option GCC_JAVA_BASE_OPTIONS --enable-java-gc=boehm
option GCC_JAVA_BASE_OPTIONS --enable-interpreter
option GCC_JAVA_BASE_OPTIONS --enable-hash-synchronization
option GCC_JAVA_BASE_OPTIONS --without-x
#
option CFLAGS_FOR_BINUTILS -O2
option CFLAGS_FOR_BINUTILS -fno-exceptions
#
option LDFLAGS_FOR_BINUTILS -s
#
option CFLAGS_FOR_GCC -O2
option CFLAGS_FOR_GCC -fomit-frame-pointer
#
option LDFLAGS_FOR_GCC -s
#
# CFLAGS_FOR_RUNTIME and LDFLAGS_FOR_RUNTIME are applied when building
# both the mingw-runtime and the w32api libraries:--
#
option CFLAGS_FOR_RUNTIME -O2
option CFLAGS_FOR_RUNTIME -mms-bitfields
option CFLAGS_FOR_RUNTIME -march=${TARGET_CPU-i386}
#
option LDFLAGS_FOR_RUNTIME -s
#
# $RCSfile: x86-mingw32-build.sh.conf,v $Revision: 1.10 $: end of file