On 14.01.2021 21:05, Tom Lane wrote:
After considerable playing around, I'm guessing that the reason -no_weak_imports doesn't help is that it rejects calls that are marked as weak references on the *calling* side. Since AC_CHECK_FUNCS doesn't bother to #include the relevant header file, the compiler doesn't know that preadv() ought to be marked as a weak reference. Then, when the test program gets linked against the stub libc that's provided by the SDK, there is a version of preadv() there so no link failure occurs. (There are way more moving parts in this weak-reference thing than I'd realized.)
Oh, that's interesting. I've just played with it a bit and it looks exactly as you say.
Another thing I've been realizing while poking at this is that we might not need to set -isysroot explicitly at all, which would then lead to the compiler using its default sysroot automatically. In some experimentation, it seems like what we need PG_SYSROOT for is just for configure to be able to find tclConfig.sh and the Perl header files. So at this point I'm tempted to try ripping that out altogether. If you remove the lines in src/template/darwin that inject PG_SYSROOT into CPPFLAGS and LDFLAGS, do things work for you?
Yes, it works fine.