[syslog-ng] Newer libtool and autoconf versions?
Corinna Vinschen
vinschen at redhat.com
Tue Feb 22 19:38:03 CET 2011
On Feb 22 18:39, Corinna Vinschen wrote:
> Hi Balazs,
>
> On Feb 22 15:11, Balazs Scheidler wrote:
> > What about this patch, e.g. create a static library, which makes pdbtool
> > happy and doesn't introduce another shared object.
>
> Unfortunately it doesn't work on Cygwin. I get the following error when
> trying to link libdbparser:
>
> /bin/sh ../../libtool --tag=CC --mode=link gcc -std=gnu99
> -Wno-pointer-sign -g -O2 -Wall -avoid-version -module -no-undefined -o
> libdbparser.la -rpath /usr/lib/syslog-ng libdbparser_la-dbparser.lo
> libdbparser_la-dbparser-grammar.lo libdbparser_la-dbparser-parser.lo
> libdbparser_la-dbparser-plugin.lo ../../lib/libsyslog-ng.la
> libsyslog-ng-patterndb.a
>
> *** Warning: Trying to link with static lib archive libsyslog-ng-patterndb.a.
> *** I have the capability to make that library automatically link in when
> *** you link to this library. But I can only do this if you have a
> *** shared version of the library, which you do not appear to have
> *** because the file extensions .a of this argument makes me believe
> *** that it is just a static archive that I should not use here.
>
> To get this working on Cygwin as well, you must create both, a static
> and a shared libsyslog-ng-patterndb. The static one is for linking
> against pdbtool, the shared one for linking libdbparser.la.
>
> Also, when building pdbtool you have to specify libsyslog-ng-patterndb.a
> prior to ../../lib/libsyslog-ng.la in the LDADD library list, since when
> linking PE/COFF binaries, the order of libs given on the gcc command
> line is followed strictly. There's no backward reference possible.
> Thus the original order fails to link since functions in
> libsyslog-ng-patterndb.a reference symbols in ../../lib/libsyslog-ng.la.
Below's another matching patch against git HEAD. With your changes the
libsyslog-ng-patterndb.a file gets installed to /usr/lib, but the
static lib is a convenience lib as well. So it should be a "noinst"
library as well:
Signed-off-by: Corinna Vinschen <vinschen at redhat.com>
diff --git a/modules/dbparser/Makefile.am b/modules/dbparser/Makefile.am
index e35edaf..2edbc56 100644
--- a/modules/dbparser/Makefile.am
+++ b/modules/dbparser/Makefile.am
@@ -11,7 +11,15 @@ AM_CPPFLAGS = -I$(top_srcdir)/lib -I../../lib
AM_CFLAGS = @CFLAGS_NOWARN_POINTER_SIGN@
export top_srcdir
-lib_LIBRARIES = libsyslog-ng-patterndb.a
+noinst_LTLIBRARIES = libsyslog-ng-patterndb.la
+libsyslog_ng_patterndb_la_SOURCES = radix.c radix.h \
+ patterndb.c patterndb.h patterndb-int.h \
+ timerwheel.c timerwheel.h \
+ patternize.c patternize.h
+libsyslog_ng_patterndb_la_LDFLAGS = -no-undefined
+libsyslog_ng_patterndb_la_LIBADD = @OPENSSL_LIBS@ @DEPS_LIBS@ ../../lib/libsyslog-ng.la
+
+noinst_LIBRARIES = libsyslog-ng-patterndb.a
libsyslog_ng_patterndb_a_SOURCES = radix.c radix.h \
patterndb.c patterndb.h patterndb-int.h \
timerwheel.c timerwheel.h \
@@ -24,13 +32,13 @@ libdbparser_la_SOURCES = \
dbparser-grammar.y dbparser-parser.c dbparser-parser.h dbparser-plugin.c
libdbparser_la_CPPFLAGS = $(AM_CPPFLAGS)
-libdbparser_la_LIBADD = ../../lib/libsyslog-ng.la libsyslog-ng-patterndb.a
+libdbparser_la_LIBADD = ../../lib/libsyslog-ng.la libsyslog-ng-patterndb.la
libdbparser_la_LDFLAGS = -avoid-version -module -no-undefined
bin_PROGRAMS = pdbtool
pdbtool_SOURCES = pdbtool.c
pdbtool_CPPFLAGS = $(AM_CPPFLAGS) @OPENSSL_CFLAGS@
-pdbtool_LDADD = ../../lib/libsyslog-ng.la libsyslog-ng-patterndb.a @OPENSSL_LIBS@ @GLIB_LIBS@
+pdbtool_LDADD = libsyslog-ng-patterndb.a ../../lib/libsyslog-ng.la @OPENSSL_LIBS@ @GLIB_LIBS@
BUILT_SOURCES = dbparser-grammar.y dbparser-grammar.c dbparser-grammar.h
EXTRA_DIST = $(BUILT_SOURCES) radix-find.c dbparser-grammar.ym
Corinna
--
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat
More information about the syslog-ng
mailing list