From 2748236699d7a152a0abfbd3c72cc0d0d41e1a26 Mon Sep 17 00:00:00 2001 From: Armijn Hemel Date: Mon, 28 Nov 2005 11:20:59 +0000 Subject: [PATCH] add cross compilers for ARM, only able to compile C code svn path=/nixpkgs/trunk/; revision=4313 --- .../compilers/gcc-3.4-arm/builder.sh | 87 +++++++++ .../compilers/gcc-3.4-arm/default.nix | 21 ++ .../compilers/gcc-3.4-arm/no-sys-dirs.patch | 170 ++++++++++++++++ .../compilers/gcc-4.0-arm/builder.sh | 97 ++++++++++ .../compilers/gcc-4.0-arm/default.nix | 25 +++ .../compilers/gcc-4.0-arm/no-sys-dirs.patch | 182 ++++++++++++++++++ 6 files changed, 582 insertions(+) create mode 100644 pkgs/development/compilers/gcc-3.4-arm/builder.sh create mode 100644 pkgs/development/compilers/gcc-3.4-arm/default.nix create mode 100644 pkgs/development/compilers/gcc-3.4-arm/no-sys-dirs.patch create mode 100644 pkgs/development/compilers/gcc-4.0-arm/builder.sh create mode 100644 pkgs/development/compilers/gcc-4.0-arm/default.nix create mode 100644 pkgs/development/compilers/gcc-4.0-arm/no-sys-dirs.patch diff --git a/pkgs/development/compilers/gcc-3.4-arm/builder.sh b/pkgs/development/compilers/gcc-3.4-arm/builder.sh new file mode 100644 index 000000000000..f66e7b7ce281 --- /dev/null +++ b/pkgs/development/compilers/gcc-3.4-arm/builder.sh @@ -0,0 +1,87 @@ +. $stdenv/setup + + +export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy +mkdir $NIX_FIXINC_DUMMY + + +if test "$noSysDirs" = "1"; then + + if test "$noSysDirs" = "1"; 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 + fi + + export NIX_EXTRA_CFLAGS=$extraCFlags + export NIX_EXTRA_LDFLAGS=$extraLDFlags + export CFLAGS=$extraCFlags + export LDFLAGS=$extraLDFlags + fi + +else + patches="" +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 --target=$platform --disable-threads" +} + + +postInstall=postInstall +postInstall() { + # Remove precompiled headers for now. They are very big and + # probably not very useful yet. + find $out/include -name "*.gch" -exec rm -rf {} \; -prune + + # Remove `fixincl' to prevent a retained dependency on the + # previous gcc. + rm -rf $out/libexec/gcc/*/*/install-tools +} + + +#if test -z "$profiledCompiler"; then +# makeFlags="bootstrap" +#else +# makeFlags="profiledbootstrap" +#fi + +genericBuild diff --git a/pkgs/development/compilers/gcc-3.4-arm/default.nix b/pkgs/development/compilers/gcc-3.4-arm/default.nix new file mode 100644 index 000000000000..7a701cc236f0 --- /dev/null +++ b/pkgs/development/compilers/gcc-3.4-arm/default.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl, noSysDirs +, langC ? true, langCC ? true, langF77 ? false +, profiledCompiler ? false +, binutilsArm +}: + +assert langC; + +stdenv.mkDerivation { + name = "gcc-3.4.4-arm"; + builder = ./builder.sh; + src = fetchurl { + url = http://ftp.gnu.org/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2; + md5 = "b594ff4ea4fbef4ba9220887de713dfe"; + }; + # !!! apply only if noSysDirs is set + patches = [./no-sys-dirs.patch]; + inherit noSysDirs langC langCC langF77 profiledCompiler; + buildInputs = [binutilsArm]; + platform = "arm-linux"; +} diff --git a/pkgs/development/compilers/gcc-3.4-arm/no-sys-dirs.patch b/pkgs/development/compilers/gcc-3.4-arm/no-sys-dirs.patch new file mode 100644 index 000000000000..2159893cde2b --- /dev/null +++ b/pkgs/development/compilers/gcc-3.4-arm/no-sys-dirs.patch @@ -0,0 +1,170 @@ +diff -rc gcc-orig/gcc/cppdefault.c gcc-patched/gcc/cppdefault.c +*** gcc-orig/gcc/cppdefault.c 2003-03-01 15:31:12.000000000 +0100 +--- gcc-patched/gcc/cppdefault.c 2004-06-29 10:08:45.000000000 +0200 +*************** +*** 41,46 **** +--- 41,50 ---- + # undef CROSS_INCLUDE_DIR + #endif + ++ #undef LOCAL_INCLUDE_DIR ++ #undef SYSTEM_INCLUDE_DIR ++ #undef STANDARD_INCLUDE_DIR ++ + const struct default_include cpp_include_defaults[] + #ifdef INCLUDE_DEFAULTS + = INCLUDE_DEFAULTS; +diff -rc gcc-orig/gcc/Makefile.in gcc-patched/gcc/Makefile.in +*** gcc-orig/gcc/Makefile.in 2004-04-01 18:47:54.000000000 +0200 +--- gcc-patched/gcc/Makefile.in 2004-06-29 13:50:45.000000000 +0200 +*************** +*** 199,205 **** + CPPFLAGS = @CPPFLAGS@ + + # These exists to be overridden by the x-* and t-* files, respectively. +! X_CFLAGS = + T_CFLAGS = + + X_CPPFLAGS = +--- 199,205 ---- + CPPFLAGS = @CPPFLAGS@ + + # These exists to be overridden by the x-* and t-* files, respectively. +! X_CFLAGS = $(NIX_EXTRA_CFLAGS) $(NIX_EXTRA_LDFLAGS) + T_CFLAGS = + + X_CPPFLAGS = +*************** +*** 345,351 **** + PARTITION_H = $(srcdir)/../include/partition.h + + # Default native SYSTEM_HEADER_DIR, to be overridden by targets. +! NATIVE_SYSTEM_HEADER_DIR = /usr/include + # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. + CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ + +--- 345,355 ---- + PARTITION_H = $(srcdir)/../include/partition.h + + # Default native SYSTEM_HEADER_DIR, to be overridden by targets. +! # Nix: we override NATIVE_SYSTEM_HEADER_DIR in order to prevent +! # `fixinc' from fixing header files in /usr/include. However, +! # NATIVE_SYSTEM_HEADER_DIR must point to an existing directory, so set +! # it to some dummy directory. +! NATIVE_SYSTEM_HEADER_DIR = $(NIX_FIXINC_DUMMY) + # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. + CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ + +diff -rc gcc-orig/libstdc++-v3/include/Makefile.in gcc-patched/libstdc++-v3/include/Makefile.in +*** gcc-orig/libstdc++-v3/include/Makefile.in 2004-03-18 18:36:43.000000000 +0100 +--- gcc-patched/libstdc++-v3/include/Makefile.in 2004-06-29 19:01:33.000000000 +0200 +*************** +*** 896,903 **** + if [ ! -d "${pch_output_builddir}" ]; then \ + mkdir -p ${pch_output_builddir}; \ + fi; \ +! $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g; \ +! $(CXX) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g; + + # For robustness sake (in light of junk files or in-source + # configuration), copy from the build or source tree to the install +--- 896,903 ---- + if [ ! -d "${pch_output_builddir}" ]; then \ + mkdir -p ${pch_output_builddir}; \ + fi; \ +! $(CXX) $(CFLAGS) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O0 -g -o ${pch_output_builddir}/O0g; \ +! $(CXX) $(CFLAGS) $(PCHFLAGS) $(AM_CPPFLAGS) ${pch_source} -O2 -g -o ${pch_output_builddir}/O2g; + + # For robustness sake (in light of junk files or in-source + # configuration), copy from the build or source tree to the install +diff -rc gcc-orig/ltcf-cxx.sh gcc-patched/ltcf-cxx.sh +*** gcc-orig/ltcf-cxx.sh 2003-11-19 06:29:32.000000000 +0100 +--- gcc-patched/ltcf-cxx.sh 2004-06-29 15:26:01.000000000 +0200 +*************** +*** 985,991 **** + # the conftest object file. + pre_test_object_deps_done=no + +! for p in `eval $output_verbose_link_cmd`; do + + case $p in + +--- 985,991 ---- + # the conftest object file. + pre_test_object_deps_done=no + +! for p in `true`; do + + case $p in + +diff -rc gcc-orig/Makefile.in gcc-patched/Makefile.in +*** gcc-orig/Makefile.in 2004-01-14 21:09:37.000000000 +0100 +--- gcc-patched/Makefile.in 2004-06-29 16:21:36.000000000 +0200 +*************** +*** 228,234 **** + NM = @NM@ + + LD = @LD@ +! LDFLAGS = + + RANLIB = @RANLIB@ + +--- 228,234 ---- + NM = @NM@ + + LD = @LD@ +! LDFLAGS = $(NIX_EXTRA_LDFLAGS) + + RANLIB = @RANLIB@ + +*************** +*** 277,283 **** + # CFLAGS will be just -g. We want to ensure that TARGET libraries + # (which we know are built with gcc) are built with optimizations so + # prepend -O2 when setting CFLAGS_FOR_TARGET. +! CFLAGS_FOR_TARGET = -O2 $(CFLAGS) + # If GCC_FOR_TARGET is not overriden on the command line, then this + # variable is passed down to the gcc Makefile, where it is used to + # build libgcc2.a. We define it here so that it can itself be +--- 277,283 ---- + # CFLAGS will be just -g. We want to ensure that TARGET libraries + # (which we know are built with gcc) are built with optimizations so + # prepend -O2 when setting CFLAGS_FOR_TARGET. +! CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(NIX_EXTRA_CFLAGS) + # If GCC_FOR_TARGET is not overriden on the command line, then this + # variable is passed down to the gcc Makefile, where it is used to + # build libgcc2.a. We define it here so that it can itself be +*************** +*** 290,296 **** + RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@ + CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ + RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ +! CXXFLAGS_FOR_TARGET = $(CXXFLAGS) + LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +--- 290,296 ---- + RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@ + CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ + RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ +! CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(NIX_EXTRA_CFLAGS) + LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +*************** +*** 321,327 **** + fi; \ + fi` + +! LDFLAGS_FOR_TARGET = + + NM_FOR_TARGET=@NM_FOR_TARGET@ + USUAL_NM_FOR_TARGET = ` \ +--- 321,327 ---- + fi; \ + fi` + +! LDFLAGS_FOR_TARGET = $(NIX_EXTRA_LDFLAGS) + + NM_FOR_TARGET=@NM_FOR_TARGET@ + USUAL_NM_FOR_TARGET = ` \ diff --git a/pkgs/development/compilers/gcc-4.0-arm/builder.sh b/pkgs/development/compilers/gcc-4.0-arm/builder.sh new file mode 100644 index 000000000000..c89cae9a16c3 --- /dev/null +++ b/pkgs/development/compilers/gcc-4.0-arm/builder.sh @@ -0,0 +1,97 @@ +. $stdenv/setup + + +export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy +mkdir $NIX_FIXINC_DUMMY + + +if test "$noSysDirs" = "1"; then + + if test "$noSysDirs" = "1"; 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 + fi + + export NIX_EXTRA_CFLAGS=$extraCFlags + export NIX_EXTRA_LDFLAGS=$extraLDFlags + export CFLAGS=$extraCFlags + export CXXFLAGS=$extraCFlags + export LDFLAGS=$extraLDFlags + fi + +else + patches="" +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 + + # Cross compiler evilness + ensureDir $out + ensureDir $out/arm-linux + ensureDir $out/arm-linux/bin + ln -s $binutilsArm/arm-linux/bin/as $out/arm-linux/bin/as + ln -s $binutilsArm/arm-linux/bin/ld $out/arm-linux/bin/ld + ln -s $binutilsArm/arm-linux/bin/ar $out/arm-linux/bin/ar + ln -s $binutilsArm/arm-linux/bin/ranlib $out/arm-linux/bin/ranlib + + # Perform the build in a different directory. + mkdir ../build + cd ../build + + configureScript=../$sourceRoot/configure + configureFlags="--enable-languages=$langs --target=$platform --disable-threads --disable-libmudflap --disable-shared --with-headers=$kernelHeadersArm/include --disable-multilib" +} + + +postInstall=postInstall +postInstall() { + # Remove precompiled headers for now. They are very big and + # probably not very useful yet. + find $out/include -name "*.gch" -exec rm -rf {} \; -prune + + # Remove `fixincl' to prevent a retained dependency on the + # previous gcc. + rm -rf $out/libexec/gcc/*/*/install-tools +} + + +#if test -z "$profiledCompiler"; then + #makeFlags="bootstrap" +#else + #makeFlags="profiledbootstrap" +#fi + +genericBuild diff --git a/pkgs/development/compilers/gcc-4.0-arm/default.nix b/pkgs/development/compilers/gcc-4.0-arm/default.nix new file mode 100644 index 000000000000..e6a6ec53d594 --- /dev/null +++ b/pkgs/development/compilers/gcc-4.0-arm/default.nix @@ -0,0 +1,25 @@ +{ stdenv, fetchurl, noSysDirs +, langC ? true, langCC ? true, langF77 ? false +, profiledCompiler ? false +, binutilsArm +, kernelHeadersArm +}: + +assert langC; + +stdenv.mkDerivation { + name = "gcc-4.0.2-arm"; + builder = ./builder.sh; + src = fetchurl { + url = ftp://ftp.nluug.nl/pub/gnu/gcc/gcc-4.0.2/gcc-core-4.0.2.tar.bz2; + md5 = "f7781398ada62ba255486673e6274b26"; + #url = ftp://ftp.nluug.nl/pub/gnu/gcc/gcc-4.0.2/gcc-4.0.2.tar.bz2; + #md5 = "a659b8388cac9db2b13e056e574ceeb0"; + }; + # !!! apply only if noSysDirs is set + patches = [./no-sys-dirs.patch ./gcc-inhibit.patch]; + inherit noSysDirs langC langCC langF77 profiledCompiler; + buildInputs = [binutilsArm]; + inherit kernelHeadersArm binutilsArm; + platform = "arm-linux"; +} diff --git a/pkgs/development/compilers/gcc-4.0-arm/no-sys-dirs.patch b/pkgs/development/compilers/gcc-4.0-arm/no-sys-dirs.patch new file mode 100644 index 000000000000..c19c171c3c22 --- /dev/null +++ b/pkgs/development/compilers/gcc-4.0-arm/no-sys-dirs.patch @@ -0,0 +1,182 @@ +diff -rc gcc-4.0.0-orig/gcc/cppdefault.c gcc-4.0.0/gcc/cppdefault.c +*** gcc-4.0.0-orig/gcc/cppdefault.c 2004-11-03 04:23:49.000000000 +0100 +--- gcc-4.0.0/gcc/cppdefault.c 2005-04-22 09:53:28.000000000 +0200 +*************** +*** 41,46 **** +--- 41,50 ---- + # undef CROSS_INCLUDE_DIR + #endif + ++ #undef LOCAL_INCLUDE_DIR ++ #undef SYSTEM_INCLUDE_DIR ++ #undef STANDARD_INCLUDE_DIR ++ + const struct default_include cpp_include_defaults[] + #ifdef INCLUDE_DEFAULTS + = INCLUDE_DEFAULTS; +diff -rc gcc-4.0.0-orig/gcc/Makefile.in gcc-4.0.0/gcc/Makefile.in +*** gcc-4.0.0-orig/gcc/Makefile.in 2005-04-04 21:45:13.000000000 +0200 +--- gcc-4.0.0/gcc/Makefile.in 2005-04-22 10:38:50.000000000 +0200 +*************** +*** 213,219 **** + CPPFLAGS = @CPPFLAGS@ + + # These exists to be overridden by the x-* and t-* files, respectively. +! X_CFLAGS = + T_CFLAGS = + + X_CPPFLAGS = +--- 213,219 ---- + CPPFLAGS = @CPPFLAGS@ + + # These exists to be overridden by the x-* and t-* files, respectively. +! X_CFLAGS = $(NIX_EXTRA_CFLAGS) $(NIX_EXTRA_LDFLAGS) + T_CFLAGS = + + X_CPPFLAGS = +*************** +*** 373,379 **** + MD5_H = $(srcdir)/../include/md5.h + + # Default native SYSTEM_HEADER_DIR, to be overridden by targets. +! NATIVE_SYSTEM_HEADER_DIR = /usr/include + # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. + CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ + +--- 373,383 ---- + MD5_H = $(srcdir)/../include/md5.h + + # Default native SYSTEM_HEADER_DIR, to be overridden by targets. +! # Nix: we override NATIVE_SYSTEM_HEADER_DIR in order to prevent +! # `fixinc' from fixing header files in /usr/include. However, +! # NATIVE_SYSTEM_HEADER_DIR must point to an existing directory, so set +! # it to some dummy directory. +! NATIVE_SYSTEM_HEADER_DIR = $(NIX_FIXINC_DUMMY) + # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. + CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ + +*************** +*** 385,391 **** + STMP_FIXINC = @STMP_FIXINC@ + + # Test to see whether exists in the system header files. +! LIMITS_H_TEST = [ -f $(SYSTEM_HEADER_DIR)/limits.h ] + + # Directory for prefix to system directories, for + # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc. +--- 389,395 ---- + STMP_FIXINC = @STMP_FIXINC@ + + # Test to see whether exists in the system header files. +! LIMITS_H_TEST = true + + # Directory for prefix to system directories, for + # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc. +*************** +*** 2677,2683 **** + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ +! -DLOCAL_INCLUDE_DIR=\"$(local_includedir)\" \ + -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ +--- 2681,2687 ---- + -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ + -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ + -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ +! -DLOCAL_INCLUDE_DIR=\"/no-such-dir\" \ + -DCROSS_INCLUDE_DIR=\"$(CROSS_SYSTEM_HEADER_DIR)\" \ + -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ + @TARGET_SYSTEM_ROOT_DEFINE@ +Only in gcc-4.0.0: ltcf-cxx.sh.orig +diff -rc gcc-4.0.0-orig/ltconfig gcc-4.0.0/ltconfig +*** gcc-4.0.0-orig/ltconfig 2004-10-02 18:33:06.000000000 +0200 +--- gcc-4.0.0/ltconfig 2005-04-22 13:33:33.000000000 +0200 +*************** +*** 2321,2326 **** +--- 2321,2331 ---- + # A language-specific compiler. + CC=$CC + ++ # Ugly hack to get libmudflap (and possibly other libraries) to build. ++ # Libtool filters out \`-B' flags when linking (why?), so the \`-B' flag ++ # to Glibc gets lost. Here we forcibly add it to any invocation. ++ CC="\$CC $NIX_EXTRA_LDFLAGS" ++ + # Is the compiler the GNU C compiler? + with_gcc=$with_gcc + +Only in gcc-4.0.0: ltconfig~ +diff -rc gcc-4.0.0-orig/Makefile.in gcc-4.0.0/Makefile.in +*** gcc-4.0.0-orig/Makefile.in 2005-04-21 09:04:10.000000000 +0200 +--- gcc-4.0.0/Makefile.in 2005-04-22 09:53:28.000000000 +0200 +*************** +*** 336,342 **** + NM = @NM@ + + LD = @LD@ +! LDFLAGS = + + RANLIB = @RANLIB@ + +--- 336,342 ---- + NM = @NM@ + + LD = @LD@ +! LDFLAGS = $(NIX_EXTRA_LDFLAGS) + + RANLIB = @RANLIB@ + +*************** +*** 387,393 **** + # CFLAGS will be just -g. We want to ensure that TARGET libraries + # (which we know are built with gcc) are built with optimizations so + # prepend -O2 when setting CFLAGS_FOR_TARGET. +! CFLAGS_FOR_TARGET = -O2 $(CFLAGS) + # If GCC_FOR_TARGET is not overriden on the command line, then this + # variable is passed down to the gcc Makefile, where it is used to + # build libgcc2.a. We define it here so that it can itself be +--- 387,393 ---- + # CFLAGS will be just -g. We want to ensure that TARGET libraries + # (which we know are built with gcc) are built with optimizations so + # prepend -O2 when setting CFLAGS_FOR_TARGET. +! CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(NIX_EXTRA_CFLAGS) + # If GCC_FOR_TARGET is not overriden on the command line, then this + # variable is passed down to the gcc Makefile, where it is used to + # build libgcc2.a. We define it here so that it can itself be +*************** +*** 400,406 **** + RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@ + CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ + RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ +! CXXFLAGS_FOR_TARGET = $(CXXFLAGS) + LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +--- 400,406 ---- + RAW_CXX_FOR_TARGET = @RAW_CXX_FOR_TARGET@ + CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ + RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE = @RAW_CXX_FOR_TARGET_FOR_RECURSIVE_MAKE@ +! CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(NIX_EXTRA_CFLAGS) + LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates + + DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ +*************** +*** 434,440 **** + fi; \ + fi` + +! LDFLAGS_FOR_TARGET = + + NM_FOR_TARGET=@NM_FOR_TARGET@ + CONFIGURED_NM_FOR_TARGET=@CONFIGURED_NM_FOR_TARGET@ +--- 434,440 ---- + fi; \ + fi` + +! LDFLAGS_FOR_TARGET = $(NIX_EXTRA_LDFLAGS) + + NM_FOR_TARGET=@NM_FOR_TARGET@ + CONFIGURED_NM_FOR_TARGET=@CONFIGURED_NM_FOR_TARGET@ +Only in gcc-4.0.0: Makefile.in.orig