Commit Graph

40 Commits

Author SHA1 Message Date
pennae
dc895fb281 lib: make extendDerivation lighter on eval
the fix to extendDerivation in #140051 unwittingly worsened eval performance by
quite a bit. set elements alone needed over 1GB extra after the change, which
seems disproportionate to how small it was. if we flip the logic used to
determine which outputs to install around and keep a "this one exactly" flag in
the specific outputs instead of a "all of them" in the root we can avoid most
of that cost.
2021-10-15 16:39:10 +02:00
Yureka
b0f27ee74d llvmPackages_*: expose release_version 2021-08-20 23:07:43 +02:00
John Ericson
4236fb1c7f
Merge pull request #123103 from sternenseemann/compiler-rt-resources
llvmPackages_{7-12}.compiler-rt: install resource files to DATADIR
2021-05-15 12:06:57 -07:00
sternenseemann
74f709f62e llvmPackages_{7,8,9}: link ${compiler-rt.out}/share to resource root
This is done for 10-12, but not for the earlier llvm package sets.
2021-05-15 18:35:44 +02:00
John Ericson
7dd53fe56e
Merge pull request #122778 from Ericson2314/choose-linker
treewide: Allow the linker to be chosen independently
2021-05-14 18:53:14 -04:00
sternenseemann
f506019942 llvmPackages_*.lldClang: pass -lunwind if exceptions are enabled
To successfully compile C++ with useLLVM we need an unwinder and
thus to explicitly -lunwind like it has been done for the android
cross targets.
2021-05-15 00:34:50 +02:00
John Ericson
18c38f8aee treewide: All the linker to be chosen independently
This will begin the process of breaking up the `useLLVM` monolith. That
is good in general, but I hope will be good for NetBSD and Darwin in
particular.

Co-authored-by: sterni <sternenseemann@systemli.org>
2021-05-14 21:29:51 +00:00
John Ericson
49d2653653
Merge pull request #122974 from sternenseemann/lldClang-no-double-wrap
llvmPackages_*.lldClang: don't wrap bintools twice
2021-05-14 14:52:57 -04:00
sternenseemann
3eaa00879c llvmPackages_*.lldClang: don't wrap bintools twice
The bintools argument received a wrapped version of tools.bintools which
is already wrapped. Wrapped bintools twice leads to users of lldClang
being unable to find the tools which are not wrapped like ar.
2021-05-14 12:50:41 +02:00
Vladimír Čunát
ba2140b657
Merge #122044: compiler-rt: Fix build by passing resource dir
Fast-forwarded from staging to staging-next.  See:
https://github.com/NixOS/nixpkgs/pull/111487#issuecomment-840088733
2021-05-12 22:55:14 +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
John Ericson
37194a325d treewide: Try to make a few bootstrapping things more consistent
- Introduce `preLibcCrossHeaders` to bootstrap libgcc and compiler-rt
  the same way.

- Organize LLVM bintools as `bintools{-unwrapped,,NoLibc}` for
  consistency with GNU Binutils and Apple's cctools.

- Do Android changes for all `llvmPackages` for consistency.

- Improve the way the default GCC and LLVM versions are selected.
2021-05-12 00:14:56 +00:00
John Ericson
e0d3c9d031 llvmPackages*.libcxx*: Always use the attribute name for pname
This decision was made in a902d99422 but
just for LLVM 12. Now we apply it consitently.
2021-05-12 00:14:56 +00:00
sternenseemann
894a09dfd2 llvmPackages_7.lldClang: add libunwind to extraLibraries 2021-05-12 00:12:40 +00:00
John Ericson
cf02b24813 Merge remote-tracking branch 'upstream/staging-next' into staging 2021-05-11 22:30:46 +00:00
Vladimír Čunát
6b3b7940ff
llvm*Packages: fix output selection (lib.get*) 2021-05-11 10:45:11 +02:00
John Ericson
fc7a998748 compiler-rt: Fix build by passing resource dir
Before, clang was able to find some headers with a relative path to the
`-B` flag pointing near the unwrapped clang binary. But with multiple
outputs that doesn't work, so we use a "resource directory" as it done
later in the bootstrap.
2021-05-07 16:39:19 +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
sternenseemann
be4eb91b3c llvmPackages_7.libunwind: init at 7.1.0 2021-04-17 18:07:12 +02:00
John Ericson
19a974945b llvmPackages: Organize files
Always do pkg/default.nix not pkg.nix; use directories to avoid
prefixing patches and other files.
2021-03-24 05:02:50 +00:00
John Ericson
0710308402 clang, cc-wrapper: Move --gcc-toolchain logic into CC wrapper
Take 2, after #94582 had to be reverted.

This reverts commit ac03cfa3c5.
2021-01-24 15:49:32 -05:00
Ben Siraphob
acc5f7b18a pkgs/development/compilers: stdenv.lib -> lib 2021-01-23 08:57:37 +07: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
John Ericson
f3f7612a40 C++ Compilers: Systematize handling of standard libraries 2020-06-22 04:24:44 +00:00
Travis Whitaker
74f3b25896 LLVM: Always pass host/target info to compiler-rt/libstdcxxClang 2020-04-13 18:49:27 -04:00
John Ericson
bc054004ac cc-wrapper, clang: libstdcxxHook should a propagated build input
Lumping it in with the target platform libraries was incorrect, and
caused eval failures when gcc couldn't be built for the target platform.
2020-03-18 11:28:52 -04:00
John Ericson
99c18b3441 clang-*: Sync wrapping logic
We only want to refer to GCC under these conditions.
2020-03-18 11:28:05 -04:00
Matthew Bauer
db29857eb3 Re-Revert "clang_7,clang_8,clang_9: fix compilation of HIP-code"
This reverts commit f14a4d60b7, and thus
applying 558af6fbc7.
2020-01-28 11:35:19 -05:00
Daiderd Jordan
d0a90de910
llvmPackages: python2 -> python3 2020-01-13 11:13:56 +01:00
volth
08f68313a4 treewide: remove redundant rec 2019-08-28 11:07:32 +00:00
Will Dietz
ac1ffe5cfd llvmPackages_7: 7.0.1 -> 7.1.0 2019-04-25 22:50:18 -05:00
Matthew Bauer
b86e62d30d llvm: support cross compilation with useLLVM flag
You can build (partially) with LLVM toolchain using the useLLVM flag.
This works like so:

  nix-build -A hello --arg crossSystem '{ system =
    "aarch64-unknown-linux-musl"; useLLVM = true }'

also don’t separate debug info in lldClang

It doesn’t work currently with that setup hook. Missing build-id?
2019-02-26 19:45:35 -05:00
Will Dietz
ed60483257
llvm-polly,clang-polly: Add llvm/clang variants w/polly support (#55065)
* llvm: build w/polly in-tree, optionally

Don't enable by default yet, defer rebuilds.

* top-level: llvm-polly, clang-polly

* bit hacky re:overrides
* need to explicitly set cmake flags for clang to link in polly
2019-02-25 15:20:52 -06:00
Matthew Bauer
77550df8e6 cc-wrapper: add libcxx for libcxxClang
clang needs to find headers + libraries for compiling with libc++. We
need to add a libcxx argument to cc-wrapper. This means you do not
have to pass in c++ headers directly.

This resolves the last case remaining of #30670. Darwin clang++ now
works properly.

Fixes #30670
2019-01-26 22:45:15 -05:00
Will Dietz
cc97d49404 llvm7: 7.0.0 -> 7.0.1 2018-12-29 12:54:57 -06:00
Will Dietz
167e799d81 llvm*: http -> https, prefer releases.llvm.org 2018-09-23 13:30:18 -05:00
Will Dietz
0920652c5c llvm7: update hashes, they did change after all.
Pretty sure they did last time too :).
2018-09-23 13:30:17 -05:00
Will Dietz
fca31e1a68 llvm7: use final release tarballs now that they're available 2018-09-23 13:30:17 -05:00
Will Dietz
ba701ef329 comment 2018-09-23 13:30:17 -05:00
Will Dietz
bb110d80fc llvm7: init at 7.0.0rc3
Copy of 6 + updated hashes
2018-09-23 13:30:16 -05:00