nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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})