[MacPorts] #62426: libc++: using a newer libc++ to build software on older macos systems
MacPorts
noreply at macports.org
Tue Sep 20 12:01:37 UTC 2022
#62426: libc++: using a newer libc++ to build software on older macos systems
-------------------------------------+--------------------
Reporter: kencu | Owner: kencu
Type: enhancement | Status: closed
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: fixed | Keywords:
Port: libcxx macports-libcxx |
-------------------------------------+--------------------
Comment (by RJVB):
I'm not too keen on digging through libcxx-devel ML archives, curiously ;)
What version was LLVM at when they started that modernisation push? I
noticed that libcxx 12 no longer builds with the same (cmake) approach of
organising the source tree as works at least up to 9.0.1, but 9.0.1 is new
enough to get the `std::filesystem` implementation.
BTW, there is no "two libc++-versions-at-once" issue. I checked multiple
times. All versions that are linked to the various components do indeed
show up when you set `DYLD_PRINT_LIBRARIES`, but if you check via the
GetInfo/OpenFiles feature of the Activity Monitor they are not all
actually loaded. At least not if `current_version` is set and the latest
version does not lack symbols from older versions, I suppose.
It's really weird though. Qt have shown that you can develop very complex
code while guaranteeing that binaries built against an older library
version will run against the new one. Their approach isn't even trailing
tons of baggage, it relies mostly on strict observation of a few
relatively simple rules and careful planning. In comparison libc++ is tiny
(it's actually really quite small; the cmake configure step takes several
times longer than the actual build).
I think that GCC's libstdc++ guarantees that you can update the library as
long as the ABI version remains constant. Of course Linux also has
versioned symbols which I don't think exist on Darwin, so that could help.
--
Ticket URL: <https://trac.macports.org/ticket/62426#comment:46>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list