[syslog-ng] linking changes

Balazs Scheidler bazsi at balabit.hu
Tue Mar 1 19:23:33 CET 2011


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



More information about the syslog-ng mailing list