emacs: use -B flags for native compilation dependencies

The -B flag to gcc (and libgccjit) allows us to specify where it can
find things it needs to correctly compile code (both programs and
libraries) without adjusting any environmental flags: So, no need to
wrap the program for a PATH entry containing binutils, and no need to
explicitly pass a linker path anymore.
This commit is contained in:
Andreas Fuchs 2020-08-31 00:47:33 -04:00
parent 3384837123
commit 6ad323d0a0
1 changed files with 5 additions and 6 deletions

View File

@ -68,11 +68,15 @@ in stdenv.mkDerivation {
# Make native compilation work both inside and outside of nix build # Make native compilation work both inside and outside of nix build
(lib.optionalString nativeComp (let (lib.optionalString nativeComp (let
libPath = (lib.concatStringsSep " " libPath = (lib.concatStringsSep " "
(builtins.map (x: ''\"-L${x}\"'') [ (builtins.map (x: ''\"-B${x}\"'') [
"${lib.getLib libgccjit}/lib" "${lib.getLib libgccjit}/lib"
"${lib.getLib libgccjit}/lib/gcc/${targetPlatform.config}/${libgccjit.version}" "${lib.getLib libgccjit}/lib/gcc/${targetPlatform.config}/${libgccjit.version}"
"${lib.getLib stdenv.cc.cc}/lib" "${lib.getLib stdenv.cc.cc}/lib"
"${lib.getLib stdenv.cc.libc}/lib" "${lib.getLib stdenv.cc.libc}/lib"
"${lib.getBin stdenv.cc.cc}"
"${lib.getBin stdenv.cc.cc}"
"${lib.getBin stdenv.cc.bintools}"
"${lib.getBin stdenv.cc.bintools.bintools}"
])); ]));
in '' in ''
substituteInPlace lisp/emacs-lisp/comp.el --replace \ substituteInPlace lisp/emacs-lisp/comp.el --replace \
@ -156,11 +160,6 @@ in stdenv.mkDerivation {
"$out/bin/emacs" "$out/bin/emacs"
patchelf --add-needed "libXcursor.so.1" "$out/bin/emacs" patchelf --add-needed "libXcursor.so.1" "$out/bin/emacs"
'') '')
(lib.optionalString nativeComp ''
wrapProgram $out/bin/emacs-* --prefix PATH : "${lib.makeBinPath [ stdenv.cc.bintools stdenv.cc.bintools.bintools ]}"
'')
]; ];
passthru = { passthru = {