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