at 23.05-pre 129 lines 4.1 kB view raw
1{ lib, stdenv, fetchFromGitHub, fetchFromGitLab 2, llvmPackages 3, cmake, boehmgc, gmp, zlib, ncurses, boost, libelf 4, python3, git, sbcl 5, wafHook 6}: 7let 8 sicl = fetchFromGitHub { 9 owner = "Bike"; 10 repo = "SICL"; 11 rev = "78052fb5f02a3814eb7295f3dcac09f21f98702b"; 12 sha256 = "0wnmp40310ls6q9gkr5ysfkj2qirq26ljjicnkqifc53mm0ghz4i"; 13 }; 14 cst = fetchFromGitHub { 15 owner = "robert-strandh"; 16 repo = "Concrete-Syntax-Tree"; 17 rev = "8d8c5abf8f1690cb2b765241d81c2eb86d60d77e"; 18 sha256 = "1rs8a5nbfffdyli126sccd0z1a8h5axp222b4pgwvgfxsb9w7g3s"; 19 }; 20 c2mop = fetchFromGitHub { 21 owner = "pcostanza"; 22 repo = "closer-mop"; 23 rev = "d4d1c7aa6aba9b4ac8b7bb78ff4902a52126633f"; 24 sha256 = "1amcv0f3vbsq0aqhai7ki5bi367giway1pbfxyc47r7q3hq5hw3c"; 25 }; 26 acclimation = fetchFromGitHub { 27 owner = "robert-strandh"; 28 repo = "Acclimation"; 29 rev = "dd15c86b0866fc5d8b474be0da15c58a3c04c45c"; 30 sha256 = "0ql224qs3zgflvdhfbca621v3byhhqfb71kzy70bslyczxv1bsh2"; 31 }; 32 eclector = fetchFromGitHub { 33 owner = "robert-strandh"; 34 repo = "Eclector"; 35 rev = "287ce817c0478668bd389051d2cc6b26ddc62ec9"; 36 sha256 = "0v7mgkq49ddyx5vvsradcp772y5l7cv9xrll3280hyginpm8w6q3"; 37 }; 38 alexandria = fetchFromGitHub { 39 owner = "clasp-developers"; 40 repo = "alexandria"; 41 rev = "e5c54bc30b0887c237bde2827036d17315f88737"; 42 sha256 = "14h7a9fwimiw9gqxjm2h47d95bfhrm7b81f6si7x8vy18d78fn4g"; 43 }; 44 mps = fetchFromGitHub { 45 owner = "Ravenbrook"; 46 repo = "mps"; 47 rev = "b8a05a3846430bc36c8200f24d248c8293801503"; 48 sha256 = "1q2xqdw832jrp0w9yhgr8xihria01j4z132ac16lr9ssqznkprv6"; 49 }; 50 asdf = fetchFromGitLab { 51 domain = "gitlab.common-lisp.net"; 52 owner = "asdf"; 53 repo = "asdf"; 54 rev = "3.3.1.2"; 55 sha256 = "0ljr2vc0cb2wrijcyjmp9hcaj2bdhh05ci3zf4f43hdq6i2fgg6g"; 56 }; 57in 58stdenv.mkDerivation rec { 59 pname = "clasp"; 60 version = "0.8.99.20181128"; 61 62 src = fetchFromGitHub { 63 owner = "drmeister"; 64 repo = "clasp"; 65 rev = "2f2b52ccb750048460562b5987a7eaf7a1aa4445"; 66 sha256 = "0ra55vdnk59lygwzlxr5cg16vb9c45fmg59wahaxclwm461w7fwz"; 67 fetchSubmodules = true; 68 }; 69 70 nativeBuildInputs = [ cmake python3 git sbcl wafHook ] ++ 71 (with llvmPackages; [ llvm clang ]); 72 73 buildInputs = with llvmPackages; 74 ( 75 builtins.map (x: lib.overrideDerivation x 76 (x: {NIX_CFLAGS_COMPILE= (x.NIX_CFLAGS_COMPILE or "") + " -frtti"; })) 77 [ llvm clang clang-unwrapped clang ]) ++ 78 [ 79 gmp zlib ncurses 80 boost boehmgc libelf 81 (boost.override {enableStatic = true; enableShared = false;}) 82 (lib.overrideDerivation boehmgc 83 (x: {configureFlags = (x.configureFlags or []) ++ ["--enable-static"];})) 84 ]; 85 86 NIX_CXXSTDLIB_COMPILE = " -frtti "; 87 88 postPatch = '' 89 echo " 90 PREFIX = '$out' 91 " | sed -e 's/^ *//' > wscript.config 92 93 mkdir -p src/lisp/kernel/contrib/sicl 94 mkdir -p src/lisp/kernel/contrib/Concrete-Syntax-Tree 95 mkdir -p src/lisp/kernel/contrib/closer-mop 96 mkdir -p src/lisp/kernel/contrib/Acclimation 97 mkdir -p src/lisp/kernel/contrib/Eclector 98 mkdir -p src/lisp/kernel/contrib/alexandria 99 mkdir -p src/mps 100 mkdir -p src/lisp/modules/asdf 101 102 cp -rfT "${sicl}" src/lisp/kernel/contrib/sicl 103 cp -rfT "${cst}" src/lisp/kernel/contrib/Concrete-Syntax-Tree 104 cp -rfT "${c2mop}" src/lisp/kernel/contrib/closer-mop 105 cp -rfT "${acclimation}" src/lisp/kernel/contrib/Acclimation 106 cp -rfT "${eclector}" src/lisp/kernel/contrib/Eclector 107 cp -rfT "${alexandria}" src/lisp/kernel/contrib/alexandria 108 cp -rfT "${mps}" src/mps 109 cp -rfT "${asdf}" src/lisp/modules/asdf 110 111 chmod -R u+rwX src 112 ( cd src/lisp/modules/asdf; make ) 113 ''; 114 115 buildTargets = "build_cboehm"; 116 installTargets = "install_cboehm"; 117 118 CLASP_SRC_DONTTOUCH = "true"; 119 120 meta = { 121 description = "A Common Lisp implementation based on LLVM with C++ integration"; 122 license = lib.licenses.lgpl21Plus ; 123 maintainers = [lib.maintainers.raskin]; 124 platforms = lib.platforms.linux; 125 # Large, long to build, a private build of clang is needed, a prerelease. 126 hydraPlatforms = []; 127 homepage = "https://github.com/drmeister/clasp"; 128 }; 129}