This is the mail archive of the
cygwin@cygwin.com
mailing list for the Cygwin project.
Now uploaded: gcc-3.3.1, with gnat, java, c++, fortran, objc and c
- From: "Gerrit P. Haase" <gp at familiehaase dot de>
- To: cygwin at cygwin dot com
- Date: Sun, 17 Aug 2003 12:22:16 +0200
- Subject: Now uploaded: gcc-3.3.1, with gnat, java, c++, fortran, objc and c
- Organization: Esse keine toten Tiere
- Reply-to: "Gerrit P. Haase" <gp at familiehaase dot de>
Hallo,
gcc-3.3.1 binaries are uploaded: http://anfaenger.de/cygwin-1.5/gcc
(Note that the the source package is still uploading now, please fetch
the original 3.3.1 source package or the 3.3 source and 3.3-3.3.1.diff
from one of the original GCC mirrors -> http://gcc.gnu.org/mirrors.html
The README at this site:
GCC 3.3.1 for Cygwin >= 1.5.2
=============================
This is my private compiler which I run just for fun, don't use it,
build it yourself, that is the most fun;)
Enabled languages: c,c++,f77,objc,ada,java
What is here in this directory:
===============================
README
This file
Binaries:
There is one big package which includes everything, executables
are stripped:
gcc-3.3.1-76.tar.bz2
There are also several packages with the different backends separated,
if you fetch all the small packages, you'll get the same as included
in the one big package (besides the binaries are not stripped here):
Core includes C compiler, is needed always:
gcc-core-3.3.1-76.tar.bz2
Language backends:
gcc-ada-3.3.1-76.tar.bz2
gcc-c++-3.3.1-76.tar.bz2
gcc-f77-3.3.1-76.tar.bz2
gcc-java-3.3.1-76.tar.bz2
gcc-objc-3.3.1-76.tar.bz2
The source:
gcc-3.3-src.tar.bz2
gcc-3.3-3.3.1.diff.bz2
The diff is the original diff file fetched from one of the gcc mirrors,
applying it to gcc-3.3 will result in gcc-3.3.1. But you may want to
use one of the GCC mirrors to get the source from since this server
has *very* limited bandwidth -> http://gcc.gnu.org/mirrors.html
The patch against this source:
gcc-3.3.1-76.patch.bz2
Cygwin GNAT binary package which I used to build Cygwin 1.5.2 GNAT
gcc-ada-3.2.tar.bz2
This includes the C and the Ada backend and I think it cannot be used
to bootstrap gcc-3.3.1 (the Ada part is working, the C part not...)
with Cygwin 1.5.2. For details please see HOWTO below.
Build the source, quickstart:
Unpack the source package
tar xjf gcc-3.3-src.tar.bz2
Unpack the diff
bunzip2 gcc-3.3-3.3.1.diff.bz2
Apply the diff
cd gcc-3.3
patch -p1<../gcc-3.3-3.3.1.diff
cd ..
Unpack the patch and rename the source directory
mv gcc-3.3 gcc-3.3.1
bunzip2 gcc-3.3.1-76.patch.bz2
cd gcc-3.3.1
patch -p1 <../gcc-3.3.1-76.patch
cd ..
Run the four scripts in this order:
gcc-conf.sh
gcc-bootstrap.sh
gcc-ada-bootstrap.sh
gcc-inst.sh
HOWTO build GNAT for Cygwin 1.5.2 with David's GNAT
1.
Get a Cygwin ADA compiler gcc-3.2, built from David Billinghurst using
a Win32 version here: http://www.geocities.com/billingd2002/gnat/, or
the version I modified to fit in one package which installs into the
correct path when extracted from root and where I renamed gcc.exe to
gnatgcc.exe because I was not able to use this 'old' gcc-3.2 to compile
gcc-3.3.1:
$ wget http://anfaenger.de/cygwin/gcc/gcc-ada-3.2.tar.bz2
This means you'll have two different GCC installations, one default
and one with ADA backend in /usr/local/gcc-3_2.
2.
Unpack the ADA package from your Cygwin root:
$ ( cd / ; tar xjf /path/gcc-ada-3.2.tar.bz2 )
it installs into /usr/local/gcc-3_2.
(Rename gcc.exe to gnatgcc.exe if you use David's original packages
before removing files!)
Remove all from /usr/local/gcc-3_2/bin besides gnatbind.exe,
gnatgcc.exe and gnatlink.exe.
3.
Add the /usr/local/gcc-3_2/bin directory to your PATH:
$ export PATH=/usr/local/gcc-3_2/bin:$PATH
4.
Get GCC 3.3.1 sources: http://gcc.gnu.org/mirrors.html
Unpack it to /somewhere/you/like, change the location in the scripts
below to match your local source path.
5.
Apply the Cygwin/Mingw32 patch (initial great work by Danny Smith,
slightly enhanced by Gerrit P. Haase):
$ wget http://anfaenger.de/cygwin-1.5/gcc/gcc-3.3.1-76.patch.bz2
$ bunzip2 /path/to/gcc-3.3.1-76.patch.bz2
$ ( cd gcc-3.3.1 ; patch -p1</path/to/gcc-3.3.1-76.patch )
Modified by me:
- boehm-gc updated to 6.2
- '#include "tm.h"' in cygwin2.c removed
- problems when compiling libjava: gethostname() detection by configure
fails, wrong detection of inet6 structures which are actually not yet
implemented in Cygwin. Wrong pathseparator for bootclasspath problem.
- Problem with Ada Makefiles, gnatmake is used to generate docs during
the build before you have a working gnatmake, I removed this.
6.
Configure.
I use this script to configure:
===============================
#!/bin/sh
# modify to your needs
export builddir=/tmp/gcc/gcc-build
export gccsrc=/tmp/gcc/gcc-3.3.1
export inst=/tmp/gcc/inst
mkdir -p old/
mv ${builddir} old/
mv ${inst} old/
mkdir -m 777 -p ${builddir}
mkdir -m 777 -p ${inst}
cd ${builddir}
${gccsrc}/configure \
--with-gcc \
--with-gnu-ld \
--with-gnu-as \
--enable-languages=c,c++,f77,objc,ada,java \
--enable-libgcj \
--enable-threads=posix \
--with-system-zlib \
--disable-nls \
--without-included-gettext \
--enable-interpreter \
--disable-sjlj-exceptions \
--disable-version-specific-runtime-libs \
--disable-shared \
--enable-haifa \
--prefix=/usr \
--exec-prefix=/usr \
--sysconfdir=/etc \
--libdir=/usr/lib \
--libexecdir=/usr/sbin \
--disable-win32-registry \
--enable-java-gc=boehm \
--enable-hash-synchronization \
2>&1 | tee log.configure00
# Script end
Doublcheck that configure found the gnatgcc.exe.
Looks like this in the configure output:
...
checking for gnatbind... gnatbind
checking for compiler driver that understands Ada... gnatgcc
...
The --enable-hash-synchronization may be a problem, it is
undefined in libjava's configure.host, but it gets overridden
by this configure flag, at least my Hello.java example below
works with hash-synchronization enabled, if you get problems,
try to rebuild without this flag or tell me how to reproduce
the problem and I'll build again with hash-syncronisation
disabled.
7.
Bootstrap.
I use this script to bootstrap:
===============================
#!/bin/sh
export builddir=/tmp/gcc/gcc-build
export gccsrc=/tmp/gcc/gcc-3.3.1
export inst=/tmp/gcc/inst
# This is needed, the manual says you need it if using a minimal
# Ada compiler which we are going to do here.
cd ${gccsrc}/gcc/ada
touch treeprs.ads [es]info.h nmake.ad[bs]
cd ${builddir}
# Want 8MB stack because the default on Cygwin
# with 2MB is too small.
make "CFLAGS=-O2" \
"GCJFLAGS=-O2" \
"LDFLAGS=-s -Wl,--stack=0x00800000" \
bootstrap \
2>&1 | tee ${builddir}/log.bootstrap00
# Script end
NOTE:
If the make ends with an error, don't start the same script
again, this breaks the Ada build, some Ada objects will be
recompiled which is superflous and also failed for me. So if
the build stocks, fix the problem and run 'cleanstrap' instead
of 'bootstrap' to restart from scratch, or if the bootstrap
already was finished, run 'quickstrap' instead of 'bootstrap',
just change the target in the above script, or copy it to
another script with another name and another target.
8.
Extra compile step after bootstrap for Ada lib and tools.
I use this script:
==================
#!/bin/sh
export builddir=/tmp/gcc/gcc-build
export gccsrc=/tmp/gcc/gcc-3.3.1
export inst=/tmp/gcc/inst
cd ${builddir}/gcc
make "CFLAGS=-O2" \
"LDFLAGS=-s" \
gnatlib_and_tools \
2>&1 | tee ${builddir}/log.ada-bootstrap00
# Script end
9.
Install.
I use this script:
==================
#!/bin/sh
export builddir=/tmp/gcc/gcc-build
export gccsrc=/tmp/gcc/gcc-3.3.1
export inst=/tmp/gcc/inst
cd ${builddir}
make install prefix=${inst}/usr exec_prefix=${inst}/usr \
bindir=${inst}/usr/bin libdir=${inst}/usr/lib \
sysconfdir=${inst}/etc includedir=${inst}/usr/include \
tooldir=${inst}/usr 2>&1 | tee log.install00
rm -f ${inst}/usr/info/dir
cd ${inst}
# I don't strip the binaries for now
# find . -name "*.exe" | xargs strip
tar -cjf gcc-3.3.1-76.tar.bz2 usr/
# Script end
10.
Use it.
$ ( cd / ; tar xjvf ${inst}/gcc-3.3.1-76.tar.bz2 )
#! /bin/sh
# ultra minimalistic compiler test gcc-3.3.1
set -x
# GNAT:
echo 'with Text_Io; use Text_Io;' > hello.adb
echo 'procedure hello is' >> hello.adb
echo 'begin' >> hello.adb
echo ' put ("Hello world!");' >> hello.adb
echo 'end hello;' >> hello.adb
/usr/bin/gnatmake hello
./hello
# GCJ:
echo 'public class Hello_j {' > Hello_j.java
echo 'public static void main(String[] args) {' >> Hello_j.java
echo ' System.out.println("Just another Java hacker,");' >> Hello_j.java
echo ' }' >> Hello_j.java
echo '}' >> Hello_j.java
/usr/bin/gcj --main=Hello_j Hello_j.java -o Hello_j
./Hello_j
# G++:
echo '#include<iostream>' > pointersize.cc
echo 'using namespace std;' >> pointersize.cc
echo '#define VOID_PTR void *' >> pointersize.cc
echo 'int main() {' >> pointersize.cc
echo ' cout << "__CYGWIN__ pointer size is: " << (int)sizeof(VOID_PTR) << "\n";' >> pointersize.cc
echo '}' >> pointersize.cc
/usr/bin/g++ -o pointersize pointersize.cc
./pointersize
# G77:
echo ' print *,"Hello world!"' > hello.f
echo ' end' >> hello.f
/usr/bin/g77 -o hello_f hello.f
./hello_f
# OBJC
echo '/* hello.m' > hello.m
echo ' * gcc -o hello hello.m -lobjc' >> hello.m
echo ' */' >> hello.m
echo 'main()' >> hello.m
echo '{' >> hello.m
echo ' printf("Hello World,\n");' >> hello.m
echo '}' >> hello.m
/usr/bin/gcc -o hello_o hello.m -lobjc
./hello_o
# C
echo '#include <stdio.h>' > hello.c
echo 'int main() {' >> hello.c
echo ' puts("hello, world");' >> hello.c
echo ' return 0;' >> hello.c
echo '}' >> hello.c
/usr/bin/gcc -o hello_c hello.c
./hello_c
Hurra, it works!
Now after it works for me(tm), you can also fetch the binary
of gcc-3.3.1 which was created during this README was written
to get an Ada compiler for Cygwin.
Fetch it here: http://anfaenger.de/cygwin-1.5/gcc/
Gerrit P. Haase, 2003-08-17, <gp at familiehaase dot de>
--
=^..^=
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/