nixpkgs/pkgs/development/compilers/ecl/default.nix
Hraban 577de1655a ecl: add SBCL as passthru test
ECL is used as the bootstrap compiler for SBCL, which makes it a comprehensive
test for ECL.
2026-07-06 01:42:18 -04:00

96 lines
2.2 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
lib,
stdenv,
fetchurl,
fetchpatch,
libtool,
autoconf,
automake,
texinfo,
gmp,
mpfr,
libffi,
makeWrapper,
noUnicode ? false,
gcc,
clang,
threadSupport ? true,
useBoehmgc ? false,
boehmgc,
sbcl,
}:
let
cc = if stdenv.cc.isClang then clang else gcc;
in
stdenv.mkDerivation rec {
pname = "ecl";
version = "26.5.5";
src = fetchurl {
url = "https://common-lisp.net/project/ecl/static/files/release/ecl-${version}.tgz";
hash = "sha256-oBpbzajFtz5Z3aNJT9E+X+xdtqodrXgsPMO7V/FjNDU=";
};
nativeBuildInputs = [
libtool
autoconf
automake
texinfo
makeWrapper
];
propagatedBuildInputs = [
libffi
gmp
mpfr
cc
# replaces ecl's own gc which other packages can depend on, thus propagated
]
++ lib.optionals useBoehmgc [
# replaces ecl's own gc which other packages can depend on, thus propagated
boehmgc
];
configureFlags = [
(if threadSupport then "--enable-threads" else "--disable-threads")
"--with-gmp-incdir=${lib.getDev gmp}/include"
"--with-gmp-libdir=${lib.getLib gmp}/lib"
"--with-libffi-incdir=${lib.getDev libffi}/include"
"--with-libffi-libdir=${lib.getLib libffi}/lib"
]
++ lib.optionals useBoehmgc [
"--with-libgc-incdir=${lib.getDev boehmgc}/include"
"--with-libgc-libdir=${lib.getLib boehmgc}/lib"
]
++ lib.optional (!noUnicode) "--enable-unicode";
hardeningDisable = [ "format" ];
# ECLs make check only works after install, making it a de-facto
# installCheck.
doInstallCheck = true;
installCheckTarget = "check";
postInstall = ''
sed -e 's/@[-a-zA-Z_]*@//g' -i $out/bin/ecl-config
wrapProgram "$out/bin/ecl" --prefix PATH ':' "${
lib.makeBinPath [
cc # for the C compiler
cc.bintools.bintools # for ar
]
}"
'';
# ECL is used as a bootstrap compiler for SBCL.
passthru.tests.sbcl = sbcl;
meta = {
description = "Lisp implementation aiming to be small, fast and easy to embed";
homepage = "https://common-lisp.net/project/ecl/";
license = lib.licenses.mit;
mainProgram = "ecl";
teams = [ lib.teams.lisp ];
platforms = lib.platforms.unix;
changelog = "https://gitlab.com/embeddable-common-lisp/ecl/-/raw/${version}/CHANGELOG";
};
}