Hi all,

I've been wondering if there is a recommended way of using autotools when writing an Apache module? I've seen a tutorial <http://threebit.net/tutorials/apache2_modules/tut1/tutorial1.html> on this, but it was last updated in 2005, so I'm not sure if there are any better ways or things to do. I've also looked at a couple <http://code.google.com/p/mod-authn-otp/> of projects <http://code.google.com/p/modskeleton/>, and they seem to do things differently. I also found a couple of previous <http://marc.info/?l=apache-modules&m=109754513810791&w=2> questions <http://marc.info/?l=apache-modules&m=97517123707363&w=2> on this subject, but they're very old and don't answer my question.

I essentially want to allow the module to be compiled against one or two different libraries, depending on availability and user choice.

Non-essential background details:
----8<-----------------------------------------------------------------
I'm building a module that accesses a database at configuration parse time, but I can't use APR DBD for a few reasons. Firstly, I need features from apr-util 1.3 which is not in many major distributions. Secondly, apr-util and mod_php can conflict by linking against libmysqlclient_r and libmysqlclient, respectively. Both libraries export the same symbols, which then causes all sorts of hell (generally manifesting as bizarre segfaults). I've also had issues with the distro-packaged versions of apr-util being compiled without database support (or DSO support, making it impossible to load the DB drivers). Then again, this could be due to me missing something. My DB driver-loading code was inspired from mod_dbd, so I'm fairly sure it's making the right calls.

Basically, I want the user/package maintainer to be able to force selection of libmysqlclient/libmysqlclient_r as appropriate (as some distributions have fixed this issue), although it would be even better to autodetect this via "configure" rules. I then also plan to add support for other databases, such as Postgres.

Of course, if anyone has any better suggestions on how to do this that don't involve me writing my own reduced-functionality DB abstraction layer, I would love to hear them.
---->8-----------------------------------------------------------------


Thanks,


Dave

Reply via email to