It's undoubtedly not the right way, but I patched lib/Makefile.in. The basic problem in lib I think is twofold: 1) chartable.c being dynamically built during make, so it's not there when the makedepend is run 2) cyrusdb_quotalegacy.c including glob.h, which has a name collision with a similar Cyrus file. I patched Makefile.in as below: # diff -c Makefile.in.orig Makefile.in *** Makefile.in.orig Sat Sep 22 21:56:23 2007 --- Makefile.in Sat Sep 22 23:41:38 2007 *************** *** 91,97 **** LIBCYR_OBJS = acl.o bsearch.o charset.o glob.o retry.o util.o \ libcyr_cfg.o mkgmtime.o prot.o parseaddr.o imclient.o imparse.o \ lsort.o stristr.o rfc822date.o cyrusdb.o strhash.o \ ! chartable.o imapurl.o nonblock_@WITH_NONBLOCK@.o lock_@WITH_LOCK@.o \ gmtoff_@WITH_GMTOFF@.o map_@WITH_MAP@.o $(ACL) $(AUTH) \ @LIBOBJS@ @CYRUSDB_OBJS@ @MD5OBJ@ \ iptostring.o xmalloc.o wildmat.o byteorder64.o \ --- 91,97 ---- LIBCYR_OBJS = acl.o bsearch.o charset.o glob.o retry.o util.o \ libcyr_cfg.o mkgmtime.o prot.o parseaddr.o imclient.o imparse.o \ lsort.o stristr.o rfc822date.o cyrusdb.o strhash.o \ ! imapurl.o nonblock_@WITH_NONBLOCK@.o lock_@WITH_LOCK@.o \ gmtoff_@WITH_GMTOFF@.o map_@WITH_MAP@.o $(ACL) $(AUTH) \ @LIBOBJS@ @CYRUSDB_OBJS@ @MD5OBJ@ \ iptostring.o xmalloc.o wildmat.o byteorder64.o \ *************** *** 149,154 **** --- 149,155 ---- > chartable.c \ || (rm -f chartable.c && exit 1) @echo "### Done building chartables." + $(CC) -c -I${top_srcdir}/lib $(CPPFLAGS) $(CFLAGS) chartable.c # ./mkchartable -m $(srcdir)/charset/unicode.map $(srcdir)/charset/*.t >x-chartables.h # mv x-chartables.h chartables.h Still getting an error further along though, in the sieve directory: make[1]: Entering directory `/tmp/cyrus-imapd-2.3.9-obj/sieve' gcc -c -I.. -I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/../lib -I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/et -I/ucd/include -I/ucd/include -I/usr/include -I/ucd/include -DHAVE_CONFIG_H -g -O \ /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.c gcc -c -I.. -I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/../lib -I/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/et -I/ucd/include -I/ucd/include -I/usr/include -I/ucd/include -DHAVE_CONFIG_H -g -O \ /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve.c In file included from /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_interface.h:37, from /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/interp.h:31, from sieve.y:39: /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.h:6:24: error: et/com_err.h: No such file or directory In file included from /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_interface.h:37, from /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/interp.h:31, from sieve.y:39: /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.h:19: warning: 'struct et_list' declared inside parameter list /ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve_err.h:19: warning: its scope is only this definition or declaration, which is probably not what you want make[1]: *** [/ucd/src/cyrus-imapd/cyrus-imapd-2.3.9/cyrus-imapd-2.3.9/sieve/sieve.o] Error 1 make[1]: Leaving directory `/tmp/cyrus-imapd-2.3.9-obj/sieve' make: *** [all] Error 1 ---- Cyrus Home Page: http://cyrusimap.web.cmu.edu/ Cyrus Wiki/FAQ: http://cyrusimap.web.cmu.edu/twiki List Archives/Info: http://asg.web.cmu.edu/cyrus/mailing-list.html