From 9af44ef5d9534cf6a12c0ddd90f9cad5648dcd28 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Wed, 4 Sep 2013 14:25:22 +0200 Subject: [PATCH] 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. --- src/libcharon/Makefile.am | 8 +++++++- src/libfast/Makefile.am | 8 ++++++-- src/libhydra/Makefile.am | 6 +++++- src/libimcv/Makefile.am | 7 ++++++- src/libipsec/Makefile.am | 6 +++++- src/libpts/Makefile.am | 8 +++++++- src/libpttls/Makefile.am | 9 ++++++++- src/libradius/Makefile.am | 7 +++++++ src/libsimaka/Makefile.am | 7 +++++++ src/libstrongswan/Makefile.am | 3 +++ src/libtls/Makefile.am | 6 ++++++ src/libtnccs/Makefile.am | 7 ++++++- 12 files changed, 73 insertions(+), 9 deletions(-) diff --git a/src/libcharon/Makefile.am b/src/libcharon/Makefile.am index 9c7f676..5ee047b 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 edc2ab1..41a489b 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 a2a164b..f7ae37f 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 e1e6541..86f172d 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 74379f1..41f5ae9 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 2c02fd1..48bb46c 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 225d0e4..f2bcf44 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 91ded23..4706f27 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 8aaac7d..6878133 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 dfe6e7e..78e4ce2 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 9e3712a..b83ea8e 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 d1f8825..22a3b93 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 \ -- 2.7.4