From e1831ebea3bcb415800a74fe458f802e63549e1c Mon Sep 17 00:00:00 2001 From: Ben Wolsieffer Date: Mon, 12 Aug 2019 18:59:01 -0400 Subject: [PATCH] gcc: move target-specific runtime libraries to separate output --- pkgs/build-support/cc-wrapper/default.nix | 4 +++- pkgs/development/compilers/gcc/builder.sh | 26 +++++++++++------------ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/pkgs/build-support/cc-wrapper/default.nix b/pkgs/build-support/cc-wrapper/default.nix index b078bf2fbbd3dd..9bac8feef6d4b4 100644 --- a/pkgs/build-support/cc-wrapper/default.nix +++ b/pkgs/build-support/cc-wrapper/default.nix @@ -41,7 +41,9 @@ let libc_bin = if libc == null then null else getBin libc; libc_dev = if libc == null then null else getDev libc; libc_lib = if libc == null then null else getLib libc; - cc_solib = getLib cc; + cc_solib = getLib cc + + optionalString (targetPlatform != hostPlatform) "/${targetPlatform.config}"; + # The wrapper scripts use 'cat' and 'grep', so we may need coreutils. coreutils_bin = if nativeTools then "" else getBin coreutils; diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh index 07a003691d6b20..579378764f0d25 100644 --- a/pkgs/development/compilers/gcc/builder.sh +++ b/pkgs/development/compilers/gcc/builder.sh @@ -133,7 +133,7 @@ if test "$noSysDirs" = "1"; then if test "$crossStageStatic" == 1; then # We don't want the gcc build to assume there will be a libc providing - # limits.h in this stagae + # limits.h in this stage makeFlagsArray+=( 'LIMITS_H_TEST=false' ) @@ -203,31 +203,31 @@ postConfigure() { preInstall() { # Make ‘lib64’ symlinks to ‘lib’. if [ -n "$is64bit" -a -z "$enableMultilib" ]; then - mkdir -p "$out/lib" - ln -s lib "$out/lib64" - mkdir -p "$lib/lib" - ln -s lib "$lib/lib64" + mkdir -p "$out/${targetConfig}/lib" + ln -s lib "$out/${targetConfig}/lib64" + mkdir -p "$lib/${targetConfig}/lib" + ln -s lib "$lib/${targetConfig}/lib64" fi } postInstall() { # Move runtime libraries to $lib. - moveToOutput "lib/lib*.so*" "$lib" - moveToOutput "lib/lib*.la" "$lib" - moveToOutput "lib/lib*.dylib" "$lib" + moveToOutput "${targetConfig+$targetConfig/}lib/lib*.so*" "$lib" + moveToOutput "${targetConfig+$targetConfig/}lib/lib*.la" "$lib" + moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dylib" "$lib" moveToOutput "share/gcc-*/python" "$lib" - for i in "$lib"/lib/*.{la,py}; do + for i in "$lib/${targetConfig}"/lib/*.{la,py}; do substituteInPlace "$i" --replace "$out" "$lib" done if [ -n "$enableMultilib" ]; then - moveToOutput "lib64/lib*.so*" "$lib" - moveToOutput "lib64/lib*.la" "$lib" - moveToOutput "lib64/lib*.dylib" "$lib" + moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.so*" "$lib" + moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.la" "$lib" + moveToOutput "${targetConfig+$targetConfig/}lib64/lib*.dylib" "$lib" - for i in "$lib"/lib64/*.{la,py}; do + for i in "$lib/${targetConfig}"/lib64/*.{la,py}; do substituteInPlace "$i" --replace "$out" "$lib" done fi