nixpkgs/pkgs/development/compilers/gcl/default.nix
Sergei Trofimovich b5644dfa57 gcl: add -fcommon workaround
Workaround build failure on -fno-common toolchains like upstream
gcc-10. Otherwise build fails as:

    ld: ./libgclp.a(user_match.o):(.bss+0x18): multiple definition of
      `tf'; ./libpre_gcl.a(main.o):(.bss+0x326d90): first defined here
2022-06-08 08:38:15 +01:00

55 lines
1.5 KiB
Nix

{ lib, stdenv, fetchurl, mpfr, m4, binutils, emacs, zlib, which
, texinfo, libX11, xorgproto, libXi, gmp
, libXext, libXt, libXaw, libXmu } :
assert stdenv ? cc ;
assert stdenv.cc.isGNU ;
assert stdenv.cc ? libc ;
assert stdenv.cc.libc != null ;
stdenv.mkDerivation rec {
pname = "gcl";
version = "2.6.12";
src = fetchurl {
sha256 = "1s4hs2qbjqmn9h88l4xvsifq5c3dlc5s74lyb61rdi5grhdlkf4f";
url = "http://gnu.spinellicreations.com/gcl/${pname}-${version}.tar.gz";
};
patches = [(fetchurl {
url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/dev-lisp/gcl/files/gcl-2.6.12-gcc5.patch";
sha256 = "00jbsn0qp8ki2w7dx8caha7g2hr9076xa6bg48j3qqqncff93zdh";
})];
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=902475
postPatch = ''
substituteInPlace h/elf64_i386_reloc.h \
--replace 'case R_X86_64_PC32:' 'case R_X86_64_PC32: case R_X86_64_PLT32:'
'';
buildInputs = [
mpfr m4 binutils emacs gmp
libX11 xorgproto libXi
libXext libXt libXaw libXmu
zlib which texinfo
];
configureFlags = [
"--enable-ansi"
];
hardeningDisable = [ "pic" "bindnow" ];
# -fcommon: workaround build failure on -fno-common toolchains:
# ld: ./libgclp.a(user_match.o):(.bss+0x18): multiple definition of
# `tf'; ./libpre_gcl.a(main.o):(.bss+0x326d90): first defined here
NIX_CFLAGS_COMPILE = "-fgnu89-inline -fcommon";
meta = with lib; {
description = "GNU Common Lisp compiler working via GCC";
maintainers = [ maintainers.raskin ];
license = licenses.gpl2;
platforms = platforms.linux;
};
}