[BACK]Return to Makefile CVS log [TXT][DIR] Up to [cvsweb.bsd.lv] / mandoc

File: [cvsweb.bsd.lv] / mandoc / Makefile (download)

Revision 1.302, Tue Dec 28 13:46:07 2010 UTC (13 years, 3 months ago) by kristaps
Branch: MAIN
Changes since 1.301: +3 -3 lines

Adding initial options processing (not hooked into parse yet).  This is
more or less copied from tbl.bsd.lv and still needs integration with the
general mandoc framework, e.g., with error messages.

.SUFFIXES:	.html .xml .sgml .1 .3 .7 .md5 .tar.gz 
.SUFFIXES:	.1.txt .3.txt .7.txt
.SUFFIXES:	.1.xhtml .3.xhtml .7.xhtml
.SUFFIXES:	.1.sgml .3.sgml .7.sgml 
.SUFFIXES:	.h .h.html 
.SUFFIXES:	.1.ps .3.ps .7.ps
.SUFFIXES:	.1.pdf .3.pdf .7.pdf

PREFIX		= /usr/local
BINDIR		= $(PREFIX)/bin
INCLUDEDIR	= $(PREFIX)/include
LIBDIR		= $(PREFIX)/lib
MANDIR		= $(PREFIX)/man
EXAMPLEDIR	= $(PREFIX)/share/examples/mandoc
INSTALL		= install
INSTALL_PROGRAM	= $(INSTALL) -m 0755
INSTALL_DATA	= $(INSTALL) -m 0444
INSTALL_LIB	= $(INSTALL) -m 0644
INSTALL_MAN	= $(INSTALL_DATA)

VERSION	   = 1.10.8
VDATE	   = 24 December 2010

VFLAGS	   = -DVERSION="\"$(VERSION)\""
WFLAGS     = -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings
CFLAGS    += -g $(WFLAGS) $(VFLAGS) -DHAVE_CONFIG_H

# Specify this if you want to hard-code the operating system to appear
# in the lower-left hand corner of -mdoc manuals.
# CFLAGS += -DOSNAME="\"OpenBSD 4.5\""

LINTFLAGS += $(VFLAGS)

ROFFLNS    = roff.ln tbl.ln tbl_opts.ln

ROFFSRCS   = roff.c tbl.c tbl_opts.c

ROFFOBJS   = roff.o tbl.o tbl_opts.o

MANDOCLNS  = mandoc.ln

MANDOCSRCS = mandoc.c

MANDOCOBJS = mandoc.o

MDOCLNS	   = mdoc_macro.ln mdoc.ln mdoc_hash.ln mdoc_strings.ln \
	     mdoc_argv.ln mdoc_validate.ln \
	     lib.ln att.ln arch.ln vol.ln msec.ln st.ln

MDOCOBJS   = mdoc_macro.o mdoc.o mdoc_hash.o mdoc_strings.o \
	     mdoc_argv.o mdoc_validate.o lib.o att.o \
	     arch.o vol.o msec.o st.o

MDOCSRCS   = mdoc_macro.c mdoc.c mdoc_hash.c mdoc_strings.c \
	     mdoc_argv.c mdoc_validate.c lib.c att.c \
	     arch.c vol.c msec.c st.c

MANLNS	   = man_macro.ln man.ln man_hash.ln man_validate.ln \
	     man_argv.ln

MANOBJS	   = man_macro.o man.o man_hash.o man_validate.o \
	     man_argv.o
MANSRCS	   = man_macro.c man.c man_hash.c man_validate.c \
	     man_argv.c

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 term_ps.ln term_ascii.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 \
	     term_ps.o term_ascii.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 \
	     term_ps.c term_ascii.c

LLNS	   = llib-llibmdoc.ln llib-llibman.ln llib-lmandoc.ln \
	     llib-llibmandoc.ln llib-llibroff.ln

LNS	   = $(MAINLNS) $(MDOCLNS) $(MANLNS) \
	     $(MANDOCLNS) $(ROFFLNS)

LIBS	   = libmdoc.a libman.a libmandoc.a libroff.a

OBJS	   = $(MDOCOBJS) $(MAINOBJS) $(MANOBJS) \
	     $(MANDOCOBJS) $(ROFFOBJS)

SRCS	   = $(MDOCSRCS) $(MAINSRCS) $(MANSRCS) \
	     $(MANDOCSRCS) $(ROFFSRCS)

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 roff.h \
	     mandoc.h libroff.h

GSGMLS	   = mandoc.1.sgml mdoc.3.sgml mdoc.7.sgml \
	     mandoc_char.7.sgml man.7.sgml man.3.sgml roff.7.sgml \
	     roff.3.sgml 

SGMLS	   = index.sgml

XHTMLS	   = mandoc.1.xhtml mdoc.3.xhtml \
	     man.3.xhtml mdoc.7.xhtml man.7.xhtml mandoc_char.7.xhtml \
	     roff.7.xhtml roff.3.xhtml 

HTMLS	   = ChangeLog.html index.html man.h.html mdoc.h.html \
	     mandoc.h.html roff.h.html mandoc.1.html mdoc.3.html \
	     man.3.html mdoc.7.html man.7.html mandoc_char.7.html \
	     roff.7.html roff.3.html 

PSS	   = mandoc.1.ps mdoc.3.ps man.3.ps mdoc.7.ps man.7.ps \
	     mandoc_char.7.ps roff.7.ps roff.3.ps 

PDFS	   = mandoc.1.pdf mdoc.3.pdf man.3.pdf mdoc.7.pdf man.7.pdf \
	     mandoc_char.7.pdf roff.7.pdf roff.3.pdf 

XSLS	   = ChangeLog.xsl

TEXTS	   = mandoc.1.txt mdoc.3.txt man.3.txt mdoc.7.txt man.7.txt \
	     mandoc_char.7.txt ChangeLog.txt \
	     roff.7.txt roff.3.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 mandoc_char.7 man.7 \
	     man.3 roff.7 roff.3 

BINS	   = mandoc

TESTS	   = test-strlcat.c test-strlcpy.c

CONFIGS	   = config.h.pre config.h.post

DOCLEAN	   = $(BINS) $(LNS) $(LLNS) $(LIBS) $(OBJS) $(HTMLS) \
	     $(TARGZS) tags $(MD5S) $(XMLS) $(TEXTS) $(GSGMLS) \
	     config.h config.log $(PSS) $(PDFS) $(XHTMLS)

DOINSTALL  = $(SRCS) $(HEADS) Makefile $(MANS) $(SGMLS) $(STATICS) \
	     $(DATAS) $(XSLS) $(EXAMPLES) $(TESTS) $(CONFIGS)

all:	$(BINS)

lint:	$(LLNS)

clean:
	rm -f $(DOCLEAN)

dist:	mdocml-$(VERSION).tar.gz

www:	all $(GSGMLS) $(HTMLS) $(XHTMLS) $(TEXTS) $(MD5S) $(TARGZS) $(PSS) $(PDFS)

ps:	$(PSS)

pdf:	$(PDFS)

installwww: www
	$(INSTALL_DATA) $(HTMLS) $(XHTMLS) $(PSS) $(PDFS) $(TEXTS) $(STATICS) $(DESTDIR)$(PREFIX)/
	$(INSTALL_DATA) mdocml-$(VERSION).tar.gz $(DESTDIR)$(PREFIX)/snapshots/
	$(INSTALL_DATA) mdocml-$(VERSION).md5 $(DESTDIR)$(PREFIX)/snapshots/
	$(INSTALL_DATA) mdocml-$(VERSION).tar.gz $(DESTDIR)$(PREFIX)/snapshots/mdocml.tar.gz
	$(INSTALL_DATA) mdocml-$(VERSION).md5 $(DESTDIR)$(PREFIX)/snapshots/mdocml.md5

install:
	mkdir -p $(DESTDIR)$(BINDIR)
	mkdir -p $(DESTDIR)$(EXAMPLEDIR)
	mkdir -p $(DESTDIR)$(MANDIR)/man1
	mkdir -p $(DESTDIR)$(MANDIR)/man7
	$(INSTALL_PROGRAM) mandoc $(DESTDIR)$(BINDIR)
	$(INSTALL_MAN) mandoc.1 $(DESTDIR)$(MANDIR)/man1
	$(INSTALL_MAN) man.7 mdoc.7 roff.7 mandoc_char.7 $(DESTDIR)$(MANDIR)/man7
	$(INSTALL_DATA) example.style.css $(DESTDIR)$(EXAMPLEDIR)

uninstall:
	rm -f $(DESTDIR)$(BINDIR)/mandoc
	rm -f $(DESTDIR)$(MANDIR)/man1/mandoc.1
	rm -f $(DESTDIR)$(MANDIR)/man7/mdoc.7
	rm -f $(DESTDIR)$(MANDIR)/man7/roff.7
	rm -f $(DESTDIR)$(MANDIR)/man7/man.7
	rm -f $(DESTDIR)$(MANDIR)/man7/mandoc_char.7
	rm -f $(DESTDIR)$(EXAMPLEDIR)/example.style.css

$(OBJS): config.h

$(LNS): config.h

man_macro.ln man_macro.o: man_macro.c libman.h

lib.ln lib.o: lib.c lib.in libmdoc.h

att.ln att.o: att.c att.in libmdoc.h

arch.ln arch.o: arch.c arch.in libmdoc.h

vol.ln vol.o: vol.c vol.in libmdoc.h

chars.ln chars.o: chars.c chars.in chars.h

msec.ln msec.o: msec.c msec.in libmdoc.h

st.ln st.o: st.c st.in libmdoc.h

mdoc_macro.ln mdoc_macro.o: mdoc_macro.c libmdoc.h

mdoc_term.ln mdoc_term.o: mdoc_term.c term.h mdoc.h

mdoc_strings.ln mdoc_strings.o: mdoc_strings.c libmdoc.h

man_hash.ln man_hash.o: man_hash.c libman.h

mdoc_hash.ln mdoc_hash.o: mdoc_hash.c libmdoc.h

mdoc.ln mdoc.o: mdoc.c libmdoc.h

man.ln man.o: man.c libman.h

main.ln main.o: main.c mdoc.h man.h roff.h

compat.ln compat.o: compat.c 

term.ln term.o: term.c term.h man.h mdoc.h chars.h

term_ps.ln term_ps.o: term_ps.c term.h main.h

term_ascii.ln term_ascii.o: term_ascii.c term.h main.h

html.ln html.o: html.c html.h chars.h

mdoc_html.ln mdoc_html.o: mdoc_html.c html.h mdoc.h

man_html.ln man_html.o: man_html.c html.h man.h out.h

out.ln out.o: out.c out.h

mandoc.ln mandoc.o: mandoc.c libmandoc.h

tree.ln tree.o: tree.c man.h mdoc.h

mdoc_argv.ln mdoc_argv.o: mdoc_argv.c libmdoc.h

man_argv.ln man_argv.o: man_argv.c libman.h

man_validate.ln man_validate.o: man_validate.c libman.h

mdoc_validate.ln mdoc_validate.o: mdoc_validate.c libmdoc.h

libmdoc.h: mdoc.h

ChangeLog.xml:
	cvs2cl --xml --xml-encoding iso-8859-15 -t --noxmlns -f $@

ChangeLog.txt:
	cvs2cl -t -f $@

ChangeLog.html: ChangeLog.xml ChangeLog.xsl
	xsltproc -o $@ ChangeLog.xsl ChangeLog.xml

mdocml-$(VERSION).tar.gz: $(DOINSTALL)
	mkdir -p .dist/mdocml/mdocml-$(VERSION)/
	cp -f $(DOINSTALL) .dist/mdocml/mdocml-$(VERSION)/
	( cd .dist/mdocml/ && tar zcf ../../$@ mdocml-$(VERSION)/ )
	rm -rf .dist/

llib-llibmdoc.ln: $(MDOCLNS)
	$(LINT) -Clibmdoc $(MDOCLNS)

llib-llibman.ln: $(MANLNS)
	$(LINT) -Clibman $(MANLNS)

llib-llibmandoc.ln: $(MANDOCLNS)
	$(LINT) -Clibmandoc $(MANDOCLNS)

llib-llibroff.ln: $(ROFFLNS)
	$(LINT) -Clibroff $(ROFFLNS)

llib-lmandoc.ln: $(MAINLNS) llib-llibmdoc.ln llib-llibman.ln llib-llibmandoc.ln llib-llibroff.ln
	$(LINT) -Cmandoc $(MAINLNS) llib-llibmdoc.ln llib-llibman.ln llib-llibmandoc.ln llib-llibroff.ln

libmdoc.a: $(MDOCOBJS)
	$(AR) rs $@ $(MDOCOBJS)

libman.a: $(MANOBJS)
	$(AR) rs $@ $(MANOBJS)

libmandoc.a: $(MANDOCOBJS)
	$(AR) rs $@ $(MANDOCOBJS)

libroff.a: $(ROFFOBJS)
	$(AR) rs $@ $(ROFFOBJS)

mandoc: $(MAINOBJS) libroff.a libmdoc.a libman.a libmandoc.a
	$(CC) $(CFLAGS) -o $@ $(MAINOBJS) libroff.a libmdoc.a libman.a libmandoc.a

.sgml.html:
	validate --warn $<
	sed -e "s!@VERSION@!$(VERSION)!" -e "s!@VDATE@!$(VDATE)!" $< > $@

.1.1.txt .3.3.txt .7.7.txt:
	./mandoc -Tascii -Wall,stop $< | col -b > $@

.1.1.sgml .3.3.sgml .7.7.sgml:
	./mandoc -Thtml -Wall,stop -Ostyle=style.css,man=%N.%S.html,includes=%I.html $< > $@

.1.1.ps .3.3.ps .7.7.ps:
	./mandoc -Tps -Wall,stop $< > $@

.1.1.xhtml .3.3.xhtml .7.7.xhtml:
	./mandoc -Txhtml -Wall,stop -Ostyle=style.css,man=%N.%S.xhtml,includes=%I.html $< > $@

.1.1.pdf .3.3.pdf .7.7.pdf:
	./mandoc -Tpdf -Wall,stop $< > $@

.tar.gz.md5:
	md5 $< > $@

.h.h.html:
	highlight -I $< >$@

config.h: config.h.pre config.h.post
	rm -f config.log
	( cat config.h.pre; \
	echo; \
	if $(CC) $(CFLAGS) -Werror -c test-strlcat.c >> config.log 2>&1; then \
		echo '#define HAVE_STRLCAT'; \
		rm test-strlcat.o; \
	fi; \
	if $(CC) $(CFLAGS) -Werror -c test-strlcpy.c >> config.log 2>&1; then \
		echo '#define HAVE_STRLCPY'; \
		rm test-strlcpy.o; \
	fi; \
	echo; \
	cat config.h.post \
	) > $@