summary refs log tree commit diff
path: root/pkgs/development/compilers/llvm/8/lld/default.nix
diff options
context:
space:
mode:
authorAndrew Childs <lorne@cons.org.nz>2020-10-15 17:23:57 +0900
committerJohn Ericson <John.Ericson@Obsidian.Systems>2021-04-30 05:41:00 +0000
commit7869d1654517c028aa76fc1dedc9b5ac301a867a (patch)
tree28385e3d35074ace1c036e5bee5b7aa3d684059d /pkgs/development/compilers/llvm/8/lld/default.nix
parent17a8c9c4bfd9042b92b1d07d638a3dc1157b11d4 (diff)
downloadnixpkgs-7869d1654517c028aa76fc1dedc9b5ac301a867a.tar
nixpkgs-7869d1654517c028aa76fc1dedc9b5ac301a867a.tar.gz
nixpkgs-7869d1654517c028aa76fc1dedc9b5ac301a867a.tar.bz2
nixpkgs-7869d1654517c028aa76fc1dedc9b5ac301a867a.tar.lz
nixpkgs-7869d1654517c028aa76fc1dedc9b5ac301a867a.tar.xz
nixpkgs-7869d1654517c028aa76fc1dedc9b5ac301a867a.tar.zst
nixpkgs-7869d1654517c028aa76fc1dedc9b5ac301a867a.zip
llvmPackages: Multuple outputs for everythting
Also begin to start work on cross compilation, though that will have to
be finished later.

The patches are based on the first version of
https://reviews.llvm.org/D99484. It's very annoying to do the
back-porting but the review has uncovered nothing super major so I'm
fine sticking with what I've got.

Beyond making the outputs work, I also strove to re-sync the packages,
as they have been drifting pointlessly apart for some time.

----

Other misc notes, highly incomplete

- lvm-config-native and llvm-config are put in `dev` because they are
  tools just for build time.

- Clang no longer has an lld dep. That was introduced in
  db29857eb391ed002046090851a44c452b80bdbd, but if clang needs help
  finding lld when it is used we should just pass it flags / put in the
  resource dir. Providing it at build time increases critical path
  length for no good reason.

----

A note on `nativeCC`:

`stdenv` takes tools from the previous stage, so:

1. `pkgsBuildBuild`: `(?1, x, x)`
2. `pkgsBuildBuild.stdenv.cc`: `(?0, ?1, x)`

while:

1. `pkgsBuildBuild`: `(?1, x, x)`
2. `pkgsBuildBuild.targetPackages`: `(x, x, ?2)`
3. `pkgsBuildBuild.targetPackages.stdenv.cc`: `(?1, x, x)`
Diffstat (limited to 'pkgs/development/compilers/llvm/8/lld/default.nix')
-rw-r--r--pkgs/development/compilers/llvm/8/lld/default.nix20
1 files changed, 13 insertions, 7 deletions
diff --git a/pkgs/development/compilers/llvm/8/lld/default.nix b/pkgs/development/compilers/llvm/8/lld/default.nix
index 8009beb7bc1..696403d1bf6 100644
--- a/pkgs/development/compilers/llvm/8/lld/default.nix
+++ b/pkgs/development/compilers/llvm/8/lld/default.nix
@@ -1,8 +1,9 @@
 { lib, stdenv
+, buildLlvmTools
 , fetch
 , cmake
 , libxml2
-, llvm
+, libllvm
 , version
 }:
 
@@ -12,15 +13,20 @@ stdenv.mkDerivation {
 
   src = fetch "lld" "121xhxrlvwy3k5nf6p1wv31whxlb635ssfkci8z93mwv4ja1xflz";
 
+  patches = [
+    ./gnu-install-dirs.patch
+  ];
+
   nativeBuildInputs = [ cmake ];
-  buildInputs = [ llvm libxml2 ];
+  buildInputs = [ libllvm libxml2 ];
 
-  outputs = [ "out" "dev" ];
+  cmakeFlags = [
+    "-DLLVM_CONFIG_PATH=${libllvm.dev}/bin/llvm-config${lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) "-native"}"
+  ] ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
+    "-DLLVM_TABLEGEN_EXE=${buildLlvmTools.llvm}/bin/llvm-tblgen"
+  ];
 
-  postInstall = ''
-    moveToOutput include "$dev"
-    moveToOutput lib "$dev"
-  '';
+  outputs = [ "out" "lib" "dev" ];
 
   meta = {
     description = "The LLVM Linker";