From 3c6af50a5777f78b16b71fbeb28445d4af40ef4a Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Tue, 19 Oct 2010 11:57:21 +0200 Subject: Reorganize some toolchain pages. --- hurd/binutils.mdwn | 11 +- hurd/building.mdwn | 10 +- hurd/building/cross-compiling.mdwn | 205 +------------------------------------ hurd/debugging/glibc.mdwn | 11 +- hurd/gcc.mdwn | 12 +-- hurd/toolchain.mdwn | 15 +-- 6 files changed, 27 insertions(+), 237 deletions(-) (limited to 'hurd') diff --git a/hurd/binutils.mdwn b/hurd/binutils.mdwn index 76b0ae60..f9266448 100644 --- a/hurd/binutils.mdwn +++ b/hurd/binutils.mdwn @@ -1,14 +1,11 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] -[[General_information|/binutils]] about the binutils. - -There shouldn't be any differences within the binutils between, for example, -the GNU/Hurd and GNU/Linux ports. +[[!meta redir=/binutils]] diff --git a/hurd/building.mdwn b/hurd/building.mdwn index 01586c84..1674b770 100644 --- a/hurd/building.mdwn +++ b/hurd/building.mdwn @@ -13,6 +13,12 @@ do what you expect it to do is the highest if you try building from the Debian source packages. This is especially true if you want to use your compilation within a Debian system. +Note that for building code to run on GNU/Hurd systems, you need a toolchain +for the GNU Hurd. You can either compile on a GNU/Hurd system, or need a +cross-compiler targeting GNU/Hurd. Our [[toolchain page|toolchain]] has the +details. + + ## Getting the Source Code You can chose between getting the [sources from the developers's @@ -93,10 +99,6 @@ to `make`: This will automatically build all libraries that are required to build the requested server or library. -### Cross Compiling - -Read about [[cross-compiling]]. - ## RPC IDs 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 - 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: - - * - - 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: - - * - - Prepare: - - $ ( cd gcc-4_4-branch/ && contrib/gcc_update --touch ) - - * Releases of the 4.5 and 4.4 series from - 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 - - - - -### 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]] diff --git a/hurd/debugging/glibc.mdwn b/hurd/debugging/glibc.mdwn index 905dd0da..e9817132 100644 --- a/hurd/debugging/glibc.mdwn +++ b/hurd/debugging/glibc.mdwn @@ -1,4 +1,5 @@ -[[!meta copyright="Copyright © 2007, 2008 Free Software Foundation, Inc."]] +[[!meta copyright="Copyright © 2007, 2008, 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 @@ -15,7 +16,7 @@ glibc have been done. First step is having the build of glibc succeed. This is actually more difficult than one might expect as it involves (towards the end of the build -process -- unless you are [[building/cross-compiling]], of course -- that the +process -- unless you are cross-compiling, of course -- that the newly created libraries and loader actually work: they'll be used to run the `rpcgen` program. If that step doesn't succeed, it'll look similar to this: @@ -25,12 +26,10 @@ newly created libraries and loader actually work: they'll be used to run the --- -Unless [[building/cross-compiling]], the next thing you'll probably want to do +Unless cross-compiling, the next thing you'll probably want to do is running the test suite, or parts of it. -Here is a list of known failures: - -[TODO]. +There is a list of [[known failures|open_issues/glibc_testsuite]]. --- diff --git a/hurd/gcc.mdwn b/hurd/gcc.mdwn index 53b5e071..129aa8a9 100644 --- a/hurd/gcc.mdwn +++ b/hurd/gcc.mdwn @@ -1,15 +1,11 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] -[[General_information|/gcc]] about the GCC. - -Apart from the target-specific configuration machinery, there shouldn't be any -major differences within GCC between, for example, the GNU/Hurd and GNU/Linux -ports. Especially all the compiler magic is all the same. +[[!meta redir=/gcc]] diff --git a/hurd/toolchain.mdwn b/hurd/toolchain.mdwn index 8b852089..91d49b2c 100644 --- a/hurd/toolchain.mdwn +++ b/hurd/toolchain.mdwn @@ -1,18 +1,11 @@ -[[!meta copyright="Copyright © 2007, 2008 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]]."]]"""]] -* [[binutils]] -* [[GCC]] -* [[glibc]] - -Before beginning to work on the inner parts of the GNU/Hurd toolchain, it's -always profitable to also know how things are done on other systems. Compare, -for example, how things are done differently for GNU/Hurd than they are done -for GNU/Linux. +[[!meta redir=/toolchain]] -- cgit v1.2.3