at v192 144 lines 4.5 kB view raw
1source $stdenv/setup 2 3 4export NIX_FIXINC_DUMMY=$NIX_BUILD_TOP/dummy 5mkdir $NIX_FIXINC_DUMMY 6 7 8# libstdc++ needs this; otherwise it will use /lib/cpp, which is a Bad 9# Thing. 10export CPP="gcc -E" 11 12 13if test "$noSysDirs" = "1"; then 14 15 if test -e $NIX_CC/nix-support/orig-libc; then 16 17 # Figure out what extra flags to pass to the gcc compilers 18 # being generated to make sure that they use our glibc. 19 extraCFlags="$(cat $NIX_CC/nix-support/libc-cflags)" 20 extraLDFlags="$(cat $NIX_CC/nix-support/libc-ldflags) $(cat $NIX_CC/nix-support/libc-ldflags-before)" 21 22 # Use *real* header files, otherwise a limits.h is generated 23 # that does not include Glibc's limits.h (notably missing 24 # SSIZE_MAX, which breaks the build). 25 export NIX_FIXINC_DUMMY=$(cat $NIX_CC/nix-support/orig-libc)/include 26 27 else 28 # Hack: support impure environments. 29 extraCFlags="-isystem /usr/include" 30 extraLDFlags="-L/usr/lib64 -L/usr/lib" 31 export NIX_FIXINC_DUMMY=/usr/include 32 fi 33 34 35 extraCFlags="-g0 -I$gmp/include -I$mpfr/include $extraCFlags" 36 extraLDFlags="--strip-debug $extraLDFlags" 37 38 export NIX_EXTRA_CFLAGS=$extraCFlags 39 for i in $extraLDFlags; do 40 export NIX_EXTRA_LDFLAGS="$NIX_EXTRA_LDFLAGS -Wl,$i" 41 done 42 43 if test -n "$targetConfig"; then 44 if test -z "$crossStageStatic"; then 45 extraXCFlags="-B${libcCross}/lib -idirafter ${libcCross}/include" 46 extraXLDFlags="-L${libcCross}/lib" 47 export NIX_EXTRA_CFLAGS_TARGET=$extraXCFlags 48 for i in $extraXLDFlags; do 49 export NIX_EXTRA_LDFLAGS_TARGET="$NIX_EXTRA_LDFLAGS_TARGET -Wl,$i" 50 done 51 fi 52 53 makeFlagsArray=( \ 54 "${makeFlagsArray[@]}" \ 55 NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ 56 SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ 57 CFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ 58 LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS_TARGET $NIX_EXTRA_LDFLAGS_TARGET" \ 59 ) 60 else 61 export NIX_EXTRA_CFLAGS_TARGET=$NIX_EXTRA_CFLAGS 62 export NIX_EXTRA_LDFLAGS_TARGET=$NIX_EXTRA_LDFLAGS 63 makeFlagsArray=( \ 64 "${makeFlagsArray[@]}" \ 65 NATIVE_SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ 66 SYSTEM_HEADER_DIR="$NIX_FIXINC_DUMMY" \ 67 CFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ 68 CFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ 69 LDFLAGS_FOR_BUILD="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ 70 LDFLAGS_FOR_TARGET="$NIX_EXTRA_CFLAGS $NIX_EXTRA_LDFLAGS" \ 71 ) 72 fi 73 74 if test -n "$targetConfig" -a "$crossStageStatic" == 1; then 75 # We don't want the gcc build to assume there will be a libc providing 76 # limits.h in this stagae 77 makeFlagsArray=( \ 78 "${makeFlagsArray[@]}" \ 79 LIMITS_H_TEST=false \ 80 ) 81 else 82 makeFlagsArray=( \ 83 "${makeFlagsArray[@]}" \ 84 LIMITS_H_TEST=true \ 85 ) 86 fi 87fi 88 89if test -n "$targetConfig"; then 90 # The host strip will destroy everything in the target binaries otherwise 91 dontStrip=1 92fi 93 94preConfigure() { 95 # Perform the build in a different directory. 96 mkdir ../build 97 cd ../build 98 configureScript=../$sourceRoot/configure 99} 100 101 102postInstall() { 103 # Remove precompiled headers for now. They are very big and 104 # probably not very useful yet. 105 find $out/include -name "*.gch" -exec rm -rf {} \; -prune 106 107 # Remove `fixincl' to prevent a retained dependency on the 108 # previous gcc. 109 rm -rf $out/libexec/gcc/*/*/install-tools 110 rm -rf $out/lib/gcc/*/*/install-tools 111 112 # Get rid of some "fixed" header files 113 rm -rf $out/lib/gcc/*/*/include/root 114 115 # Replace hard links for i686-pc-linux-gnu-gcc etc. with symlinks. 116 for i in $out/bin/*-gcc*; do 117 if cmp -s $out/bin/gcc $i; then 118 ln -sfn gcc $i 119 fi 120 done 121 122 for i in $out/bin/*-c++* $out/bin/*-g++*; do 123 if cmp -s $out/bin/g++ $i; then 124 ln -sfn g++ $i 125 fi 126 done 127 128 eval "$postInstallGhdl" 129} 130 131 132if test -z "$targetConfig"; then 133 if test -z "$profiledCompiler"; then 134 buildFlags="bootstrap $buildFlags" 135 else 136 buildFlags="profiledbootstrap $buildFlags" 137 fi 138else 139: 140# buildFlags="all-gcc all-target-libgcc $buildFlags" 141# installTargets="install-gcc install-target-libgcc" 142fi 143 144genericBuild