[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