From 460378ef9a264f87d6c85ddd802d5837c4c14eef Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Sat, 17 Sep 2011 12:20:44 +0200 Subject: toolchain/cross-gnu: Update. --- open_issues/gcc.mdwn | 34 ++++++++++++++++++++++++++++++++++ toolchain/cross-gnu.mdwn | 30 +++++++++++++++++++++--------- 2 files changed, 55 insertions(+), 9 deletions(-) diff --git a/open_issues/gcc.mdwn b/open_issues/gcc.mdwn index b4cbef9e..04c111fd 100644 --- a/open_issues/gcc.mdwn +++ b/open_issues/gcc.mdwn @@ -172,6 +172,40 @@ Last reviewed up to the [[Git mirror's 3d83581faf4eaf52c1cf52cc0d11cc7dd1264275 `check_effective_target_pie` should include `*-*-gnu*`, too. + * [low] [[toolchain/cross-gnu]] toolchain bootstrap vs. `fenv.h` in libgcc's + libbid: + + [...]/xgcc [...] -DIN_LIBGCC2 -fbuilding-libgcc [...] -Dinhibit_libc [...] -o bid_decimal_globals.o [...] -c [...]/libgcc/config/libbid/bid_decimal_globals.c + [...]/libgcc/config/libbid/bid_decimal_globals.c:47:18: fatal error: fenv.h: No such file or directory + compilation terminated. + make[1]: *** [bid_decimal_globals.o] Error 1 + make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj/i686-pc-gnu/libgcc' + make: *** [all-target-libgcc] Error 2 + + See threads at + *id:"AANLkTinY1Cd4_qO_9euYJN8zev4hdr7_ANpjNG+yGRMn@mail.gmail.com"*, + *id:"20110328225532.GE5293@synopsys.com"*, + *id:"4D52D522.1040804@gmail.com"*. Can simply configure the first GCC with + `--disable-decimal-float`. + + Alternatively, can we use `#ifndef inhibit_libc` for this (these?) file(s)? + See `generic-nonstrack.c`, for example. The latter (and also + `generic-morestack-thread.c`) also has a nice explanation of `inhibit_libc` + which could be centralized at one place, for example definition of + `inhibit_libc`. + + * [low] [[toolchain/cross-gnu]] + + The directory that should contain system headers does not exist: + /media/boole-data/thomas/tmp/gnu-0/sys_root/usr/include + make[2]: *** [stmp-fixinc] Error 1 + make[2]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj/gcc' + make[1]: *** [all-gcc] Error 2 + make[1]: Leaving directory `/media/boole-data/thomas/tmp/gnu-0/src/gcc.obj' + + `mkdir` the directory for now, but what is really going on? GCC has *use + `/usr/include` patch*, but glibc still installs into `/include/`? + # Build diff --git a/toolchain/cross-gnu.mdwn b/toolchain/cross-gnu.mdwn index 62c55a04..280569ae 100644 --- a/toolchain/cross-gnu.mdwn +++ b/toolchain/cross-gnu.mdwn @@ -1,4 +1,4 @@ -[[!meta copyright="Copyright © 2007, 2008, 2010 Free Software Foundation, +[[!meta copyright="Copyright © 2007, 2008, 2010, 2011 Free Software Foundation, Inc."]] [[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable @@ -9,10 +9,12 @@ 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]]."]]"""]] +[[!tag stable_URL]] + [[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. +Find it in the [[source_repositories/incubator]], *cross-gnu/master* branch. # Using @@ -31,6 +33,8 @@ differences, as well as towards pushing all patches upstream. ## Supported Versions of Source Packages +/!\ This is outdated. Contact [[tschwinge]]. + The following ones are known to work. Others may work as well, but no guarantee is given. Always the preferred version is listed first. @@ -117,6 +121,10 @@ guarantee is given. Always the preferred version is listed first. $ cd libpthread/ $ git checkout origin/tschwinge/Peter_Herbolzheimer + Prepare: + + $ ( cd libpthread/ && autoreconf -vi ) + * [[`src/glibc`|glibc]] * Git `tschwinge/Roger_Whittaker` branch @@ -147,9 +155,11 @@ guarantee is given. Always the preferred version is listed first. ## Preparation +The raw source code trees are about 1 GiB. + Unpack the tarballs if you downloaded any. -Create a directory where the cross build shall be rooted in and a `src` +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 @@ -162,11 +172,11 @@ 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. +The system you're running the script on (the *build* system) needs to have +basic development tools installed, that is, a C compiler with libraries, +`make`, and several more packages. If anything is missing, the *cross-gnu* +build will abort, and you have to install the missing dependencies and resume +the *cross-gnu* build. ## Setting Up the Environment @@ -183,12 +193,14 @@ will be set by the script, `$PATH` will be adjusted, etc. See the 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 +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 +This will need an additional 2 GiB. + 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.* -- cgit v1.2.3