Files
nixpkgs/pkgs/development/compilers/ecl/default.nix
Anton Tayanovskyy cd50621605 ecl: use fixDarwinDylibNames
This change makes sure dynamic libraries such as result/lib/libecl.dylib have no runtime-resolved paths
left, e.g. otool -L result/lib/libecl.dylib results have no "@rpath" entries.
2026-07-15 00:06:11 -04:00

102 lines
2.3 KiB
Nix
Raw Permalink 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,
fixDarwinDylibNames,
}:
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
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
fixDarwinDylibNames
];
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";
};
}