summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2007-08-07 12:05:10 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2007-08-07 12:05:10 +0000
commit61656532dd6b7dbe9de9e135f95bd95eb7a242ac (patch)
treef52c3e618714a2acc5b70e2f4f70be795436fe2d /pkgs/development
parentb2bff981f34873124a2abca53ff6d04da440ce66 (diff)
downloadnixlib-61656532dd6b7dbe9de9e135f95bd95eb7a242ac.tar
nixlib-61656532dd6b7dbe9de9e135f95bd95eb7a242ac.tar.gz
nixlib-61656532dd6b7dbe9de9e135f95bd95eb7a242ac.tar.bz2
nixlib-61656532dd6b7dbe9de9e135f95bd95eb7a242ac.tar.lz
nixlib-61656532dd6b7dbe9de9e135f95bd95eb7a242ac.tar.xz
nixlib-61656532dd6b7dbe9de9e135f95bd95eb7a242ac.tar.zst
nixlib-61656532dd6b7dbe9de9e135f95bd95eb7a242ac.zip
* GCC 4.0.4.
svn path=/nixpkgs/trunk/; revision=9062
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/gcc-4.0/builder.sh87
-rw-r--r--pkgs/development/compilers/gcc-4.0/default.nix30
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 ac55321e888e..5df3168027fe 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 ce55aa395722..49a87de057bf 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";