I recently upgraded my Prefix on x86_64-apple-darwin17 (macOS 10.13.4)
to clang 6.0.0 with only minor fallout (cmake doesn't build). I again
just duplicated libcxx and libcxxabi ebuilds. Slotting worked as
intended so that clang 5.0.1 remained available in case of problems.
LLVM however is depending on libcxx of the same major version:
This causes emerge trying to downgrade libcxx as long as llvm-5 remains
[nomerge ] sys-devel/llvm-5.0.1
[ebuild UD ] sys-libs/libcxx-5.0.1 [6.0.0]
(sys-libs/libcxx-6.0.0:0/0::local, installed) pulled in by
required by (sys-devel/clang-runtime-6.0.0-r1:6.0.0/6.0.0::gentoo_prefix,
(sys-libs/libcxx-5.0.1:0/0::gentoo_prefix, ebuild scheduled for merge) pulled
<sys-libs/libcxx-22.214.171.12499 required by
Is it a real thing that llvm needs a matching libcxx? The rest of the
prefix currently just assumes that @rpath/libc++.1.dylib remains
compatible on upgrade which has worked so far.
I've compared to the main Gentoo repo and synced the ebuilds for
libcxxabi and libcxx (requiring adjustment and installation of llvm-libunwind).
It's not slotted there either and should face the same problem. So I
guess this is still work in progress.
Because Apple still hasn't released any sources of Xcode 9, I took the
opportunity to look into lld and whether it could be used as a
replacement for ld64 yet. Unfortunately that doesn't work. Clang calls
it with ld64 options it does not emulate (which it's supposed to do) and
LLVM developers themselves say that development is stalled as recently
as April 2017. So no luck there.
While binutils bfd seems to have some support for Mach-O now, binutils
ld still refuses to configure on Darwin.
I'm against it!