[Date Prev][Date Next] [Chronological] [Thread] [Top]

Common symbols break OpenLDAP on Mac OS X (ITS#796)

Full_Name: Luke Howard
Version: 2.x
OS: Mac OS X Public Beta (aka Darwin 1.2)
URL: http://www.padl.com/~lukeh/lukeh-001002.diff
Submission from: (NULL) (

OpenLDAP 2.x builds fine on Mac OS X public beta, providing that you build with
--disable-shared, you replace config.guess and config.sub with the ones
/usr/libexec, and you patch libtool to support the "dyld" dynamic linker... 

[NB. There is an obscure race condition in the pthread configure test which I'm
still looking at, however this seems to succeed at least _some_ of the time.
Edward Moy <emoy@apple.com> is also looking at this.]

However, building with --enable-shared (the default) fails because the linker
does not support common (uninitialized global) symbols. There are a few of these
in the libraries (liblber and libldap_r) and the patch below initializes these.

To summarize the diffs in the patch:

- patch from Fred Sanchez <wsanchez@apple.com> to ltmain.sh and ltconfig to
support "dyld" dynamic linker. Fred has submitted these to the GNU libtool folk.
I modified this so that libtool invokes cc with -undefined suppress, otherwise
the dependency of libldap upon liblber is not handled correctly (fails with
undefined symbols). There may be a cleaner way to do this (eg. hack the
makefiles to depend on liblber) but as it's expected that the user will link
against both liblber and libldap I think this is safe.

- patch to config.guess and config.sub to support Darwin (Mac OS X core).

- initialize global variables to NULL, guarded with #ifdef __APPLE__.
(Initializing mutexes is thread-library dependent, I think.)

- terminate sed scripts in build/mkdep