On Wed, Oct 14, 2009 at 08:00:20AM -0400, Jim Jagielski wrote:
> On Oct 14, 2009, at 7:00 AM, Joe Orton wrote:
>> Reducing half of our configure-time tests to build-time compiler macro
>> tests for one platform is not going to be maintainable. Why is it
>> useful for Joe Random APR User to be building for more than one ABI in
>> the first place? Why the heck would he care? Just pick a default and
>> run with it by setting $CC to select an ABI.
>
> If APR is built with i386, and installed, then any apps built for
> 64 bit will core dump on it. The reverse is true as well.
If APR changes $CC to force a platform ABI choice as I suggested, then
any apps built against APR will be (must be) built using the same $CC,
inherited via `apr-N-config --cc`. Otherwise all bets are off, as has
always been true.
> The default is to build for *both*. And when this is done, then
> the bit sizes locked in apr.h may or may not be correct depending
> on how you build the app that will be *using* it. The __LP64__
> tests in the apr.h (etal) files is to ensure that depending on
> how people are building *against an installed APR* will have
> the right values. Otherwise, anyone shipping an APR lib must
> built it for just 1 architecture and ensure that any consumers
> build against just that architecture.
Packagers/redistributors can build APR twice (or N times) and merge the
results to get a "fat" binary - this is a problem for Darwin packagers,
not for upstream. From a 10 second google, this seems to be how Apple
recommend you do it:
http://developer.apple.com/opensource/buildingopensourceuniversal.htmlI would not be averse to including (configure --enable-flag conditional)
a solution like the apr-wrapper.h we use in Fedora to allow distribution
of a single arch-independent apr.h which will DTRT on multiple
platforms, if there's wider support for that. But that wouldn't
distract from the need to build the thing twice and merge the results.
> At the very least we should create an APR define that specifies
> what bitsize was used
APR_SIZEOF_VOIDP?
Regards, Joe