Guenter Knauf wrote:
Bill,
Then how would apu_dbd internally be aware that PGSQL is a valid choice?
dont know about apu_dbd - but apr_dbd.c has this code:
#ifndef APU_DSO_BUILD
/* Load statically-linked drivers: */
#if APU_HAVE_MYSQL
DRIVER_LOAD("mysql", apr_dbd_mysql_driver, pool);
#endif
#if APU_HAVE_PGSQL
DRIVER_LOAD("pgsql", apr_dbd_pgsql_driver, pool);
#endif
#if APU_HAVE_SQLITE3
DRIVER_LOAD("sqlite3", apr_dbd_sqlite3_driver, pool);
#endif
#if APU_HAVE_SQLITE2
DRIVER_LOAD("sqlite2", apr_dbd_sqlite2_driver, pool);
#endif
#if APU_HAVE_ORACLE
DRIVER_LOAD("oracle", apr_dbd_oracle_driver, pool);
#endif
#if APU_HAVE_SOME_OTHER_BACKEND
DRIVER_LOAD("firebird", apr_dbd_other_driver, pool);
#endif
#endif /* APU_DSO_BUILD */
and previously I only defined f.e. APU_HAVE_MYSQL=1 in the makefile for the
driver
while I did build libapr / libapr-util only with APU_DSO_BUILD defined, and that
worked so far;
So what do you think about this for apu.hnw:
Nope; zero conditionals. Whatever is built to
[lib]aprutil-1.[a|so|sl|dyld|dll|lib|nlm]
must match whatever is installed for apu.h. So define them zero
unconditionally and
whenever you trigger additional libs, we toggle those flags inside the
installed apu.h.
Apparently in DSO builds we don't (odd?)
I guess I just don't understand this initial approach to dynamic apr-util
components
yet - it would be nice to not add case-by-case workarounds but to come up with
the
schema that lets us handle all of these bits dynamically. I'm betting we will
need
to do apr 2.0 before we can realize such a vision.
Yes - it probably worked for you - our concern is with downstream consumers.
We don't
build apu.h (strictly) for our own benefit, it's public.
I first learned to hate this garbage in openssl (and rsa sslc) - which always
does
the right thing when run through [perl] Configure but can be easily built
without
fixing those, leading to all sorts of problems with downstream builds.
You cannot require the downstream user to provide apu defines. Well, we
actually
did have several historic flags (AP[RU]_DECLARE_STATIC when binding to a static
apr.lib on platforms that have special conf-magic to seperate static bindings
from dynamic bindings). But I don't know that APU_DSO_BUILD ==
!APU_DECLARE_STATIC,
and I don't know in fact that the user is required to define APU_DSO_BUILD.
Bill