cross GCC: Fix some paths to libc headers (after multiple outputs)

It's not completely clear to me why the path to libc headers is set
differently when cross building...
This commit is contained in:
Tuomas Tynkkynen 2016-06-01 23:01:24 +03:00
parent aaf008bda4
commit a06a405d0b
4 changed files with 10 additions and 6 deletions

View File

@ -96,6 +96,7 @@ stdenv.mkDerivation {
echo "-L${libc_lib}/lib" > $out/nix-support/libc-ldflags echo "-L${libc_lib}/lib" > $out/nix-support/libc-ldflags
echo "${libc_lib}" > $out/nix-support/orig-libc echo "${libc_lib}" > $out/nix-support/orig-libc
echo "${libc_dev}" > $out/nix-support/orig-libc-dev
'' ''
+ (if nativeTools then '' + (if nativeTools then ''

View File

@ -111,6 +111,7 @@ chmod +x "$out/bin/$crossConfig-ld"
# Glibc. # Glibc.
test -n "$gcc" && echo $gcc > $out/nix-support/orig-cc test -n "$gcc" && echo $gcc > $out/nix-support/orig-cc
test -n "$libc" && echo $libc > $out/nix-support/orig-libc test -n "$libc" && echo $libc > $out/nix-support/orig-libc
test -n "$libc_dev" && echo $libc_dev > $out/nix-support/orig-libc-dev
doSubstitute "$addFlags" "$out/nix-support/add-flags" doSubstitute "$addFlags" "$out/nix-support/add-flags"

View File

@ -46,6 +46,7 @@ stdenv.mkDerivation {
addFlags = ./add-flags; addFlags = ./add-flags;
inherit nativeTools nativeLibc nativePrefix gcc binutils; inherit nativeTools nativeLibc nativePrefix gcc binutils;
libc = if libc ? out then libc.out else libc; libc = if libc ? out then libc.out else libc;
libc_dev = if libc ? dev then libc.dev else libc;
crossConfig = if cross != null then cross.config else null; crossConfig = if cross != null then cross.config else null;
osxMinVersion = cross.osxMinVersion or null; osxMinVersion = cross.osxMinVersion or null;
gccLibs = if gcc != null then gccLibs else null; gccLibs = if gcc != null then gccLibs else null;

View File

@ -86,15 +86,16 @@ if test "$noSysDirs" = "1"; then
extraFlags="$(cat $NIX_CC_CROSS/nix-support/libc-cflags)" extraFlags="$(cat $NIX_CC_CROSS/nix-support/libc-cflags)"
extraLDFlags="$(cat $NIX_CC_CROSS/nix-support/libc-ldflags) $(cat $NIX_CC_CROSS/nix-support/libc-ldflags-before)" extraLDFlags="$(cat $NIX_CC_CROSS/nix-support/libc-ldflags) $(cat $NIX_CC_CROSS/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).
NIX_FIXINC_DUMMY_CROSS=$(cat $NIX_CC_CROSS/nix-support/orig-libc)/include
# The path to the Glibc binaries such as `crti.o'. # The path to the Glibc binaries such as `crti.o'.
glibc_dir="$(cat $NIX_CC_CROSS/nix-support/orig-libc)" glibc_dir="$(cat $NIX_CC_CROSS/nix-support/orig-libc)"
glibc_libdir="$glibc_dir/lib" glibc_libdir="$glibc_dir/lib"
configureFlags="$configureFlags --with-native-system-header-dir=$glibc_dir/include" glibc_devdir="$(cat $NIX_CC_CROSS/nix-support/orig-libc-dev)"
configureFlags="$configureFlags --with-native-system-header-dir=$glibc_devdir/include"
# 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).
NIX_FIXINC_DUMMY_CROSS="$glibc_devdir/include"
extraFlags="-I$NIX_FIXINC_DUMMY_CROSS $extraFlags" extraFlags="-I$NIX_FIXINC_DUMMY_CROSS $extraFlags"
extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags" extraLDFlags="-L$glibc_libdir -rpath $glibc_libdir $extraLDFlags"