From: Tobias Brunner Date: Wed, 4 Sep 2013 12:25:22 +0000 (+0200) Subject: Build all shared libraries with -no-undefined and link them properly X-Git-Tag: 5.1.1dr4~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9af44ef5d9534cf6a12c0ddd90f9cad5648dcd28;p=thirdparty%2Fstrongswan.git Build all shared libraries with -no-undefined and link them properly The flag is required to convince libtool on Cygwin to build DLLs. But on Windows these shared libraries can not have undefined symbols, so we have to link them explicitly to the libraries they reference. For plugins this is currently not done, so only the monolithic build is supported. The plugin loader wouldn't be able to load DLLs anyway, as it tries to load files that don't exist on Cygwin. --- diff --git a/src/libcharon/Makefile.am b/src/libcharon/Makefile.am index 9c7f67690f..5ee047b9c7 100644 --- a/src/libcharon/Makefile.am +++ b/src/libcharon/Makefile.am @@ -136,7 +136,13 @@ AM_CPPFLAGS = \ -DIPSEC_DIR=\"${ipsecdir}\" \ -DIPSEC_PIDDIR=\"${piddir}\" -libcharon_la_LIBADD = -lm $(PTHREADLIB) $(DLLIB) $(SOCKLIB) +AM_LDFLAGS = \ + -no-undefined + +libcharon_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la \ + $(top_builddir)/src/libhydra/libhydra.la \ + -lm $(PTHREADLIB) $(DLLIB) $(SOCKLIB) EXTRA_DIST = Android.mk diff --git a/src/libfast/Makefile.am b/src/libfast/Makefile.am index edc2ab1cab..41a489b3d0 100644 --- a/src/libfast/Makefile.am +++ b/src/libfast/Makefile.am @@ -5,6 +5,9 @@ AM_CPPFLAGS = \ AM_CFLAGS = \ -rdynamic +AM_LDFLAGS = \ + -no-undefined + ipseclib_LTLIBRARIES = libfast.la libfast_la_SOURCES = \ @@ -17,5 +20,6 @@ nobase_fast_include_HEADERS = \ fast_request.h fast_session.h fast_smtp.h endif -libfast_la_LIBADD = $(top_builddir)/src/libstrongswan/libstrongswan.la \ - -lfcgi $(clearsilver_LIBS) $(PTHREADLIB) +libfast_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la \ + -lfcgi $(clearsilver_LIBS) $(PTHREADLIB) diff --git a/src/libhydra/Makefile.am b/src/libhydra/Makefile.am index a2a164bd99..f7ae37f982 100644 --- a/src/libhydra/Makefile.am +++ b/src/libhydra/Makefile.am @@ -11,7 +11,8 @@ kernel/kernel_ipsec.c kernel/kernel_ipsec.h \ kernel/kernel_net.c kernel/kernel_net.h \ kernel/kernel_listener.h -libhydra_la_LIBADD = +libhydra_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la AM_CPPFLAGS = \ -I$(top_srcdir)/src/libstrongswan \ @@ -19,6 +20,9 @@ AM_CPPFLAGS = \ -DPLUGINDIR=\"${plugindir}\" \ -DSTRONGSWAN_CONF=\"${strongswan_conf}\" +AM_LDFLAGS = \ + -no-undefined + EXTRA_DIST = Android.mk # build optional plugins diff --git a/src/libimcv/Makefile.am b/src/libimcv/Makefile.am index e1e6541aa2..86f172dd8f 100644 --- a/src/libimcv/Makefile.am +++ b/src/libimcv/Makefile.am @@ -4,7 +4,12 @@ AM_CPPFLAGS = \ ipseclib_LTLIBRARIES = libimcv.la -libimcv_la_LIBADD = $(top_builddir)/src/libtncif/libtncif.la +libimcv_la_LDFLAGS = \ + -no-undefined + +libimcv_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la \ + $(top_builddir)/src/libtncif/libtncif.la libimcv_la_SOURCES = \ imcv.h imcv.c \ diff --git a/src/libipsec/Makefile.am b/src/libipsec/Makefile.am index 74379f1d50..41f5ae9378 100644 --- a/src/libipsec/Makefile.am +++ b/src/libipsec/Makefile.am @@ -13,11 +13,15 @@ ipsec_processor.c ipsec_processor.h \ ipsec_sa.c ipsec_sa.h \ ipsec_sa_mgr.c ipsec_sa_mgr.h -libipsec_la_LIBADD = +libipsec_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la AM_CPPFLAGS = \ -I$(top_srcdir)/src/libstrongswan +AM_LDFLAGS = \ + -no-undefined + EXTRA_DIST = Android.mk # build optional plugins diff --git a/src/libpts/Makefile.am b/src/libpts/Makefile.am index 2c02fd18ac..48bb46c7a7 100644 --- a/src/libpts/Makefile.am +++ b/src/libpts/Makefile.am @@ -3,9 +3,15 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/libtncif \ -I$(top_srcdir)/src/libimcv +AM_LDFLAGS = \ + -no-undefined + ipseclib_LTLIBRARIES = libpts.la -libpts_la_LIBADD = $(top_builddir)/src/libimcv/libimcv.la +libpts_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la \ + $(top_builddir)/src/libtncif/libtncif.la \ + $(top_builddir)/src/libimcv/libimcv.la if USE_TROUSERS libpts_la_LIBADD += -ltspi diff --git a/src/libpttls/Makefile.am b/src/libpttls/Makefile.am index 225d0e48f3..f2bcf44d56 100644 --- a/src/libpttls/Makefile.am +++ b/src/libpttls/Makefile.am @@ -4,8 +4,15 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/libtncif \ -I$(top_srcdir)/src/libtnccs +AM_LDFLAGS = \ + -no-undefined + ipseclib_LTLIBRARIES = libpttls.la -libpttls_la_LIBADD = $(top_builddir)/src/libtls/libtls.la + +libpttls_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la \ + $(top_builddir)/src/libtls/libtls.la + libpttls_la_SOURCES = pt_tls.c pt_tls.h \ pt_tls_client.c pt_tls_client.h \ pt_tls_server.c pt_tls_server.h \ diff --git a/src/libradius/Makefile.am b/src/libradius/Makefile.am index 91ded23e3a..4706f270d2 100644 --- a/src/libradius/Makefile.am +++ b/src/libradius/Makefile.am @@ -1,7 +1,14 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/libstrongswan +AM_LDFLAGS = \ + -no-undefined + ipseclib_LTLIBRARIES = libradius.la + +libradius_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la + libradius_la_SOURCES = \ radius_message.h radius_message.c \ radius_socket.h radius_socket.c \ diff --git a/src/libsimaka/Makefile.am b/src/libsimaka/Makefile.am index 8aaac7de0f..6878133f30 100644 --- a/src/libsimaka/Makefile.am +++ b/src/libsimaka/Makefile.am @@ -3,7 +3,14 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/libhydra \ -I$(top_srcdir)/src/libcharon +AM_LDFLAGS = \ + -no-undefined + ipseclib_LTLIBRARIES = libsimaka.la + +libsimaka_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la + libsimaka_la_SOURCES = simaka_message.h simaka_message.c \ simaka_crypto.h simaka_crypto.c simaka_manager.h simaka_manager.c \ simaka_card.h simaka_provider.h simaka_hooks.h diff --git a/src/libstrongswan/Makefile.am b/src/libstrongswan/Makefile.am index dfe6e7e000..78e4ce2e1b 100644 --- a/src/libstrongswan/Makefile.am +++ b/src/libstrongswan/Makefile.am @@ -95,6 +95,9 @@ AM_CPPFLAGS = \ AM_CFLAGS = \ @COVERAGE_CFLAGS@ +AM_LDFLAGS = \ + -no-undefined + if USE_LEAK_DETECTIVE AM_CPPFLAGS += -DLEAK_DETECTIVE libstrongswan_la_SOURCES += utils/leak_detective.c diff --git a/src/libtls/Makefile.am b/src/libtls/Makefile.am index 9e3712abe6..b83ea8ebaa 100644 --- a/src/libtls/Makefile.am +++ b/src/libtls/Makefile.am @@ -1,12 +1,18 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/libstrongswan +AM_LDFLAGS = \ + -no-undefined + ipseclib_LTLIBRARIES = libtls.la libtls_la_SOURCES = \ tls_protection.c tls_compression.c tls_fragmentation.c tls_alert.c \ tls_crypto.c tls_prf.c tls_socket.c tls_eap.c tls_cache.c tls_peer.c \ tls_server.c tls.c +libtls_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la + if USE_DEV_HEADERS tls_includedir = ${dev_headers}/tls nobase_tls_include_HEADERS = \ diff --git a/src/libtnccs/Makefile.am b/src/libtnccs/Makefile.am index d1f8825dee..22a3b93b02 100644 --- a/src/libtnccs/Makefile.am +++ b/src/libtnccs/Makefile.am @@ -3,9 +3,14 @@ AM_CPPFLAGS = \ -I$(top_srcdir)/src/libtncif \ -I$(top_srcdir)/src/libtls +AM_LDFLAGS = \ + -no-undefined + ipseclib_LTLIBRARIES = libtnccs.la -libtnccs_la_LIBADD = $(top_builddir)/src/libtncif/libtncif.la +libtnccs_la_LIBADD = \ + $(top_builddir)/src/libstrongswan/libstrongswan.la \ + $(top_builddir)/src/libtncif/libtncif.la libtnccs_la_SOURCES = \ tnc/tnc.h tnc/tnc.c \