Patches for Cygwin build
Ken Brown <[email protected]>
| Newsgroups | gmane.comp.gnu.mailutils.bugs |
|---|---|
| Message-ID | <[email protected]> |
I see from the archives that various people have tried to build mailutils on Cygwin, most recently here: http://lists.gnu.org/archive/html/bug-mailutils/2013-12/msg00000.html I've succeeded in making the build work with the three attached patches. The main issue is that libtool won't build shared libraries on Cygwin unless the -no-undefined flag is used. The first patch takes care of that. But then there are in fact some undefined symbols, which I fixed in the third patch. Finally, as was already noted in response to the message cited above, -llber is needed on Cygwin. More generally, it is needed on any platform in which the ber_* functions are in -llber rather than -lldap. I imagine this could be the case on some platforms other than Cygwin, so I wrote the second patch to apply to any such platform. Although the three patches are needed for Cygwin, I don't think they do any harm on other platforms. Please consider installing them. Thanks. Ken P.S. I also have some test failures that I might need help with, but I'll write about them separately, after I've tried to fix them myself. _______________________________________________ Bug-mailutils mailing list [email protected] https://lists.gnu.org/mailman/listinfo/bug-mailutils
0001-Enable-building-of-shared-libraries-on-Cygwin.patch
(text/plain, 8.7 KB)
From 93e17e95fc3fdfa14ff4fa13b456f5847879027c Mon Sep 17 00:00:00 2001 From: Ken Brown <[email protected]> Date: Sun, 26 Mar 2017 12:16:29 -0400 Subject: [PATCH 1/3] Enable building of shared libraries on Cygwin * lib/Makefile.am (libmuaux_la_LDFLAGS): * libmailutils/Makefile.am (libmailutils_la_LDFLAGS): * libmu_auth/Makefile.am (libmu_auth_la_LDFLAGS): * libmu_cpp/Makefile.am (libmu_cpp_la_LDFLAGS): * libmu_dbm/Makefile.am (libmu_dbm_la_LDFLAGS): * libmu_scm/Makefile.am (libmu_scm_la_LDFLAGS): * libmu_sieve/Makefile.am (libmu_sieve_la_LDFLAGS): * libproto/imap/Makefile.am (libmu_imap_la_LDFLAGS): * libproto/maildir/Makefile.am (libmu_maildir_la_LDFLAGS): * libproto/mailer/Makefile.am (libmu_mailer_la_LDFLAGS): * libproto/mbox/Makefile.am (libmu_mbox_la_LDFLAGS): * libproto/mh/Makefile.am (libmu_mh_la_LDFLAGS): * libproto/nntp/Makefile.am (libmu_nntp_la_LDFLAGS): * libproto/pop/Makefile.am (libmu_pop_la_LDFLAGS): * python/libmu_py/Makefile.am (libmu_py_la_LDFLAGS): Add -no-undefined. --- lib/Makefile.am | 2 +- libmailutils/Makefile.am | 2 +- libmu_auth/Makefile.am | 2 +- libmu_cpp/Makefile.am | 2 +- libmu_dbm/Makefile.am | 2 +- libmu_scm/Makefile.am | 2 +- libmu_sieve/Makefile.am | 2 +- libproto/imap/Makefile.am | 2 +- libproto/maildir/Makefile.am | 2 +- libproto/mailer/Makefile.am | 2 +- libproto/mbox/Makefile.am | 2 +- libproto/mh/Makefile.am | 2 +- libproto/nntp/Makefile.am | 2 +- libproto/pop/Makefile.am | 2 +- python/libmu_py/Makefile.am | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/Makefile.am b/lib/Makefile.am index 814e38a..94e9593 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -36,7 +36,7 @@ libmuaux_la_SOURCES = \ mu_umaxtostr.c\ mu_umaxtostr.h libmuaux_la_LIBADD=gnu/libgnu.la -libmuaux_la_LDFLAGS = -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmuaux_la_LDFLAGS = -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmutcpwrap_a_SOURCES = tcpwrap.c diff --git a/libmailutils/Makefile.am b/libmailutils/Makefile.am index a105f38..a5927f8 100644 --- a/libmailutils/Makefile.am +++ b/libmailutils/Makefile.am @@ -51,5 +51,5 @@ libmailutils_la_LIBADD = \ stdstream/libstdstream.la\ url/liburl.la -libmailutils_la_LDFLAGS = -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmailutils_la_LDFLAGS = -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ diff --git a/libmu_auth/Makefile.am b/libmu_auth/Makefile.am index b74d5cf..38afa7c 100644 --- a/libmu_auth/Makefile.am +++ b/libmu_auth/Makefile.am @@ -42,5 +42,5 @@ else endif libmu_auth_la_LIBADD = ${MU_LIB_MAILUTILS} @MU_AUTHLIBS@ @SQLLIB@ @LTLIBINTL@ -libmu_auth_la_LDFLAGS = -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_auth_la_LDFLAGS = -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_auth_la_DEPENDENCIES = @SQLLIB_DEPENDENCY@ diff --git a/libmu_cpp/Makefile.am b/libmu_cpp/Makefile.am index 5e0dad1..f25684f 100644 --- a/libmu_cpp/Makefile.am +++ b/libmu_cpp/Makefile.am @@ -43,5 +43,5 @@ libmu_cpp_la_SOURCES = \ url.cc libmu_cpp_la_LIBADD = @MU_COMMON_LIBRARIES@ -libmu_cpp_la_LDFLAGS = -rpath $(libdir) -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_cpp_la_LDFLAGS = -no-undefined -rpath $(libdir) -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ diff --git a/libmu_dbm/Makefile.am b/libmu_dbm/Makefile.am index 5ec6838..223a27e 100644 --- a/libmu_dbm/Makefile.am +++ b/libmu_dbm/Makefile.am @@ -43,5 +43,5 @@ libmu_dbm_la_SOURCES = \ noinst_HEADERS = mudbm.h libmu_dbm_la_LIBADD = ${MU_LIB_MAILUTILS} @MU_AUTHLIBS@ @DBMLIBS@ @LTLIBINTL@ -libmu_dbm_la_LDFLAGS = -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_dbm_la_LDFLAGS = -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_dbm_la_DEPENDENCIES = @DBMLIB_DEPENDENCY@ diff --git a/libmu_scm/Makefile.am b/libmu_scm/Makefile.am index b88f16e..032bbe8 100644 --- a/libmu_scm/Makefile.am +++ b/libmu_scm/Makefile.am @@ -39,7 +39,7 @@ libmu_scm_la_SOURCES=\ $(C_SRCS) \ mu_scm.h -libmu_scm_la_LDFLAGS = -rpath $(libdir) -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_scm_la_LDFLAGS = -no-undefined -rpath $(libdir) -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_scm_la_LIBADD = \ ${MU_LIB_MBOX}\ ${MU_LIB_IMAP}\ diff --git a/libmu_sieve/Makefile.am b/libmu_sieve/Makefile.am index 1e75e33..923003a 100644 --- a/libmu_sieve/Makefile.am +++ b/libmu_sieve/Makefile.am @@ -48,7 +48,7 @@ libmu_sieve_la_SOURCES = \ util.c\ variables.c libmu_sieve_la_LIBADD = ${MU_LIB_MAILUTILS} @LTDL_LIB@ -libmu_sieve_la_LDFLAGS = -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_sieve_la_LDFLAGS = -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ noinst_HEADERS = sieve-priv.h diff --git a/libproto/imap/Makefile.am b/libproto/imap/Makefile.am index 354e881..18f98df 100644 --- a/libproto/imap/Makefile.am +++ b/libproto/imap/Makefile.am @@ -18,7 +18,7 @@ AM_CPPFLAGS = @MU_LIB_COMMON_INCLUDES@ lib_LTLIBRARIES = libmu_imap.la -libmu_imap_la_LDFLAGS=-version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_imap_la_LDFLAGS= -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_imap_la_LIBADD = ${MU_LIB_AUTH} ${MU_LIB_MAILUTILS} @INTLLIBS@ SUBDIRS = . tests diff --git a/libproto/maildir/Makefile.am b/libproto/maildir/Makefile.am index da3a69c..bf6afd7 100644 --- a/libproto/maildir/Makefile.am +++ b/libproto/maildir/Makefile.am @@ -18,7 +18,7 @@ AM_CPPFLAGS = @MU_LIB_COMMON_INCLUDES@ lib_LTLIBRARIES = libmu_maildir.la -libmu_maildir_la_LDFLAGS=-version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_maildir_la_LDFLAGS= -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_maildir_la_LIBADD = ${MU_LIB_MAILUTILS} libmu_maildir_la_SOURCES = \ folder.c \ diff --git a/libproto/mailer/Makefile.am b/libproto/mailer/Makefile.am index 0abda87..3bb8e49 100644 --- a/libproto/mailer/Makefile.am +++ b/libproto/mailer/Makefile.am @@ -17,7 +17,7 @@ AM_CPPFLAGS = @MU_LIB_COMMON_INCLUDES@ lib_LTLIBRARIES = libmu_mailer.la -libmu_mailer_la_LDFLAGS=-version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_mailer_la_LDFLAGS= -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_mailer_la_LIBADD = ${MU_LIB_AUTH} ${MU_LIB_MAILUTILS} @INTLLIBS@ if MU_COND_GSASL diff --git a/libproto/mbox/Makefile.am b/libproto/mbox/Makefile.am index 1c936bf..5bff219 100644 --- a/libproto/mbox/Makefile.am +++ b/libproto/mbox/Makefile.am @@ -18,7 +18,7 @@ AM_CPPFLAGS = @MU_LIB_COMMON_INCLUDES@ lib_LTLIBRARIES = libmu_mbox.la -libmu_mbox_la_LDFLAGS=-version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_mbox_la_LDFLAGS= -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_mbox_la_LIBADD = ${MU_LIB_MAILUTILS} libmu_mbox_la_SOURCES = \ folder.c\ diff --git a/libproto/mh/Makefile.am b/libproto/mh/Makefile.am index 998540b..896b9ef 100644 --- a/libproto/mh/Makefile.am +++ b/libproto/mh/Makefile.am @@ -18,7 +18,7 @@ AM_CPPFLAGS = @MU_LIB_COMMON_INCLUDES@ lib_LTLIBRARIES = libmu_mh.la -libmu_mh_la_LDFLAGS=-version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_mh_la_LDFLAGS= -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_mh_la_LIBADD = ${MU_LIB_MAILUTILS} libmu_mh_la_SOURCES = \ folder.c\ diff --git a/libproto/nntp/Makefile.am b/libproto/nntp/Makefile.am index 98c93c3..4df8054 100644 --- a/libproto/nntp/Makefile.am +++ b/libproto/nntp/Makefile.am @@ -18,7 +18,7 @@ AM_CPPFLAGS = @MU_LIB_COMMON_INCLUDES@ lib_LTLIBRARIES = libmu_nntp.la -libmu_nntp_la_LDFLAGS=-version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_nntp_la_LDFLAGS= -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_nntp_la_LIBADD = ${MU_LIB_MAILUTILS} libmu_nntp_la_SOURCES = \ nntp_article.c \ diff --git a/libproto/pop/Makefile.am b/libproto/pop/Makefile.am index b69fbff..03516f7 100644 --- a/libproto/pop/Makefile.am +++ b/libproto/pop/Makefile.am @@ -18,7 +18,7 @@ AM_CPPFLAGS = @MU_LIB_COMMON_INCLUDES@ lib_LTLIBRARIES = libmu_pop.la -libmu_pop_la_LDFLAGS=-version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ +libmu_pop_la_LDFLAGS= -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_pop_la_LIBADD = ${MU_LIB_AUTH} ${MU_LIB_MAILUTILS} @INTLLIBS@ libmu_pop_la_SOURCES = \ diff --git a/python/libmu_py/Makefile.am b/python/libmu_py/Makefile.am index af20c03..0c96304 100644 --- a/python/libmu_py/Makefile.am +++ b/python/libmu_py/Makefile.am @@ -44,7 +44,7 @@ libmu_py_la_SOURCES = \ registrar.c \ url.c \ util.c -libmu_py_la_LDFLAGS = -rpath $(libdir) \ +libmu_py_la_LDFLAGS = -no-undefined -rpath $(libdir) \ -export-symbols-regex '^(mu_py_|Py).*' \ -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmu_py_la_LIBADD = $(PYTHON_LIBS) @MU_COMMON_LIBRARIES@ \ -- 2.8.3
0002-Add-library-needed-for-linking-on-Cygwin.patch
(text/plain, 740 B)
From 646c88a4c1cbfc83f8e2c242fd61f1520c180ee7 Mon Sep 17 00:00:00 2001 From: Ken Brown <[email protected]> Date: Sun, 26 Mar 2017 12:29:23 -0400 Subject: [PATCH 2/3] Add library needed for linking on Cygwin * configure.ac (MU_AUTHLIBS): Add -llber if that's where the ber_* functions are found. --- configure.ac | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/configure.ac b/configure.ac index 938269b..985ba0e 100644 --- a/configure.ac +++ b/configure.ac @@ -998,6 +998,10 @@ if test $status_ldap = maybe; then [status_ldap=no]) fi +if test $status_ldap = yes; then + AC_CHECK_LIB(lber, ber_set_option, MU_AUTHLIBS="$MU_AUTHLIBS -llber") +fi + # Virtual domain support MU_ENABLE_SUPPORT(virtual-domains) -- 2.8.3
0003-Fix-undefined-symbols-errors-on-Cygwin.patch
(text/plain, 3.3 KB)
From 3189e197981d0dd5f6eec6dabd9dedc6db7a21d3 Mon Sep 17 00:00:00 2001 From: Ken Brown <[email protected]> Date: Sun, 26 Mar 2017 12:56:26 -0400 Subject: [PATCH 3/3] Fix "undefined symbols" errors on Cygwin * lib/Makefile.am (libmuaux_la_LIBADD): Add the same libraries needed for building libmailutils. * pop3d/Makefile.am (pop3d_LDADD): Add libsockaddr.la. * imap4d/Makefile.am (imap4d_LDADD): Add libsockaddr.la and libstring.la. * maidag/Makefile.am (maidag_LDADD): Add libsockaddr.la. --- imap4d/Makefile.am | 4 +++- lib/Makefile.am | 28 ++++++++++++++++++++++++++++ maidag/Makefile.am | 3 ++- pop3d/Makefile.am | 3 ++- 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/imap4d/Makefile.am b/imap4d/Makefile.am index e62c34d..451914b 100644 --- a/imap4d/Makefile.am +++ b/imap4d/Makefile.am @@ -79,7 +79,9 @@ imap4d_LDADD = \ ${MU_LIB_AUTH}\ @MU_AUTHLIBS@ \ ${MU_LIB_MAILUTILS}\ - @SERV_AUTHLIBS@ @MU_COMMON_LIBRARIES@ @MU_TCPWRAP_LIBRARIES@ + @SERV_AUTHLIBS@ @MU_COMMON_LIBRARIES@ @MU_TCPWRAP_LIBRARIES@\ + ../libmailutils/sockaddr/libsockaddr.la\ + ../libmailutils/string/libstring.la ## This kludge is necessary to correctly establish imap4d -> MU_AUTHLIBS ## dependencies. Automake stupidly refuses to include them. diff --git a/lib/Makefile.am b/lib/Makefile.am index 94e9593..ac8ff4e 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -36,6 +36,34 @@ libmuaux_la_SOURCES = \ mu_umaxtostr.c\ mu_umaxtostr.h libmuaux_la_LIBADD=gnu/libgnu.la + +## The following list is taken from ../libmailutils/Makefile.am +libmuaux_la_LIBADD += \ + @MU_COMMON_LIBRARIES@\ + ../libmailutils/auth/libauth.la\ + ../libmailutils/base/libbase.la\ + ../libmailutils/address/libaddress.la\ + ../libmailutils/sockaddr/libsockaddr.la\ + ../libmailutils/cidr/libcidr.la\ + ../libmailutils/cfg/libcfg.la\ + ../libmailutils/cli/libcli.la\ + ../libmailutils/datetime/libdatetime.la\ + ../libmailutils/diag/libdiag.la\ + ../libmailutils/filter/libfilter.la\ + ../libmailutils/imapio/libimapio.la\ + ../libmailutils/list/liblist.la\ + ../libmailutils/mailbox/libmailbox.la\ + ../libmailutils/mailer/libmailer.la\ + ../libmailutils/mime/libmime.la\ + ../libmailutils/msgset/libmsgset.la\ + ../libmailutils/opt/libopt.la\ + ../libmailutils/property/libproperty.la\ + ../libmailutils/server/libserver.la\ + ../libmailutils/string/libstring.la\ + ../libmailutils/stream/libstream.la\ + ../libmailutils/stdstream/libstdstream.la\ + ../libmailutils/url/liburl.la + libmuaux_la_LDFLAGS = -no-undefined -version-info @VI_CURRENT@:@VI_REVISION@:@VI_AGE@ libmutcpwrap_a_SOURCES = tcpwrap.c diff --git a/maidag/Makefile.am b/maidag/Makefile.am index 1a4940a..8cbe18b 100644 --- a/maidag/Makefile.am +++ b/maidag/Makefile.am @@ -53,7 +53,8 @@ maidag_LDADD = \ @GUILE_LIBS@\ @PYTHON_LIBS@\ @DBMLIBS@\ - @MU_TCPWRAP_LIBRARIES@ + @MU_TCPWRAP_LIBRARIES@\ + ../libmailutils/sockaddr/libsockaddr.la AM_CPPFLAGS = -I${top_srcdir} @MU_APP_COMMON_INCLUDES@ @GUILE_INCLUDES@ \ @PYTHON_INCLUDES@ diff --git a/pop3d/Makefile.am b/pop3d/Makefile.am index ba21c9a..e87c0ba 100644 --- a/pop3d/Makefile.am +++ b/pop3d/Makefile.am @@ -61,7 +61,8 @@ pop3d_LDADD = \ @MU_COMMON_LIBRARIES@\ ${LIBMU_DBM}\ @DBMLIBS@\ - @MU_TCPWRAP_LIBRARIES@ + @MU_TCPWRAP_LIBRARIES@\ + ../libmailutils/sockaddr/libsockaddr.la popauth_SOURCES = popauth.c popauth_LDADD = \ -- 2.8.3