Linking libMacportsLegacySupport privately?

Chris Jones jonesc at hep.phy.cam.ac.uk
Fri Mar 28 09:40:55 UTC 2025



On 27/03/2025 10:08 pm, Fred Wright wrote:
> 
> On Thu, 27 Mar 2025, Chris Jones via macports-dev wrote:
>> On 27/03/2025 12:35 pm, René J.V. Bertin wrote:
>>> Hi,
>>>
>>> I've been experimenting with libc++ 17 which is a prerequisite to 
>>> using GCC13+ with libc++ instead of libstdc++ .
>>>
>>> I kept the static legacy-support library linking (may have had to, 
>>> can't remember that) and just now realise that all the functions from 
>>> that archive (or at least the from the modules that get pulled in) 
>>> are exported by libc++ .
> 
> That's probably a bad idea.  ISTR a post from Ken regarding compiler 
> uses of legacy-support being statically linked, but that was to avoid 
> circular dependencies.  There may have been some circular dependency 
> issues at one time, due to legacy-support's being constrained to 
> MacPorts compilers in some cases by the cxx_stdlib setting, but I fixed 
> that over a year ago. Nowadays, legacy-support is completely dependency- 
> free except for needing apple-gcc42 to build on 10.4, and static linking 
> should be avoided as much as possible.
> 
>> which libc++ in particular are you talking about here ? For sure the 
>> system libc++ will never export anything from legacysupport.
> 
> I presume that "libc++ instead of libstdc++" means that it's not 
> referring to a system libc++.
> 
>> The libc++ versions as provided by the MacPorts clang ports might well 
>> include some symbols from legacysupport, as its use is required to 
>> build these compilers on old systems. I don't thunk hiding these 
>> symbols in these versions is at all a good idea.
> 
> A proper compiler should make a proper distinction between host 
> requirements and target requirements, though I wouldn't put it past GCC 
> to get that wrong.  What the compiler needs to build and run should be 
> completely independent from what its target needs.
> 
> If libc++ is statically linked with legacy-support, then it will of course
> contain any legacy-support symbols that it references.  If it's 
> dynamically linked, then it won't unless it's been explicitly configured 
> to do so.

They intentionally link statically.

https://github.com/macports/macports-ports/blob/master/lang/llvm-20/Portfile#L15

> 
> Fred Wright



More information about the macports-dev mailing list