bsd.info.mk revision 245752
1189251Ssam# $FreeBSD: head/share/mk/bsd.info.mk 245752 2013-01-21 22:40:39Z brooks $ 2209158Srpaulo# 3189251Ssam# The include file <bsd.info.mk> handles installing GNU (tech)info files. 4189251Ssam# Texinfo is a documentation system that uses a single source 5252726Srpaulo# file to produce both on-line information and printed output. 6252726Srpaulo# 7189251Ssam# 8189251Ssam# +++ variables +++ 9189251Ssam# 10189251Ssam# CLEANFILES Additional files to remove for the clean and cleandir targets. 11189251Ssam# 12252726Srpaulo# DESTDIR Change the tree where the info files gets installed. [not set] 13189251Ssam# 14189251Ssam# DVIPS A program which convert a TeX DVI file to PostScript [dvips] 15189251Ssam# 16189251Ssam# DVIPS2ASCII A program to convert a PostScript file which was prior 17189251Ssam# converted from a TeX DVI file to ascii/latin1 [dvips2ascii] 18189251Ssam# 19189251Ssam# FORMATS Indicates which output formats will be generated 20189251Ssam# (info, dvi, latin1, ps, html). [info] 21189251Ssam# 22189251Ssam# ICOMPRESS_CMD Program to compress info files. Output is to 23189251Ssam# stdout. [${COMPRESS_CMD}] 24189251Ssam# 25189251Ssam# INFO texinfo files, without suffix. [set in Makefile] 26189251Ssam# 27189251Ssam# INFO2HTML A program for converting GNU info files into HTML files 28189251Ssam# [info2html] 29189251Ssam# 30189251Ssam# INFODIR Base path for GNU's hypertext system 31189251Ssam# called Info (see info(1)). [${SHAREDIR}/info] 32189251Ssam# 33189251Ssam# INFODIRFILE Top level node/index for info files. [dir] 34189251Ssam# 35189251Ssam# INFOGRP Info group. [${SHAREGRP}] 36189251Ssam# 37189251Ssam# INFOMODE Info mode. [${NOBINMODE}] 38189251Ssam# 39189251Ssam# INFOOWN Info owner. [${SHAREOWN}] 40189251Ssam# 41189251Ssam# INFOSECTION Default section (if one could not be found in 42189251Ssam# the Info file). [Miscellaneous] 43189251Ssam# 44189251Ssam# INSTALLINFO A program for installing directory entries from Info 45189251Ssam# file in the ${INFODIR}/${INFODIRFILE}. [install-info] 46189251Ssam# 47189251Ssam# INSTALLINFOFLAGS Options for ${INSTALLINFO} command. [--quiet] 48189251Ssam# 49189251Ssam# INSTALLINFODIRS ??? 50189251Ssam# 51189251Ssam# MAKEINFO A program for converting GNU Texinfo files into Info 52189251Ssam# file. [makeinfo] 53189251Ssam# 54189251Ssam# MAKEINFOFLAGS Options for ${MAKEINFO} command. [--no-split] 55189251Ssam# 56189251Ssam# NO_INFOCOMPRESS If you do not want info files be 57189251Ssam# compressed when they are installed. [not set] 58189251Ssam# 59189251Ssam# TEX A program for converting tex files into dvi files [tex] 60189251Ssam# 61189251Ssam# 62189251Ssam# +++ targets +++ 63189251Ssam# 64189251Ssam# install: 65189251Ssam# Install the info files. 66189251Ssam# 67189251Ssam# 68189251Ssam# bsd.obj.mk: cleandir and obj 69189251Ssam 70189251Ssam.include <bsd.init.mk> 71189251Ssam 72189251SsamMAKEINFO?= makeinfo 73189251SsamMAKEINFOFLAGS+= --no-split # simplify some things, e.g., compression 74189251SsamSRCDIR?= ${.CURDIR} 75189251SsamINFODIRFILE?= dir 76189251SsamINSTALLINFO?= install-info 77189251SsamINSTALLINFOFLAGS+=--quiet 78189251SsamINFOSECTION?= Miscellaneous 79189251SsamICOMPRESS_CMD?= ${COMPRESS_CMD} 80189251SsamICOMPRESS_EXT?= ${COMPRESS_EXT} 81189251SsamFORMATS?= info 82189251SsamINFO2HTML?= info2html 83189251SsamTEX?= tex 84189251SsamDVIPS?= dvips 85189251SsamDVIPS2ASCII?= dvips2ascii 86189251Ssam 87189251Ssam.SUFFIXES: ${ICOMPRESS_EXT} .info .texi .texinfo .dvi .ps .latin1 .html 88189251Ssam 89189251Ssam.texi.info .texinfo.info: 90189251Ssam ${MAKEINFO} ${MAKEINFOFLAGS} -I ${.CURDIR} -I ${SRCDIR} ${.IMPSRC} \ 91189251Ssam -o ${.TARGET} 92189251Ssam 93189251Ssam.texi.dvi .texinfo.dvi: 94189251Ssam TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \ 95189251Ssam ${TEX} ${.IMPSRC} </dev/null 96189251Ssam# Run again to resolve cross references. 97189251Ssam TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \ 98189251Ssam ${TEX} ${.IMPSRC} </dev/null 99189251Ssam 100189251Ssam.texinfo.latin1 .texi.latin1: 101189251Ssam 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 102189251Ssam TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \ 103189251Ssam ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null 104189251Ssam# Run again to resolve cross references. 105189251Ssam TEXINPUTS=${.CURDIR}:${SRCDIR}:$$TEXINPUTS \ 106189251Ssam ${TEX} ${.IMPSRC:T:R}-la.texi </dev/null 107189251Ssam ${DVIPS} -o /dev/stdout ${.IMPSRC:T:R}-la.dvi | \ 108189251Ssam ${DVIPS2ASCII} > ${.TARGET}.new 109189251Ssam mv -f ${.TARGET}.new ${.TARGET} 110189251Ssam 111189251Ssam.dvi.ps: 112189251Ssam ${DVIPS} -o ${.TARGET} ${.IMPSRC} 113189251Ssam 114189251Ssam.info.html: 115189251Ssam ${INFO2HTML} ${.IMPSRC} 116189251Ssam ${INSTALL_LINK} ${.TARGET:R}.info.Top.html ${.TARGET} 117189251Ssam 118189251Ssam.PATH: ${.CURDIR} ${SRCDIR} 119189251Ssam 120189251Ssam.for _f in ${FORMATS} 121189251SsamIFILENS+= ${INFO:S/$/.${_f}/} 122189251Ssam.endfor 123189251Ssam 124189251Ssam.if ${MK_INFO} != "no" 125189251SsamCLEANFILES+= ${IFILENS} 126189251Ssam.if !defined(NO_INFOCOMPRESS) 127189251SsamCLEANFILES+= ${IFILENS:S/$/${ICOMPRESS_EXT}/} 128189251SsamIFILES= ${IFILENS:S/$/${ICOMPRESS_EXT}/:S/.html${ICOMPRESS_EXT}/.html/} 129189251Ssamall: ${IFILES} 130189251Ssam.else 131189251SsamIFILES= ${IFILENS} 132189251Ssamall: ${IFILES} 133189251Ssam.endif 134189251Ssam.else 135189251Ssamall: 136189251Ssam.endif 137189251Ssam 138189251Ssam.for x in ${IFILENS} 139189251Ssam${x:S/$/${ICOMPRESS_EXT}/}: ${x} 140189251Ssam ${ICOMPRESS_CMD} ${.ALLSRC} > ${.TARGET} 141189251Ssam.endfor 142189251Ssam 143189251Ssam.for x in ${INFO} 144189251SsamINSTALLINFODIRS+= ${x:S/$/-install/} 145189251Ssam${x:S/$/-install/}: 146189251Ssam.if !empty(.MAKEFLAGS:M-j) 147189251Ssam lockf -k ${DESTDIR}${INFODIR}/${INFODIRFILE} \ 148189251Ssam ${INSTALLINFO} ${INSTALLINFOFLAGS} \ 149189251Ssam --defsection=${INFOSECTION} \ 150189251Ssam --defentry=${INFOENTRY_${x}} \ 151189251Ssam ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE} 152189251Ssam.else 153189251Ssam ${INSTALLINFO} ${INSTALLINFOFLAGS} \ 154189251Ssam --defsection=${INFOSECTION} \ 155189251Ssam --defentry=${INFOENTRY_${x}} \ 156189251Ssam ${x}.info ${DESTDIR}${INFODIR}/${INFODIRFILE} 157189251Ssam.endif 158189251Ssam.endfor 159189251Ssam 160189251Ssam.PHONY: ${INSTALLINFODIRS} 161189251Ssam 162189251Ssam.if defined(SRCS) 163189251SsamCLEANFILES+= ${INFO}.texi 164189251Ssam${INFO}.texi: ${SRCS} 165189251Ssam cat ${.ALLSRC} > ${.TARGET} 166189251Ssam.endif 167189251Ssam 168189251Ssam# tex garbage 169189251Ssam.if !empty(FORMATS:Mps) || !empty(FORMATS:Mdvi) || !empty(FORMATS:Mlatin1) 170189251Ssam.for _f in aux cp fn ky log out pg toc tp vr dvi 171189251SsamCLEANFILES+= ${INFO:S/$/.${_f}/} ${INFO:S/$/-la.${_f}/} 172189251Ssam.endfor 173189251SsamCLEANFILES+= ${INFO:S/$/-la.texi/} 174189251Ssam.endif 175189251Ssam 176189251Ssam.if !empty(FORMATS:Mhtml) 177189251SsamCLEANFILES+= ${INFO:S/$/.info.*.html/} ${INFO:S/$/.info/} 178189251Ssam.endif 179189251Ssam 180189251Ssam.if ${MK_INFO} != "no" && defined(INFO) 181189251Ssaminstall: ${INSTALLINFODIRS} 182189251Ssam.if !empty(IFILES:N*.html) 183189251Ssam ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \ 184189251Ssam ${IFILES:N*.html} ${DESTDIR}${INFODIR} 185189251Ssam.endif 186189251Ssam.if !empty(FORMATS:Mhtml) 187189251Ssam ${INSTALL} -o ${INFOOWN} -g ${INFOGRP} -m ${INFOMODE} \ 188189251Ssam ${INFO:S/$/.info.*.html/} ${DESTDIR}${INFODIR} 189189251Ssam.endif 190189251Ssam.else 191189251Ssam# The indirection in the following is to avoid the null install rule 192189251Ssam# "install:" from being overridden by the implicit .sh rule if there 193189251Ssam# happens to be a source file named install.sh. This assumes that there 194189251Ssam# is no source file named __null_install.sh. 195189251Ssaminstall: __null_install 196189251Ssam__null_install: 197189251Ssam.endif 198189251Ssam 199189251Ssam.include <bsd.obj.mk> 200189251Ssam