summaryrefslogtreecommitdiffstats
path: root/share/mk/bsd.info.mk
diff options
context:
space:
mode:
Diffstat (limited to 'share/mk/bsd.info.mk')
-rw-r--r--share/mk/bsd.info.mk199
1 files changed, 199 insertions, 0 deletions
diff --git a/share/mk/bsd.info.mk b/share/mk/bsd.info.mk
new file mode 100644
index 0000000..9c3220d
--- /dev/null
+++ b/share/mk/bsd.info.mk
@@ -0,0 +1,199 @@
+# $FreeBSD$
+#
+# The include file <bsd.info.mk> handles installing GNU (tech)info files.
+# Texinfo is a documentation system that uses a single source
+# file to produce both on-line information and printed output.
+#
+#
+# +++ variables +++
+#
+# CLEANFILES Additional files to remove for the clean and cleandir targets.
+#
+# DESTDIR Change the tree where the info files gets installed. [not set]
+#
+# DVIPS A program which convert a TeX DVI file to PostScript [dvips]
+#
+# DVIPS2ASCII A program to convert a PostScript file which was prior
+# converted from a TeX DVI file to ascii/latin1 [dvips2ascii]
+#
+# FORMATS Indicates which output formats will be generated
+# (info, dvi, latin1, ps, html). [info]
+#
+# ICOMPRESS_CMD Program to compress info files. Output is to
+# stdout. [${COMPRESS_CMD}]
+#
+# INFO texinfo files, without suffix. [set in Makefile]
+#
+# INFO2HTML A program for converting GNU info files into HTML files
+# [info2html]
+#
+# INFODIR Base path for GNU's hypertext system
+# called Info (see info(1)). [${SHAREDIR}/info]
+#
+# INFODIRFILE Top level node/index for info files. [dir]
+#
+# INFOGRP Info group. [${SHAREGRP}]
+#
+# INFOMODE Info mode. [${NOBINMODE}]
+#
+# INFOOWN Info owner. [${SHAREOWN}]
+#
+# INFOSECTION Default section (if one could not be found in
+# the Info file). [Miscellaneous]
+#
+# INSTALLINFO A program for installing directory entries from Info
+# file in the ${INFODIR}/${INFODIRFILE}. [install-info]
+#
+# INSTALLINFOFLAGS Options for ${INSTALLINFO} command. [--quiet]
+#
+# INSTALLINFODIRS ???
+#
+# MAKEINFO A program for converting GNU Texinfo files into Info
+# file. [makeinfo]
+#
+# MAKEINFOFLAGS Options for ${MAKEINFO} command. [--no-split]
+#
+# NO_INFOCOMPRESS If you do not want info files be
+# compressed when they are installed. [not set]
+#
+# TEX A program for converting tex files into dvi files [tex]
+#
+#
+# +++ targets +++
+#
+# install:
+# Install the info files.
+#
+#
+# bsd.obj.mk: cleandir and obj
+
+.include <bsd.init.mk>
+
+MAKEINFO?= makeinfo
+MAKEINFOFLAGS+= --no-split # simplify some things, e.g., compression
+SRCDIR?= ${.CURDIR}
+INFODIRFILE?= dir
+INSTALLINFO?= install-info
+INSTALLINFOFLAGS+=--quiet
+INFOSECTION?= Miscellaneous
+ICOMPRESS_CMD?= ${COMPRESS_CMD}
+ICOMPRESS_EXT?= ${COMPRESS_EXT}
+FORMATS?= info
+INFO2HTML?= info2html
+TEX?= tex
+DVIPS?= dvips
+DVIPS2ASCII?= dvips2ascii
+
+.SUFFIXES: ${ICOMPRESS_EXT} .info .texi .texinfo .dvi .ps .latin1 .html
+
+.texi.info .texinfo.info:
+ ${MAKEINFO} ${MAKEINFOFLAGS} -I ${.CURDIR} -I ${SRCDIR} ${.IMPSRC} \
+ -o ${.TARGET}
+
+.texi.dvi .texinfo.dvi:
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC} </dev/null
+# Run again to resolve cross references.
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC} </dev/null
+
+.texinfo.latin1 .texi.latin1:
+ perl -npe 's/(^\s*\\input\s+texinfo\s+)/$$1\n@tex\n\\global\\hsize=120mm\n@end tex\n\n/' ${.IMPSRC} >> ${.IMPSRC:T:R}-la.texi
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
+# Run again to resolve cross references.
+ TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \
+ ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null
+ ${DVIPS} -o /dev/stdout ${.IMPSRC:T:R}-la.dvi | \
+ ${DVIPS2ASCII} > ${.TARGET}.new
+ mv -f ${.TARGET}.new ${.TARGET}
+
+.dvi.ps:
+ ${DVIPS} -o ${.TARGET} ${.IMPSRC}
+
+.info.html:
+ ${INFO2HTML} ${.IMPSRC}
+ ln -f ${.TARGET:R}.info.Top.html ${.TARGET}
+
+.PATH: ${.CURDIR} ${SRCDIR}
+
+.for _f in ${FORMATS}
+IFILENS+= ${INFO:S/$/.${_f}/}
+.endfor
+
+.if ${MK_INFO} != "no"
+CLEANFILES+= ${IFILENS}
+.if !defined(NO_INFOCOMPRESS)
+CLEANFILES+= ${IFILENS:S/$/${ICOMPRESS_EXT}/}
+IFILES= ${IFILENS:S/$/${ICOMPRESS_EXT}/:S/.html${ICOMPRESS_EXT}/.html/}
+all: ${IFILES}
+.else
+IFILES= ${IFILENS}
+all: ${IFILES}
+.endif
+.else
+all:
+.endif
+
+.for x in ${IFILENS}
+${x:S/$/${ICOMPRESS_EXT}/}: ${x}
+ ${ICOMPRESS_CMD} ${.ALLSRC} > ${.TARGET}
+.endfor
+
+.for x in ${INFO}
+INSTALLINFODIRS+= ${x:S/$/-install/}
+${x:S/$/-install/}:
+.if !empty(.MAKEFLAGS:M-j)
+ lockf -k ${DESTDIR}${INFODIR}/${INFODIRFILE} \
+ ${INSTALLINFO} ${INSTALLINFOFLAGS} \
+ --defsection=${INFOSECTION} \
+ --defentry=${INFOENTRY_${x}} \
+ ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE}
+.else
+ ${INSTALLINFO} ${INSTALLINFOFLAGS} \
+ --defsection=${INFOSECTION} \
+ --defentry=${INFOENTRY_${x}} \
+ ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE}
+.endif
+.endfor
+
+.PHONY: ${INSTALLINFODIRS}
+
+.if defined(SRCS)
+CLEANFILES+= ${INFO}.texi
+${INFO}.texi: ${SRCS}
+ cat ${.ALLSRC} > ${.TARGET}
+.endif
+
+# tex garbage
+.if !empty(FORMATS:Mps) || !empty(FORMATS:Mdvi) || !empty(FORMATS:Mlatin1)
+.for _f in aux cp fn ky log out pg toc tp vr dvi
+CLEANFILES+= ${INFO:S/$/.${_f}/} ${INFO:S/$/-la.${_f}/}
+.endfor
+CLEANFILES+= ${INFO:S/$/-la.texi/}
+.endif
+
+.if !empty(FORMATS:Mhtml)
+CLEANFILES+= ${INFO:S/$/.info.*.html/} ${INFO:S/$/.info/}
+.endif
+
+.if ${MK_INFO} != "no" && defined(INFO)
+install: ${INSTALLINFODIRS}
+.if !empty(IFILES:N*.html)
+ ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
+ ${IFILES:N*.html} ${DESTDIR}${INFODIR}
+.endif
+.if !empty(FORMATS:Mhtml)
+ ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \
+ ${INFO:S/$/.info.*.html/} ${DESTDIR}${INFODIR}
+.endif
+.else
+# The indirection in the following is to avoid the null install rule
+# "install:" from being overridden by the implicit .sh rule if there
+# happens to be a source file named install.sh. This assumes that there
+# is no source file named __null_install.sh.
+install: __null_install
+__null_install:
+.endif
+
+.include <bsd.obj.mk>
OpenPOWER on IntegriCloud