xref: /freebsd/share/mk/bsd.doc.mk (revision a466cc55373fc3cf86837f09da729535b57e69a1)
1#	from: @(#)bsd.doc.mk	5.3 (Berkeley) 1/2/91
2# $FreeBSD$
3#
4# The include file <bsd.doc.mk> handles installing BSD troff documents.
5#
6#
7# +++ variables +++
8#
9# DCOMPRESS_CMD	Program to compress troff documents.  Output is to stdout.
10#		[${COMPRESS_CMD}]
11#
12# DESTDIR	Change the tree where the documents get installed.  [not set]
13#
14# DOC		Document name.  [paper]
15#
16# EXTRA		Extra files (not SRCS) that make up the document.  [not set]
17#
18# LPR		Printer command.  [lpr]
19#
20# MACROS	Macro packages used to build the document.  [not set]
21#
22# WITHOUT_DOCCOMPRESS If you do not want formatted troff documents to be
23#		compressed when they are installed.  [not set]
24#
25# PRINTERDEVICE	Indicates which output formats will be generated
26#		(ascii, ps, html).  [ascii]
27#
28# SRCDIR	Directory where source files live.  [${.CURDIR}]
29#
30# SRCS		List of source files.  [not set]
31#
32# TRFLAGS	Additional flags to groff(1).  [not set]
33#
34# USE_EQN	If set, preprocess with eqn(1).  [not set]
35#
36# USE_PIC	If set, preprocess with pic(1).  [not set]
37#
38# USE_REFER	If set, preprocess with refer(1).  [not set]
39#
40# USE_SOELIM	If set, preprocess with soelim(1).  [not set]
41#
42# USE_TBL	If set, preprocess with tbl(1).  [not set]
43#
44# VOLUME	Volume the document belongs to.  [not set]
45
46.include <bsd.init.mk>
47
48PRINTERDEVICE?=	ascii
49
50BIB?=		bib
51GREMLIN?=	grn
52GRIND?=		vgrind -f
53INDXBIB?=	indxbib
54PIC?=		pic
55REFER?=		refer
56.for _dev in ${PRINTERDEVICE:Mascii}
57ROFF.ascii?=	groff -Tascii -P-c ${TRFLAGS} -mtty-char ${MACROS} ${PAGES:C/^/-o/1}
58.endfor
59.for _dev in ${PRINTERDEVICE:Nascii}
60ROFF.${_dev}?=	groff -T${_dev} ${TRFLAGS} ${MACROS} ${PAGES:C/^/-o/1}
61.endfor
62SOELIM?=	soelim
63TBL?=		tbl
64
65DOC?=		paper
66LPR?=		lpr
67
68.if defined(USE_EQN)
69TRFLAGS+=	-e
70.endif
71.if defined(USE_PIC)
72TRFLAGS+=	-p
73.endif
74.if defined(USE_REFER)
75TRFLAGS+=	-R
76.endif
77.if defined(USE_SOELIM)
78TRFLAGS+=	-I${.CURDIR}
79.endif
80.if defined(USE_TBL)
81TRFLAGS+=	-t
82.endif
83
84.if defined(NO_ROOT)
85.if !defined(TAGS) || ! ${TAGS:Mpackage=*}
86TAGS+=		package=${PACKAGE:Uutilities}
87.endif
88TAG_ARGS=	-T ${TAGS:[*]:S/ /,/g}
89.endif
90
91DCOMPRESS_EXT?=	${COMPRESS_EXT}
92DCOMPRESS_CMD?=	${COMPRESS_CMD}
93.for _dev in ${PRINTERDEVICE:Mhtml}
94DFILE.html=	${DOC}.html
95.endfor
96.for _dev in ${PRINTERDEVICE:Nhtml}
97.if ${MK_DOCCOMPRESS} == "no"
98DFILE.${_dev}=	${DOC}.${_dev}
99.else
100DFILE.${_dev}=	${DOC}.${_dev}${DCOMPRESS_EXT}
101.endif
102.endfor
103
104UNROFF?=	unroff
105HTML_SPLIT?=	yes
106UNROFFFLAGS?=	-fhtml
107.if ${HTML_SPLIT} == "yes"
108UNROFFFLAGS+=	split=1
109.endif
110
111# Compatibility mode flag for groff.  Use this when formatting documents with
112# Berkeley me macros (orig_me(7)).
113COMPAT?=	-C
114
115.PATH: ${.CURDIR} ${SRCDIR}
116
117.if !defined(_SKIP_BUILD)
118.for _dev in ${PRINTERDEVICE}
119all: ${DFILE.${_dev}}
120.endfor
121.endif
122
123.if !target(print)
124.for _dev in ${PRINTERDEVICE}
125print: ${DFILE.${_dev}}
126.endfor
127print:
128.for _dev in ${PRINTERDEVICE}
129.if ${MK_DOCCOMPRESS} == "no"
130	${LPR} ${DFILE.${_dev}}
131.else
132	${DCOMPRESS_CMD} -d ${DFILE.${_dev}} | ${LPR}
133.endif
134.endfor
135.endif
136
137.for _dev in ${PRINTERDEVICE:Nascii:Nps:Nhtml}
138CLEANFILES+=	${DOC}.${_dev} ${DOC}.${_dev}${DCOMPRESS_EXT}
139.endfor
140CLEANFILES+=	${DOC}.ascii ${DOC}.ascii${DCOMPRESS_EXT} \
141		${DOC}.ps ${DOC}.ps${DCOMPRESS_EXT} \
142		${DOC}.html ${DOC}-*.html
143
144realinstall:
145.if ${PRINTERDEVICE:Mhtml}
146	cd ${SRCDIR}; \
147	${INSTALL} ${TAG_ARGS:D${TAG_ARGS},docs} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
148	    ${DOC}*.html ${DESTDIR}${BINDIR}/${VOLUME}/
149.endif
150.for _dev in ${PRINTERDEVICE:Nhtml}
151	${INSTALL} ${TAG_ARGS:D${TAG_ARGS},docs} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
152	    ${DFILE.${_dev}} ${DESTDIR}${BINDIR}/${VOLUME}/
153.endfor
154
155spell: ${SRCS}
156	(cd ${.CURDIR}; spell ${SRCS} ) | sort | \
157		comm -23 - ${.CURDIR}/spell.ok > ${DOC}.spell
158
159BINDIR?=	/usr/share/doc
160BINMODE=	444
161
162SRCDIR?=	${.CURDIR}
163
164.if defined(EXTRA) && !empty(EXTRA)
165_stamp.extra: ${EXTRA}
166	touch ${.TARGET}
167.endif
168
169CLEANFILES+=	_stamp.extra
170.for _dev in ${PRINTERDEVICE:Nhtml}
171.if !target(${DFILE.${_dev}})
172.if target(_stamp.extra)
173${DFILE.${_dev}}: _stamp.extra
174.endif
175${DFILE.${_dev}}: ${SRCS}
176.if ${MK_DOCCOMPRESS} == "no"
177	${ROFF.${_dev}} ${.ALLSRC:N_stamp.extra} > ${.TARGET}
178.else
179	${ROFF.${_dev}} ${.ALLSRC:N_stamp.extra} | ${DCOMPRESS_CMD} > ${.TARGET}
180.endif
181.endif
182.endfor
183
184.for _dev in ${PRINTERDEVICE:Mhtml}
185.if !target(${DFILE.html})
186.if target(_stamp.extra)
187${DFILE.html}: _stamp.extra
188.endif
189${DFILE.html}: ${SRCS}
190.if defined(MACROS) && !empty(MACROS)
191	cd ${SRCDIR}; ${UNROFF} ${MACROS} ${UNROFFFLAGS} \
192	    document=${DOC} ${SRCS}
193.else # unroff(1) requires a macro package as an argument
194	cd ${SRCDIR}; ${UNROFF} -ms ${UNROFFFLAGS} \
195	    document=${DOC} ${SRCS}
196.endif
197.endif
198.endfor
199
200DISTRIBUTION?=	doc
201
202.include <bsd.obj.mk>
203