[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