Merge pull request #329823 from ExpidusOS/fix/pkgsllvm/elfutils
[NixPkgs.git] / pkgs / development / compilers / clasp / default.nix
blob0d27b9f62c8aeb641bfb93005a13e25fb1346d37
1 { lib
2 , llvmPackages_15
3 , fetchzip
4 , sbcl
5 , pkg-config
6 , fmt_9
7 , gmpxx
8 , libelf
9 , boost
10 , libunwind
11 , ninja
12 , cacert
15 let
16   inherit (llvmPackages_15) stdenv llvm libclang;
19 stdenv.mkDerivation rec {
20   pname = "clasp";
21   version = "2.6.0";
23   src = fetchzip {
24     url = "https://github.com/clasp-developers/clasp/releases/download/${version}/clasp-${version}.tar.gz";
25     hash = "sha256-SiQ4RMha6dMV7V2fh+UxtAIgEEH/6/hF9fe+bPtoGIw=";
26   };
28   patches = [
29     ./remove-unused-command-line-argument.patch
30   ];
32   # Workaround for https://github.com/clasp-developers/clasp/issues/1590
33   postPatch = ''
34     echo '(defmethod configure-unit (c (u (eql :git))))' >> src/koga/units.lisp
35   '';
37   nativeBuildInputs = [
38     sbcl
39     pkg-config
40     fmt_9
41     gmpxx
42     libelf
43     boost
44     libunwind
45     ninja
46     llvm
47     libclang
48   ];
50   ninjaFlags = [ "-C" "build" ];
52   configurePhase = ''
53     export SOURCE_DATE_EPOCH=1
54     export ASDF_OUTPUT_TRANSLATIONS=$(pwd):$(pwd)/__fasls
55     sbcl --script koga \
56       --skip-sync \
57       --build-mode=bytecode-faso \
58       --cc=$NIX_CC/bin/cc \
59       --cxx=$NIX_CC/bin/c++ \
60       --reproducible-build \
61       --package-path=/ \
62       --bin-path=$out/bin \
63       --lib-path=$out/lib \
64       --share-path=$out/share
65   '';
67   meta = {
68     description = "Common Lisp implementation based on LLVM with C++ integration";
69     license = lib.licenses.lgpl21Plus ;
70     maintainers = lib.teams.lisp.members;
71     platforms = ["x86_64-linux" "x86_64-darwin"];
72     # Upstream claims support, but breaks with:
73     # error: use of undeclared identifier 'aligned_alloc'
74     broken = stdenv.isDarwin;
75     homepage = "https://github.com/clasp-developers/clasp";
76     mainProgram = "clasp";
77   };