summaryrefslogtreecommitdiff
path: root/hurd/building/cross-compiling.mdwn
diff options
context:
space:
mode:
Diffstat (limited to 'hurd/building/cross-compiling.mdwn')
-rw-r--r--hurd/building/cross-compiling.mdwn167
1 files changed, 56 insertions, 111 deletions
diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn
index c5dddfb6..d5beade9 100644
--- a/hurd/building/cross-compiling.mdwn
+++ b/hurd/building/cross-compiling.mdwn
@@ -21,10 +21,14 @@ Find it in the [[source repositories/incubator]], *cross-gnu* branch.
Read through it. Understand it. Only then use it by following the next steps.
-/!\ Be made aware that -- while it is of course possible to build a working
-cross-compiler -- this is not trivial to do. You'll have to patch source
-packages. See the following list about needed patches, which have not yet been
-installed in the upstream repositories.
+
+## Status
+
+/!\ Please note that these cross toolchains does not yet encompass all of the
+functionality that native toolchains provide. For example, there is only
+support for C and C++ so far, but not for other languages. A bunch of fixes /
+enhancements of [[glibc]] are missing. We're working towards minimizing these
+differences, as well as towards pushing all patches upstream.
### Supported Versions of Source Packages
@@ -34,138 +38,95 @@ guarantee is given. Always the preferred version is listed first.
* `src/binutils`: [[GNU_Binutils|binutils]]
- * CVS `binutils-2_19-branch`
-
- $ mkdir binutils-2_19-branch
- $ cd binutils-2_19-branch
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
- co -r binutils-2_19-branch binutils
-
- The sources are rooted in `binutils-2_19-branch/src/`. Also use these
- commands for updating, instead of the usual `cvs update`.
-
- * The 2.19 release tarball from <ftp://ftp.gnu.org/gnu/binutils/> should
- also be fine.
-
- * CVS `binutils-2_18-branch`
+ * CVS `binutils-2_20-branch`
- $ mkdir binutils-2_18-branch
- $ cd binutils-2_18-branch
+ $ mkdir binutils-2_20-branch
+ $ cd binutils-2_20-branch/
$ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩
- co -r binutils-2_18-branch binutils
+ co -r binutils-2_20-branch binutils
- The sources are rooted in `binutils-2_18-branch/src/`. Also use these
+ The sources are rooted in `binutils-2_20-branch/src/`. Also use the above
commands for updating, instead of the usual `cvs update`.
- * The 2.18 release tarball from <ftp://ftp.gnu.org/gnu/binutils/> should
- also be fine, as should be all other recent releases.
+ * Release of the 2.20 series from <ftp://ftp.gnu.org/gnu/binutils/>
+ should also be fine.
* `src/gcc`: [[GNU_Compiler_Collection|gcc]]
- * SVN `gcc-4_1-branch`
+ * SVN `gcc-4_5-branch`
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_1-branch
-
- Prepare:
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch
- $ ( cd gcc-4_1-branch/ && contrib/gcc_update --touch )
+ Patches:
- * Releases of the 4.1 series from <ftp://ftp.gnu.org/gnu/gcc/> should
- also be fine.
-
- * SVN `gcc-4_2-branch`
-
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_2-branch
-
- * Patches:
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00034.html>
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
Prepare:
- $ ( cd gcc-4_2-branch/ && contrib/gcc_update --touch )
+ $ ( cd gcc-4_5-branch/ && contrib/gcc_update --touch )
- * Releases of the 4.2 series from <ftp://ftp.gnu.org/gnu/gcc/> should
- also be fine, but need the same set of patches as the `gcc-4_2-branch`
- needs.
+ * SVN `gcc-4_4-branch`
- * SVN `gcc-4_3-branch`
+ $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch
- $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_3-branch
+ Patches:
- * Patches:
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00034.html>
+ * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html>
Prepare:
- $ ( cd gcc-4_3-branch/ && contrib/gcc_update --touch )
-
- * Releases of the 4.3 series from <ftp://ftp.gnu.org/gnu/gcc/> should
- also be fine, but need the same set of patches as the `gcc-4_3-branch`
- needs.
-
- * SVN `trunk` -- upcoming 4.4 series
+ $ ( cd gcc-4_4-branch/ && contrib/gcc_update --touch )
- $ svn co svn://gcc.gnu.org/svn/gcc/trunk
-
- Prepare:
-
- $ ( cd trunk/ && contrib/gcc_update --touch )
+ * Releases of the 4.5 and 4.4 series from <ftp://ftp.gnu.org/gnu/gcc/>
+ should also be fine, but need the same set of patches as the
+ `gcc-4_5-branch` needs.
* `src/gnumach`: [[GNU_Mach|microkernel/mach/gnumach]]
- * CVS `gnumach-1-branch`
+ * Git `master` branch
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd ↩
- co -r gnumach-1-branch gnumach
- $ mv gnumach gnumach-1-branch
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/gnumach.git gnumach
Prepare:
- $ ( cd gnumach-1-branch/ && autoreconf -vfi )
+ $ ( cd gnumach/ && autoreconf -vi )
* `src/mig`: [[microkernel/mach/mig/GNU_MIG]]
- * CVS `HEAD`
+ * Git `master` branch
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co mig
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/mig.git mig
Prepare:
- $ ( cd mig/ && autoreconf -vfi )
+ $ ( cd mig/ && autoreconf -vi )
* `src/hurd`: [[GNU_Hurd|hurd]]
- * CVS `HEAD`
+ * Git `master` branch
- $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co hurd
+ $ git clone ↩
+ git://git.sv.gnu.org/hurd/hurd.git hurd
- * `src/glibc`: [[GNU_C_Library|glibc]]
-
- * CVS `glibc-2_7-branch`
+ * `src/libpthread`: [[libpthread]]
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc ↩
- co -r glibc-2_7-branch glibc
- $ mv libc glibc-2_7-branch
+ * Git `tschwinge/Peter_Herbolzheimer` branch
- * Patches:
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00030.html>
+ $ git clone --no-checkout ↩
+ git://git.sv.gnu.org/hurd/libpthread.git libpthread
+ $ cd libpthread/
+ $ git checkout origin/tschwinge/Peter_Herbolzheimer
- * Recent releases of the 2.7 series from <ftp://ftp.gnu.org/gnu/glibc/>
- should also be fine, but need the same set of patches as the
- `glibc-2_7-branch` needs.
-
-<!--
-
- * CVS `HEAD`
-
- $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc ↩
- co glibc
- $ mv libc glibc-HEAD
+ * `src/glibc`: [[GNU_C_Library|glibc]]
- * TODO.
- <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00026.html>
+ * Git `tschwinge/Roger_Whittaker` branch
--->
+ $ git clone --no-checkout ↩
+ git://git.sv.gnu.org/hurd/glibc.git glibc
+ $ cd glibc/
+ $ git checkout origin/tschwinge/Roger_Whittaker
<!--
@@ -206,7 +167,7 @@ the following.
The system you're running the script on (the *build* system) needs to have a
basic compiling environment installed, i.e., a C compiler with the basic
libraries and `make`. You might also need `flex` and `bison`. For building
-recent version of GCC (e.g., the upcoming 4.3, which is not yet supported)
+recent version of GCC (4.3 onwards)
you'll need to have development packages of GMP and MPFR installed.
@@ -235,29 +196,13 @@ flow by. In the end you should see a message: *[...]/cross-gnu: Everything
should be in place now.*
-### Makefile
-
-A [[Makefile]] has been written to automate the above steps. You will require
-an Internet connection and atleast 1.5 GiB of hard-disk space. Just run...
-
- make
-
-... to build the toolchain. To clean up, use...
-
- make clean
-
-
### Staying Up-To-Date
You can re-run `cross-gnu` to rebuild the parts of the sources that have
changed since the last run. This will save a lot of time compared to starting
from scratch again. Also, it is especially useful if you aren't working with
-unpacked tarballs, but on CVS's branches or want to quickly get a new tool
-chain with patches you applied to the source trees. However: do *not* use this
+unpacked tarballs, but on CVS's / SVN's / Git's branches or want to quickly get
+a new toolchain
+with patches you applied to the source trees. However: do *not* use this
technique when doing major changes to the source trees, like switching from GCC
-4.0 to GCC 4.1.
-
-
-# References
-
-* <http://lists.gnu.org/archive/html/bug-hurd/2004-09/msg00030.html>
+4.4 to GCC 4.5.