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