at 23.05-pre 145 lines 3.4 kB view raw
1{ lib, stdenv, llvm_meta 2, runCommand 3, monorepoSrc 4, cmake 5, zlib 6, ncurses 7, swig 8, which 9, libedit 10, libxml2 11, libllvm 12, libclang 13, python3 14, version 15, libobjc 16, xpc 17, Foundation 18, bootstrap_cmds 19, Carbon 20, Cocoa 21, lit 22, makeWrapper 23, enableManpages ? false 24, lua5_3 25}: 26 27stdenv.mkDerivation (rec { 28 pname = "lldb"; 29 inherit version; 30 31 src = runCommand "${pname}-src-${version}" {} '' 32 mkdir -p "$out" 33 cp -r ${monorepoSrc}/cmake "$out" 34 cp -r ${monorepoSrc}/${pname} "$out" 35 ''; 36 37 sourceRoot = "${src.name}/${pname}"; 38 39 patches = [ 40 ./procfs.patch 41 (runCommand "resource-dir.patch" { 42 clangLibDir = "${libclang.lib}/lib"; 43 } '' 44 substitute '${./resource-dir.patch}' "$out" --subst-var clangLibDir 45 '') 46 ./gnu-install-dirs.patch 47 ]; 48 49 outputs = [ "out" "lib" "dev" ]; 50 51 nativeBuildInputs = [ 52 cmake python3 which swig lit makeWrapper lua5_3 53 ] ++ lib.optionals enableManpages [ 54 python3.pkgs.sphinx python3.pkgs.recommonmark 55 ]; 56 57 buildInputs = [ 58 ncurses 59 zlib 60 libedit 61 libxml2 62 libllvm 63 ] ++ lib.optionals stdenv.isDarwin [ 64 libobjc 65 xpc 66 Foundation 67 bootstrap_cmds 68 Carbon 69 Cocoa 70 ]; 71 72 hardeningDisable = [ "format" ]; 73 74 cmakeFlags = [ 75 "-DLLDB_INCLUDE_TESTS=${if doCheck then "YES" else "NO"}" 76 "-DLLVM_ENABLE_RTTI=OFF" 77 "-DClang_DIR=${libclang.dev}/lib/cmake" 78 "-DLLVM_EXTERNAL_LIT=${lit}/bin/lit" 79 ] ++ lib.optionals stdenv.isDarwin [ 80 "-DLLDB_USE_SYSTEM_DEBUGSERVER=ON" 81 ] ++ lib.optionals (!stdenv.isDarwin) [ 82 "-DLLDB_CODESIGN_IDENTITY=" # codesigning makes nondeterministic 83 ] ++ lib.optionals enableManpages [ 84 "-DLLVM_ENABLE_SPHINX=ON" 85 "-DSPHINX_OUTPUT_MAN=ON" 86 "-DSPHINX_OUTPUT_HTML=OFF" 87 ] ++ lib.optionals doCheck [ 88 "-DLLDB_TEST_C_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc" 89 "-DLLDB_TEST_CXX_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++" 90 ]; 91 92 doCheck = false; 93 94 installCheckPhase = '' 95 if [ ! -e "$lib/${python3.sitePackages}/lldb/_lldb.so" ] ; then 96 return 1; 97 fi 98 ''; 99 100 postInstall = '' 101 wrapProgram $out/bin/lldb --prefix PYTHONPATH : $lib/${python3.sitePackages}/ 102 103 # Editor support 104 # vscode: 105 install -D ../tools/lldb-vscode/package.json $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/package.json 106 mkdir -p $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin 107 ln -s $out/bin/lldb-vscode $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin 108 ''; 109 110 meta = llvm_meta // { 111 homepage = "https://lldb.llvm.org/"; 112 description = "A next-generation high-performance debugger"; 113 longDescription = '' 114 LLDB is a next generation, high-performance debugger. It is built as a set 115 of reusable components which highly leverage existing libraries in the 116 larger LLVM Project, such as the Clang expression parser and LLVM 117 disassembler. 118 ''; 119 }; 120} // lib.optionalAttrs enableManpages { 121 pname = "lldb-manpages"; 122 123 buildPhase = '' 124 make docs-lldb-man 125 ''; 126 127 propagatedBuildInputs = []; 128 129 # manually install lldb man page 130 installPhase = '' 131 mkdir -p $out/share/man/man1 132 install docs/man/lldb.1 -t $out/share/man/man1/ 133 ''; 134 135 postPatch = null; 136 postInstall = null; 137 138 outputs = [ "out" ]; 139 140 doCheck = false; 141 142 meta = llvm_meta // { 143 description = "man pages for LLDB ${version}"; 144 }; 145})