Commit Graph

29 Commits

Author SHA1 Message Date
sternenseemann
3530837417 llvmPackages*.clang: fix linker invocation with LLVMgold plugin
When using GNU binutils, clang passes the LLVMgold.so plugin to the
linker for certain operations that require special support in the linker
like doing link time optimization (LTO). When passing the plugin to the
linker's command line, clang assumes that llvm and itself are installed
in the same prefix and thus `/path/to/clang/bin/../lib/LLVMgold.so` is
the plugin.

Since we install clang and llvm to separate store paths, this assumption
does not hold. When clang-unwrapped only had a single output, we worked
around this issue by symlinking `$out/lib/LLVMgold.so` to
`${llvm}/lib/LLVMgold.so`. However since we split all llvm packages into
multiple outputs clang's `$out` no longer has a lib directory and clang
can't discover clangs lib output on its own. As a result LTO was broken.

Instead of introducing yet another hack and having a symlink to
LLVMgold.so in `$out/lib` (despite having `$lib/lib` as well), we patch
clang to use a hard coded path to `${libllvm.lib}/lib` for discovering
`LLVMgold.so`.

Resolves #123361.
2021-05-18 16:15:03 +02:00
John Ericson
e830db4320 llvmPackages: Fix more inconsistencies
The main thing was using `llvm_meta` in all versions.

Secondarily:

 - libunwindx7: Forgot to split outputs

 - libcxx{,abi} 12: Forgot to apply output-splitting patches.

 - simplify `useLLVM` stdenv-switching logic.

 - openmp always gets its own directory
2021-05-12 00:16:11 +00:00
Andrew Childs
7869d16545 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
  db29857eb3, 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)`
2021-04-30 05:41:00 +00:00
Ben Siraphob
acc5f7b18a pkgs/development/compilers: stdenv.lib -> lib 2021-01-23 08:57:37 +07:00
Ben Siraphob
3ae5e6ce03 treewide: remove enableParallelBuilding = true if using cmake 2021-01-03 18:37:40 +07:00
Vladimír Čunát
336bc8283b
Re-Revert "Merge #101508: libraw: 0.20.0 -> 0.20.2"
This reverts commit c778945806.

I believe this is exactly what brings the staging branch into
the right shape after the last merge from master (through staging-next);
otherwise part of staging changes would be lost
(due to being already reachable from master but reverted).
2020-10-26 08:19:17 +01:00
John Ericson
b5f7ed6846
Merge pull request #91293 from Ericson2314/cxx-wrapper-debt-part-2
treewide: Get rid of `cc.gcc`
2020-08-02 20:42:20 -04:00
John Ericson
92f96f47b0 treewide: Get rid of cc.gcc
Instead, we have a new `gccForLibs`, which has the appropriate
definition for e.g. avoiding `x86_32` linking problems.
2020-08-02 17:12:05 +00:00
Holger Wünsche
0f0b14258b
clang_{5..10}: add RTTI
This fixes problems with missing symbols when using clang as library and
is most likely a result of llvm being build with RTTI enabled.
2020-06-27 20:37:11 +02:00
Jan Tojnar
a04625379a
Merge branch 'master' into staging-next 2020-04-13 18:50:35 +02:00
Michael Reilly
84cf00f980
treewide: Per RFC45, remove all unquoted URLs 2020-04-10 17:54:53 +01:00
Gabor Greif
e336bdf80e llvmPackages: change homepages to https:// scheme
also: https://www.cmake.org/Wiki/CMake_RPATH_handling has moved
2020-04-05 12:37:24 +02:00
Daiderd Jordan
d0a90de910
llvmPackages: python2 -> python3 2020-01-13 11:13:56 +01:00
Craig Hall
a33dbd38cb clang-manpages: Use pname 2019-11-24 18:32:26 +00:00
Craig Hall
f1255e45db clang: Use pname 2019-11-24 18:32:26 +00:00
Craig Hall
5a9c95d4d2 clang: Add version attribute 2019-11-24 18:32:26 +00:00
Dmitry Kalinkin
325f37f935 llvm_*,clang_*: allow src overrides 2019-07-17 10:30:05 +02:00
volth
52f53c69ce pkgs/*: remove unreferenced function arguments 2018-07-21 02:48:04 +00:00
Will Dietz
4a8104af49 llvm6: 6.0.0 -> 6.0.1 2018-06-29 11:54:21 -05:00
Benjamin Saunders
16da44b5c1 llvm and clang 6: factor out compiler-rt, fix libstdcxxStdenv sanitizer headers
Build compiler-rt separate from llvm and clang, and just add as an extra
library in the wrapper.
2018-05-24 02:57:43 -04:00
Matthew Bauer
9416f29800 llvm: remove libedit from clang
clang should never need libedit. From what I understand this is only
needed by LLDB.

https://github.com/llvm-mirror/clang/search?q=libedit
(cherry picked from commit 9ee69c27c9)
2018-05-23 11:09:12 -04:00
Matthew Bauer
d417ada9a6 clang: only link if LLVMgold exists
buildEnv now errors with broken symlinks. Lots of things like this
still exist.

Discussion in #39038.

(cherry picked from commit 7b73c7f49a)
2018-05-23 11:09:05 -04:00
Will Dietz
b36ea92f88 llvm6: rc3 -> final 2018-03-08 10:01:35 -06:00
Will Dietz
08db02e37a llvm6: rc2 -> rc3 2018-03-07 19:03:10 -06:00
Will Dietz
9306e2fb6f llvm6: remove copied "remove this on next rebuild" value :) 2018-03-07 19:03:09 -06:00
Will Dietz
e876e97ef0 llvm6: musl compat 2018-03-07 19:03:08 -06:00
Will Dietz
62011cfaea llvm6: rc1 -> rc2 2018-03-07 19:03:07 -06:00
Will Dietz
42c3a74a2a llvm6: rc1, hashes, top-level 2018-03-07 19:03:05 -06:00
Will Dietz
4463de6ec7 llvm6: copy llvm5 2018-03-07 19:03:05 -06:00