diff options
author | Artturin <Artturin@artturin.com> | 2023-05-06 21:03:17 +0300 |
---|---|---|
committer | Artturin <Artturin@artturin.com> | 2023-05-09 19:59:45 +0300 |
commit | d53d5a8b38f8ecbf75388a1582efd4c19e61d5da (patch) | |
tree | 0857d413f23be8659951be48dee9dadfa7658acc /pkgs/development/compilers/llvm/14 | |
parent | 0ef7eafdb1cc834ecdcb2b9065413f79bb0145e1 (diff) |
llvmPackages.lldb: deduplicate >10
Diffstat (limited to 'pkgs/development/compilers/llvm/14')
-rw-r--r-- | pkgs/development/compilers/llvm/14/default.nix | 35 | ||||
-rw-r--r-- | pkgs/development/compilers/llvm/14/lldb/default.nix | 167 |
2 files changed, 30 insertions, 172 deletions
diff --git a/pkgs/development/compilers/llvm/14/default.nix b/pkgs/development/compilers/llvm/14/default.nix index 21dc8088452c2..8c42038b2373d 100644 --- a/pkgs/development/compilers/llvm/14/default.nix +++ b/pkgs/development/compilers/llvm/14/default.nix @@ -135,11 +135,36 @@ let inherit llvm_meta; }; - lldb = callPackage ./lldb { - inherit llvm_meta; - inherit (darwin) libobjc bootstrap_cmds; - inherit (darwin.apple_sdk.libs) xpc; - inherit (darwin.apple_sdk.frameworks) Foundation Carbon Cocoa; + lldb = callPackage ../common/lldb.nix { + patches = + let + resourceDirPatch = callPackage ({ runCommand, libclang }: (runCommand "resource-dir.patch" + { + clangLibDir = "${libclang.lib}/lib"; + } '' + substitute '${./lldb/resource-dir.patch}' "$out" --subst-var clangLibDir + '')) { }; + in + [ + ./lldb/procfs.patch + resourceDirPatch + ./lldb/gnu-install-dirs.patch + ] + # This is a stopgap solution if/until the macOS SDK used for x86_64 is + # updated. + # + # The older 10.12 SDK used on x86_64 as of this writing has a `mach/machine.h` + # header that does not define `CPU_SUBTYPE_ARM64E` so we replace the one use + # of this preprocessor symbol in `lldb` with its expansion. + # + # See here for some context: + # https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272129132 + ++ lib.optional ( + stdenv.targetPlatform.isDarwin + && !stdenv.targetPlatform.isAarch64 + && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") + ) ./lldb/cpu_subtype_arm64e_replacement.patch; + inherit llvm_meta release_version; }; # Below, is the LLVM bootstrapping logic. It handles building a diff --git a/pkgs/development/compilers/llvm/14/lldb/default.nix b/pkgs/development/compilers/llvm/14/lldb/default.nix deleted file mode 100644 index cd28325a55737..0000000000000 --- a/pkgs/development/compilers/llvm/14/lldb/default.nix +++ /dev/null @@ -1,167 +0,0 @@ -{ lib, stdenv, llvm_meta -, runCommand -, monorepoSrc -, cmake -, zlib -, ncurses -, swig -, which -, libedit -, libxml2 -, libllvm -, libclang -, python3 -, version -, libobjc -, xpc -, Foundation -, bootstrap_cmds -, Carbon -, Cocoa -, lit -, makeWrapper -, darwin -, enableManpages ? false -, lua5_3 -}: - -stdenv.mkDerivation (rec { - pname = "lldb"; - inherit version; - - src = runCommand "${pname}-src-${version}" {} '' - mkdir -p "$out" - cp -r ${monorepoSrc}/cmake "$out" - cp -r ${monorepoSrc}/${pname} "$out" - ''; - - sourceRoot = "${src.name}/${pname}"; - - patches = [ - ./procfs.patch - (runCommand "resource-dir.patch" { - clangLibDir = "${libclang.lib}/lib"; - } '' - substitute '${./resource-dir.patch}' "$out" --subst-var clangLibDir - '') - ./gnu-install-dirs.patch - ] - # This is a stopgap solution if/until the macOS SDK used for x86_64 is - # updated. - # - # The older 10.12 SDK used on x86_64 as of this writing has a `mach/machine.h` - # header that does not define `CPU_SUBTYPE_ARM64E` so we replace the one use - # of this preprocessor symbol in `lldb` with its expansion. - # - # See here for some context: - # https://github.com/NixOS/nixpkgs/pull/194634#issuecomment-1272129132 - ++ lib.optional ( - stdenv.targetPlatform.isDarwin - && !stdenv.targetPlatform.isAarch64 - && (lib.versionOlder darwin.apple_sdk.sdk.version "11.0") - ) ./cpu_subtype_arm64e_replacement.patch; - - outputs = [ "out" "lib" "dev" ]; - - nativeBuildInputs = [ - cmake python3 which swig lit makeWrapper lua5_3 - ] ++ lib.optionals enableManpages [ - python3.pkgs.sphinx python3.pkgs.recommonmark - ]; - - buildInputs = [ - ncurses - zlib - libedit - libxml2 - libllvm - ] ++ lib.optionals stdenv.isDarwin [ - libobjc - xpc - Foundation - bootstrap_cmds - Carbon - Cocoa - ]; - - hardeningDisable = [ "format" ]; - - cmakeFlags = [ - "-DLLDB_INCLUDE_TESTS=${if doCheck then "YES" else "NO"}" - "-DLLVM_ENABLE_RTTI=OFF" - "-DClang_DIR=${libclang.dev}/lib/cmake" - "-DLLVM_EXTERNAL_LIT=${lit}/bin/lit" - ] ++ lib.optionals stdenv.isDarwin [ - "-DLLDB_USE_SYSTEM_DEBUGSERVER=ON" - ] ++ lib.optionals (!stdenv.isDarwin) [ - "-DLLDB_CODESIGN_IDENTITY=" # codesigning makes nondeterministic - ] ++ lib.optionals enableManpages [ - "-DLLVM_ENABLE_SPHINX=ON" - "-DSPHINX_OUTPUT_MAN=ON" - "-DSPHINX_OUTPUT_HTML=OFF" - ] ++ lib.optionals doCheck [ - "-DLLDB_TEST_C_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}cc" - "-DLLDB_TEST_CXX_COMPILER=${stdenv.cc}/bin/${stdenv.cc.targetPrefix}c++" - ]; - - doCheck = false; - - doInstallCheck = true; - - installCheckPhase = '' - if [ ! -e $lib/${python3.sitePackages}/lldb/_lldb*.so ] ; then - echo "ERROR: python files not installed where expected!"; - return 1; - fi - if [ ! -e "$lib/lib/lua/${lua5_3.luaversion}/lldb.so" ] ; then - echo "ERROR: lua files not installed where expected!"; - return 1; - fi - ''; - - postInstall = '' - wrapProgram $out/bin/lldb --prefix PYTHONPATH : $lib/${python3.sitePackages}/ - - # Editor support - # vscode: - install -D ../tools/lldb-vscode/package.json $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/package.json - mkdir -p $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin - ln -s $out/bin/lldb-vscode $out/share/vscode/extensions/llvm-org.lldb-vscode-0.1.0/bin - ''; - - meta = llvm_meta // { - homepage = "https://lldb.llvm.org/"; - description = "A next-generation high-performance debugger"; - longDescription = '' - LLDB is a next generation, high-performance debugger. It is built as a set - of reusable components which highly leverage existing libraries in the - larger LLVM Project, such as the Clang expression parser and LLVM - disassembler. - ''; - }; -} // lib.optionalAttrs enableManpages { - pname = "lldb-manpages"; - - buildPhase = '' - make docs-lldb-man - ''; - - propagatedBuildInputs = []; - - # manually install lldb man page - installPhase = '' - mkdir -p $out/share/man/man1 - install docs/man/lldb.1 -t $out/share/man/man1/ - ''; - - postPatch = null; - postInstall = null; - - outputs = [ "out" ]; - - doCheck = false; - - meta = llvm_meta // { - description = "man pages for LLDB ${version}"; - }; -}) |