What changed:
* Fixed crtbeginS.o and crtendS.o missing
(they may or may not be called crt{begin_end},{,_shared}.
* Fixed implicit function declaration causing build errors for various
builds by supplying -Wno-implicit-function-declaration.
* Fixed __cxxabi_config.h missing, by adding -I${cxxabi}/include/c++/v1
in the wrapper.
* Fixed libcxx failing to build due to missing libunwind symbols by
including libunwind as a buildInput, and setting
-DLIBCXX_ADDITIONAL_LIBRARIES=unwind for stdenv.hostPlatform.useLLVM == true.
* libcxxabi wants to find libunwind at libunwind_shared.so, so symlink
it there in libunwind.
* llvmPackages_16.libcxxabi: Pass -nostdlib via CMAKE_*_LINKER_FLAGS
Without this flag, the link of libcxxabi.so tries to pull in libgcc and
friends, from the clang compiler driver.
* Drop unneeded musl hack patch from libcxx.
* Pass -Wno-error=implicit-function-declaration only to compiler-rt
See LLVM forum discussion:
https://discourse.llvm.org/t/configure-script-breakage-with-the-new-werror-implicit-function-declaration/65213
In summary, LLVM 16 made implicit function declaration an error. This
happens a lot in configure scripts which can break things.
* llvmPackages_16: !isDarwin: Supply -DLIBCXX_ABI_USE_LLVM_UNWINDER=On
Otherwise it fails with various undefined references to _Unwind_*
functions: (full list: _Unwind_DeleteException _Unwind_GetIP
_Unwind_GetLanguageSpecificData _Unwind_GetRegionStart
_Unwind_RaiseException _Unwind_Resume _Unwind_SetGR _Unwind_SetIP).
* 16.libcxxabi: Only pass -nostdlib for useLLVM and Darwin builds
What was tested:
* x86_64-linux, aarch64-linux, the stdenv builds.
* Additionally I was able to get nix to build, with an overlay to fix
a couple of minor issues in downstream packages (overlay supplied in
PR #246577.
* aarch64-darwin fails spuriously in a single LLVM test
strip-preserve-atime.test checking atime timestamps.
* The same for pkgsLLVM with llvmPackages = llvmPackages_15.
Signed-off-by: Peter Waller <p@pwaller.net>
Port of bc4dbee115 ("llvmPackages_15:
updates for LLVM 15").
None of the patches required any touch-up; the only change of note is:
- due to changes in the libc++/libc++abi build
(https://reviews.llvm.org/D120719 and https://reviews.llvm.org/D131037)
we have to add an extra build option to the libc++ header only
build that sidesteps bits of the libc++ build config that assume
libc++-abi is present in the build:
4f827318e3/libcxx/src/CMakeLists.txt (L255-L256)
Rather than maintaining a precise set of build options that let us dodge
referencing libc++-abi variables in the libc++ header only build, we set
`LIBCXX_CXX_ABI` to `none`, as suggested by @lovesegfault.
More discussion about this here: https://github.com/NixOS/nixpkgs/pull/194634#discussion_r990267037
Co-authored-by: Bernardo Meurer <bernardo@meurer.org>
FreeBSD doesn't use LLVM's cxxabi implementation, for backwards
compatibility reasons. Software expects the libcxxrt API when
building on FreeBSD. This fixes the build of
pkgsCross.x86_64-freebsd.boost.
Same adjustment as made for libc++abi in #185766, for the same reason:
the unamended dylib links to the libc++abi in the build stdenv, which
is the wrong version.
Tested on Darwin with LLVM 14 stdenv, but the phase is added to all
versions, including 11 - so this will cause a mass rebuild.
See: https://github.com/NixOS/nixpkgs/pull/185766
The new LLVM commit is just before the LLVM 15 fork off.
The readme describing upgrade process so it is easier for others to do.
Co-Authored-By: Dylan Green <Dylan.Green@Obsidian.Systems>
Co-Authored-By: John Ericson <John.Ericson@Obsidian.Systems>
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
The version will initially remain the same so that no additional changes
to the packaging are required (i.e. this commit only includes the
required changes to build from the mono repository instead of individual
tarballs).
The purpose of this package is to continuously improve the LLVM
packaging in Nixpkgs without causing a lot of rebuilds and provide more
recent LLVM builds for users. For more details see:
https://github.com/NixOS/nixpkgs/issues/114828