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

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

Revision 1.341, Thu May 19 15:48:58 2011 UTC (12 years, 11 months ago) by kristaps
Branch: MAIN
Changes since 1.340: +5 -3 lines

It seems that __STDC_ISO_10646__ isn't defined even where it can be
defined, so remove the check for it and leave it up to people compiling
the software (DOWNSTREAM) to take care of this.  This will eventually
need to be fixed up with a proper non-10646 converter and so on, but
this is a simple start.  While here, strengthen then language in the
Makefile to this effect.

.PHONY: 	 clean install installwww
.SUFFIXES:	 .sgml .html .md5 .h .h.html
.SUFFIXES:	 .1       .3       .7
.SUFFIXES:	 .1.txt   .3.txt   .7.txt
.SUFFIXES:	 .1.pdf   .3.pdf   .7.pdf
.SUFFIXES:	 .1.ps    .3.ps    .7.ps
.SUFFIXES:	 .1.html  .3.html  .7.html 
.SUFFIXES:	 .1.xhtml .3.xhtml .7.xhtml 

# 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\""

VERSION		 = 1.11.2
VDATE		 = 12 May 2011
# IFF your system supports multi-byte functions (setlocale(), wcwidth(),
# putwchar()) AND has __STDC_ISO_10646__ (that is, wchar_t is simply a
# UCS-4 value) should you define USE_WCHAR.  If you define it and your
# system DOESN'T support this, -Tlocale will produce garbage.
# If you don't define it, -Tlocale is a synonym for -Tacsii.
CFLAGS		+= -g -DUSE_WCHAR -DHAVE_CONFIG_H -DVERSION="\"$(VERSION)\""
CFLAGS     	+= -W -Wall -Wstrict-prototypes -Wno-unused-parameter -Wwrite-strings
PREFIX		 = /usr/local
BINDIR		 = $(PREFIX)/bin
INCLUDEDIR	 = $(PREFIX)/include/mandoc
LIBDIR		 = $(PREFIX)/lib/mandoc
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)

all: mandoc

SRCS		 = Makefile \
		   arch.c \
		   arch.in \
		   att.c \
		   att.in \
		   chars.c \
		   chars.in \
		   compat.c \
		   config.h.post \
		   config.h.pre \
		   eqn.7 \
		   eqn.c \
		   example.style.css \
		   external.png \
		   html.c \
		   html.h \
		   index.css \
		   index.sgml \
		   lib.c \
		   lib.in \
		   libman.h \
		   libmandoc.h \
		   libmdoc.h \
		   libroff.h \
		   main.c \
		   main.h \
		   man.h \
		   man.7 \
		   man.c \
		   man_hash.c \
		   man_html.c \
		   man_macro.c \
		   man_term.c \
		   man_validate.c \
		   mandoc.1 \
		   mandoc.3 \
		   mandoc.c \
		   mandoc.h \
		   makewhatis.1 \
		   makewhatis.c \
		   mandoc_char.7 \
		   mdoc.h \
		   mdoc.7 \
		   mdoc.c \
		   mdoc_argv.c \
		   mdoc_hash.c \
		   mdoc_html.c \
		   mdoc_macro.c \
		   mdoc_term.c \
		   mdoc_validate.c \
		   msec.c \
		   msec.in \
		   out.c \
		   out.h \
		   read.c \
		   roff.7 \
		   roff.c \
		   st.c \
		   st.in \
		   style.css \
		   tbl.7 \
		   tbl.c \
		   tbl_data.c \
		   tbl_html.c \
		   tbl_layout.c \
		   tbl_opts.c \
		   tbl_term.c \
		   term.c \
		   term.h \
		   term_ascii.c \
		   term_ps.c \
		   test-strlcat.c \
		   test-strlcpy.c \
		   tree.c \
		   vol.c \
		   vol.in

LIBMAN_OBJS	 = man.o \
		   man_hash.o \
		   man_macro.o \
		   man_validate.o
LIBMAN_LNS	 = man.ln \
		   man_hash.ln \
		   man_macro.ln \
		   man_validate.ln

LIBMDOC_OBJS	 = arch.o \
		   att.o \
		   lib.o \
		   mdoc.o \
		   mdoc_argv.o \
		   mdoc_hash.o \
		   mdoc_macro.o \
		   mdoc_validate.o \
		   msec.o \
		   st.o \
		   vol.o
LIBMDOC_LNS	 = arch.ln \
		   att.ln \
		   lib.ln \
		   mdoc.ln \
		   mdoc_argv.ln \
		   mdoc_hash.ln \
		   mdoc_macro.ln \
		   mdoc_validate.ln \
		   msec.ln \
		   st.ln \
		   vol.ln

LIBROFF_OBJS	 = eqn.o \
		   roff.o \
		   tbl.o \
		   tbl_data.o \
		   tbl_layout.o \
		   tbl_opts.o
LIBROFF_LNS	 = eqn.ln \
		   roff.ln \
		   tbl.ln \
		   tbl_data.ln \
		   tbl_layout.ln \
		   tbl_opts.ln

LIBMANDOC_OBJS	 = $(LIBMAN_OBJS) \
		   $(LIBMDOC_OBJS) \
		   $(LIBROFF_OBJS) \
		   chars.o \
		   mandoc.o \
		   read.o
LIBMANDOC_LNS	 = $(LIBMAN_LNS) \
		   $(LIBMDOC_LNS) \
		   $(LIBROFF_LNS) \
		   chars.ln \
		   mandoc.ln \
		   read.ln

arch.o arch.ln: arch.in
att.o att.ln: att.in
chars.o chars.ln: chars.in
lib.o lib.ln: lib.in
msec.o msec.ln: msec.in
st.o st.ln: st.in
vol.o vol.ln: vol.in

$(LIBMAN_OBJS) $(LIBMAN_LNS): libman.h
$(LIBMDOC_OBJS) $(LIBMDOC_LNS): libmdoc.h
$(LIBROFF_OBJS) $(LIBROFF_LNS): libroff.h
$(LIBMANDOC_OBJS) $(LIBMANDOC_LNS): mandoc.h mdoc.h man.h libmandoc.h config.h

MANDOC_HTML_OBJS = html.o \
		   man_html.o \
		   mdoc_html.o \
		   tbl_html.o
MANDOC_HTML_LNS	 = html.ln \
		   man_html.ln \
		   mdoc_html.ln \
		   tbl_html.ln

MANDOC_TERM_OBJS = man_term.o \
		   mdoc_term.o \
		   term.o \
		   term_ascii.o \
		   term_ps.o \
		   tbl_term.o
MANDOC_TERM_LNS	 = man_term.ln \
		   mdoc_term.ln \
		   term.ln \
		   term_ascii.ln \
		   term_ps.ln \
		   tbl_term.ln

MANDOC_OBJS	 = $(MANDOC_HTML_OBJS) \
		   $(MANDOC_TERM_OBJS) \
		   main.o \
		   out.o \
		   tree.o
MANDOC_LNS	 = $(MANDOC_HTML_LNS) \
		   $(MANDOC_TERM_LNS) \
		   main.ln \
		   out.ln \
		   tree.ln

$(MANDOC_HTML_OBJS) $(MANDOC_HTML_LNS): html.h
$(MANDOC_TERM_OBJS) $(MANDOC_TERM_LNS): term.h
$(MANDOC_OBJS) $(MANDOC_LNS): main.h mandoc.h mdoc.h man.h config.h out.h

compat.o compat.ln: config.h

MAKEWHATIS_OBJS	 = makewhatis.o
MAKEWHATIS_LNS	 = makewhatis.ln

$(MAKEWHATIS_OBJS) $(MAKEWHATIS_LNS): mandoc.h mdoc.h man.h config.h

INDEX_MANS	 = makewhatis.1.html \
		   makewhatis.1.xhtml \
		   makewhatis.1.ps \
		   makewhatis.1.pdf \
		   makewhatis.1.txt \
		   mandoc.1.html \
		   mandoc.1.xhtml \
		   mandoc.1.ps \
		   mandoc.1.pdf \
		   mandoc.1.txt \
		   mandoc.3.html \
		   mandoc.3.xhtml \
		   mandoc.3.ps \
		   mandoc.3.pdf \
		   mandoc.3.txt \
		   eqn.7.html \
		   eqn.7.xhtml \
		   eqn.7.ps \
		   eqn.7.pdf \
		   eqn.7.txt \
		   man.7.html \
		   man.7.xhtml \
		   man.7.ps \
		   man.7.pdf \
		   man.7.txt \
		   mandoc_char.7.html \
		   mandoc_char.7.xhtml \
		   mandoc_char.7.ps \
		   mandoc_char.7.pdf \
		   mandoc_char.7.txt \
		   mdoc.7.html \
		   mdoc.7.xhtml \
		   mdoc.7.ps \
		   mdoc.7.pdf \
		   mdoc.7.txt \
		   roff.7.html \
		   roff.7.xhtml \
		   roff.7.ps \
		   roff.7.pdf \
		   roff.7.txt \
		   tbl.7.html \
		   tbl.7.xhtml \
		   tbl.7.ps \
		   tbl.7.pdf \
		   tbl.7.txt

$(INDEX_MANS): mandoc

INDEX_OBJS	 = $(INDEX_MANS) \
		   man.h.html \
		   mandoc.h.html \
		   mdoc.h.html \
		   mdocml.tar.gz \
		   mdocml.md5

www: index.html

lint: llib-llibmandoc.ln llib-lmandoc.ln

clean:
	rm -f libmandoc.a $(LIBMANDOC_OBJS)
	rm -f llib-llibmandoc.ln $(LIBMANDOC_LNS)
	rm -f makewhatis $(MAKEWHATIS_OBJS)
	rm -f llib-lmakewhatis.ln $(MAKEWHATIS_LNS)
	rm -f mandoc $(MANDOC_OBJS)
	rm -f llib-lmandoc.ln $(MANDOC_LNS)
	rm -f config.h config.log compat.o compat.ln
	rm -f mdocml.tar.gz
	rm -f index.html $(INDEX_OBJS)

install: all
	mkdir -p $(DESTDIR)$(BINDIR)
	mkdir -p $(DESTDIR)$(EXAMPLEDIR)
	mkdir -p $(DESTDIR)$(LIBDIR)
	mkdir -p $(DESTDIR)$(INCLUDEDIR)
	mkdir -p $(DESTDIR)$(MANDIR)/man1
	mkdir -p $(DESTDIR)$(MANDIR)/man3
	mkdir -p $(DESTDIR)$(MANDIR)/man7
	$(INSTALL_PROGRAM) mandoc $(DESTDIR)$(BINDIR)
	$(INSTALL_LIB) libmandoc.a $(DESTDIR)$(LIBDIR)
	$(INSTALL_LIB) mandoc.h $(DESTDIR)$(INCLUDEDIR)
	$(INSTALL_MAN) mandoc.1 $(DESTDIR)$(MANDIR)/man1
	$(INSTALL_MAN) mandoc.3 $(DESTDIR)$(MANDIR)/man3
	$(INSTALL_MAN) man.7 mdoc.7 roff.7 eqn.7 tbl.7 mandoc_char.7 $(DESTDIR)$(MANDIR)/man7
	$(INSTALL_DATA) example.style.css $(DESTDIR)$(EXAMPLEDIR)

installwww: www
	mkdir -p $(PREFIX)/snapshots
	$(INSTALL_DATA) index.html external.png index.css $(PREFIX)
	$(INSTALL_DATA) $(INDEX_MANS) style.css $(PREFIX)
	$(INSTALL_DATA) mandoc.h.html man.h.html mdoc.h.html $(PREFIX)
	$(INSTALL_DATA) mdocml.tar.gz $(PREFIX)/snapshots
	$(INSTALL_DATA) mdocml.md5 $(PREFIX)/snapshots
	$(INSTALL_DATA) mdocml.tar.gz $(PREFIX)/snapshots/mdocml-$(VERSION).tar.gz
	$(INSTALL_DATA) mdocml.md5 $(PREFIX)/snapshots/mdocml-$(VERSION).md5

libmandoc.a: compat.o $(LIBMANDOC_OBJS)
	$(AR) rs $@ compat.o $(LIBMANDOC_OBJS)

llib-llibmandoc.ln: compat.ln $(LIBMANDOC_LNS)
	$(LINT) $(LINTFLAGS) -Clibmandoc compat.ln $(LIBMANDOC_LNS)

mandoc: $(MANDOC_OBJS) libmandoc.a
	$(CC) -o $@ $(MANDOC_OBJS) libmandoc.a

# You'll need -ldb for Linux.
makewhatis: $(MAKEWHATIS_OBJS) libmandoc.a
	$(CC) -o $@ $(MAKEWHATIS_OBJS) libmandoc.a

llib-lmandoc.ln: $(MANDOC_LNS)
	$(LINT) $(LINTFLAGS) -Cmandoc $(MANDOC_LNS)

llib-lmakewhatis.ln: $(MAKEWHATIS_LNS)
	$(LINT) $(LINTFLAGS) -Cmakewhatis $(MAKEWHATIS_LNS)

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

mdocml.tar.gz: $(SRCS)
	mkdir -p .dist/mdocml-$(VERSION)/
	$(INSTALL) -m 0444 $(SRCS) .dist/mdocml-$(VERSION)
	( cd .dist/ && tar zcf ../$@ ./ )
	rm -rf .dist/

index.html: $(INDEX_OBJS)

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

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

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

.1.1.html .3.3.html .7.7.html:
	./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 $< >$@

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