Commit Graph

944 Commits

Author SHA1 Message Date
Dmitry Kalinkin
46244fa290
Merge pull request #155462 from veprbl/pr/libcxx_12_no_apple_availability
llvmPackages_{12,13,git}: don't try to patch non-existing _LIBCPP_USE_AVAILABILITY_APPLE
2022-01-29 21:15:21 -05:00
Dmitry Kalinkin
34523e76a2
llvmPackages_{12,13,git}: don't try to patch non-existing _LIBCPP_USE_AVAILABILITY_APPLE
substituteStream(): WARNING: pattern '#    define _LIBCPP_USE_AVAILABILITY_APPLE' doesn't match anything in file 'include/__config'

The new mechanism for those is a cmake option
LIBCXX_ENABLE_VENDOR_AVAILABILITY_ANNOTATIONS that is off by default:
https://reviews.llvm.org/D90843
2022-01-18 05:42:00 -05:00
John Ericson
baf290023c
Merge pull request #153790 from sternenseemann/cross-bootstrap-logic
Cross bootstrapping logic fixes benefitting llvmPackages
2022-01-08 12:39:30 -08:00
Moritz Angermann
08f22ce9cc llvmPackages_12.llvm: create fix-llvm-issue-49955.patch
This patch addresses llvm/llvm-project#49955
2022-01-08 14:01:39 +01:00
sternenseemann
e238f456b8 llvmPackages_*.clang: pick clangUseLLVM if targetPlatform.useLLVM
libcxxClang still depends on cc wrapper's gccForLibs for libgcc which is
not available when useLLVM is set. In such cases we need to switch to
clangUseLLVM and (try) to use compiler-rt instead.

Resolves #153759: pkgsLLVM.llvmPackages.stdenv now correctly
clangUseLLVM as cc, allowing compilation to work as expected.
2022-01-07 14:52:13 +01:00
sternenseemann
766f5ffb76 llvmPackages_*: respect cc for target when choosing C++ flavour
llvmPackages_*.clang should check the default compiler for the package
set it is targeting (targetPackages.stdenv.cc) instead of the compiler
that has been used to build it (stdenv.cc) in order to get some sense of
whether to use libc++ or libstdc++.

Since we are now inspecting targetPackages in the llvmPackages.clang
attribute, we need to avoid using it in the cross stdenv — which just
forces us to explicitly request libcxxClang for darwin instead of
relying on the clang attribute to pick it for us.

We also need to do something similar for targetPackages.stdenv.cc: Here
the llvmPackages.clang logic would work as we want (inspect
targetPackages.stdenv.cc and if it doesn't exist, make the choice based
on stdenv.cc), but it gets locked in a cycle with the previous package.
We can easily break this, however: We know that the previous set had
clang and the next one doesn't exist, so we'd choose libcxxClang any day
of the week.
2022-01-07 14:42:41 +01:00
github-actions[bot]
92dce734f0
Merge staging-next into staging 2022-01-05 18:01:42 +00:00
github-actions[bot]
0d3fe41724
Merge master into staging-next 2022-01-05 18:01:06 +00:00
sternenseemann
115a6f077f llvmPackages_{12,13,git}.compiler-rt: remove new runtimes in useLLVM
LLVM 12 added the memory profiling runtime and LLVM 13 the ORC
runtime. Both need a libc in order to build (or at least headers not
present in clang's resource root), so we'll disable them for any sort of
baremetal-ish build. memprof likely doesn't work in a baremetal
situation at all, orc is unknown. Whether both would compile with musl
is to be checked.
2022-01-05 18:17:53 +01:00
sternenseemann
e4fddecdb3 llvmPackages_{11,12,13,git}.libllvm: enable static build
The main thing we need to pass LLVM_ENABLE_PIC=OFF to prevent LLVM from
building shared objects because our cc-wrapper is incapable of producing
shared objects. Building LLVM statically also influences other LLVM
projects like clang and lld -- which can be built linked fully
statically with this change.
2022-01-04 18:40:32 +01:00
sternenseemann
e5ccc412d2 llvmPackages_*.libllvm: only build tests if doCheck
To make the value of doCheck in the argument attribute set accurate we
also need to include the condition for cross compilation which normally
is added by stdenv.mkDerivation.
2022-01-04 18:40:32 +01:00
sternenseemann
c70dca8249 llvmPackages_*.libllvm: make llvm-config and llvm-config equivalent
LLVM's build system creates NATIVE/bin/llvm-config by reexecuting cmake
with entirely new flags. Problematically, the `CMAKE_INSTALL_*` flags
are not inherited, causing llvm-config-native to return wrong
installation paths, e. g. CMAKE_INSTALL_LIBDIR would default to `lib64`
on x86_64-linux. Previously this was masked by outputs.patch which
replaced ActiveLibDir with a string passed in from Nix, however
`--cmakedir` for example would turn out to be wrong always, breaking
cross-compilation of e. g. lld.

Additionally LLVM_ENABLE_RTTI needs to be repassed, as it is used to
determine if RTTI is available. Passing LLVM_LINK_LLVM_DYLIB is crucial
if we are building LLVM non-statically: It influences the --shared-mode
flag (which should indicate that -lLLVM is enough to link all
components) and makes --link-shared work in the first place,
i. e. llvm-config-native believes the built shared libs don't exist
unless we repass this flag.

Passing LLVM_LINK_LLVM_DYLIB=ON, however, makes the native build produce
a full libLLVM.so which is something we don't want, so we introduce a
patch which forces llvm-config to link statically against the LLVM
components it needs.
2022-01-04 11:09:43 +01:00
sternenseemann
d807aaa30c llvmPackages*.libllvm: drop outputs.patch for llvm-config.patch
Due to gnu-install-dirs.patch llvm-config will return correct results
for --link-shared as well as --link-static even without this patch.
2022-01-04 11:09:43 +01:00
sternenseemann
c58517aeed llvmPackages_*.clang: stop passing LLVM_CONFIG_PATH unnecessarily
Starting with LLVM 8, clang does no longer use llvm-config to detect the
LLVM installation: https://github.com/llvm/llvm-project/commit/e4faa5c7986b7
Consequently, there is no point passing LLVM_CONFIG_PATH (in fact the
variable is unused currently).
2022-01-03 16:46:38 +01:00
7c6f434c
84fb429d21
Merge pull request #150018 from trofi/fix-llvm-for-gcc-12
llvm_{5..12}: fix tests against upcoming gcc-12
2021-12-31 21:45:53 +00:00
Dmitry Kalinkin
508623b372
clang_{11,12,13,git}: enable RTTI 2021-12-24 22:24:00 -05:00
7c6f434c
58a27ea378
Merge pull request #148367 from r-burns/llvm-config-static
llvmPackages_*.llvm: fix llvm-config-native with static libs
2021-12-24 10:25:03 +00:00
Jonathan Ringer
182e07f0d9
Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts:
	pkgs/development/libraries/webkitgtk/default.nix
	pkgs/development/python-modules/pylast/default.nix
	pkgs/development/python-modules/pymavlink/default.nix
2021-12-23 10:16:42 -08:00
github-actions[bot]
0c6795fa5b
Merge master into staging-next 2021-12-23 00:01:33 +00:00
github-actions[bot]
3479555209
Merge staging-next into staging 2021-12-19 18:01:44 +00:00
Dmitry Kalinkin
e1aaaa90fe
llvmPackages.libcxx: unset _LIBCPP_USE_AVAILABILITY_APPLE 2021-12-18 10:09:25 -05:00
github-actions[bot]
3e2d1c1e65
Merge staging-next into staging 2021-12-15 18:01:52 +00:00
Neubauer, Sebastian
de8041b44e llvmPackages_rocm.llvm: 4.3.1 → 4.5.2
Fix compiler-rt build and use ninja for faster builds.
2021-12-15 16:57:22 +01:00
Vladimír Čunát
030e814b88
Merge #148107: llvmPackages_13.clang: fix jemalloc issues
... into staging-next.  Also re-enable jemalloc in firefoxPackages.
2021-12-15 14:09:34 +01:00
Dmitry Kalinkin
07a8ae0c5a
Merge branch 'staging-next' into staging
Conflicts:
	pkgs/development/libraries/log4cplus/default.nix
2021-12-11 14:01:19 -05:00
Sergei Trofimovich
1ead4951db llvmPackages_5.compiler-rt: fix build against gcc-12
[ 11%] Building CXX object lib/xray/CMakeFiles/clang_rt.xray-x86_64.dir/xray_buffer_queue.cc.o
    In file included from lib/xray/xray_buffer_queue.cc:15:
    lib/xray/xray_buffer_queue.h:35:5: error: 'size_t' does not name a type
       35 |     size_t Size = 0;
          |     ^~~~~~
    lib/xray/xray_buffer_queue.h:23:1: note: 'size_t' is defined in header '<cstddef>';
      did you forget to '#include <cstddef>'?
       22 | #include <utility>
      +++ |+#include <cstddef>
       23 |
2021-12-10 19:56:55 +00:00
github-actions[bot]
0f2bb5a63f
Merge master into staging-next 2021-12-10 12:01:12 +00:00
Sergei Trofimovich
35223810a1 llvm_{5..12}: fix tests against upcoming gcc-12
In https://gcc.gnu.org/PR103598 we found out that gcc-12
changed __PRETTY_FUNCTION__ slightly and broke llvm-12 (and older)
tests that rely on exact type match. llvm-13 already removed the
qualified names from the expected output.

This change changes expected output to avoid llvm:: namespace prefix.
This is enough to get tests pass on x86_64 again.

Tested against this week's gcc-12 and against gcc-10.
2021-12-10 09:08:04 +00:00
arcnmx
265ba73a78 llvmPackages_13.compiler-rt: fix aarch32 patch 2021-12-04 07:12:34 -08:00
github-actions[bot]
904ed45698
Merge master into staging-next 2021-12-03 18:01:12 +00:00
Jörg Thalheim
50474e1857
Merge pull request #147543 from risicle/ris-libcxx-13-aarch64
llvmPackages_13.libcxx: require gcc >=10 on gcc platforms
2021-12-03 16:06:34 +00:00
Ryan Burns
544707d6a4 llvmPackages_*.llvm: fix llvm-config-native with static libs
Since both static and shared libs are installed to the same `lib`
output, we override the ActiveLibDir unconditionally.

Fixes `llvm-config-native --link-static --libs`
2021-12-02 19:21:21 -08:00
oxalica
754460f861
llvmPackages_13.clang: revert D100879
The malloc alignment assumption is incorrect for jemalloc and causes
mis-compilation in firefox.

https://reviews.llvm.org/D100879
https://bugzilla.mozilla.org/show_bug.cgi?id=1741454
2021-12-01 15:28:33 +08:00
midchildan
24d1fc7c73
llvmPackages_git.libcxx: fix darwin build 2021-11-28 00:58:53 +09:00
Robert Scott
54a487505a llvmPackages_13.libcxx: require gcc >=10 on gcc platforms
specifically aarch64. as of version 13 libcxx does not build on gcc9.
2021-11-26 22:12:42 +00:00
midchildan
7994b1dfc0
fixup! llvmPackages_13.libcxx: fix darwin build 2021-11-26 02:38:44 +09:00
midchildan
d8338cbe06
fixup! llvmPackages_13.libcxx: fix darwin build
Co-authored-by: Sandro <sandro.jaeckel@gmail.com>
2021-11-25 20:20:49 +09:00
midchildan
e157b5dc28
llvmPackages_13.libcxx: fix darwin build 2021-11-25 19:59:17 +09:00
toonn
21df776a31 llvmPackages_13.libcxxabi: Align with 11 libcxxabi
LLVM 11 libcxxabi has some flags to support usage in the Darwin stdenv,
in particular, `standalone` and `withLibunwind`.

Darwin stdenv needs the `standalone` flag because its `hostPlatform` set
doesn't have `useLLVM` set to true. And it needs `withLibunwind` to
explicitly disable including `libunwind` as a build input.

We also prefix `install_name_tool` in case we're cross-compiling.
2021-11-24 15:17:13 -08:00
toonn
d90fb1c038 llvmPackages_12.libcxxabi: Align with 11 libcxxabi
LLVM 11 libcxxabi has some flags to support usage in the Darwin stdenv,
in particular, `standalone` and `withLibunwind`.

Darwin stdenv needs the `standalone` flag because its `hostPlatform` set
doesn't have `useLLVM` set to true. And it needs `withLibunwind` to
explicitly disable including `libunwind` as a build input.

We also prefix `install_name_tool` in case we're cross-compiling.
2021-11-24 15:17:13 -08:00
toonn
d964f211f6 llvmPackages_11.libcxxabi: More precise libunwind inclusion 2021-11-24 15:17:13 -08:00
toonn
73d3d0de7f libcxxabi: Use standalone instead of expression
Co-authored-by: Sandro Jäckel <sandro.jaeckel@gmail.com>
2021-11-24 15:17:13 -08:00
toonn
1be8e73fb3 stdenv: libcxxabi dropped standalone in favor of useLLVM
The libcxxabi expression had a `standalone` argument in LLVM 7 which
triggered passing of the `-DLLVM_ENABLE_LIBCXX=ON` flag. In LLVM 11 this
flag and others are toggled by the `useLLVM` attribute of
`stdenv.hostPlatform` but this toggles a flag we don't need on Darwin.

Similar to the refactoring of LLVM 7 libc++abi by Ericson2314 in
3af7e98470, I have reintroduced the standalone argument for use in
bootstrapping the Darwin stdenv.
2021-11-24 15:17:13 -08:00
Ryan Burns
93e835bd92
Merge pull request #146814 from r-burns/clang-tools-extra
[staging] llvmPackages_{13,git}.clang: build clang-tools-extra
2021-11-21 15:19:52 -08:00
Ryan Burns
93543c69c6
Merge pull request #146855 from trofi/fix-llvm-for-gcc-12
llvm_{5..11}: pull upstream build fix for for gcc-12
2021-11-21 14:43:37 -08:00
Sergei Trofimovich
e9dfe892ef llvm_{5..11}: pull upstream build fix for for gcc-12
Without the fix build fails on gcc-12 as:

    /build/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:
      In member function 'std::string llvm::NVPTXAsmPrinter::getPTXFundamentalTypeStr(...':
    /build/llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:1319:10:
      error: use of deleted function 'std::__cxx11::basic_string<...>; std::nullptr_t = std::nullptr_t]'
     1319 |   return nullptr;
          |          ^~~~~~~

The patch is present in upstream releases since llvm-12.
2021-11-21 09:50:01 +00:00
Ryan Burns
dd8ad828de llvmPackages_{13,git}.clang: build clang-tools-extra
This is already done for previous versions of clang which use
a release tarball, but must be done differently for the more
recent versions which use fetchFromGitHub.

Fixes clang-tools clangd wrapper
2021-11-20 14:29:06 -08:00
Vladimír Čunát
e4afe81567
Merge #144935: llvmPackages_7.libcxxabi: fix build with gcc 2021-11-20 16:23:31 +01:00
Rick van Schijndel
e31f392946 llvm_13: fix cross-compilation
apply the same fix as used in 517d2b963f
2021-11-16 00:42:58 +01:00
Ryan Burns
3f90cde719 llvmPackages_7.libcxxabi: fix build with gcc
Unblocks 17 dependers on aarch64-linux
2021-11-06 15:03:13 -07:00