On Fri, Mar 15, 2019 at 7:04 PM Jim Jagielski <j...@jagunet.com> wrote:

> macOS is not truly BSD... it's mach and so while there are a lot of
> similarities, one cannot equate the 2... this just may be one of those
> areas where macOS/Mach != BSD
>

That's true.The point I raised is that without DARWIN defines, the
logic which wuzhouhui observed is likely the same as Stefan's report
based an actual BSD, with the very same error. APR configure is
making a wrong decision in both cases, except that with DARWIN
(now also derived from APPLE) we hide that wrong detection. No
issue with the fix, I think your patch is correct; but the underlying
defect needs to be fixed.

I'm going through the results of wuzhouhui's initial configure before
the overrides to see what I can glean what happened without any
config output from Stefan.

>From those files, we clearly have a 64LP environment where long
is the same as long long. There is no difference between %ld and
%lld, but clever compiler writers still treat the two types distinctly
when it comes to pointer indirection to avoid issues when long long
becomes a 128 bit, so they emit warnings appropriately. Testing
that the sizeof() matches long or long long isn't sufficient.

I'm working through the many many paths within configure.in logic
to change only the election between 'long' and 'long long' without
touching the many other paths through various int/undetected
and apr_int64_t which could change other platforms.

The biggest risk are incompatible binaries between 1.6 and 1.7
builds. The fix for APPLE clearly is one of these, but it is one that
we have to document in the release notes and move on, since
Apple dropped the DARWIN significator right out from under
developers and maintainers. I think we just warn that APR 1.6
or earlier built against new toolchains which dropped DARWIN
macros may be incompatible with any APR 1.6 and earlier
built with any toolchain that features the DARWIN macros and
any APR 1.7 or later.

Reply via email to