diff options
author | Thomas Schwinge <thomas@schwinge.name> | 2010-10-19 11:57:21 +0200 |
---|---|---|
committer | Thomas Schwinge <thomas@schwinge.name> | 2010-10-19 11:59:57 +0200 |
commit | 3c6af50a5777f78b16b71fbeb28445d4af40ef4a (patch) | |
tree | 19950613cd528cc825b5d923a80c55f5b6fd0154 /hurd/building | |
parent | c66c60403a40b9dd0ea105e63b9a34a4ee56ba84 (diff) |
Reorganize some toolchain pages.
Diffstat (limited to 'hurd/building')
-rw-r--r-- | hurd/building/cross-compiling.mdwn | 205 |
1 files changed, 4 insertions, 201 deletions
diff --git a/hurd/building/cross-compiling.mdwn b/hurd/building/cross-compiling.mdwn index d5beade9..1ecfd0bd 100644 --- a/hurd/building/cross-compiling.mdwn +++ b/hurd/building/cross-compiling.mdwn @@ -1,208 +1,11 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation, -Inc."]] +[[!meta copyright="Copyright © 2010 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable id="license" text="Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license -is included in the section entitled -[[GNU Free Documentation License|/fdl]]."]]"""]] +is included in the section entitled [[GNU Free Documentation +License|/fdl]]."]]"""]] -# `cross-gnu` - -[[Thomas_Schwinge|tschwinge]] has written a shell script for building a -complete cross-build environment for GNU/Hurd systems. - -Find it in the [[source repositories/incubator]], *cross-gnu* branch. - - -## Using - -Read through it. Understand it. Only then use it by following the next steps. - - -## 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 - -The following ones are known to work. Others may work as well, but no -guarantee is given. Always the preferred version is listed first. - - * `src/binutils`: [[GNU_Binutils|binutils]] - - * CVS `binutils-2_20-branch` - - $ mkdir binutils-2_20-branch - $ cd binutils-2_20-branch/ - $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩ - co -r binutils-2_20-branch binutils - - The sources are rooted in `binutils-2_20-branch/src/`. Also use the above - commands for updating, instead of the usual `cvs update`. - - * 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_5-branch` - - $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_5-branch - - Patches: - - * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html> - - Prepare: - - $ ( cd gcc-4_5-branch/ && contrib/gcc_update --touch ) - - * SVN `gcc-4_4-branch` - - $ svn co svn://gcc.gnu.org/svn/gcc/branches/gcc-4_4-branch - - Patches: - - * <http://gcc.gnu.org/ml/gcc-patches/2010-04/msg00602.html> - - Prepare: - - $ ( cd gcc-4_4-branch/ && 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]] - - * Git `master` branch - - $ git clone ↩ - git://git.sv.gnu.org/hurd/gnumach.git gnumach - - Prepare: - - $ ( cd gnumach/ && autoreconf -vi ) - - * `src/mig`: [[microkernel/mach/mig/GNU_MIG]] - - * Git `master` branch - - $ git clone ↩ - git://git.sv.gnu.org/hurd/mig.git mig - - Prepare: - - $ ( cd mig/ && autoreconf -vi ) - - * `src/hurd`: [[GNU_Hurd|hurd]] - - * Git `master` branch - - $ git clone ↩ - git://git.sv.gnu.org/hurd/hurd.git hurd - - * `src/libpthread`: [[libpthread]] - - * Git `tschwinge/Peter_Herbolzheimer` branch - - $ git clone --no-checkout ↩ - git://git.sv.gnu.org/hurd/libpthread.git libpthread - $ cd libpthread/ - $ git checkout origin/tschwinge/Peter_Herbolzheimer - - * `src/glibc`: [[GNU_C_Library|glibc]] - - * 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 - -<!-- - - * `src/gdb`: [[GNU_Debugger|gdb]] - - This is optional and will only be compiled if present. - - * CVS `gdb_6_6-branch` - - $ cvs -d:pserver:anoncvs@sources.redhat.com:/cvs/src ↩ - co -r gdb_6_6-branch gdb - $ mv src gdb_6_6-branch - - Also needs some patch because of MIG changes, if I remember correctly. - - * Recent tarballs from <ftp://ftp.gnu.org/gnu/gdb/> should also work. - ---> - - -### Preparation - -Unpack the tarballs if you downloaded any. - -Create a directory where the cross build shall be rooted in and a `src` -subdirectory in there. Then create symbolic links for every of the above -packages: from `src/PACKAGE` to where you stored or unpacked it. If you don't -intend to build several cross compilers or use the source trees otherwise, you -can also directly store the source trees in `src/`. The source trees can be -shared between multiple cross build trees since the packages' build systems are -supposed not to modify the files in the source trees. Not all packages adhere -to that, but they fail to do so only for pre-processed documentation, etc. - -Either make sure that `cross-gnu-env` and `cross-gnu` are found in `$PATH` -(`~/bin/`, for example) or alternatively remember to use their full paths in -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 (4.3 onwards) -you'll need to have development packages of GMP and MPFR installed. - - -### Setting Up the Environment - -Do this every time you intend to use the cross compiler: - - $ ROOT=to/the/cross/build/root - $ . cross-gnu-env - -This will set several environment variables, which are later used by (a) the -`cross-gnu` script and (b) by you, the user of the cross compiler. `$TARGET` -will be set by the script, `$PATH` will be adjusted, etc. See the -`cross-gnu-env` file for all environment variables that are set, as well as -their default values. `$ROOT` will be made an absolute path if it isn't -already. - -Later, you'll be able to do things like `../configure --host="$TARGET"` and the -cross compiler will be found automatically. - - -### Creating the Cross Build Environment - -After setting up the environemt, just run `cross-gnu` and watch the messages -flow by. In the end you should see a message: *[...]/cross-gnu: Everything -should be in place now.* - - -### 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 / 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.4 to GCC 4.5. +[[!meta redir=/toolchain/cross-gnu]] |