diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2007-08-07 12:05:10 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2007-08-07 12:05:10 +0000 |
commit | 61656532dd6b7dbe9de9e135f95bd95eb7a242ac (patch) | |
tree | f52c3e618714a2acc5b70e2f4f70be795436fe2d | |
parent | b2bff981f34873124a2abca53ff6d04da440ce66 (diff) |
* GCC 4.0.4.
svn path=/nixpkgs/trunk/; revision=9062
-rw-r--r-- | pkgs/development/compilers/gcc-4.0/builder.sh | 87 | ||||
-rw-r--r-- | pkgs/development/compilers/gcc-4.0/default.nix | 30 |
2 files changed, 62 insertions, 55 deletions
diff --git a/pkgs/development/compilers/gcc-4.0/builder.sh b/pkgs/development/compilers/gcc-4.0/builder.sh index ac55321e888e3..5df3168027fe7 100644 --- a/pkgs/development/compilers/gcc-4.0/builder.sh +++ b/pkgs/development/compilers/gcc-4.0/builder.sh @@ -13,69 +13,53 @@ export CXXCPP="gcc -E" if test "$noSysDirs" = "1"; then - if test "$noSysDirs" = "1"; then + if test -e $NIX_GCC/nix-support/orig-libc; then + # Figure out what extra flags to pass to the gcc compilers # being generated to make sure that they use our glibc. - if test -e $NIX_GCC/nix-support/orig-glibc; then - glibc=$(cat $NIX_GCC/nix-support/orig-glibc) - - # Ugh. Copied from gcc-wrapper/builder.sh. We can't just - # source in $NIX_GCC/nix-support/add-flags, since that - # would cause *this* GCC to be linked against the - # *previous* GCC. Need some more modularity there. - extraCFlags="-B$glibc/lib -isystem $glibc/include" - extraLDFlags="-B$glibc/lib -L$glibc/lib -Wl,-s \ - -Wl,-dynamic-linker,$glibc/lib/ld-linux.so.2" - - # Oh, what a hack. I should be shot for this. - # In stage 1, we should link against the previous GCC, but - # not afterwards. Otherwise we retain a dependency. - # However, ld-wrapper, which adds the linker flags for the - # previous GCC, is also used in stage 2/3. We can prevent - # it from adding them by NIX_GLIBC_FLAGS_SET, but then - # gcc-wrapper will also not add them, thereby causing - # stage 1 to fail. So we use a trick to only set the - # flags in gcc-wrapper. - hook=$(pwd)/ld-wrapper-hook - echo "NIX_GLIBC_FLAGS_SET=1" > $hook - export NIX_LD_WRAPPER_START_HOOK=$hook - - # Use *real* header files, otherwise a limits.h is - # generated that does not include Glibc's limits.h - # (notably missing SSIZE_MAX, which breaks the build). - export NIX_FIXINC_DUMMY=$glibc/include - fi - - export NIX_EXTRA_CFLAGS=$extraCFlags - export NIX_EXTRA_LDFLAGS=$extraLDFlags - export CFLAGS=$extraCFlags - export CXXFLAGS=$extraCFlags - export LDFLAGS=$extraLDFlags + extraCFlags="$(cat $NIX_GCC/nix-support/libc-cflags)" + extraLDFlags="$(cat $NIX_GCC/nix-support/libc-ldflags) $(cat $NIX_GCC/nix-support/libc-ldflags-before)" + + # Use *real* header files, otherwise a limits.h is generated + # that does not include Glibc's limits.h (notably missing + # SSIZE_MAX, which breaks the build). + export NIX_FIXINC_DUMMY=$(cat $NIX_GCC/nix-support/orig-libc)/include + + else + # Hack: support impure environments. + extraCFlags="-isystem /usr/include" + extraLDFlags="-L/usr/lib64 -L/usr/lib" + export NIX_FIXINC_DUMMY=/usr/include fi -else - patches="" + extraCFlags="-g0 $extraCFlags" + extraLDFlags="--strip-debug $extraLDFlags" + + export NIX_EXTRA_CFLAGS=$extraCFlags + for i in $extraLDFlags; do + export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" + done + + export CFLAGS=$extraCFlags + export CXXFLAGS=$extraCFlags + + makeFlagsArray=( \ + NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ + LIMITS_H_TEST=true \ + X_CFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + LDFLAGS="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ + ) fi preConfigure=preConfigure preConfigure() { - - # Determine the frontends to build. - langs="c" - if test -n "$langCC"; then - langs="$langs,c++" - fi - if test -n "$langF77"; then - langs="$langs,f77" - fi - # Perform the build in a different directory. mkdir ../build cd ../build - configureScript=../$sourceRoot/configure - configureFlags="--enable-languages=$langs" } @@ -88,6 +72,9 @@ postInstall() { # Remove `fixincl' to prevent a retained dependency on the # previous gcc. rm -rf $out/libexec/gcc/*/*/install-tools + + # Get rid of some "fixed" header files + rm -rf $out/lib/gcc/*/*/include/root } diff --git a/pkgs/development/compilers/gcc-4.0/default.nix b/pkgs/development/compilers/gcc-4.0/default.nix index ce55aa3957223..49a87de057bfb 100644 --- a/pkgs/development/compilers/gcc-4.0/default.nix +++ b/pkgs/development/compilers/gcc-4.0/default.nix @@ -5,17 +5,37 @@ assert langC; +with import ../../../lib; + stdenv.mkDerivation { - name = "gcc-4.0.3"; + name = "gcc-4.0.4"; builder = ./builder.sh; src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/gcc-4.0.3.tar.bz2; - md5 = "6ff1af12c53cbb3f79b27f2d6a9a3d50"; + url = ftp://ftp.nluug.nl/mirror/languages/gcc/releases/gcc-4.0.4/gcc-4.0.4.tar.bz2; + sha256 = "0izwr8d69ld3a1yr8z94s7y7k861wi613mplys2c0bvdr58y1zgk"; }; - # !!! apply only if noSysDirs is set - patches = [./no-sys-dirs.patch]; + + patches = + optional noSysDirs [./no-sys-dirs.patch]; + inherit noSysDirs langC langCC langF77 profiledCompiler; + configureFlags = " + --disable-multilib + --disable-libstdcxx-pch + --disable-libmudflap + --with-system-zlib + --enable-languages=${ + concatStrings (intersperse "," + ( optional langC "c" + ++ optional langCC "c++" + ++ optional langF77 "f77" + ) + ) + } + ${if stdenv.isi686 then "--with-arch=i686" else ""} + "; + meta = { homepage = "http://gcc.gnu.org/"; license = "GPL/LGPL"; |