############################################################################### # substitutions by autosetup PACKAGE= @PACKAGE@ PACKAGE_VERSION=@PACKAGE_VERSION@ PACKAGE_DATE= @PACKAGE_DATE@ # Build-time compiler and flags. These are used for building executables that # are only used at build-time, e.g., docs/makedoc. These are different from CC / # CFLAGS / LDFLAGS because the host and target systems might be different. CC_FOR_BUILD= @CC_FOR_BUILD@ CFLAGS_FOR_BUILD= @CFLAGS_FOR_BUILD@ $(EXTRA_CFLAGS_FOR_BUILD) LDFLAGS_FOR_BUILD= @LDFLAGS_FOR_BUILD@ $(EXTRA_LDFLAGS_FOR_BUILD) PWD= @PWD@ SH?= sh AR= @AR@ CC= @CC@ CPP= @CPP@ CFLAGS= @CPPFLAGS@ @CFLAGS@ -I. -I@srcdir@ -Wall $(EXTRA_CFLAGS) LDFLAGS= @LDFLAGS@ $(EXTRA_LDFLAGS) EXEEXT= @EXEEXT@ LIBS= @LIBS@ @if ENABLE_NLS INTLLIBS= @INTLLIBS@ @endif RANLIB= @RANLIB@ SRCDIR= @srcdir@ INSTALL= @INSTALL@ -c INSTALL_DATA= @INSTALL@ -m 644 INSTALL_DIR= @INSTALL@ -d -m 755 MKDIR_P= mkdir -p RM= rm -fr DEPFILES= $(ALLOBJS:.o=.Po) BINFILES= $(NEOMUTT) @if HAVE_PGP LIBBINFILES+= $(PGPEWRAP) @endif @if HAVE_SMIME LIBBINFILES+= $(SRCDIR)/contrib/smime_keys @endif # paths bindir= @BINDIR@ datadir= @PKGDATADIR@ docdir= @PKGDOCDIR@ mandir= @mandir@ libexecdir= @libexecdir@ sysconfdir= @SYSCONFDIR@ textdomaindir= @MUTTLOCALEDIR@ # targets for specific subdirectories ALL_TARGETS= @ALL_TARGETS@ CLEAN_TARGETS= @CLEAN_TARGETS@ INSTALL_TARGETS= @INSTALL_TARGETS@ UNINSTALL_TARGETS= @UNINSTALL_TARGETS@ VPATH= @VPATH@ ALL_FILES!= (cd $(SRCDIR) && git ls-files 2>/dev/null) || true default: all ############################################################################### # neomutt NEOMUTT= neomutt$(EXEEXT) NEOMUTTOBJS= alternates.o commands.o conststrings.o copy.o editmsg.o \ enriched.o external.o flags.o git_ver.o globals.o \ handler.o hdrline.o help.o hook.o init.o mailcap.o \ maillist.o main.o muttlib.o mutt_account.o mutt_body.o \ mutt_config.o mutt_header.o mutt_logging.o mutt_mailbox.o \ mutt_signal.o mutt_socket.o mutt_thread.o mview.o mx.o \ recvcmd.o rfc3676.o score.o sort.o status.o subjectrx.o \ system.o version.o @if USE_INOTIFY NEOMUTTOBJS+= monitor.o @endif @if USE_LUA NEOMUTTOBJS+= mutt_lua.o @endif @if !HAVE_TIMEGM NEOMUTTOBJS+= timegm.o @endif @if !HAVE_WCSCASECMP NEOMUTTOBJS+= wcscasecmp.o @endif CLEANFILES+= $(NEOMUTT) $(NEOMUTTOBJS) ALLOBJS+= $(NEOMUTTOBJS) ############################################################################### # libaddress LIBADDRESS= libaddress.a LIBADDRESSOBJS= address/address.o address/config_type.o address/group.o \ address/idna.o CLEANFILES+= $(LIBADDRESS) $(LIBADDRESSOBJS) ALLOBJS+= $(LIBADDRESSOBJS) $(LIBADDRESS): $(PWD)/address $(LIBADDRESSOBJS) $(AR) cr $@ $(LIBADDRESSOBJS) $(RANLIB) $@ $(PWD)/address: $(MKDIR_P) $(PWD)/address ############################################################################### # libalias LIBALIAS= libalias.a LIBALIASOBJS= alias/alias.o alias/array.o alias/commands.o alias/complete.o \ alias/config.o alias/dlg_alias.o alias/dlg_query.o \ alias/functions.o alias/gui.o alias/reverse.o alias/sort.o CLEANFILES+= $(LIBALIAS) $(LIBALIASOBJS) ALLOBJS+= $(LIBALIASOBJS) $(LIBALIAS): $(PWD)/alias $(LIBALIASOBJS) $(AR) cr $@ $(LIBALIASOBJS) $(RANLIB) $@ $(PWD)/alias: $(MKDIR_P) $(PWD)/alias ############################################################################### # libattach LIBATTACH= libattach.a LIBATTACHOBJS= attach/attach.o attach/attachments.o attach/cid.o \ attach/dlg_attach.o attach/functions.o attach/lib.o \ attach/mutt_attach.o attach/private_data.o attach/recvattach.o CLEANFILES+= $(LIBATTACH) $(LIBATTACHOBJS) ALLOBJS+= $(LIBATTACHOBJS) $(LIBATTACH): $(PWD)/attach $(LIBATTACHOBJS) $(AR) cr $@ $(LIBATTACHOBJS) $(RANLIB) $@ $(PWD)/attach: $(MKDIR_P) $(PWD)/attach ############################################################################### # libautocrypt @if USE_AUTOCRYPT LIBAUTOCRYPT= libautocrypt.a LIBAUTOCRYPTOBJS=autocrypt/autocrypt.o autocrypt/config.o autocrypt/db.o \ autocrypt/dlg_autocrypt.o autocrypt/functions.o \ autocrypt/gpgme.o autocrypt/schema.o CLEANFILES+= $(LIBAUTOCRYPT) $(LIBAUTOCRYPTOBJS) ALLOBJS+= $(LIBAUTOCRYPTOBJS) $(LIBAUTOCRYPT): $(PWD)/autocrypt $(LIBAUTOCRYPTOBJS) $(AR) cr $@ $(LIBAUTOCRYPTOBJS) $(RANLIB) $@ $(PWD)/autocrypt: $(MKDIR_P) $(PWD)/autocrypt @endif ############################################################################### # libbcache LIBBCACHE= libbcache.a LIBBCACHEOBJS= bcache/bcache.o CLEANFILES+= $(LIBBCACHE) $(LIBBCACHEOBJS) ALLOBJS+= $(LIBBCACHEOBJS) $(LIBBCACHE): $(PWD)/bcache $(LIBBCACHEOBJS) $(AR) cr $@ $(LIBBCACHEOBJS) $(RANLIB) $@ $(PWD)/bcache: $(MKDIR_P) $(PWD)/bcache ############################################################################### # libbrowser LIBBROWSER= libbrowser.a LIBBROWSEROBJS= browser/complete.o browser/config.o browser/dlg_browser.o \ browser/functions.o browser/private_data.o browser/sort.o CLEANFILES+= $(LIBBROWSER) $(LIBBROWSEROBJS) ALLOBJS+= $(LIBBROWSEROBJS) $(LIBBROWSER): $(PWD)/browser $(LIBBROWSEROBJS) $(AR) cr $@ $(LIBBROWSEROBJS) $(RANLIB) $@ $(PWD)/browser: $(MKDIR_P) $(PWD)/browser ############################################################################### # libcolor LIBCOLOR= libcolor.a LIBCOLOROBJS= color/ansi.o color/attr.o color/color.o color/command.o \ color/curses.o color/merged.o color/notify.o \ color/parse_ansi.o color/parse_color.o color/quoted.o \ color/regex.o color/simple.o @if USE_DEBUG_COLOR LIBCOLOROBJS+= color/debug.o @endif CLEANFILES+= $(LIBCOLOR) $(LIBCOLOROBJS) ALLOBJS+= $(LIBCOLOROBJS) $(LIBCOLOR): $(PWD)/color $(LIBCOLOROBJS) $(AR) cr $@ $(LIBCOLOROBJS) $(RANLIB) $@ $(PWD)/color: $(MKDIR_P) $(PWD)/color ############################################################################### # libcomplete LIBCOMPLETE= libcomplete.a LIBCOMPLETEOBJS=complete/complete.o complete/data.o complete/helpers.o CLEANFILES+= $(LIBCOMPLETE) $(LIBCOMPLETEOBJS) ALLOBJS+= $(LIBCOMPLETEOBJS) $(LIBCOMPLETE): $(PWD)/complete $(LIBCOMPLETEOBJS) $(AR) cr $@ $(LIBCOMPLETEOBJS) $(RANLIB) $@ $(PWD)/complete: $(MKDIR_P) $(PWD)/complete ############################################################################### # libcompmbox LIBCOMPMBOX= libcompmbox.a LIBCOMPMBOXOBJS=compmbox/compress.o CLEANFILES+= $(LIBCOMPMBOX) $(LIBCOMPMBOXOBJS) ALLOBJS+= $(LIBCOMPMBOXOBJS) $(LIBCOMPMBOX): $(PWD)/compmbox $(LIBCOMPMBOXOBJS) $(AR) cr $@ $(LIBCOMPMBOXOBJS) $(RANLIB) $@ $(PWD)/compmbox: $(MKDIR_P) $(PWD)/compmbox ############################################################################### # libcompose LIBCOMPOSE= libcompose.a LIBCOMPOSEOBJS= compose/attach.o compose/attach_data.o compose/cbar.o \ compose/cbar_data.o compose/config.o compose/dlg_compose.o \ compose/functions.o compose/shared_data.o CLEANFILES+= $(LIBCOMPOSE) $(LIBCOMPOSEOBJS) ALLOBJS+= $(LIBCOMPOSEOBJS) $(LIBCOMPOSE): $(PWD)/compose $(LIBCOMPOSEOBJS) $(AR) cr $@ $(LIBCOMPOSEOBJS) $(RANLIB) $@ $(PWD)/compose: $(MKDIR_P) $(PWD)/compose ############################################################################### # libcompress @if USE_LZ4 LIBCOMPRESSOBJS+=compress/lz4.o @endif @if USE_ZLIB LIBCOMPRESSOBJS+=compress/zlib.o @endif @if USE_ZSTD LIBCOMPRESSOBJS+=compress/zstd.o @endif @if USE_LZ4 || USE_ZLIB || USE_ZSTD LIBCOMPRESSOBJS+=compress/compress.o LIBCOMPRESS= libcompress.a CLEANFILES+= $(LIBCOMPRESS) $(LIBCOMPRESSOBJS) ALLOBJS+= $(LIBCOMPRESSOBJS) $(LIBCOMPRESS): $(PWD)/compress $(LIBCOMPRESSOBJS) $(AR) cr $@ $(LIBCOMPRESSOBJS) $(RANLIB) $@ $(PWD)/compress: $(MKDIR_P) $(PWD)/compress @endif ############################################################################### # libconfig LIBCONFIG= libconfig.a LIBCONFIGOBJS= config/bool.o config/charset.o config/dump.o config/enum.o \ config/helpers.o config/long.o config/mbtable.o config/myvar.o \ config/number.o config/path.o config/quad.o config/regex.o \ config/set.o config/slist.o config/sort.o config/string.o \ config/subset.o CLEANFILES+= $(LIBCONFIG) $(LIBCONFIGOBJS) ALLOBJS+= $(LIBCONFIGOBJS) $(LIBCONFIG): $(PWD)/config $(LIBCONFIGOBJS) $(AR) cr $@ $(LIBCONFIGOBJS) $(RANLIB) $@ $(PWD)/config: $(MKDIR_P) $(PWD)/config ############################################################################### # libconn LIBCONN= libconn.a LIBCONNOBJS= conn/accountcmd.o conn/config.o conn/connaccount.o \ conn/getdomain.o conn/raw.o conn/sasl_plain.o conn/socket.o \ conn/tunnel.o @if USE_SASL_GNU LIBCONNOBJS+= conn/gsasl.o @endif @if USE_SASL_CYRUS LIBCONNOBJS+= conn/sasl.o @endif @if USE_SSL LIBCONNOBJS+= conn/dlg_verifycert.o @endif @if USE_SSL_GNUTLS LIBCONNOBJS+= conn/gnutls.o @endif @if USE_SSL_OPENSSL LIBCONNOBJS+= conn/openssl.o @endif @if USE_ZLIB LIBCONNOBJS+= conn/zstrm.o @endif CLEANFILES+= $(LIBCONN) $(LIBCONNOBJS) ALLOBJS+= $(LIBCONNOBJS) $(LIBCONN): $(PWD)/conn $(LIBCONNOBJS) $(AR) cr $@ $(LIBCONNOBJS) $(RANLIB) $@ $(PWD)/conn: $(MKDIR_P) $(PWD)/conn ############################################################################### # libconvert LIBCONVERT= libconvert.a LIBCONVERTOBJS= convert/content_info.o convert/convert.o CLEANFILES+= $(LIBCONVERT) $(LIBCONVERTOBJS) ALLOBJS+= $(LIBCONVERTOBJS) $(LIBCONVERT): $(PWD)/convert $(LIBCONVERTOBJS) $(AR) cr $@ $(LIBCONVERTOBJS) $(RANLIB) $@ $(PWD)/convert: $(MKDIR_P) $(PWD)/convert ############################################################################### # libcore LIBCORE= libcore.a LIBCOREOBJS= core/account.o core/command.o core/config_cache.o \ core/dispatcher.o core/mailbox.o core/message.o core/neomutt.o \ core/tmp.o CLEANFILES+= $(LIBCORE) $(LIBCOREOBJS) ALLOBJS+= $(LIBCOREOBJS) $(LIBCORE): $(PWD)/core $(LIBCOREOBJS) $(AR) cr $@ $(LIBCOREOBJS) $(RANLIB) $@ $(PWD)/core: $(MKDIR_P) $(PWD)/core ############################################################################### # libdebug @if USE_DEBUG_BACKTRACE LIBDEBUGOBJS+= debug/backtrace.o @endif @if USE_DEBUG_COLOR LIBDEBUGOBJS+= debug/pager.o @endif @if USE_DEBUG_EMAIL LIBDEBUGOBJS+= debug/email.o @endif @if USE_DEBUG_GRAPHVIZ LIBDEBUGOBJS+= debug/graphviz.o @endif @if USE_DEBUG_KEYMAP LIBDEBUGOBJS+= debug/keymap.o @endif @if USE_DEBUG_LOGGING LIBDEBUGOBJS+= debug/logging.o @endif @if USE_DEBUG_NOTIFY LIBDEBUGOBJS+= debug/notify.o @endif @if USE_DEBUG_WINDOW LIBDEBUGOBJS+= debug/window.o @endif @if USE_DEBUG_BACKTRACE || USE_DEBUG_COLOR || USE_DEBUG_EMAIL || USE_DEBUG_GRAPHVIZ || USE_DEBUG_KEYMAP || USE_DEBUG_LOGGING || USE_DEBUG_NAMES || USE_DEBUG_NOTIFY || USE_DEBUG_WINDOW LIBDEBUGOBJS+= debug/common.o debug/names.o LIBDEBUG= libdebug.a CLEANFILES+= $(LIBDEBUG) $(LIBDEBUGOBJS) ALLOBJS+= $(LIBDEBUGOBJS) $(LIBDEBUG): $(PWD)/debug $(LIBDEBUGOBJS) $(AR) cr $@ $(LIBDEBUGOBJS) $(RANLIB) $@ $(PWD)/debug: $(MKDIR_P) $(PWD)/debug @endif ############################################################################### # libeditor LIBEDITOR= libeditor.a LIBEDITOROBJS= editor/enter.o editor/functions.o editor/state.o editor/window.o CLEANFILES+= $(LIBEDITOR) $(LIBEDITOROBJS) ALLOBJS+= $(LIBEDITOROBJS) $(LIBEDITOR): $(PWD)/editor $(LIBEDITOROBJS) $(AR) cr $@ $(LIBEDITOROBJS) $(RANLIB) $@ $(PWD)/editor: $(MKDIR_P) $(PWD)/editor ############################################################################### # libemail LIBEMAIL= libemail.a LIBEMAILOBJS= email/body.o email/email.o email/envelope.o email/from.o \ email/globals.o email/mime.o email/parameter.o email/parse.o \ email/rfc2047.o email/rfc2231.o email/tags.o email/thread.o \ email/url.o CLEANFILES+= $(LIBEMAIL) $(LIBEMAILOBJS) ALLOBJS+= $(LIBEMAILOBJS) $(LIBEMAIL): $(PWD)/email $(LIBEMAILOBJS) $(AR) cr $@ $(LIBEMAILOBJS) $(RANLIB) $@ $(PWD)/email: $(MKDIR_P) $(PWD)/email ############################################################################### # libenvelope LIBENVELOPE= libenvelope.a LIBENVELOPEOBJS=envelope/functions.o envelope/wdata.o envelope/window.o CLEANFILES+= $(LIBENVELOPE) $(LIBENVELOPEOBJS) ALLOBJS+= $(LIBENVELOPEOBJS) $(LIBENVELOPE): $(PWD)/envelope $(LIBENVELOPEOBJS) $(AR) cr $@ $(LIBENVELOPEOBJS) $(RANLIB) $@ $(PWD)/envelope: $(MKDIR_P) $(PWD)/envelope ############################################################################### # libgui LIBGUI= libgui.a LIBGUIOBJS= gui/curs_lib.o gui/dialog.o gui/functions.o gui/global.o \ gui/msgcont.o gui/msgwin.o gui/msgwin_wdata.o \ gui/mutt_curses.o gui/mutt_window.o gui/opcodes.o gui/reflow.o \ gui/resize.o gui/rootwin.o gui/sbar.o gui/simple.o \ gui/terminal.o CLEANFILES+= $(LIBGUI) $(LIBGUIOBJS) ALLOBJS+= $(LIBGUIOBJS) $(LIBGUI): $(PWD)/gui $(LIBGUIOBJS) $(AR) cr $@ $(LIBGUIOBJS) $(RANLIB) $@ $(PWD)/gui: $(MKDIR_P) $(PWD)/gui ############################################################################### # libhcache @if USE_HCACHE LIBHCACHE= libhcache.a LIBHCACHEOBJS= hcache/config.o hcache/hcache.o hcache/serialize.o CLEANFILES+= $(LIBHCACHE) $(LIBHCACHEOBJS) ALLOBJS+= $(LIBHCACHEOBJS) hcache/hcache.o: hcache/hcversion.h $(LIBHCACHE): $(PWD)/hcache $(LIBHCACHEOBJS) $(AR) cr $@ $(LIBHCACHEOBJS) $(RANLIB) $@ $(PWD)/hcache: $(MKDIR_P) $(PWD)/hcache @endif ############################################################################### # libhelpbar LIBHELPBAR= libhelpbar.a LIBHELPBAROBJS= helpbar/config.o helpbar/helpbar.o helpbar/wdata.o CLEANFILES+= $(LIBHELPBAR) $(LIBHELPBAROBJS) ALLOBJS+= $(LIBHELPBAROBJS) $(LIBHELPBAR): $(PWD)/helpbar $(LIBHELPBAROBJS) $(AR) cr $@ $(LIBHELPBAROBJS) $(RANLIB) $@ $(PWD)/helpbar: $(MKDIR_P) $(PWD)/helpbar ############################################################################### # libhistory LIBHISTORY= libhistory.a LIBHISTORYOBJS= history/config.o history/dlg_history.o history/functions.o \ history/history.o CLEANFILES+= $(LIBHISTORY) $(LIBHISTORYOBJS) ALLOBJS+= $(LIBHISTORYOBJS) $(LIBHISTORY): $(PWD)/history $(LIBHISTORYOBJS) $(AR) cr $@ $(LIBHISTORYOBJS) $(RANLIB) $@ $(PWD)/history: $(MKDIR_P) $(PWD)/history ############################################################################### # libimap LIBIMAP= libimap.a LIBIMAPOBJS= imap/adata.o imap/auth.o imap/auth_login.o imap/auth_oauth.o \ imap/auth_plain.o imap/browse.o imap/command.o imap/config.o \ imap/edata.o imap/imap.o imap/mdata.o imap/message.o \ imap/msg_set.o imap/msn.o imap/search.o imap/utf7.o imap/util.o @if USE_GSS LIBIMAPOBJS+= imap/auth_gss.o @endif @if USE_SASL_CYRUS LIBIMAPOBJS+= imap/auth_sasl.o @endif @if USE_SASL_GNU LIBIMAPOBJS+= imap/auth_gsasl.o @endif @if !HAVE_SASL LIBIMAPOBJS+= imap/auth_anon.o imap/auth_cram.o @endif CLEANFILES+= $(LIBIMAP) $(LIBIMAPOBJS) ALLOBJS+= $(LIBIMAPOBJS) $(LIBIMAP): $(PWD)/imap $(LIBIMAPOBJS) $(AR) cr $@ $(LIBIMAPOBJS) $(RANLIB) $@ $(PWD)/imap: $(MKDIR_P) $(PWD)/imap ############################################################################### # libindex LIBINDEX= libindex.a LIBINDEXOBJS= index/config.o index/dlg_index.o index/functions.o \ index/ibar.o index/index.o index/ipanel.o index/private_data.o \ index/shared_data.o CLEANFILES+= $(LIBINDEX) $(LIBINDEXOBJS) ALLOBJS+= $(LIBINDEXOBJS) $(LIBINDEX): $(PWD)/index $(LIBINDEXOBJS) $(AR) cr $@ $(LIBINDEXOBJS) $(RANLIB) $@ $(PWD)/index: $(MKDIR_P) $(PWD)/index ############################################################################### # libkey LIBKEY= libkey.a LIBKEYOBJS= key/dump.o key/get.o key/init.o key/lib.o key/parse.o CLEANFILES+= $(LIBKEY) $(LIBKEYOBJS) ALLOBJS+= $(LIBKEYOBJS) $(LIBKEY): $(PWD)/key $(LIBKEYOBJS) $(AR) cr $@ $(LIBKEYOBJS) $(RANLIB) $@ $(PWD)/key: $(MKDIR_P) $(PWD)/key ############################################################################### # libmaildir LIBMAILDIR= libmaildir.a LIBMAILDIROBJS= maildir/config.o maildir/edata.o maildir/maildir.o \ maildir/mdata.o maildir/mdemail.o maildir/mh.o \ maildir/sequence.o maildir/shared.o CLEANFILES+= $(LIBMAILDIR) $(LIBMAILDIROBJS) ALLOBJS+= $(LIBMAILDIROBJS) $(LIBMAILDIR): $(PWD)/maildir $(LIBMAILDIROBJS) $(AR) cr $@ $(LIBMAILDIROBJS) $(RANLIB) $@ $(PWD)/maildir: $(MKDIR_P) $(PWD)/maildir ############################################################################### # libmbox LIBMBOX= libmbox.a LIBMBOXOBJS= mbox/config.o mbox/mbox.o CLEANFILES+= $(LIBMBOX) $(LIBMBOXOBJS) ALLOBJS+= $(LIBMBOXOBJS) $(LIBMBOX): $(PWD)/mbox $(LIBMBOXOBJS) $(AR) cr $@ $(LIBMBOXOBJS) $(RANLIB) $@ $(PWD)/mbox: $(MKDIR_P) $(PWD)/mbox ############################################################################### # libmenu LIBMENU= libmenu.a LIBMENUOBJS= menu/config.o menu/draw.o menu/functions.o menu/menu.o \ menu/move.o menu/observer.o menu/tagging.o menu/type.o \ menu/window.o CLEANFILES+= $(LIBMENU) $(LIBMENUOBJS) ALLOBJS+= $(LIBMENUOBJS) $(LIBMENU): $(PWD)/menu $(LIBMENUOBJS) $(AR) cr $@ $(LIBMENUOBJS) $(RANLIB) $@ $(PWD)/menu: $(MKDIR_P) $(PWD)/menu ############################################################################### # libmixmaster @if MIXMASTER LIBMIXMASTER= libmixmaster.a LIBMIXMASTEROBJS=mixmaster/chain_data.o mixmaster/dlg_mixmaster.o \ mixmaster/functions.o mixmaster/mixmaster.o \ mixmaster/remailer.o mixmaster/win_chain.o mixmaster/win_hosts.o CLEANFILES+= $(LIBMIXMASTER) $(LIBMIXMASTEROBJS) ALLOBJS+= $(LIBMIXMASTEROBJS) $(LIBMIXMASTER): $(PWD)/mixmaster $(LIBMIXMASTEROBJS) $(AR) cr $@ $(LIBMIXMASTEROBJS) $(RANLIB) $@ $(PWD)/mixmaster: $(MKDIR_P) $(PWD)/mixmaster @endif ############################################################################### # libmutt LIBMUTT= libmutt.a LIBMUTTOBJS= mutt/atoi.o mutt/base64.o mutt/buffer.o mutt/charset.o \ mutt/date.o mutt/envlist.o mutt/exit.o mutt/file.o \ mutt/filter.o mutt/hash.o mutt/list.o mutt/logging.o \ mutt/mapping.o mutt/mbyte.o mutt/md5.o mutt/memory.o \ mutt/notify.o mutt/path.o mutt/pool.o mutt/prex.o \ mutt/qsort_r.o mutt/random.o mutt/regex.o mutt/signal.o \ mutt/slist.o mutt/state.o mutt/string.o CLEANFILES+= $(LIBMUTT) $(LIBMUTTOBJS) ALLOBJS+= $(LIBMUTTOBJS) $(LIBMUTT): $(PWD)/mutt $(LIBMUTTOBJS) $(AR) cr $@ $(LIBMUTTOBJS) $(RANLIB) $@ $(PWD)/mutt: $(MKDIR_P) $(PWD)/mutt ############################################################################### # libncrypt LIBNCRYPT= libncrypt.a LIBNCRYPTOBJS= ncrypt/config.o ncrypt/crypt.o ncrypt/crypt_mod.o \ ncrypt/cryptglue.o ncrypt/functions.o @if HAVE_PKG_GPGME LIBNCRYPTOBJS+= ncrypt/crypt_gpgme.o ncrypt/dlg_gpgme.o \ ncrypt/gpgme_functions.o ncrypt/crypt_mod_pgp_gpgme.o \ ncrypt/crypt_mod_smime_gpgme.o @endif @if HAVE_PGP LIBNCRYPTOBJS+= ncrypt/crypt_mod_pgp_classic.o ncrypt/dlg_pgp.o \ ncrypt/gnupgparse.o ncrypt/pgp_functions.o ncrypt/pgp.o \ ncrypt/pgpinvoke.o ncrypt/pgpkey.o ncrypt/pgplib.o \ ncrypt/pgpmicalg.o ncrypt/pgppacket.o @endif @if HAVE_SMIME LIBNCRYPTOBJS+= ncrypt/crypt_mod_smime_classic.o ncrypt/dlg_smime.o \ ncrypt/smime_functions.o ncrypt/smime.o @endif CLEANFILES+= $(LIBNCRYPT) $(LIBNCRYPTOBJS) ALLOBJS+= $(LIBNCRYPTOBJS) $(LIBNCRYPT): $(PWD)/ncrypt $(LIBNCRYPTOBJS) $(AR) cr $@ $(LIBNCRYPTOBJS) $(RANLIB) $@ $(PWD)/ncrypt: $(MKDIR_P) $(PWD)/ncrypt ############################################################################### # libnntp LIBNNTP= libnntp.a LIBNNTPOBJS= nntp/adata.o nntp/browse.o nntp/complete.o nntp/config.o \ nntp/edata.o nntp/mdata.o nntp/newsrc.o nntp/nntp.o CLEANFILES+= $(LIBNNTP) $(LIBNNTPOBJS) ALLOBJS+= $(LIBNNTPOBJS) $(LIBNNTP): $(PWD)/nntp $(LIBNNTPOBJS) $(AR) cr $@ $(LIBNNTPOBJS) $(RANLIB) $@ $(PWD)/nntp: $(MKDIR_P) $(PWD)/nntp ############################################################################### # libnotmuch @if USE_NOTMUCH LIBNOTMUCH= libnotmuch.a LIBNOTMUCHOBJS= notmuch/adata.o notmuch/complete.o notmuch/config.o \ notmuch/db.o notmuch/edata.o notmuch/mdata.o notmuch/notmuch.o \ notmuch/query.o notmuch/tag.o CLEANFILES+= $(LIBNOTMUCH) $(LIBNOTMUCHOBJS) ALLOBJS+= $(LIBNOTMUCHOBJS) $(LIBNOTMUCH): $(PWD)/notmuch $(LIBNOTMUCHOBJS) $(AR) cr $@ $(LIBNOTMUCHOBJS) $(RANLIB) $@ $(PWD)/notmuch: $(MKDIR_P) $(PWD)/notmuch @endif ############################################################################### # libpager LIBPAGER= libpager.a LIBPAGEROBJS= pager/config.o pager/display.o pager/dlg_pager.o \ pager/do_pager.o pager/functions.o pager/message.o \ pager/pager.o pager/pbar.o pager/ppanel.o pager/private_data.o CLEANFILES+= $(LIBPAGER) $(LIBPAGEROBJS) ALLOBJS+= $(LIBPAGEROBJS) $(LIBPAGER): $(PWD)/pager $(LIBPAGEROBJS) $(AR) cr $@ $(LIBPAGEROBJS) $(RANLIB) $@ $(PWD)/pager: $(MKDIR_P) $(PWD)/pager ############################################################################### # libparse LIBPARSE= libparse.a LIBPARSEOBJS= parse/extract.o parse/rc.o parse/set.o CLEANFILES+= $(LIBPARSE) $(LIBPARSEOBJS) ALLOBJS+= $(LIBPARSEOBJS) $(LIBPARSE): $(PWD)/parse $(LIBPARSEOBJS) $(AR) cr $@ $(LIBPARSEOBJS) $(RANLIB) $@ $(PWD)/parse: $(MKDIR_P) $(PWD)/parse ############################################################################### # libpattern LIBPATTERN= libpattern.a LIBPATTERNOBJS= pattern/compile.o pattern/complete.o pattern/config.o \ pattern/dlg_pattern.o pattern/exec.o pattern/flags.o \ pattern/functions.o pattern/message.o pattern/pattern.o \ pattern/search_state.o CLEANFILES+= $(LIBPATTERN) $(LIBPATTERNOBJS) ALLOBJS+= $(LIBPATTERNOBJS) $(LIBPATTERN): $(PWD)/pattern $(LIBPATTERNOBJS) $(AR) cr $@ $(LIBPATTERNOBJS) $(RANLIB) $@ $(PWD)/pattern: $(MKDIR_P) $(PWD)/pattern ############################################################################### # libpop LIBPOP= libpop.a LIBPOPOBJS= pop/adata.o pop/auth.o pop/config.o pop/edata.o pop/lib.o \ pop/pop.o CLEANFILES+= $(LIBPOP) $(LIBPOPOBJS) ALLOBJS+= $(LIBPOPOBJS) $(LIBPOP): $(PWD)/pop $(LIBPOPOBJS) $(AR) cr $@ $(LIBPOPOBJS) $(RANLIB) $@ $(PWD)/pop: $(MKDIR_P) $(PWD)/pop ############################################################################### # libpostpone LIBPOSTPONE= libpostpone.a LIBPOSTPONEOBJS=postpone/dlg_postpone.o postpone/functions.o postpone/postpone.o CLEANFILES+= $(LIBPOSTPONE) $(LIBPOSTPONEOBJS) ALLOBJS+= $(LIBPOSTPONEOBJS) $(LIBPOSTPONE): $(PWD)/postpone $(LIBPOSTPONEOBJS) $(AR) cr $@ $(LIBPOSTPONEOBJS) $(RANLIB) $@ $(PWD)/postpone: $(MKDIR_P) $(PWD)/postpone ############################################################################### # libprogress LIBPROGRESS= libprogress.a LIBPROGRESSOBJS=progress/progress.o progress/wdata.o progress/window.o CLEANFILES+= $(LIBPROGRESS) $(LIBPROGRESSOBJS) ALLOBJS+= $(LIBPROGRESSOBJS) $(LIBPROGRESS): $(PWD)/progress $(LIBPROGRESSOBJS) $(AR) cr $@ $(LIBPROGRESSOBJS) $(RANLIB) $@ $(PWD)/progress: $(MKDIR_P) $(PWD)/progress ############################################################################### # libquestion LIBQUESTION= libquestion.a LIBQUESTIONOBJS=question/question.o CLEANFILES+= $(LIBQUESTION) $(LIBQUESTIONOBJS) ALLOBJS+= $(LIBQUESTIONOBJS) $(LIBQUESTION): $(PWD)/question $(LIBQUESTIONOBJS) $(AR) cr $@ $(LIBQUESTIONOBJS) $(RANLIB) $@ $(PWD)/question: $(MKDIR_P) $(PWD)/question ############################################################################### # libsend LIBSEND= libsend.a LIBSENDOBJS= send/body.o send/config.o send/header.o send/multipart.o \ send/send.o send/sendlib.o send/sendmail.o send/smtp.o CLEANFILES+= $(LIBSEND) $(LIBSENDOBJS) ALLOBJS+= $(LIBSENDOBJS) $(LIBSEND): $(PWD)/send $(LIBSENDOBJS) $(AR) cr $@ $(LIBSENDOBJS) $(RANLIB) $@ $(PWD)/send: $(MKDIR_P) $(PWD)/send ############################################################################### # libsidebar @if USE_SIDEBAR LIBSIDEBAR= libsidebar.a LIBSIDEBAROBJS= sidebar/commands.o sidebar/config.o sidebar/functions.o \ sidebar/observer.o sidebar/sidebar.o sidebar/sort.o \ sidebar/wdata.o sidebar/window.o CLEANFILES+= $(LIBSIDEBAR) $(LIBSIDEBAROBJS) ALLOBJS+= $(LIBSIDEBAROBJS) $(LIBSIDEBAR): $(PWD)/sidebar $(LIBSIDEBAROBJS) $(AR) cr $@ $(LIBSIDEBAROBJS) $(RANLIB) $@ $(PWD)/sidebar: $(MKDIR_P) $(PWD)/sidebar @endif ############################################################################### # libstore @if HAVE_BDB LIBSTOREOBJS+= store/bdb.o @endif @if HAVE_GDBM LIBSTOREOBJS+= store/gdbm.o @endif @if HAVE_KC LIBSTOREOBJS+= store/kc.o @endif @if HAVE_LMDB LIBSTOREOBJS+= store/lmdb.o @endif @if HAVE_QDBM LIBSTOREOBJS+= store/qdbm.o @endif @if HAVE_ROCKSDB LIBSTOREOBJS+= store/rocksdb.o @endif @if HAVE_TDB LIBSTOREOBJS+= store/tdb.o @endif @if HAVE_TC LIBSTOREOBJS+= store/tc.o @endif @if HAVE_BDB || HAVE_GDBM || HAVE_KC || HAVE_LMDB || HAVE_QDBM || HAVE_ROCKSDB || HAVE_TDB || HAVE_TC LIBSTORE= libstore.a LIBSTOREOBJS+= store/store.o CLEANFILES+= $(LIBSTORE) $(LIBSTOREOBJS) ALLOBJS+= $(LIBSTOREOBJS) $(LIBSTORE): $(PWD)/store $(LIBSTOREOBJS) $(AR) cr $@ $(LIBSTOREOBJS) $(RANLIB) $@ $(PWD)/store: $(MKDIR_P) $(PWD)/store @endif ############################################################################### # pgpewrap PGPEWRAP= pgpewrap$(EXEEXT) PGPEWRAPOBJS= pgpewrap.o CLEANFILES+= $(PGPEWRAP) $(PGPEWRAPOBJS) ALLOBJS+= $(PGPEWRAPOBJS) $(PGPEWRAP): $(PGPEWRAPOBJS) $(CC) $(LDFLAGS) -o $@ $(PGPEWRAPOBJS) ############################################################################## # targets all: $(BINFILES) $(LIBBINFILES) $(ALL_TARGETS) # compile + dependencies .c.o: $(CC) $(CFLAGS) -MT $@ -MD -MP -MF $(@:.o=.Tpo) -c -o $@ $< @mv $(@:.o=.Tpo) $(@:.o=.Po) $(ALLOBJS): # The order of these libraries depends on their dependencies. # The libraries with the most dependencies will come first. MUTTLIBS+= $(LIBINDEX) $(LIBPAGER) $(LIBINDEX) $(LIBPAGER) $(LIBAUTOCRYPT) $(LIBPOP) \ $(LIBEDITOR) $(LIBCOMPLETE) $(LIBBROWSER) $(LIBCOMPMBOX) $(LIBSTORE) \ $(LIBPROGRESS) $(LIBQUESTION) $(LIBPOSTPONE) $(LIBALIAS) $(LIBSEND) \ $(LIBCONVERT) $(LIBCOMPOSE) $(LIBATTACH) $(LIBKEY) $(LIBGUI) $(LIBNNTP) \ $(LIBPATTERN) $(LIBMENU) $(LIBCOLOR) $(LIBENVELOPE) $(LIBMIXMASTER) \ $(LIBHELPBAR) $(LIBMBOX) $(LIBNOTMUCH) $(LIBMAILDIR) $(LIBEDITOR) $(LIBCOMPLETE) $(LIBNNTP) \ $(LIBNCRYPT) $(LIBIMAP) $(LIBCONN) $(LIBHCACHE) \ $(LIBCOMPRESS) $(LIBSIDEBAR) $(LIBBCACHE) $(LIBHISTORY) \ $(LIBCORE) $(LIBPARSE) $(LIBCONFIG) $(LIBEMAIL) $(LIBADDRESS) \ $(LIBDEBUG) $(LIBMUTT) # neomutt $(NEOMUTT): $(GENERATED) $(NEOMUTTOBJS) $(MUTTLIBS) $(CC) -o $@ $(NEOMUTTOBJS) $(MUTTLIBS) $(LDFLAGS) $(LIBS) # clean clean: $(CLEAN_TARGETS) $(RM) $(CLEANFILES) # install install: all $(INSTALL_TARGETS) # Install binaries $(INSTALL_DIR) $(DESTDIR)$(bindir) for f in $(BINFILES); do \ $(INSTALL) $$f $(DESTDIR)$(bindir)/`basename $$f` || exit 1; \ done $(INSTALL_DIR) $(DESTDIR)$(libexecdir)/$(PACKAGE) for f in $(LIBBINFILES); do \ $(INSTALL) $$f $(DESTDIR)$(libexecdir)/$(PACKAGE)/`basename $$f` || exit 1; \ done # uninstall uninstall: $(UNINSTALL_TARGETS) # Uninstall binaries for f in $(BINFILES); do \ $(RM) $(DESTDIR)$(bindir)/`basename $$f`; \ done for f in $(LIBBINFILES); do \ $(RM) $(DESTDIR)$(libexecdir)/$(PACKAGE)/`basename $$f`; \ done # distclean distclean: clean $(RM) $(DEPFILES) jimsh0 config.h config.log conststrings.c \ contrib/Makefile docs/Makefile docs/neomutt.1 html Makefile po/Makefile \ test/Makefile .clang_complete compile_commands.json $(RM) *.gc?? */*.gc?? test/*/*.gc?? $(RM) *.expand */*.expand test/*/*.expand $(RM) coverage.info coverage ############################################################################### # generated GENERATED= git_ver.c hcache/hcversion.h CLEANFILES+= $(GENERATED) git_ver.c: $(ALL_FILES) version=`git describe --dirty --abbrev=6 --match "20[0-9][0-9][0-9][0-9][0-9][0-9]" 2> /dev/null | \ sed -e 's/^[0-9]\{8\}//; s/-g\([a-z0-9]\{6\}\)/-\1/'`; \ echo 'const char *GitVer = "'$$version'";' > $@.tmp; \ cmp -s $@.tmp $@ || mv $@.tmp $@; \ $(RM) $@.tmp hcache/hcversion.h: $(SRCDIR)/address/address.h $(SRCDIR)/email/body.h \ $(SRCDIR)/email/email.h $(SRCDIR)/email/envelope.h \ $(SRCDIR)/email/parameter.h $(SRCDIR)/hcache/hcachever.sh \ $(SRCDIR)/mutt/buffer.h $(SRCDIR)/mutt/list.h $(MKDIR_P) $(PWD)/hcache ( echo '#include "config.h"'; \ echo '#include "address/address.h"'; \ echo '#include "email/body.h"'; \ echo '#include "email/email.h"'; \ echo '#include "email/envelope.h"'; \ echo '#include "email/parameter.h"'; \ echo '#include "mutt/buffer.h"'; \ echo '#include "mutt/list.h"';) | $(CPP) $(CFLAGS) - | \ $(SH) $(SRCDIR)/hcache/hcachever.sh hcache/hcversion.h ############################################################################### # coverage @if ENABLE_COVERAGE coverage: all test $(RM) coverage $(RM) mutt/exit.gc?? lcov --test-name "test" --output-file coverage.info --capture \ --directory address \ --directory compress \ --directory config \ --directory core \ --directory editor \ --directory email \ --directory imap \ --directory mutt \ --directory notmuch \ --directory parse \ --directory pattern \ --directory store \ --directory test/eqi \ --exclude '*/include/*' -genhtml --output-directory coverage --frames coverage.info lcov --list coverage.info @endif ############################################################################## # include generated dependency files -include $(DEPFILES) ############################################################################## # include special-purpose makefiles, each one of which MUST define the # dedicated all-, clean-, install-, and uninstall- targets. @include @srcdir@/po/Makefile.autosetup @include @srcdir@/contrib/Makefile.autosetup @include @srcdir@/data/Makefile.autosetup @include @srcdir@/docs/Makefile.autosetup @include @srcdir@/test/Makefile.autosetup @if ENABLE_FUZZ_TESTS @include @srcdir@/fuzz/Makefile.autosetup @endif @if COMPILE_COMMANDS compile_commands.json: $(ALLOBJS) echo '[' > compile_commands.json cat $(ALLOBJS:.o=.o.json) >> compile_commands.json echo ']' >> compile_commands.json clean-compile_commands.json: $(RM) $(ALLOBJS:.o=.o.json) $(RM) compile_commands.json @endif # vim: set ts=8 noexpandtab: