nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at netboot-syslinux-multiplatform 142 lines 3.3 kB view raw
1{ lib, stdenv, llvm_meta 2, runCommand 3, fetch 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 src = fetch pname "0g3pj1m3chafavpr35r9fynm85y2hdyla6klj0h28khxs2613i78"; 31 32 patches = [ 33 ./procfs.patch 34 (runCommand "resource-dir.patch" { 35 clangLibDir = "${libclang.lib}/lib"; 36 } '' 37 substitute '${./resource-dir.patch}' "$out" --subst-var clangLibDir 38 '') 39 ./gnu-install-dirs.patch 40 ]; 41 42 outputs = [ "out" "lib" "dev" ]; 43 44 nativeBuildInputs = [ 45 cmake python3 which swig lit makeWrapper 46 ] ++ lib.optionals enableManpages [ 47 python3.pkgs.sphinx python3.pkgs.recommonmark 48 ]; 49 50 buildInputs = [ 51 ncurses 52 zlib 53 libedit 54 libxml2 55 libllvm 56 ] 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 doInstallCheck = true; 89 90 installCheckPhase = '' 91 if [ ! -e "$lib/${python3.sitePackages}/lldb/_lldb.so" ] ; then 92 echo "ERROR: python files not installed where expected!"; 93 return 1; 94 fi 95 ''; 96 97 postInstall = '' 98 wrapProgram $out/bin/lldb --prefix PYTHONPATH : $lib/${python3.sitePackages}/ 99 100 # Editor support 101 # vscode: 102 install -D ../tools/lldb-vscode/package.json $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/package.json 103 mkdir -p $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin 104 ln -s $out/bin/lldb-vscode $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin 105 ''; 106 107 meta = llvm_meta // { 108 homepage = "https://lldb.llvm.org/"; 109 description = "A next-generation high-performance debugger"; 110 longDescription = '' 111 LLDB is a next generation, high-performance debugger. It is built as a set 112 of reusable components which highly leverage existing libraries in the 113 larger LLVM Project, such as the Clang expression parser and LLVM 114 disassembler. 115 ''; 116 }; 117} // lib.optionalAttrs enableManpages { 118 pname = "lldb-manpages"; 119 120 buildPhase = '' 121 make docs-lldb-man 122 ''; 123 124 propagatedBuildInputs = []; 125 126 # manually install lldb man page 127 installPhase = '' 128 mkdir -p $out/share/man/man1 129 install docs/man/lldb.1 -t $out/share/man/man1/ 130 ''; 131 132 postPatch = null; 133 postInstall = null; 134 135 outputs = [ "out" ]; 136 137 doCheck = false; 138 139 meta = llvm_meta // { 140 description = "man pages for LLDB ${version}"; 141 }; 142})