diff options
Diffstat (limited to 'pkgs/development/compilers/gcc/builder.sh')
-rwxr-xr-x | pkgs/development/compilers/gcc/builder.sh | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh new file mode 100755 index 0000000000000..15746b264399a --- /dev/null +++ b/pkgs/development/compilers/gcc/builder.sh @@ -0,0 +1,56 @@ +#! /bin/sh + +buildinputs="$binutils" +. $stdenv/setup || exit 1 + +tar xvfj $src || exit 1 + +if test "$noSysDirs" == "1"; then + # Disable the standard include directories. + cd gcc-* || exit 1 + cat >> ./gcc/cppdefault.h <<EOF +#undef LOCAL_INCLUDE_DIR +#undef SYSTEM_INCLUDE_DIR +#undef STANDARD_INCLUDE_DIR +EOF + cd .. || exit 1 +fi + +# Configure. +mkdir build || exit 1 +cd build || exit 1 +../gcc-*/configure --prefix=$out --enable-languages=c,c++ || exit 1 + +if test "$noSysDirs" == "1"; then + # Patch some of the makefiles to force linking against our own glibc. + extraflags="-Wl,-s $NIX_CFLAGS_COMPILE $NIX_CFLAGS_LINK" + for i in $NIX_LDFLAGS; do + extraflags="$extraflags -Wl,$i" + done + + mf=Makefile + sed \ + -e "s^FLAGS_FOR_TARGET =\(.*\)^FLAGS_FOR_TARGET = \1 $extraflags^" \ + < $mf > $mf.tmp || exit 1 + mv $mf.tmp $mf + + mf=gcc/Makefile + sed \ + -e "s^X_CFLAGS =\(.*\)^X_CFLAGS = \1 $extraflags^" \ + < $mf > $mf.tmp || exit 1 + mv $mf.tmp $mf + + # Patch gcc/Makefile to prevent fixinc.sh from "fixing" system header files + # from /usr/include. + mf=gcc/Makefile + sed \ + -e "s^NATIVE_SYSTEM_HEADER_DIR =\(.*\)^NATIVE_SYSTEM_HEADER_DIR = /fixinc-disabled^" \ + < $mf > $mf.tmp || exit 1 + mv $mf.tmp $mf +fi + +# Build and install. +make bootstrap || exit 1 +make install || exit 1 + +find $out -name "*.a" -exec strip -S {} \; || exit 1 |