[Date Prev][Date Next]
Common symbols break OpenLDAP on Mac OS X (ITS#796)
Full_Name: Luke Howard
OS: Mac OS X Public Beta (aka Darwin 1.2)
Submission from: (NULL) (188.8.131.52)
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 <firstname.lastname@example.org> 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 <email@example.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