summaryrefslogtreecommitdiff
path: root/strata/build-essential/stage1-gcc.morph
diff options
context:
space:
mode:
Diffstat (limited to 'strata/build-essential/stage1-gcc.morph')
-rw-r--r--strata/build-essential/stage1-gcc.morph18
1 files changed, 18 insertions, 0 deletions
diff --git a/strata/build-essential/stage1-gcc.morph b/strata/build-essential/stage1-gcc.morph
index 0e0c2d81..0cb03568 100644
--- a/strata/build-essential/stage1-gcc.morph
+++ b/strata/build-essential/stage1-gcc.morph
@@ -1,7 +1,19 @@
name: stage1-gcc
kind: chunk
+
configure-commands:
- mkdir o
+
+# Configure flag notes:
+# 1. Standard flags. See gcc.morph.
+# 2. Disable searching /usr/local/include for headers
+# 3. The pass 1 compiler needs to find the libraries we build in pass 2.
+# Include path must be set explicility, because it defaults to
+# $SYSROOT/usr/include rather than $SYSROOT/include.
+# FIXME: this flag is not present until GCC 4.6.3!
+# 4. Disable stuff that doesn't work when building a cross compiler
+# without an existing libc, and generally try to keep this build as
+# simple as possible.
- |
cd o &&
../configure \
@@ -21,10 +33,16 @@ configure-commands:
--disable-shared --disable-threads --disable-target-libiberty \
--disable-target-zlib --without-headers --with-newlib \
--with-system-zlib
+
build-commands:
- cd o && make
+
install-commands:
- cd o && make DESTDIR="$DESTDIR" install
+
+# The file libgcc_eh is required during eglibc's build, but is not created
+# because we built GCC with --disable-shared. This is a workaround for
+# eglibc's build system being slightly broken.
- |
libgcc_filename=$($DESTDIR$PREFIX/bin/$TARGET_STAGE1-gcc -print-libgcc-file-name)
ln -sv libgcc.a $(echo $libgcc_filename | sed 's/libgcc/&_eh/')