source $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/$platform ensureDir $out/$platform/bin ln -s $binutilsCross/$platform/bin/as $out/$platform/bin/as ln -s $binutilsCross/$platform/bin/ld $out/$platform/bin/ld ln -s $binutilsCross/$platform/bin/ar $out/$platform/bin/ar ln -s $binutilsCross/$platform/bin/ranlib $out/$platform/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=$kernelHeadersCross/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