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