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.
From 93e17e95fc3fdfa14ff4fa13b456f5847879027c Mon Sep 17 00:00:00 2001
From: Ken Brown <kbr...@cornell.edu>
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

From 646c88a4c1cbfc83f8e2c242fd61f1520c180ee7 Mon Sep 17 00:00:00 2001
From: Ken Brown <kbr...@cornell.edu>
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

From 3189e197981d0dd5f6eec6dabd9dedc6db7a21d3 Mon Sep 17 00:00:00 2001
From: Ken Brown <kbr...@cornell.edu>
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

_______________________________________________
Bug-mailutils mailing list
Bug-mailutils@gnu.org
https://lists.gnu.org/mailman/listinfo/bug-mailutils

Reply via email to