Merge pull request #181943 from trofi/fix-cross-built-gcc
gcc: pass --with-build-sysroot=/
This commit is contained in:
commit
21966e13d2
@ -50,6 +50,11 @@ if [[ "${NIX_ENFORCE_PURITY:-}" = 1 && -n "${NIX_STORE:-}"
|
||||
n+=1; skip "$p2"
|
||||
elif [ "$p" = -dynamic-linker ] && badPath "$p2"; then
|
||||
n+=1; skip "$p2"
|
||||
elif [ "$p" = -syslibroot ] && [ $p2 == // ]; then
|
||||
# When gcc is built on darwin --with-build-sysroot=/
|
||||
# produces '-syslibroot //' linker flag. It's a no-op,
|
||||
# which does not introduce impurities.
|
||||
n+=1; skip "$p2"
|
||||
elif [ "${p:0:1}" = / ] && badPath "$p"; then
|
||||
# We cannot skip this; barf.
|
||||
echo "impure path \`$p' used in link" >&2
|
||||
|
@ -111,8 +111,30 @@ let
|
||||
"--with-mpc=${libmpc}"
|
||||
]
|
||||
++ lib.optional (libelf != null) "--with-libelf=${libelf}"
|
||||
++ lib.optional (!(crossMingw && crossStageStatic))
|
||||
"--with-native-system-header-dir=${lib.getDev stdenv.cc.libc}/include"
|
||||
++ lib.optionals (!crossStageStatic) [
|
||||
(if libcCross == null
|
||||
then "--with-native-system-header-dir=${lib.getDev stdenv.cc.libc}/include"
|
||||
else "--with-native-system-header-dir=${lib.getDev libcCross}${libcCross.incdir or "/include"}")
|
||||
# gcc builds for cross-compilers (build != host) or cross-built
|
||||
# gcc (host != target) always apply the offset prefix to disentangle
|
||||
# target headers from build or host headers:
|
||||
# ${with_build_sysroot}${native_system_header_dir}
|
||||
# or ${test_exec_prefix}/${target_noncanonical}/sys-include
|
||||
# or ${with_sysroot}${native_system_header_dir}
|
||||
# While native build (build == host == target) uses passed headers
|
||||
# path as is:
|
||||
# ${native_system_header_dir}
|
||||
#
|
||||
# Nixpkgs uses flat directory structure for both native and cross
|
||||
# cases. As a result libc headers don't get found for cross case
|
||||
# and many modern features get disabled (libssp is used instead of
|
||||
# target-specific implementations and similar). More details at:
|
||||
# https://github.com/NixOS/nixpkgs/pull/181802#issuecomment-1186822355
|
||||
#
|
||||
# We pick "/" path to effectively avoid sysroot offset and make it work
|
||||
# as a native case.
|
||||
"--with-build-sysroot=/"
|
||||
]
|
||||
|
||||
# Basic configuration
|
||||
++ [
|
||||
|
Loading…
Reference in New Issue
Block a user