gcj: fix build on Darwin

Partially addresses https://github.com/NixOS/nixpkgs/issues/29715.
wip/yesman
Alyssa Ross 6 years ago
parent 4abc6ff9e8
commit b9b83748f3
No known key found for this signature in database
GPG Key ID: C4844408C0657052
  1. 9
      pkgs/build-support/setup-hooks/fix-darwin-dylib-names.sh
  2. 31
      pkgs/development/compilers/gcc/6/default.nix

@ -23,7 +23,14 @@ fixDarwinDylibNames() {
for fn in "$@"; do
if [ -L "$fn" ]; then continue; fi
echo "$fn: fixing dylib"
install_name_tool -id "$fn" "${flags[@]}" "$fn"
int_out=$(install_name_tool -id "$fn" "${flags[@]}" "$fn" 2>&1)
result=$?
if [ "$result" -ne 0 ] &&
! grep "shared library stub file and can't be changed" <<< "$out"
then
echo "$int_out" >&2
exit "$result"
fi
done
}

@ -180,18 +180,23 @@ stdenv.mkDerivation ({
hardeningDisable = [ "format" "pie" ];
# This should kill all the stdinc frameworks that gcc and friends like to
# insert into default search paths.
prePatch = stdenv.lib.optionalString hostPlatform.isDarwin ''
substituteInPlace gcc/config/darwin-c.c \
--replace 'if (stdinc)' 'if (0)'
substituteInPlace libgcc/config/t-slibgcc-darwin \
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
substituteInPlace libgfortran/configure \
--replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
'';
prePatch =
(stdenv.lib.optionalString (langJava || langGo) ''
export lib=$out
'')
# This should kill all the stdinc frameworks that gcc and friends like to
# insert into default search paths.
+ stdenv.lib.optionalString hostPlatform.isDarwin ''
substituteInPlace gcc/config/darwin-c.c \
--replace 'if (stdinc)' 'if (0)'
substituteInPlace libgcc/config/t-slibgcc-darwin \
--replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
substituteInPlace libgfortran/configure \
--replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
'';
postPatch =
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
@ -447,7 +452,7 @@ stdenv.mkDerivation ({
// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
// optionalAttrs (langJava) {
// optionalAttrs (langJava && !stdenv.hostPlatform.isDarwin) {
postFixup = ''
target="$(echo "$out/libexec/gcc"/*/*/ecj*)"
patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target"

Loading…
Cancel
Save