ieda: init at 0-unstable-2024-10-11 (#338769)
[NixPkgs.git] / pkgs / development / compilers / ecl / default.nix
blob3f74941adb7252563f90f8f0f21552c49a6b7edf
2   lib,
3   stdenv,
4   fetchurl,
5   fetchpatch,
6   libtool,
7   autoconf,
8   automake,
9   texinfo,
10   gmp,
11   mpfr,
12   libffi,
13   makeWrapper,
14   noUnicode ? false,
15   gcc,
16   threadSupport ? true,
17   useBoehmgc ? false,
18   boehmgc,
21 stdenv.mkDerivation rec {
22   pname = "ecl";
23   version = "24.5.10";
25   src = fetchurl {
26     url = "https://common-lisp.net/project/ecl/static/files/release/ecl-${version}.tgz";
27     hash = "sha256-5Opluxhh4OSVOGv6i8ZzvQFOltPPnZHpA4+RQ1y+Yis=";
28   };
30   nativeBuildInputs = [
31     libtool
32     autoconf
33     automake
34     texinfo
35     makeWrapper
36   ];
37   propagatedBuildInputs =
38     [
39       libffi
40       gmp
41       mpfr
42       gcc
43       # replaces ecl's own gc which other packages can depend on, thus propagated
44     ]
45     ++ lib.optionals useBoehmgc [
46       # replaces ecl's own gc which other packages can depend on, thus propagated
47       boehmgc
48     ];
50   patches = [
51     # https://gitlab.com/embeddable-common-lisp/ecl/-/merge_requests/1
52     (fetchpatch {
53       url = "https://raw.githubusercontent.com/sagemath/sage/9.2/build/pkgs/ecl/patches/write_error.patch";
54       sha256 = "0hfxacpgn4919hg0mn4wf4m8r7y592r4gw7aqfnva7sckxi6w089";
55     })
56   ];
58   configureFlags =
59     [
60       (if threadSupport then "--enable-threads" else "--disable-threads")
61       "--with-gmp-incdir=${lib.getDev gmp}/include"
62       "--with-gmp-libdir=${lib.getLib gmp}/lib"
63       "--with-libffi-incdir=${lib.getDev libffi}/include"
64       "--with-libffi-libdir=${lib.getLib libffi}/lib"
65     ]
66     ++ lib.optionals useBoehmgc [
67       "--with-libgc-incdir=${lib.getDev boehmgc}/include"
68       "--with-libgc-libdir=${lib.getLib boehmgc}/lib"
69     ]
70     ++ lib.optional (!noUnicode) "--enable-unicode";
72   hardeningDisable = [ "format" ];
74   # ECL’s ‘make check’ only works after install, making it a de-facto
75   # installCheck.
76   doInstallCheck = true;
77   installCheckTarget = "check";
79   postInstall = ''
80     sed -e 's/@[-a-zA-Z_]*@//g' -i $out/bin/ecl-config
81     wrapProgram "$out/bin/ecl" --prefix PATH ':' "${
82       lib.makeBinPath [
83         gcc # for the C compiler
84         gcc.bintools.bintools # for ar
85       ]
86     }"
87   '';
89   meta = with lib; {
90     description = "Lisp implementation aiming to be small, fast and easy to embed";
91     homepage = "https://common-lisp.net/project/ecl/";
92     license = licenses.mit;
93     mainProgram = "ecl";
94     maintainers = lib.teams.lisp.members;
95     platforms = platforms.unix;
96     changelog = "https://gitlab.com/embeddable-common-lisp/ecl/-/raw/${version}/CHANGELOG";
97   };