summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Schwinge <thomas@schwinge.name>2011-09-17 12:20:44 +0200
committerThomas Schwinge <thomas@schwinge.name>2011-09-17 12:20:44 +0200
commit460378ef9a264f87d6c85ddd802d5837c4c14eef (patch)
treecef6b9841500836ed0443cf174268a858373d791
parentb92143432ccd0c3459cb250dd1d363a33baef0a2 (diff)
toolchain/cross-gnu: Update.
-rw-r--r--open_issues/gcc.mdwn34
-rw-r--r--toolchain/cross-gnu.mdwn30
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.*