tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: macOS 11 find-libs.mk POC
Chris Hanson <cmhanson%eschatologist.net@localhost> wrote:
> On Aug 23, 2020, at 4:40 AM, Sijmen Mulder <ik%sjmulder.nl@localhost> wrote:
> >
> > macOS 11 (now in beta) no longer contains shared library files like
> > libc.dylib, libcurses.dylib etc. Instead it ships a pregenerated
> > linker cache. This means we can no longer check for built in libraries
> > by going through the library directories as we do in
> > mk/buildlink3/find-libs.mk. Apple's documentation suggests using
> > dlopen(), which works as usual and has all the old paths mapped.
>
> Rather than testing what libraries _are installed in the OS_ you should
> be testing _what libraries can be linked against when building_. All of
> the tools have looked in SDKs for headers and library stubs for
> something like a decade and a half at this point, so just passing (say)
> -lz still works just fine and you don't have to care where exactly
> libz.tbd is.
I agree this is the right approach in principle - if you want to see if
a library can be linked, try to link it. However it's my understanding
that this functionality needs to be available before we have selected a
compiler.
Your point about .tbd suggests another possibility, which is to check
the SDK's usr/lib for those. Another alternative which I forgot to
mention is to default PREFER_PKGSRC everything on Darwin.
So the options then, in my order of preference:
1. Testing by compiling (configure-style), as you suggest, if at all
possible.
2. Look for .tdb in the SDK instead of installed .dylibs in /usr/lib.
3. Testing with dlopen().
4. Don't use built in on Darwin.
5. Extract list of libraries from the linker cache.
Sijmen
Home |
Main Index |
Thread Index |
Old Index