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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.