]> diplodocus.org Git - nmh/blobdiff - Makefile.am
expect this commit to be force-replaced periodically
[nmh] / Makefile.am
index 8926d76a6ef2b01e911acfdf9330ee8b167fe3d2..1c6207630820b109385a3df6df702eed2a53e1ef 100644 (file)
@@ -26,17 +26,12 @@ LDADD = sbr/libmh.a
 MHNSEARCHPATH = "$(PATH)"
 MHNSEARCHPROG = $(srcdir)/etc/mhn.find.sh
 
 MHNSEARCHPATH = "$(PATH)"
 MHNSEARCHPROG = $(srcdir)/etc/mhn.find.sh
 
-##
-## Install config files and back-end programs in our own subdirecctories.
-##
-nmhetcdir  = @sysconfdir@/nmh
-nmhlibexecdir = @libexecdir@/nmh
-
 ##
 ## nmh _does_ have a test suite!
 ##
 TESTS_ENVIRONMENT = MH_OBJ_DIR="@abs_builddir@" \
                    MH_VERSION="$(VERSION)" \
 ##
 ## nmh _does_ have a test suite!
 ##
 TESTS_ENVIRONMENT = MH_OBJ_DIR="@abs_builddir@" \
                    MH_VERSION="$(VERSION)" \
+                   MAKE=$(MAKE) \
                    OAUTH_SUPPORT='@OAUTH_SUPPORT@' \
                    CURL_USER_AGENT='@CURL_USER_AGENT@' \
                    MH_TEST_DIR=`cd "@abs_builddir@" && pwd -P`/test/testdir \
                    OAUTH_SUPPORT='@OAUTH_SUPPORT@' \
                    CURL_USER_AGENT='@CURL_USER_AGENT@' \
                    MH_TEST_DIR=`cd "@abs_builddir@" && pwd -P`/test/testdir \
@@ -59,6 +54,7 @@ TESTS = \
     test/burst/test-burst \
     test/burst/test-burst-mime \
     test/comp/test-comp-format \
     test/burst/test-burst \
     test/burst/test-burst-mime \
     test/comp/test-comp-format \
+    test/comp/test-draft-fcc \
     test/dist/test-dist \
     test/folder/test-coverage \
     test/folder/test-create \
     test/dist/test-dist \
     test/folder/test-coverage \
     test/folder/test-create \
@@ -71,6 +67,7 @@ TESTS = \
     test/format/test-curses \
     test/format/test-dp \
     test/format/test-fmtdump \
     test/format/test-curses \
     test/format/test-dp \
     test/format/test-fmtdump \
+    test/format/test-fmttest \
     test/format/test-functions \
     test/format/test-localmbox \
     test/format/test-myhost \
     test/format/test-functions \
     test/format/test-localmbox \
     test/format/test-myhost \
@@ -82,6 +79,9 @@ TESTS = \
     test/forw/test-forw-coverage \
     test/forw/test-forw-digest \
     test/forw/test-forw-format \
     test/forw/test-forw-coverage \
     test/forw/test-forw-digest \
     test/forw/test-forw-format \
+    test/imap/test-inc \
+    test/imap/test-live \
+    test/imap/test-scan \
     test/inc/test-deb359167 \
     test/inc/test-eom-align \
     test/inc/test-inc-scanout \
     test/inc/test-deb359167 \
     test/inc/test-eom-align \
     test/inc/test-inc-scanout \
@@ -91,6 +91,7 @@ TESTS = \
     test/install-mh/test-version-check \
     test/locking/test-datalocking \
     test/locking/test-spoollocking \
     test/install-mh/test-version-check \
     test/locking/test-datalocking \
     test/locking/test-spoollocking \
+    test/managed-folders/test-read-message \
     test/manpages/test-manpages \
     test/mhbuild/test-attach \
     test/mhbuild/test-cte \
     test/manpages/test-manpages \
     test/mhbuild/test-attach \
     test/mhbuild/test-cte \
@@ -101,6 +102,7 @@ TESTS = \
     test/mhbuild/test-utf8-body \
     test/mhfixmsg/test-mhfixmsg \
     test/mhical/test-mhical \
     test/mhbuild/test-utf8-body \
     test/mhfixmsg/test-mhfixmsg \
     test/mhical/test-mhical \
+    test/mhl/test-format \
     test/mhl/test-mhl-flags \
     test/mhl/test-rfc6532 \
     test/mhlist/test-ext-params \
     test/mhl/test-mhl-flags \
     test/mhl/test-rfc6532 \
     test/mhlist/test-ext-params \
@@ -111,6 +113,8 @@ TESTS = \
     test/mhshow/test-binary \
     test/mhshow/test-charset \
     test/mhshow/test-cte-binary \
     test/mhshow/test-binary \
     test/mhshow/test-charset \
     test/mhshow/test-cte-binary \
+    test/mhshow/test-exec \
+    test/mhshow/test-markers \
     test/mhshow/test-msg-buffer-boundaries \
     test/mhshow/test-qp \
     test/mhshow/test-subpart \
     test/mhshow/test-msg-buffer-boundaries \
     test/mhshow/test-qp \
     test/mhshow/test-subpart \
@@ -152,6 +156,7 @@ TESTS = \
     test/repl/test-trailing-newline \
     test/scan/test-header-parsing \
     test/scan/test-scan \
     test/repl/test-trailing-newline \
     test/scan/test-header-parsing \
     test/scan/test-scan \
+    test/scan/test-scan-file \
     test/scan/test-scan-multibyte \
     test/send/test-sendfrom \
     test/sequences/test-flist \
     test/scan/test-scan-multibyte \
     test/send/test-sendfrom \
     test/sequences/test-flist \
@@ -165,17 +170,19 @@ TESTS = \
     test/whom/test-whom \
     test/cleanup ## The "cleanup" test should always be last.
 
     test/whom/test-whom \
     test/cleanup ## The "cleanup" test should always be last.
 
-XFAIL_TESTS =
+check_DATA = fake.pem
 
 check_SCRIPTS = test/common.sh
 
 check_PROGRAMS = \
     test/fakehttp \
 
 check_SCRIPTS = test/common.sh
 
 check_PROGRAMS = \
     test/fakehttp \
+    test/fakeinetd \
     test/fakepop \
     test/fakesmtp \
     test/getcanon \
     test/getcwidth \
     test/getfullname \
     test/fakepop \
     test/fakesmtp \
     test/getcanon \
     test/getcwidth \
     test/getfullname \
+    test/managed-folders/protocol-tester \
     test/runpty \
     #
 
     test/runpty \
     #
 
@@ -191,7 +198,6 @@ AM_DISTCHECK_CONFIGURE_FLAGS = DISABLE_SETGID_MAIL=1 \
 
 ##
 ## Stuff that should be cleaned via "make clean"
 
 ##
 ## Stuff that should be cleaned via "make clean"
-## automake 1.12.6 on FreeBSD 9 needs the sbr/dtimep.c.
 ##
 CLEANFILES = \
     $(man_MANS) \
 ##
 CLEANFILES = \
     $(man_MANS) \
@@ -201,8 +207,7 @@ CLEANFILES = \
     etc/mhn.defaults \
     etc/mts.conf \
     man/man.sed \
     etc/mhn.defaults \
     etc/mts.conf \
     man/man.sed \
-    man/mh-chart.man \
-    sbr/dtimep.c \
+    man/mh-chart.man
     #
 
 clean-local:
     #
 
 clean-local:
@@ -337,27 +342,23 @@ noinst_LIBRARIES = \
 noinst_HEADERS = \
     h/addrsbr.h \
     h/aliasbr.h \
 noinst_HEADERS = \
     h/addrsbr.h \
     h/aliasbr.h \
-    h/crawl_folders.h \
     h/done.h \
     h/dropsbr.h \
     h/fmt_compile.h \
     h/fmt_scan.h \
     h/done.h \
     h/dropsbr.h \
     h/fmt_compile.h \
     h/fmt_scan.h \
+    h/folder.h \
+    h/folder_manager_protocol.h \
     h/icalendar.h \
     h/icalendar.h \
-    h/md5.h \
+    h/managed_folders.h \
     h/mf.h \
     h/mh.h \
     h/mf.h \
     h/mh.h \
-    h/mhcachesbr.h \
     h/mhparse.h \
     h/mime.h \
     h/mts.h \
     h/netsec.h \
     h/nmh.h \
     h/oauth.h \
     h/mhparse.h \
     h/mime.h \
     h/mts.h \
     h/netsec.h \
     h/nmh.h \
     h/oauth.h \
-    h/picksbr.h \
-    h/popsbr.h \
     h/prototypes.h \
     h/prototypes.h \
-    h/rcvmail.h \
-    h/scansbr.h \
     h/signals.h \
     h/tws.h \
     h/utils.h \
     h/signals.h \
     h/tws.h \
     h/utils.h \
@@ -369,7 +370,7 @@ noinst_HEADERS = \
     sbr/brkstring.h \
     sbr/check_charset.h \
     sbr/client.h \
     sbr/brkstring.h \
     sbr/check_charset.h \
     sbr/client.h \
-    sbr/closefds.h \
+    sbr/concat.h \
     sbr/context_del.h \
     sbr/context_find.h \
     sbr/context_foil.h \
     sbr/context_del.h \
     sbr/context_find.h \
     sbr/context_foil.h \
@@ -379,14 +380,19 @@ noinst_HEADERS = \
     sbr/copyip.h \
     sbr/cpydata.h \
     sbr/cpydgst.h \
     sbr/copyip.h \
     sbr/cpydata.h \
     sbr/cpydgst.h \
+    sbr/crawl_folders.h \
     sbr/credentials.h \
     sbr/ctype-checked.h \
     sbr/credentials.h \
     sbr/ctype-checked.h \
+    sbr/datetime.h \
     sbr/discard.h \
     sbr/discard.h \
+    sbr/dtime.h \
     sbr/encode_rfc2047.h \
     sbr/error.h \
     sbr/escape_addresses.h \
     sbr/ext_hook.h \
     sbr/fdcompare.h \
     sbr/encode_rfc2047.h \
     sbr/error.h \
     sbr/escape_addresses.h \
     sbr/ext_hook.h \
     sbr/fdcompare.h \
+    sbr/fmt_addr.h \
+    sbr/fmt_new.h \
     sbr/fmt_rfc2047.h \
     sbr/folder_addmsg.h \
     sbr/folder_delmsgs.h \
     sbr/fmt_rfc2047.h \
     sbr/folder_addmsg.h \
     sbr/folder_delmsgs.h \
@@ -394,6 +400,7 @@ noinst_HEADERS = \
     sbr/folder_pack.h \
     sbr/folder_read.h \
     sbr/folder_realloc.h \
     sbr/folder_pack.h \
     sbr/folder_read.h \
     sbr/folder_realloc.h \
+    sbr/getarguments.h \
     sbr/getcpy.h \
     sbr/geteditor.h \
     sbr/getfolder.h \
     sbr/getcpy.h \
     sbr/geteditor.h \
     sbr/getfolder.h \
@@ -403,10 +410,14 @@ noinst_HEADERS = \
     sbr/m_backup.h \
     sbr/m_convert.h \
     sbr/m_draft.h \
     sbr/m_backup.h \
     sbr/m_convert.h \
     sbr/m_draft.h \
+    sbr/m_getfld.h \
+    sbr/m_gmprot.h \
     sbr/m_maildir.h \
     sbr/m_mktemp.h \
     sbr/m_maildir.h \
     sbr/m_mktemp.h \
+    sbr/m_name.h \
     sbr/m_popen.h \
     sbr/m_rand.h \
     sbr/m_popen.h \
     sbr/m_rand.h \
+    sbr/maildir_read_and_sort.h \
     sbr/makedir.h \
     sbr/message_id.h \
     sbr/mime_type.h \
     sbr/makedir.h \
     sbr/message_id.h \
     sbr/mime_type.h \
@@ -418,6 +429,10 @@ noinst_HEADERS = \
     sbr/push.h \
     sbr/r1bindex.h \
     sbr/read_line.h \
     sbr/push.h \
     sbr/r1bindex.h \
     sbr/read_line.h \
+    sbr/read_switch.h \
+    sbr/read_switch_multiword.h \
+    sbr/read_switch_multiword_via_readline.h \
+    sbr/read_yes_or_no_if_tty.h \
     sbr/readconfig.h \
     sbr/refile.h \
     sbr/remdir.h \
     sbr/readconfig.h \
     sbr/refile.h \
     sbr/remdir.h \
@@ -446,17 +461,27 @@ noinst_HEADERS = \
     sbr/vector.h \
     sbr/vfgets.h \
     thirdparty/jsmn/jsmn.h \
     sbr/vector.h \
     sbr/vfgets.h \
     thirdparty/jsmn/jsmn.h \
+    uip/annosbr.h \
+    uip/distsbr.h \
     uip/forwsbr.h \
     uip/mhfree.h \
     uip/forwsbr.h \
     uip/mhfree.h \
+    uip/mhlsbr.h \
     uip/mhmisc.h \
     uip/mhoutsbr.h \
     uip/mhshowsbr.h \
     uip/mhmisc.h \
     uip/mhoutsbr.h \
     uip/mhshowsbr.h \
+    uip/picksbr.h \
+    uip/popsbr.h \
     uip/replsbr.h \
     uip/replsbr.h \
+    uip/scansbr.h \
+    uip/sendsbr.h \
+    uip/whatnowproc.h \
+    uip/whatnowsbr.h \
     #
 
 ##
 ## Extra files we need to install in various places
 ##
     #
 
 ##
 ## Extra files we need to install in various places
 ##
+dist_nmhetc_SCRIPTS = etc/rmmproc.messageid
 dist_nmhetc_DATA = \
     etc/MailAliases \
     etc/components \
 dist_nmhetc_DATA = \
     etc/MailAliases \
     etc/components \
@@ -477,7 +502,6 @@ dist_nmhetc_DATA = \
     etc/rcvdistcomps.outbox \
     etc/replcomps \
     etc/replgroupcomps \
     etc/rcvdistcomps.outbox \
     etc/replcomps \
     etc/replgroupcomps \
-    etc/rmmproc.messageid \
     etc/scan.MMDDYY \
     etc/scan.YYYYMMDD \
     etc/scan.curses \
     etc/scan.MMDDYY \
     etc/scan.YYYYMMDD \
     etc/scan.curses \
@@ -533,7 +557,6 @@ docs_contribdir = $(docdir)/contrib
 dist_docs_contrib_SCRIPTS = \
     docs/contrib/localpostproc \
     docs/contrib/ml \
 dist_docs_contrib_SCRIPTS = \
     docs/contrib/localpostproc \
     docs/contrib/ml \
-    docs/contrib/replaliases \
     docs/contrib/replyfilter \
     docs/contrib/vpick \
     #
     docs/contrib/replyfilter \
     docs/contrib/vpick \
     #
@@ -749,8 +772,11 @@ uip_ali_LDADD = $(LDADD) $(POSTLINK)
 uip_anno_SOURCES = uip/anno.c uip/annosbr.c
 uip_anno_LDADD = $(LDADD) $(POSTLINK)
 
 uip_anno_SOURCES = uip/anno.c uip/annosbr.c
 uip_anno_LDADD = $(LDADD) $(POSTLINK)
 
-uip_burst_SOURCES = uip/burst.c uip/mhparse.c uip/mhmisc.c uip/mhfree.c \
-                   uip/mhcachesbr.c
+uip_burst_SOURCES = uip/burst.c \
+                   uip/mhparse.c \
+                   uip/mhmisc.c \
+                   uip/mhfree.c \
+                   #
 uip_burst_LDADD = $(LDADD) $(ICONVLIB) $(POSTLINK)
 
 uip_comp_SOURCES = uip/comp.c uip/whatnowproc.c uip/whatnowsbr.c uip/sendsbr.c \
 uip_burst_LDADD = $(LDADD) $(ICONVLIB) $(POSTLINK)
 
 uip_comp_SOURCES = uip/comp.c uip/whatnowproc.c uip/whatnowsbr.c uip/sendsbr.c \
@@ -784,26 +810,47 @@ uip_install_mh_LDADD = $(LDADD) $(POSTLINK)
 uip_mark_SOURCES = uip/mark.c
 uip_mark_LDADD = $(LDADD) $(POSTLINK)
 
 uip_mark_SOURCES = uip/mark.c
 uip_mark_LDADD = $(LDADD) $(POSTLINK)
 
-uip_mhbuild_SOURCES = uip/mhbuild.c uip/mhbuildsbr.c uip/mhcachesbr.c \
-                     uip/mhlistsbr.c uip/mhoutsbr.c uip/mhmisc.c  \
-                     uip/mhfree.c uip/mhparse.c \
-                     uip/mhstoresbr.c uip/mhshowsbr.c
+uip_mhbuild_SOURCES = uip/mhbuild.c \
+                     uip/mhbuildsbr.c \
+                     uip/mhlistsbr.c \
+                     uip/mhoutsbr.c \
+                     uip/mhmisc.c \
+                     uip/mhfree.c \
+                     uip/mhparse.c \
+                     uip/mhstoresbr.c \
+                     uip/mhshowsbr.c \
+                     #
 uip_mhbuild_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhbuild_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
-uip_mhfixmsg_SOURCES = uip/mhfixmsg.c uip/mhparse.c uip/mhcachesbr.c \
-                      uip/mhoutsbr.c uip/mhmisc.c uip/mhfree.c \
-                      uip/mhshowsbr.c uip/mhlistsbr.c
+uip_mhfixmsg_SOURCES = uip/mhfixmsg.c \
+                      uip/mhparse.c \
+                      uip/mhoutsbr.c \
+                      uip/mhmisc.c \
+                      uip/mhfree.c \
+                      uip/mhshowsbr.c \
+                      uip/mhlistsbr.c \
+                      #
 uip_mhfixmsg_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhical_SOURCES = uip/mhical.c
 uip_mhical_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhfixmsg_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhical_SOURCES = uip/mhical.c
 uip_mhical_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
-uip_mhlist_SOURCES = uip/mhlist.c uip/mhparse.c uip/mhcachesbr.c \
-                    uip/mhlistsbr.c uip/mhmisc.c uip/mhfree.c
+uip_mhlist_SOURCES = uip/mhlist.c \
+                    uip/mhparse.c \
+                    uip/mhlistsbr.c \
+                    uip/mhmisc.c \
+                    uip/mhfree.c \
+                    #
 uip_mhlist_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhlist_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
-uip_mhn_SOURCES = uip/mhn.c uip/mhparse.c uip/mhcachesbr.c uip/mhshowsbr.c \
-                 uip/mhlistsbr.c uip/mhstoresbr.c uip/mhmisc.c uip/mhfree.c
+uip_mhn_SOURCES = uip/mhn.c \
+                 uip/mhparse.c \
+                 uip/mhshowsbr.c \
+                 uip/mhlistsbr.c \
+                 uip/mhstoresbr.c \
+                 uip/mhmisc.c \
+                 uip/mhfree.c \
+                 #
 uip_mhn_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhparam_SOURCES = uip/mhparam.c
 uip_mhn_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhparam_SOURCES = uip/mhparam.c
@@ -812,14 +859,23 @@ uip_mhparam_LDADD = $(LDADD) $(POSTLINK)
 uip_mhpath_SOURCES = uip/mhpath.c
 uip_mhpath_LDADD = $(LDADD) $(POSTLINK)
 
 uip_mhpath_SOURCES = uip/mhpath.c
 uip_mhpath_LDADD = $(LDADD) $(POSTLINK)
 
-uip_mhshow_SOURCES = uip/mhshow.c uip/mhparse.c uip/mhcachesbr.c \
-                    uip/mhshowsbr.c uip/mhlistsbr.c uip/mhmisc.c \
-                    uip/mhfree.c
+uip_mhshow_SOURCES = uip/mhshow.c \
+                    uip/mhparse.c \
+                    uip/mhshowsbr.c \
+                    uip/mhlistsbr.c \
+                    uip/mhmisc.c \
+                    uip/mhfree.c \
+                    #
 uip_mhshow_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_mhshow_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
-uip_mhstore_SOURCES = uip/mhstore.c uip/mhparse.c uip/mhcachesbr.c \
-                     uip/mhshowsbr.c uip/mhlistsbr.c uip/mhstoresbr.c \
-                     uip/mhmisc.c uip/mhfree.c
+uip_mhstore_SOURCES = uip/mhstore.c \
+                     uip/mhparse.c \
+                     uip/mhshowsbr.c \
+                     uip/mhlistsbr.c \
+                     uip/mhstoresbr.c \
+                     uip/mhmisc.c \
+                     uip/mhfree.c \
+                     #
 uip_mhstore_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_msgchk_SOURCES = uip/msgchk.c uip/popsbr.c
 uip_mhstore_LDADD = $(LDADD) $(TERMLIB) $(ICONVLIB) $(POSTLINK)
 
 uip_msgchk_SOURCES = uip/msgchk.c uip/popsbr.c
@@ -937,6 +993,9 @@ test_fakesmtp_LDADD = $(POSTLINK)
 test_fakehttp_SOURCES = test/fakehttp.c test/server.c
 test_fakehttp_LDADD = $(LDADD) $(POSTLINK)
 
 test_fakehttp_SOURCES = test/fakehttp.c test/server.c
 test_fakehttp_LDADD = $(LDADD) $(POSTLINK)
 
+test_fakeinetd_SOURCES = test/fakeinetd.c
+test_fakeinetd_LDADD = $(LDADD) $(POSTLINK)
+
 test_getcwidth_SOURCES = test/getcwidth.c
 test_getcwidth_LDADD = $(POSTLINK)
 
 test_getcwidth_SOURCES = test/getcwidth.c
 test_getcwidth_LDADD = $(POSTLINK)
 
@@ -1026,7 +1085,6 @@ sbr_libmh_a_SOURCES = \
     sbr/charstring.c \
     sbr/check_charset.c \
     sbr/client.c \
     sbr/charstring.c \
     sbr/check_charset.c \
     sbr/client.c \
-    sbr/closefds.c \
     sbr/concat.c \
     sbr/context_del.c \
     sbr/context_find.c \
     sbr/concat.c \
     sbr/context_del.c \
     sbr/context_find.c \
@@ -1058,6 +1116,9 @@ sbr_libmh_a_SOURCES = \
     sbr/folder_addmsg.c \
     sbr/folder_delmsgs.c \
     sbr/folder_free.c \
     sbr/folder_addmsg.c \
     sbr/folder_delmsgs.c \
     sbr/folder_free.c \
+    sbr/folder_manager_client.c \
+    sbr/folder_manager_protocol.c \
+    sbr/folder_operations.c \
     sbr/folder_pack.c \
     sbr/folder_read.c \
     sbr/folder_realloc.c \
     sbr/folder_pack.c \
     sbr/folder_read.c \
     sbr/folder_realloc.c \
@@ -1080,8 +1141,9 @@ sbr_libmh_a_SOURCES = \
     sbr/m_name.c \
     sbr/m_popen.c \
     sbr/m_rand.c \
     sbr/m_name.c \
     sbr/m_popen.c \
     sbr/m_rand.c \
+    sbr/maildir_read_and_sort.c \
     sbr/makedir.c \
     sbr/makedir.c \
-    sbr/md5.c \
+    sbr/managed_folders.c \
     sbr/message_id.c \
     sbr/mf.c \
     sbr/mime_type.c \
     sbr/message_id.c \
     sbr/mf.c \
     sbr/mime_type.c \
@@ -1140,6 +1202,7 @@ sbr_libmh_a_LIBADD = $(LIBOBJS)
 ## Need explicit dependency so that YACC is run before LEX.
 ##
 sbr/icalendar.c: sbr/icalparse.c
 ## Need explicit dependency so that YACC is run before LEX.
 ##
 sbr/icalendar.c: sbr/icalparse.c
+uip/mhical.c: sbr/icalparse.h
 
 ##
 ## Because these files use the definitions in the libmh rule below,
 
 ##
 ## Because these files use the definitions in the libmh rule below,
@@ -1148,7 +1211,7 @@ sbr/icalendar.c: sbr/icalparse.c
 
 config/sbr_libmh_a-config.$(OBJEXT) sbr/sbr_libmh_a-mts.$(OBJEXT): Makefile
 
 
 config/sbr_libmh_a-config.$(OBJEXT) sbr/sbr_libmh_a-mts.$(OBJEXT): Makefile
 
-sbr_libmh_a_CPPFLAGS = ${AM_CPPFLAGS} -I./sbr \
+sbr_libmh_a_CPPFLAGS = ${AM_CPPFLAGS} \
                -DNMHBINDIR='"$(bindir)"' \
                -DNMHLIBEXECDIR='"$(nmhlibexecdir)"' \
                -DNMHETCDIR='"@nmhetcdirinst@$(nmhetcdir)"' \
                -DNMHBINDIR='"$(bindir)"' \
                -DNMHLIBEXECDIR='"$(nmhlibexecdir)"' \
                -DNMHETCDIR='"@nmhetcdirinst@$(nmhetcdir)"' \
@@ -1265,6 +1328,14 @@ gcov-clean: gcov-mostlyclean
 .PHONY: gcov gcov-rebuild gcov-run gcov-process gcov-report \
     gcov-mostlyclean gcov-clean
 
 .PHONY: gcov gcov-rebuild gcov-run gcov-process gcov-report \
     gcov-mostlyclean gcov-clean
 
+# TODO rust coverage
+#  cargo +nightly install cargo-binutils grcov rustfilt
+#  RUSTFLAGS=-Zinstrument-coverage make CARGO_FLAGS=+nightly cargo
+#  make check
+#  TODO rename .llvmprof to .profdata so grcov will see it
+#  cargo +nightly profdata -- merge -sparse test/imap/*.llvmprof -o profdata
+#  cargo +nightly cov -- show target/debug/imap-folder-manager -instr-profile=profdata "-path-equivalence=,${top_srcdir}"
+#  grcov --branch --llvm -b target/debug -o ~/public_html/cov -t html -s ../.. test/imap/cov
 
 ##
 ## Rules to upload the distribution to savannah
 
 ##
 ## Rules to upload the distribution to savannah
@@ -1288,3 +1359,27 @@ upload: dist
        @echo "Uploading to savannah"
        scp -p $(DIST_ARCHIVES)* $(SAVANNAH_USERNAME)@dl.sv.nongnu.org:/releases/nmh
 .PHONY: upload
        @echo "Uploading to savannah"
        scp -p $(DIST_ARCHIVES)* $(SAVANNAH_USERNAME)@dl.sv.nongnu.org:/releases/nmh
 .PHONY: upload
+
+# TODO autoconf check for cargo and bindgen
+.PHONY: cargo cargo-doc
+cargo: $(srcdir)/sbr/rust/src/bindgen.rs $(abs_srcdir)/sbr/rust/build.rs
+       cd $(srcdir) && CARGO_TARGET_DIR=$(abs_builddir)/target cargo $(CARGO_FLAGS) build
+cargo-doc: cargo
+       cd $(srcdir) && CARGO_TARGET_DIR=$(abs_builddir)/target cargo $(CARGO_FLAGS) doc --no-deps
+
+# TODO default to release build with optional debug build
+# TODO install mhimap to bindir and imap-folder-manager to libexecdir
+# TODO proper build rules, including dependency on libmh.a
+target/debug/mhimap target/debug/imap-folder-manager: cargo
+
+# TODO proper out-of-tree build
+$(abs_srcdir)/sbr/rust/build.rs: $(abs_builddir)/sbr/rust/build.rs
+       [ $(abs_srcdir) = $(abs_builddir) ] || cp $(builddir)/sbr/rust/build.rs $(srcdir)/sbr/rust/build.rs
+
+$(srcdir)/sbr/rust/src/bindgen.rs: $(srcdir)/sbr/rust/bindgen.h
+       bindgen --no-derive-copy -o $(srcdir)/sbr/rust/src/bindgen.rs.tmp $(srcdir)/sbr/rust/bindgen.h -- -I$(srcdir) \
+               && mv $(srcdir)/sbr/rust/src/bindgen.rs.tmp $(srcdir)/sbr/rust/src/bindgen.rs
+
+# TODO autoconf check for openssl
+fake.pem:
+       yes '' | openssl req -new -x509 -nodes -out fake.pem -keyout fake.pem