diff options
Diffstat (limited to 'pkgs/applications/editors/emacs-25/builder.sh')
-rw-r--r-- | pkgs/applications/editors/emacs-25/builder.sh | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/pkgs/applications/editors/emacs-25/builder.sh b/pkgs/applications/editors/emacs-25/builder.sh new file mode 100644 index 00000000000..984a61df6f3 --- /dev/null +++ b/pkgs/applications/editors/emacs-25/builder.sh @@ -0,0 +1,38 @@ +source $stdenv/setup + +# This hook is supposed to be run on Linux. It patches the proper locations of +# the crt{1,i,n}.o files into the build to ensure that Emacs is linked with +# *our* versions, not the ones found in the system, as it would do by default. +# On other platforms, this appears to be unnecessary. +preConfigure() { + for i in Makefile.in ./src/Makefile.in ./lib-src/Makefile.in ./leim/Makefile.in; do + substituteInPlace $i --replace /bin/pwd pwd + done + + case "${system}" in + x86_64-linux) glibclibdir=lib64 ;; + i686-linux) glibclibdir=lib ;; + *) return; + esac + + libc=$(cat ${NIX_CC}/nix-support/orig-libc) + echo "libc: $libc" + + for i in src/s/*.h src/m/*.h; do + substituteInPlace $i \ + --replace /usr/${glibclibdir}/crt1.o $libc/${glibclibdir}/crt1.o \ + --replace /usr/${glibclibdir}/crti.o $libc/${glibclibdir}/crti.o \ + --replace /usr/${glibclibdir}/crtn.o $libc/${glibclibdir}/crtn.o \ + --replace /usr/lib/crt1.o $libc/${glibclibdir}/crt1.o \ + --replace /usr/lib/crti.o $libc/${glibclibdir}/crti.o \ + --replace /usr/lib/crtn.o $libc/${glibclibdir}/crtn.o + done +} + +preInstall () { + for i in Makefile.in ./src/Makefile.in ./lib-src/Makefile.in ./leim/Makefile.in; do + substituteInPlace $i --replace /bin/pwd pwd + done +} + +genericBuild |