On Thu, 2011-02-24 at 10:59 +0100, Corinna Vinschen wrote:
On Feb 24 10:31, Balazs Scheidler wrote:
On Wed, 2011-02-23 at 17:29 +0100, Corinna Vinschen wrote:
ivykis and libmongo-client are not available for Cygwin. Is there no way around using these libs by using conditional compilation?
There's a way, mongodb can be disabled using --disable-mongodb configure option (but is enabled by default with the bundled libmongo-client library).
ivykis is not so simple, syslog-ng core depends on that heavily. ivykis is compiled as a static library (with -fPIC) and then linked into libsyslog-ng.so
The staticlib is just a convenience library, however I'd like that to be created by the ivykis configure/automake stuff, and would like to avoid having to rewrite the build system for ivykis. Also, I wouldn't want to install ivykis (as a shared object) from the syslog-ng tree, as I could perhaps break people's setup if ivykis becomes more widely available. (e.g. installed on the system).
Do you perhaps have an idea how to solve that differently?
If you don't provide a shared ivykis lib, building libsyslog-ng.so on Cygwin will break. Assuming ivykis builds on Cygwin, which nobody tested yet either...
Off the top my head I can see two ways around the shared/static problem.
- Add the ivykis source files to libsyslog_ng_la_SOURCES.
- Don't link libsyslog-ng.so against ivykis at all. Instead, build ivykis as a module which gets installed into /usr/lib/syslog-ng and use dlopen/dlsym to call its functions.
Hmm... I've attempted to create a completely static syslog-ng binary today, and although I've some doubts that I could do that for all the platforms that syslog-ng supports, it might work for a couple of them. So the general idea is: * everything gets linked into the main syslog-ng binary and libsyslog-ng.so/libivykis.so is not used. * even some of the selected modules can be linked in, which is a performance win The issue with that is that the final link probably can't be performed by libtool, I've just manually edited the command line that it emitted. I guess this can be a good solution for cygwin too, and will probably not be available for all platforms. But we'll see as we get there, I'm focusing on other stuff right now. :) -- Bazsi