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