===================================================================
RCS file: /cvs/mandoc/Makefile,v
retrieving revision 1.242
retrieving revision 1.488.2.1
diff -u -p -r1.242 -r1.488.2.1
--- mandoc/Makefile	2009/11/02 17:37:19	1.242
+++ mandoc/Makefile	2016/07/20 14:14:07	1.488.2.1
@@ -1,251 +1,467 @@
-.SUFFIXES:	.html .xml .sgml .1 .3 .7 .md5 .tar.gz .1.txt .3.txt .7.txt .1.sgml .3.sgml .7.sgml
+# $Id: Makefile,v 1.488.2.1 2016/07/20 14:14:07 schwarze Exp $
+#
+# Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons <kristaps@bsd.lv>
+# Copyright (c) 2011, 2013-2016 Ingo Schwarze <schwarze@openbsd.org>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
-BINDIR		= $(PREFIX)/bin
-INCLUDEDIR	= $(PREFIX)/include
-LIBDIR		= $(PREFIX)/lib
-MANDIR		= $(PREFIX)/man
-INSTALL_PROGRAM	= install -m 0755
-INSTALL_DATA	= install -m 0444
-INSTALL_LIB	= install -m 0644
-INSTALL_MAN	= $(INSTALL_DATA)
+VERSION = 1.13.4
 
-VERSION	   = 1.9.13
-VDATE	   = 02 November 2009
+# === LIST OF FILES ====================================================
 
-VFLAGS     = -DVERSION="\"$(VERSION)\""
-CFLAGS    += -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings -g
-CFLAGS    += $(VFLAGS)
-#CFLAGS	  += -DOSNAME="\"OpenBSD 4.5\""
-LINTFLAGS += $(VFLAGS)
+TESTSRCS	 = test-dirent-namlen.c \
+		   test-err.c \
+		   test-fts.c \
+		   test-getline.c \
+		   test-getsubopt.c \
+		   test-isblank.c \
+		   test-mkdtemp.c \
+		   test-mmap.c \
+		   test-nanosleep.c \
+		   test-ohash.c \
+		   test-pledge.c \
+		   test-progname.c \
+		   test-reallocarray.c \
+		   test-rewb-bsd.c \
+		   test-rewb-sysv.c \
+		   test-sandbox_init.c \
+		   test-sqlite3.c \
+		   test-sqlite3_errstr.c \
+		   test-strcasestr.c \
+		   test-stringlist.c \
+		   test-strlcat.c \
+		   test-strlcpy.c \
+		   test-strptime.c \
+		   test-strsep.c \
+		   test-strtonum.c \
+		   test-vasprintf.c \
+		   test-wchar.c
 
-MANDOCFLAGS = -Wall -fstrict
-MANDOCHTML = -Thtml -Ostyle=style.css,man=%N.%S.html,includes=%I.html
+SRCS		 = att.c \
+		   cgi.c \
+		   chars.c \
+		   compat_err.c \
+		   compat_fts.c \
+		   compat_getline.c \
+		   compat_getsubopt.c \
+		   compat_isblank.c \
+		   compat_mkdtemp.c \
+		   compat_ohash.c \
+		   compat_progname.c \
+		   compat_reallocarray.c \
+		   compat_sqlite3_errstr.c \
+		   compat_strcasestr.c \
+		   compat_stringlist.c \
+		   compat_strlcat.c \
+		   compat_strlcpy.c \
+		   compat_strsep.c \
+		   compat_strtonum.c \
+		   compat_vasprintf.c \
+		   demandoc.c \
+		   eqn.c \
+		   eqn_html.c \
+		   eqn_term.c \
+		   html.c \
+		   lib.c \
+		   main.c \
+		   man.c \
+		   man_hash.c \
+		   man_html.c \
+		   man_macro.c \
+		   man_term.c \
+		   man_validate.c \
+		   mandoc.c \
+		   mandoc_aux.c \
+		   mandoc_ohash.c \
+		   mandocdb.c \
+		   manpage.c \
+		   manpath.c \
+		   mansearch.c \
+		   mansearch_const.c \
+		   mdoc.c \
+		   mdoc_argv.c \
+		   mdoc_hash.c \
+		   mdoc_html.c \
+		   mdoc_macro.c \
+		   mdoc_man.c \
+		   mdoc_state.c \
+		   mdoc_term.c \
+		   mdoc_validate.c \
+		   msec.c \
+		   out.c \
+		   preconv.c \
+		   read.c \
+		   roff.c \
+		   soelim.c \
+		   st.c \
+		   tag.c \
+		   tbl.c \
+		   tbl_data.c \
+		   tbl_html.c \
+		   tbl_layout.c \
+		   tbl_opts.c \
+		   tbl_term.c \
+		   term.c \
+		   term_ascii.c \
+		   term_ps.c \
+		   tree.c
 
-MDOCLNS	   = mdoc_macro.ln mdoc.ln mdoc_hash.ln mdoc_strings.ln \
-	     mdoc_argv.ln mdoc_validate.ln mdoc_action.ln \
-	     lib.ln att.ln arch.ln vol.ln msec.ln st.ln \
-	     mandoc.ln
-MDOCOBJS   = mdoc_macro.o mdoc.o mdoc_hash.o mdoc_strings.o \
-	     mdoc_argv.o mdoc_validate.o mdoc_action.o lib.o att.o \
-	     arch.o vol.o msec.o st.o mandoc.o
-MDOCSRCS   = mdoc_macro.c mdoc.c mdoc_hash.c mdoc_strings.c \
-	     mdoc_argv.c mdoc_validate.c mdoc_action.c lib.c att.c \
-	     arch.c vol.c msec.c st.c mandoc.c
+DISTFILES	 = INSTALL \
+		   LICENSE \
+		   Makefile \
+		   Makefile.depend \
+		   NEWS \
+		   TODO \
+		   apropos.1 \
+		   cgi.h.example \
+		   compat_fts.h \
+		   compat_ohash.h \
+		   compat_stringlist.h \
+		   configure \
+		   configure.local.example \
+		   demandoc.1 \
+		   eqn.7 \
+		   gmdiff \
+		   html.h \
+		   lib.in \
+		   libman.h \
+		   libmandoc.h \
+		   libmdoc.h \
+		   libroff.h \
+		   main.h \
+		   makewhatis.8 \
+		   man.1 \
+		   man.7 \
+		   man.cgi.3 \
+		   man.cgi.8 \
+		   man.conf.5 \
+		   man.h \
+		   manconf.h \
+		   mandoc.1 \
+		   mandoc.3 \
+		   mandoc.css \
+		   mandoc.db.5 \
+		   mandoc.h \
+		   mandoc_aux.h \
+		   mandoc_char.7 \
+		   mandoc_escape.3 \
+		   mandoc_headers.3 \
+		   mandoc_html.3 \
+		   mandoc_malloc.3 \
+		   mandoc_ohash.h \
+		   mansearch.3 \
+		   mansearch.h \
+		   mchars_alloc.3 \
+		   mdoc.7 \
+		   mdoc.h \
+		   msec.in \
+		   out.h \
+		   predefs.in \
+		   roff.7 \
+		   roff.h \
+		   roff_int.h \
+		   soelim.1 \
+		   st.in \
+		   tag.h \
+		   tbl.3 \
+		   tbl.7 \
+		   term.h \
+		   $(SRCS) \
+		   $(TESTSRCS)
 
-MANLNS	   = man_macro.ln man.ln man_hash.ln man_validate.ln \
-	     man_action.ln mandoc.ln man_argv.ln
-MANOBJS	   = man_macro.o man.o man_hash.o man_validate.o \
-	     man_action.o mandoc.o man_argv.o
-MANSRCS	   = man_macro.c man.c man_hash.c man_validate.c \
-	     man_action.c mandoc.c man_argv.c
+LIBMAN_OBJS	 = man.o \
+		   man_hash.o \
+		   man_macro.o \
+		   man_validate.o
 
-MAINLNS	   = main.ln mdoc_term.ln chars.ln term.ln tree.ln \
-	     compat.ln man_term.ln html.ln mdoc_html.ln \
-	     man_html.ln out.ln
-MAINOBJS   = main.o mdoc_term.o chars.o term.o tree.o compat.o \
-	     man_term.o html.o mdoc_html.o man_html.o out.o
-MAINSRCS   = main.c mdoc_term.c chars.c term.c tree.c compat.c \
-	     man_term.c html.c mdoc_html.c man_html.c out.c
+LIBMDOC_OBJS	 = att.o \
+		   lib.o \
+		   mdoc.o \
+		   mdoc_argv.o \
+		   mdoc_hash.o \
+		   mdoc_macro.o \
+		   mdoc_state.o \
+		   mdoc_validate.o \
+		   st.o
 
-LLNS	   = llib-llibmdoc.ln llib-llibman.ln llib-lmandoc.ln
-LNS	   = $(MAINLNS) $(MDOCLNS) $(MANLNS)
-LIBS	   = libmdoc.a libman.a
-OBJS	   = $(MDOCOBJS) $(MAINOBJS) $(MANOBJS)
-SRCS	   = $(MDOCSRCS) $(MAINSRCS) $(MANSRCS)
-DATAS	   = arch.in att.in lib.in msec.in st.in \
-	     vol.in chars.in
-HEADS	   = mdoc.h libmdoc.h man.h libman.h term.h \
-	     libmandoc.h html.h chars.h out.h main.h
-GSGMLS	   = mandoc.1.sgml mdoc.3.sgml mdoc.7.sgml manuals.7.sgml \
-	     mandoc_char.7.sgml man.7.sgml man.3.sgml
-SGMLS	   = index.sgml
-HTMLS	   = ChangeLog.html index.html
-XSLS	   = ChangeLog.xsl
-GHTMLS	   = mandoc.1.html mdoc.3.html man.3.html mdoc.7.html \
-	     man.7.html mandoc_char.7.html manuals.7.html
-TEXTS	   = mandoc.1.txt mdoc.3.txt man.3.txt mdoc.7.txt man.7.txt \
-	     mandoc_char.7.txt manuals.7.txt ChangeLog.txt
-EXAMPLES   = example.style.css
-XMLS	   = ChangeLog.xml
-STATICS	   = index.css style.css external.png
-MD5S	   = mdocml-$(VERSION).md5 
-TARGZS	   = mdocml-$(VERSION).tar.gz
-MANS	   = mandoc.1 mdoc.3 mdoc.7 manuals.7 mandoc_char.7 \
-	     man.7 man.3
-BINS	   = mandoc
-CLEAN	   = $(BINS) $(LNS) $(LLNS) $(LIBS) $(OBJS) $(HTMLS) \
-	     $(TARGZS) tags $(MD5S) $(XMLS) $(TEXTS) $(GSGMLS) \
-	     $(GHTMLS)
-INSTALL	   = $(SRCS) $(HEADS) Makefile $(MANS) $(SGMLS) $(STATICS) \
-	     $(DATAS) $(XSLS) $(EXAMPLES)
+LIBROFF_OBJS	 = eqn.o \
+		   roff.o \
+		   tbl.o \
+		   tbl_data.o \
+		   tbl_layout.o \
+		   tbl_opts.o
 
-all:	$(BINS)
+LIBMANDOC_OBJS	 = $(LIBMAN_OBJS) \
+		   $(LIBMDOC_OBJS) \
+		   $(LIBROFF_OBJS) \
+		   chars.o \
+		   mandoc.o \
+		   mandoc_aux.o \
+		   mandoc_ohash.o \
+		   msec.o \
+		   preconv.o \
+		   read.o
 
-lint:	$(LLNS)
+COMPAT_OBJS	 = compat_err.o \
+		   compat_fts.o \
+		   compat_getline.o \
+		   compat_getsubopt.o \
+		   compat_isblank.o \
+		   compat_mkdtemp.o \
+		   compat_ohash.o \
+		   compat_progname.o \
+		   compat_reallocarray.o \
+		   compat_sqlite3_errstr.o \
+		   compat_strcasestr.o \
+		   compat_strlcat.o \
+		   compat_strlcpy.o \
+		   compat_strsep.o \
+		   compat_strtonum.o \
+		   compat_vasprintf.o
 
-clean:
-	rm -f $(CLEAN)
+MANDOC_HTML_OBJS = eqn_html.o \
+		   html.o \
+		   man_html.o \
+		   mdoc_html.o \
+		   tbl_html.o
 
-cleanlint:
-	rm -f $(LNS) $(LLNS)
+MANDOC_MAN_OBJS  = mdoc_man.o
 
-cleanhtml:
-	rm -f $(HTMLS) $(GSGMLS) $(GHTMLS)
+MANDOC_TERM_OBJS = eqn_term.o \
+		   man_term.o \
+		   mdoc_term.o \
+		   term.o \
+		   term_ascii.o \
+		   term_ps.o \
+		   tbl_term.o
 
-dist:	mdocml-$(VERSION).tar.gz
+BASE_OBJS	 = $(MANDOC_HTML_OBJS) \
+		   $(MANDOC_MAN_OBJS) \
+		   $(MANDOC_TERM_OBJS) \
+		   main.o \
+		   manpath.o \
+		   out.o \
+		   tag.o \
+		   tree.o
 
-www:	all $(GSGMLS) $(GHTMLS) $(HTMLS) $(TEXTS) $(MD5S) $(TARGZS)
+MAIN_OBJS	 = $(BASE_OBJS)
 
-htmls:	all $(GSGMLS) $(GHTMLS)
+DB_OBJS		 = mandocdb.o \
+		   mansearch.o \
+		   mansearch_const.o
 
-installwww: www
-	install -m 0444 $(GHTMLS) $(HTMLS) $(TEXTS) $(STATICS) $(PREFIX)/
-	install -m 0444 mdocml-$(VERSION).tar.gz $(PREFIX)/snapshots/
-	install -m 0444 mdocml-$(VERSION).md5 $(PREFIX)/snapshots/
-	install -m 0444 mdocml-$(VERSION).tar.gz $(PREFIX)/snapshots/mdocml.tar.gz
-	install -m 0444 mdocml-$(VERSION).md5 $(PREFIX)/snapshots/mdocml.md5
+CGI_OBJS	 = $(MANDOC_HTML_OBJS) \
+		   cgi.o \
+		   mansearch.o \
+		   mansearch_const.o \
+		   out.o
 
-install:
-	mkdir -p $(BINDIR)
-	mkdir -p $(MANDIR)/man1
-	mkdir -p $(MANDIR)/man7
-	$(INSTALL_PROGRAM) mandoc $(BINDIR)
-	$(INSTALL_MAN) mandoc.1 $(MANDIR)/man1
-	$(INSTALL_MAN) mdoc.7 $(MANDIR)/man7
+MANPAGE_OBJS	 = manpage.o mansearch.o mansearch_const.o manpath.o
 
-uninstall:
-	rm -f $(BINDIR)/mandoc
-	rm -f $(MANDIR)/man1/mandoc.1
-	rm -f $(MANDIR)/man7/mdoc.7
+DEMANDOC_OBJS	 = demandoc.o
 
-man_macro.ln: man_macro.c libman.h
-man_macro.o: man_macro.c libman.h
+SOELIM_OBJS	 = soelim.o \
+		   compat_err.o \
+		   compat_getline.o \
+		   compat_progname.o \
+		   compat_reallocarray.o \
+		   compat_stringlist.o
 
-lib.ln: lib.c lib.in libmdoc.h
-lib.o: lib.c lib.in libmdoc.h
+WWW_MANS	 = apropos.1.html \
+		   demandoc.1.html \
+		   man.1.html \
+		   mandoc.1.html \
+		   soelim.1.html \
+		   mandoc.3.html \
+		   mandoc_escape.3.html \
+		   mandoc_headers.3.html \
+		   mandoc_html.3.html \
+		   mandoc_malloc.3.html \
+		   mansearch.3.html \
+		   mchars_alloc.3.html \
+		   tbl.3.html \
+		   man.conf.5.html \
+		   mandoc.db.5.html \
+		   eqn.7.html \
+		   man.7.html \
+		   mandoc_char.7.html \
+		   mdoc.7.html \
+		   roff.7.html \
+		   tbl.7.html \
+		   makewhatis.8.html \
+		   man.cgi.3.html \
+		   man.cgi.8.html \
+		   man.h.html \
+		   manconf.h.html \
+		   mandoc.h.html \
+		   mandoc_aux.h.html \
+		   mansearch.h.html \
+		   mdoc.h.html \
+		   roff.h.html
 
-att.ln: att.c att.in libmdoc.h
-att.o: att.c att.in libmdoc.h
+WWW_OBJS	 = mdocml.tar.gz \
+		   mdocml.sha256
 
-arch.ln: arch.c arch.in libmdoc.h
-arch.o: arch.c arch.in libmdoc.h
+# === USER CONFIGURATION ===============================================
 
-vol.ln: vol.c vol.in libmdoc.h
-vol.o: vol.c vol.in libmdoc.h
+include Makefile.local
 
-chars.ln: chars.c chars.in chars.h
-chars.o: chars.c chars.in chars.h
+# === DEPENDENCY HANDLING ==============================================
 
-msec.ln: msec.c msec.in libmdoc.h
-msec.o: msec.c msec.in libmdoc.h
+all: base-build $(BUILD_TARGETS) Makefile.local
 
-st.ln: st.c st.in libmdoc.h
-st.o: st.c st.in libmdoc.h
+base-build: mandoc demandoc soelim
 
-mdoc_macro.ln: mdoc_macro.c libmdoc.h
-mdoc_macro.o: mdoc_macro.c libmdoc.h
+cgi-build: man.cgi
 
-mdoc_term.ln: mdoc_term.c term.h mdoc.h
-mdoc_term.o: mdoc_term.c term.h mdoc.h
+install: base-install $(INSTALL_TARGETS)
 
-mdoc_strings.ln: mdoc_strings.c libmdoc.h
-mdoc_strings.o: mdoc_strings.c libmdoc.h
+www: $(WWW_OBJS) $(WWW_MANS)
 
-man_hash.ln: man_hash.c libman.h
-man_hash.o: man_hash.c libman.h
+$(WWW_MANS): mandoc
 
-mdoc_hash.ln: mdoc_hash.c libmdoc.h
-mdoc_hash.o: mdoc_hash.c libmdoc.h
+.PHONY: base-install cgi-install db-install install www-install
+.PHONY: clean distclean depend
 
-mdoc.ln: mdoc.c libmdoc.h
-mdoc.o: mdoc.c libmdoc.h
+include Makefile.depend
 
-man.ln: man.c libman.h
-man.o: man.c libman.h
+# === TARGETS CONTAINING SHELL COMMANDS ================================
 
-main.ln: main.c mdoc.h
-main.o: main.c mdoc.h
+distclean: clean
+	rm -f Makefile.local config.h config.h.old config.log config.log.old
 
-compat.ln: compat.c 
-compat.o: compat.c
+clean:
+	rm -f libmandoc.a $(LIBMANDOC_OBJS) $(COMPAT_OBJS)
+	rm -f mandoc $(BASE_OBJS) $(DB_OBJS)
+	rm -f man.cgi $(CGI_OBJS)
+	rm -f manpage $(MANPAGE_OBJS)
+	rm -f demandoc $(DEMANDOC_OBJS)
+	rm -f soelim $(SOELIM_OBJS)
+	rm -f $(WWW_MANS) $(WWW_OBJS)
+	rm -rf *.dSYM
 
-term.ln: term.c term.h man.h mdoc.h chars.h
-term.o: term.c term.h man.h mdoc.h chars.h
+base-install: base-build
+	mkdir -p $(DESTDIR)$(BINDIR)
+	mkdir -p $(DESTDIR)$(LIBDIR)
+	mkdir -p $(DESTDIR)$(INCLUDEDIR)
+	mkdir -p $(DESTDIR)$(MANDIR)/man1
+	mkdir -p $(DESTDIR)$(MANDIR)/man3
+	mkdir -p $(DESTDIR)$(MANDIR)/man5
+	mkdir -p $(DESTDIR)$(MANDIR)/man7
+	$(INSTALL_PROGRAM) mandoc demandoc $(DESTDIR)$(BINDIR)
+	$(INSTALL_PROGRAM) soelim $(DESTDIR)$(BINDIR)/$(BINM_SOELIM)
+	ln -f $(DESTDIR)$(BINDIR)/mandoc $(DESTDIR)$(BINDIR)/$(BINM_MAN)
+	$(INSTALL_LIB) libmandoc.a $(DESTDIR)$(LIBDIR)
+	$(INSTALL_LIB) man.h mandoc.h mandoc_aux.h mdoc.h roff.h \
+		$(DESTDIR)$(INCLUDEDIR)
+	$(INSTALL_MAN) mandoc.1 demandoc.1 $(DESTDIR)$(MANDIR)/man1
+	$(INSTALL_MAN) soelim.1 $(DESTDIR)$(MANDIR)/man1/$(BINM_SOELIM).1
+	$(INSTALL_MAN) man.1 $(DESTDIR)$(MANDIR)/man1/$(BINM_MAN).1
+	$(INSTALL_MAN) mandoc.3 mandoc_escape.3 mandoc_malloc.3 \
+		mchars_alloc.3 tbl.3 $(DESTDIR)$(MANDIR)/man3
+	$(INSTALL_MAN) man.conf.5 $(DESTDIR)$(MANDIR)/man5/${MANM_MANCONF}.5
+	$(INSTALL_MAN) man.7 $(DESTDIR)$(MANDIR)/man7/${MANM_MAN}.7
+	$(INSTALL_MAN) mdoc.7 $(DESTDIR)$(MANDIR)/man7/${MANM_MDOC}.7
+	$(INSTALL_MAN) roff.7 $(DESTDIR)$(MANDIR)/man7/${MANM_ROFF}.7
+	$(INSTALL_MAN) eqn.7 $(DESTDIR)$(MANDIR)/man7/${MANM_EQN}.7
+	$(INSTALL_MAN) tbl.7 $(DESTDIR)$(MANDIR)/man7/${MANM_TBL}.7
+	$(INSTALL_MAN) mandoc_char.7 $(DESTDIR)$(MANDIR)/man7
 
-html.ln: html.c html.h chars.h
-html.o: html.c html.h chars.h
+db-install: base-build
+	mkdir -p $(DESTDIR)$(BINDIR)
+	mkdir -p $(DESTDIR)$(SBINDIR)
+	mkdir -p $(DESTDIR)$(MANDIR)/man1
+	mkdir -p $(DESTDIR)$(MANDIR)/man3
+	mkdir -p $(DESTDIR)$(MANDIR)/man5
+	mkdir -p $(DESTDIR)$(MANDIR)/man8
+	ln -f $(DESTDIR)$(BINDIR)/mandoc $(DESTDIR)$(BINDIR)/$(BINM_APROPOS)
+	ln -f $(DESTDIR)$(BINDIR)/mandoc $(DESTDIR)$(BINDIR)/$(BINM_WHATIS)
+	ln -f $(DESTDIR)$(BINDIR)/mandoc \
+		$(DESTDIR)$(SBINDIR)/$(BINM_MAKEWHATIS)
+	$(INSTALL_MAN) apropos.1 $(DESTDIR)$(MANDIR)/man1/$(BINM_APROPOS).1
+	ln -f $(DESTDIR)$(MANDIR)/man1/$(BINM_APROPOS).1 \
+		$(DESTDIR)$(MANDIR)/man1/$(BINM_WHATIS).1
+	$(INSTALL_MAN) mansearch.3 $(DESTDIR)$(MANDIR)/man3
+	$(INSTALL_MAN) mandoc.db.5 $(DESTDIR)$(MANDIR)/man5
+	$(INSTALL_MAN) makewhatis.8 \
+		$(DESTDIR)$(MANDIR)/man8/$(BINM_MAKEWHATIS).8
 
-mdoc_html.ln: mdoc_html.c html.h mdoc.h
-mdoc_html.o: mdoc_html.c html.h mdoc.h
+cgi-install: cgi-build
+	mkdir -p $(DESTDIR)$(CGIBINDIR)
+	mkdir -p $(DESTDIR)$(HTDOCDIR)
+	$(INSTALL_PROGRAM) man.cgi $(DESTDIR)$(CGIBINDIR)
+	$(INSTALL_DATA) mandoc.css $(DESTDIR)$(HTDOCDIR)
 
-man_html.ln: man_html.c html.h man.h out.h
-man_html.o: man_html.c html.h man.h out.h
+Makefile.local config.h: configure ${TESTSRCS}
+	@echo "$@ is out of date; please run ./configure"
+	@exit 1
 
-out.ln: out.c out.h
-out.o: out.c out.h
+libmandoc.a: $(COMPAT_OBJS) $(LIBMANDOC_OBJS)
+	ar rs $@ $(COMPAT_OBJS) $(LIBMANDOC_OBJS)
 
-tree.ln: tree.c man.h mdoc.h
-tree.o: tree.c man.h mdoc.h
+mandoc: $(MAIN_OBJS) libmandoc.a
+	$(CC) -o $@ $(LDFLAGS) $(MAIN_OBJS) libmandoc.a $(LDADD)
 
-mdoc_argv.ln: mdoc_argv.c libmdoc.h
-mdoc_argv.o: mdoc_argv.c libmdoc.h
+manpage: $(MANPAGE_OBJS) libmandoc.a
+	$(CC) -o $@ $(LDFLAGS) $(MANPAGE_OBJS) libmandoc.a $(LDADD)
 
-man_argv.ln: man_argv.c libman.h
-man_argv.o: man_argv.c libman.h
+man.cgi: $(CGI_OBJS) libmandoc.a
+	$(CC) $(STATIC) -o $@ $(LDFLAGS) $(CGI_OBJS) libmandoc.a $(LDADD)
 
-man_validate.ln: man_validate.c libman.h
-man_validate.o: man_validate.c libman.h
+demandoc: $(DEMANDOC_OBJS) libmandoc.a
+	$(CC) -o $@ $(LDFLAGS) $(DEMANDOC_OBJS) libmandoc.a $(LDADD)
 
-mdoc_validate.ln: mdoc_validate.c libmdoc.h
-mdoc_validate.o: mdoc_validate.c libmdoc.h
+soelim: $(SOELIM_OBJS)
+	$(CC) -o $@ $(LDFLAGS) $(SOELIM_OBJS)
 
-mdoc_action.ln: mdoc_action.c libmdoc.h
-mdoc_action.o: mdoc_action.c libmdoc.h
+# --- maintainer targets ---
 
-libmdoc.h: mdoc.h
+www-install: www
+	mkdir -p $(HTDOCDIR)/snapshots
+	$(INSTALL_DATA) $(WWW_MANS) mandoc.css $(HTDOCDIR)
+	$(INSTALL_DATA) $(WWW_OBJS) $(HTDOCDIR)/snapshots
+	$(INSTALL_DATA) mdocml.tar.gz \
+		$(HTDOCDIR)/snapshots/mdocml-$(VERSION).tar.gz
+	$(INSTALL_DATA) mdocml.sha256 \
+		$(HTDOCDIR)/snapshots/mdocml-$(VERSION).sha256
 
-ChangeLog.xml:
-	cvs2cl --xml --xml-encoding iso-8859-15 -t --noxmlns -f $@
+depend: config.h
+	mkdep -f Makefile.depend $(CFLAGS) $(SRCS)
+	perl -e 'undef $$/; $$_ = <>; s|/usr/include/\S+||g; \
+		s|\\\n||g; s|  +| |g; s| $$||mg; print;' \
+		Makefile.depend > Makefile.tmp
+	mv Makefile.tmp Makefile.depend
 
-ChangeLog.txt:
-	cvs2cl -t -f $@
+dist: mdocml.sha256
 
-ChangeLog.html: ChangeLog.xml ChangeLog.xsl
-	xsltproc -o $@ ChangeLog.xsl ChangeLog.xml
+mdocml.sha256: mdocml.tar.gz
+	sha256 mdocml.tar.gz > $@
 
-mdocml-$(VERSION).tar.gz: $(INSTALL)
-	mkdir -p .dist/mdocml/mdocml-$(VERSION)/
-	cp -f $(INSTALL) .dist/mdocml/mdocml-$(VERSION)/
-	( cd .dist/mdocml/ && tar zcf ../../$@ mdocml-$(VERSION)/ )
+mdocml.tar.gz: $(DISTFILES)
+	mkdir -p .dist/mdocml-$(VERSION)/
+	$(INSTALL) -m 0644 $(DISTFILES) .dist/mdocml-$(VERSION)
+	chmod 755 .dist/mdocml-$(VERSION)/configure
+	( cd .dist/ && tar zcf ../$@ mdocml-$(VERSION) )
 	rm -rf .dist/
 
-llib-llibmdoc.ln: $(MDOCLNS)
-	$(LINT) -Clibmdoc $(MDOCLNS)
+# === SUFFIX RULES =====================================================
 
-llib-llibman.ln: $(MANLNS)
-	$(LINT) -Clibman $(MANLNS)
+.SUFFIXES:	 .1       .3       .5       .7       .8       .h
+.SUFFIXES:	 .1.html  .3.html  .5.html  .7.html  .8.html  .h.html
 
-llib-lmandoc.ln: $(MAINLNS) llib-llibmdoc.ln
-	$(LINT) -Cmandoc $(MAINLNS) llib-llibmdoc.ln
+.h.h.html:
+	highlight -I $< > $@
 
-libmdoc.a: $(MDOCOBJS)
-	$(AR) rs $@ $(MDOCOBJS)
-
-libman.a: $(MANOBJS)
-	$(AR) rs $@ $(MANOBJS)
-
-mandoc: $(MAINOBJS) libmdoc.a libman.a
-	$(CC) $(CFLAGS) -o $@ $(MAINOBJS) libmdoc.a libman.a
-
-.sgml.html:
-	validate --warn $<
-	sed -e "s!@VERSION@!$(VERSION)!" -e "s!@VDATE@!$(VDATE)!" $< > $@
-
-.1.1.txt .3.3.txt .7.7.txt:
-	./mandoc $(MANDOCFLAGS) $< | col -b > $@
-
-.1.1.sgml .3.3.sgml .7.7.sgml:
-	./mandoc $(MANDOCFLAGS) $(MANDOCHTML) $< > $@
-
-.tar.gz.md5:
-	md5 $< > $@
+.1.1.html .3.3.html .5.5.html .7.7.html .8.8.html: mandoc
+	./mandoc -Thtml -Wall,stop \
+		-Ostyle=mandoc.css,man=%N.%S.html,includes=%I.html $< > $@