130 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
# $FreeBSD$
 | 
						|
#
 | 
						|
# Documentation release building.  These are used to create
 | 
						|
# distributions of the documentation files only.  These recipes are
 | 
						|
# intended to mimic src/release/Makefile; the principal difference is
 | 
						|
# that much of the complexity brought about by the chroot environment
 | 
						|
# is unneeded.
 | 
						|
#
 | 
						|
DOC_PREFIX?=	${.CURDIR}/..
 | 
						|
 | 
						|
HOSTNAME?=	/bin/hostname
 | 
						|
MKISOFS?=	mkisofs
 | 
						|
TAR?=		/usr/bin/tar
 | 
						|
TOUCH?=		/usr/bin/touch
 | 
						|
 | 
						|
#
 | 
						|
# Targets:
 | 
						|
#
 | 
						|
# release	Create a clean build of the documentation files,
 | 
						|
#		obeying the usual specifications such as FORMATS=,
 | 
						|
#		DOC_LANG=, etc.
 | 
						|
#
 | 
						|
# rerelease	Similar to release, except that existing documentation
 | 
						|
#		renderings are preserved and installed.
 | 
						|
#
 | 
						|
# Configuration variables:
 | 
						|
#
 | 
						|
# BUILDNAME	Identification string to be placed in BUILDNAME file
 | 
						|
#		in the top directory of the release.
 | 
						|
#
 | 
						|
# DOCROOTDIR	Top directory to use for document release building.
 | 
						|
#		This directory need not exist, and will be created
 | 
						|
#		if necessary.  This variable MUST be defined.
 | 
						|
#
 | 
						|
# MAKE_ISOS	If defined, this will enable creation of an ISO image
 | 
						|
#		from the document release.  Creation of ISO images
 | 
						|
#		requires a mkisofs binary in the invoking user's path.
 | 
						|
#
 | 
						|
DATE!=		date +%Y%m%d
 | 
						|
BUILDNAME?=	${DATE}
 | 
						|
 | 
						|
#
 | 
						|
# Set defaults for FORMATS, DOC_LANG, and INSTALL_COMPRESSED.
 | 
						|
#
 | 
						|
FORMATS?=	ps pdf html html-split html-split.tar txt pdb
 | 
						|
#DOC_LANG?=	en_US.ISO8859-1
 | 
						|
INSTALL_COMPRESSED?=	zip gz
 | 
						|
 | 
						|
#
 | 
						|
# Miscellaneous options for the build get set here.
 | 
						|
#
 | 
						|
# The Japanese translation team has a set of manual pages; we turn
 | 
						|
# these off (at least for now) because we have not worked their
 | 
						|
# install target into our scheme.
 | 
						|
#
 | 
						|
# Turn on RLE encoding and indexing.
 | 
						|
#
 | 
						|
MISCOPTIONS+=	NO_JPMAN=yes RLE=yes GEN_INDEX=1
 | 
						|
 | 
						|
DOCOBJDIR=	${DOCROOTDIR}/obj
 | 
						|
DOCBUILDFILE=	${DOCOBJDIR}/build.txt
 | 
						|
DOCKEYFILE=	${DOCOBJDIR}/pgpkeyring.txt
 | 
						|
DOCSTAGEDIR=	${DOCROOTDIR}/doc
 | 
						|
DOCFTPSTAGEDIR=	${DOCSTAGEDIR}/ftp
 | 
						|
DOCCDROMSTAGEDIR=	${DOCSTAGEDIR}/cdrom
 | 
						|
 | 
						|
rerelease release: release.1 ftp.1 cdrom.1
 | 
						|
	@${ECHO} ">>> make ${.TARGET} finished on `LC_ALL=C TZ=GMT date`"
 | 
						|
 | 
						|
release.1:
 | 
						|
.if !defined(DOCROOTDIR)
 | 
						|
	@${ECHO} "To make a release you must define DOCROOTDIR" && false
 | 
						|
.endif
 | 
						|
	@${ECHO} ">>> make ${.TARGET} started on `LC_ALL=C TZ=GMT date`"
 | 
						|
# If we're doing a release (from scratch), clean out DOCROOTDIR
 | 
						|
# (this is the equivalent of CHROOTDIR for src/release).
 | 
						|
.if make(release)
 | 
						|
	${RM} -rf ${DOCROOTDIR}
 | 
						|
	${MKDIR} ${DOCROOTDIR}
 | 
						|
	${MKDIR} ${DOCOBJDIR}
 | 
						|
	find ${DOC_PREFIX} -type d -a \! -name CVS | sed -e s,^,${DOCOBJDIR}, | xargs ${MKDIR}
 | 
						|
	${MKDIR} ${DOCSTAGEDIR}
 | 
						|
.endif
 | 
						|
# Build documents in the obj area.
 | 
						|
# We do this so as to avoid interference with any built documents that
 | 
						|
# happen to be sitting under ${DOC_PREFIX}, which might be built with
 | 
						|
# different options, etc.
 | 
						|
	cd ${DOC_PREFIX} && \
 | 
						|
	env MAKEOBJDIRPREFIX=${DOCOBJDIR} ${MAKE} all FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
 | 
						|
# Build PGP key ring
 | 
						|
	${RM} -f ${DOCKEYFILE}
 | 
						|
	cd ${DOC_PREFIX}/en_US.ISO8859-1/books/handbook && env ${MAKE} pgpkeyring > ${DOCKEYFILE}
 | 
						|
# Construct the build.txt file with the documentation build info.
 | 
						|
	${RM} -f ${DOCBUILDFILE}
 | 
						|
	${TOUCH} ${DOCBUILDFILE}
 | 
						|
	${ECHO} "FreeBSD Documentation ${BUILDNAME}" >> ${DOCBUILDFILE}
 | 
						|
	${ECHO} "Generated on:	`LC_ALL=C TZ=GMT date`" >> ${DOCBUILDFILE}
 | 
						|
	${ECHO} "Generated by:	${USER}@`${HOSTNAME}`">> ${DOCBUILDFILE}
 | 
						|
	${ECHO} "Formats:	${FORMATS}" >> ${DOCBUILDFILE}
 | 
						|
	${ECHO} "Languages:	${DOC_LANG}" >> ${DOCBUILDFILE}
 | 
						|
 | 
						|
# Make FTP staging area
 | 
						|
ftp.1:
 | 
						|
	${RM} -rf ${DOCFTPSTAGEDIR}
 | 
						|
	${MKDIR} ${DOCFTPSTAGEDIR}
 | 
						|
	cd ${DOC_PREFIX} && \
 | 
						|
	env MAKEOBJDIRPREFIX=${DOCOBJDIR} ${MAKE} all install DOCDIR=${DOCFTPSTAGEDIR} FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
 | 
						|
# Copy newly generated files to staging area
 | 
						|
	${CP} ${DOCBUILDFILE} ${DOCKEYFILE} ${DOCFTPSTAGEDIR}
 | 
						|
# Copy any files in our texts/ directory to staging area
 | 
						|
	${TAR} --exclude CVS -cf - -C ${.CURDIR}/texts . | \
 | 
						|
		${TAR} xf - -C ${DOCFTPSTAGEDIR}
 | 
						|
 | 
						|
# Make CDROM staging area, optionally do ISO images too
 | 
						|
cdrom.1:
 | 
						|
	${RM} -rf ${DOCCDROMSTAGEDIR}
 | 
						|
	${MKDIR} ${DOCCDROMSTAGEDIR}
 | 
						|
	cd ${DOC_PREFIX} && \
 | 
						|
	env MAKEOBJDIRPREFIX=${DOCOBJDIR} ${MAKE} all install DOCDIR=${DOCCDROMSTAGEDIR} FORMATS="${FORMATS}" INSTALL_COMPRESSED="" ${MISCOPTIONS}
 | 
						|
# Copy newly generated files to staging area
 | 
						|
	${CP} ${DOCBUILDFILE} ${DOCKEYFILE} ${DOCCDROMSTAGEDIR}
 | 
						|
# Copy any files in our texts/ directory to the staging area.
 | 
						|
	${TAR} --exclude CVS -cf - -C ${.CURDIR}/texts . | \
 | 
						|
		${TAR} xf - -C ${DOCCDROMSTAGEDIR}
 | 
						|
# Make ISO images if desired.
 | 
						|
.if defined(MAKE_ISOS)
 | 
						|
	cd ${DOCROOTDIR} && ${MKISOFS} -r -J -V fbsd_doc -o ${DOCSTAGEDIR}/doc.iso ${DOCCDROMSTAGEDIR}
 | 
						|
.endif
 | 
						|
 | 
						|
.include "${DOC_PREFIX}/share/mk/doc.project.mk"
 |