Hi Everyone, I've been testing our code on Darwin 9/Leopard:

Good news: it works and we can actually create universal binaries:

.libs/libapr-1.0.dylib: Mach-O universal binary with 3 architectures
.libs/libapr-1.0.dylib (for architecture ppc7400): Mach-O dynamically linked shared library ppc .libs/libapr-1.0.dylib (for architecture i386): Mach-O dynamically linked shared library i386 .libs/libapr-1.0.dylib (for architecture x86_64): Mach-O 64-bit dynamically linked shared library x86_64


Bad news:

1) The autoconf code that selects the int_value and long_value aren't consistent for all three architectures (ppc/i386/x86_64). It should be choosing long_value="long long" but it's picking "long" instead, probably because that would also be correct on my i386/x86_64 machine. That'll need to be fixed.

2) The atomics code breaks presumably because the compiler/linker tries to link the same asm in all three architectures. Workaround: -- enable-nonportable-atomics=no


How did I do it:

./buildconf
CFLAGS="-arch ppc -arch i386 -arch x86_64 -pipe -Wall -g" \
LDFLAGS="-arch ppc -arch i386 -arch x86_64 -pipe" \
./configure --enable-nonportable-atomics=no
make clean
make
make install


I'll poke around in the autoconf code to see if I can fix the int_value/long_value selector, but so far I haven't had any inspirations. As for the atomics issue I'm not sure how to solve this, any ideas?

-aaron

Reply via email to