* Use GCC 4.3.

svn path=/nixpkgs/branches/stdenv-updates/; revision=13811
This commit is contained in:
Eelco Dolstra 2009-01-19 20:35:03 +00:00
parent 63246c648f
commit fce6b5a233

View File

@ -11,6 +11,9 @@ rec {
}); });
gcc = gcc43;
build = build =
stdenv.mkDerivation { stdenv.mkDerivation {
@ -38,6 +41,7 @@ rec {
# Hopefully we won't need these. # Hopefully we won't need these.
rm -rf $out/include/mtd $out/include/rdma $out/include/sound $out/include/video rm -rf $out/include/mtd $out/include/rdma $out/include/sound $out/include/video
mv $out/include $out/include-glibc
# Copy coreutils, bash, etc. # Copy coreutils, bash, etc.
cp ${coreutils_}/bin/* $out/bin cp ${coreutils_}/bin/* $out/bin
@ -61,7 +65,7 @@ rec {
cp -d ${gnugrep.pcre}/lib/libpcre*.so* $out/lib # needed by grep cp -d ${gnugrep.pcre}/lib/libpcre*.so* $out/lib # needed by grep
# Copy what we need of gcc. # Copy what we need of GCC.
cp -d ${gcc.gcc}/bin/gcc $out/bin cp -d ${gcc.gcc}/bin/gcc $out/bin
cp -d ${gcc.gcc}/bin/cpp $out/bin cp -d ${gcc.gcc}/bin/cpp $out/bin
cp -d ${gcc.gcc}/bin/g++ $out/bin cp -d ${gcc.gcc}/bin/g++ $out/bin
@ -69,11 +73,17 @@ rec {
cp -d ${gcc.gcc}/lib/libstdc++.so* $out/lib cp -d ${gcc.gcc}/lib/libstdc++.so* $out/lib
cp -rd ${gcc.gcc}/lib/gcc $out/lib cp -rd ${gcc.gcc}/lib/gcc $out/lib
chmod -R u+w $out/lib chmod -R u+w $out/lib
rm -f $out/lib/gcc/*/*/include/linux rm -f $out/lib/gcc/*/*/include*/linux
rm -f $out/lib/gcc/*/*/include/sound rm -f $out/lib/gcc/*/*/include*/sound
rm -rf $out/lib/gcc/*/*/include*/root
#rm -f $out/lib/gcc/*/*/*.a
cp -rd ${gcc.gcc}/libexec/* $out/libexec cp -rd ${gcc.gcc}/libexec/* $out/libexec
mkdir $out/include
cp -rd ${gcc.gcc}/include/c++ $out/include cp -rd ${gcc.gcc}/include/c++ $out/include
cp -d ${gmp}/lib/libgmp*.so* $out/lib
cp -d ${mpfr}/lib/libmpfr*.so* $out/lib
# Copy binutils. # Copy binutils.
for i in as ld ar ranlib nm strip readelf objdump; do for i in as ld ar ranlib nm strip readelf objdump; do
cp ${binutils}/bin/$i $out/bin cp ${binutils}/bin/$i $out/bin
@ -96,7 +106,8 @@ rec {
nuke-refs $out/lib/* nuke-refs $out/lib/*
nuke-refs $out/libexec/gcc/*/*/* nuke-refs $out/libexec/gcc/*/*/*
(cd $out && tar cvfj $out/static-tools.tar.bz2 bin lib libexec include) sync
(cd $out && tar cvfj $out/static-tools.tar.bz2 bin lib libexec include include-glibc)
''; # */ ''; # */
# The result should not contain any references (store paths) so # The result should not contain any references (store paths) so
@ -160,18 +171,19 @@ rec {
perl -e 'print 1 + 2, "\n";' perl -e 'print 1 + 2, "\n";'
export CPP="cpp -B${unpack}" export CPP="cpp -idirafter ${unpack}/include-glibc -B${unpack}"
export CC="gcc -B${unpack} -Wl,-dynamic-linker,${unpack}/lib/ld-linux.so.2 -Wl,-rpath,${unpack}/lib" export CC="gcc -idirafter ${unpack}/include-glibc -B${unpack} -Wl,-dynamic-linker,${unpack}/lib/ld-linux.so.2 -Wl,-rpath,${unpack}/lib"
export CXX="g++ -B${unpack} -Wl,-dynamic-linker,${unpack}/lib/ld-linux.so.2 -Wl,-rpath,${unpack}/lib" export CXX="g++ -idirafter ${unpack}/include-glibc -B${unpack} -Wl,-dynamic-linker,${unpack}/lib/ld-linux.so.2 -Wl,-rpath,${unpack}/lib"
echo '#include <stdio.h>' >> foo.c echo '#include <stdio.h>' >> foo.c
echo '#include <limits.h>' >> foo.c
echo 'int main() { printf("Hello World\n"); return 0; }' >> foo.c echo 'int main() { printf("Hello World\n"); return 0; }' >> foo.c
$CC -o $out/bin/foo foo.c $CC -o $out/bin/foo foo.c
$out/bin/foo $out/bin/foo
echo '#include <iostream>' >> bar.cc echo '#include <iostream>' >> bar.cc
echo 'int main() { std::cout << "Hello World\n"; }' >> bar.cc echo 'int main() { std::cout << "Hello World\n"; }' >> bar.cc
$CXX -o $out/bin/bar bar.cc $CXX -v -o $out/bin/bar bar.cc
$out/bin/bar $out/bin/bar
tar xvf ${hello.src} tar xvf ${hello.src}