diff options
-rw-r--r-- | hurd/building/cross-compiling.mdwn | 155 |
1 files changed, 56 insertions, 99 deletions
diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn index c5dddfb6..75633d44 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 so far, but not for C++ and 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 + $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch - Prepare: - - $ ( cd gcc-4_1-branch/ && contrib/gcc_update --touch ) - - * Releases of the 4.1 series from <ftp://ftp.gnu.org/gnu/gcc/> should - also be fine. - - * SVN `gcc-4_2-branch` + Patches: - $ 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 - - $ svn co svn://gcc.gnu.org/svn/gcc/trunk + $ ( cd gcc-4_4-branch/ && contrib/gcc_update --touch ) - 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` - - $ cvs -d:pserver:anoncvs@cvs.gnu.org:/cvsroot/hurd co hurd + * Git `master` branch - * `src/glibc`: [[GNU_C_Library|glibc]] - - * CVS `glibc-2_7-branch` + $ git clone ↩ + git://git.sv.gnu.org/hurd/hurd.git hurd - $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/glibc ↩ - co -r glibc-2_7-branch glibc - $ mv libc glibc-2_7-branch + * `src/libpthread`: [[libpthread]] - * Patches: - <http://lists.gnu.org/archive/html/bug-hurd/2007-11/msg00030.html> + * Git `tschwinge/Peter_Herbolzheimer` branch - * 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. + $ git clone --no-checkout ↩ + git://git.sv.gnu.org/hurd/libpthread.git libpthread + $ cd libpthread/ + $ git checkout origin/tschwinge/Peter_Herbolzheimer -<!-- - - * 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. @@ -252,12 +213,8 @@ an Internet connection and atleast 1.5 GiB of hard-disk space. Just run... 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. |