188 lines
		
	
	
	
		
			6.4 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
	
		
			6.4 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.
 | |
| #
 | |
| 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.
 | |
| #
 | |
| # CVSROOT	$CVSROOT for checking out a doc/ tree.  This variable
 | |
| #		MUST be defined.
 | |
| #
 | |
| # RELEASETAG	CVS tag to use for checkouts.  If not defined,
 | |
| #		treated as a checkout at HEAD.
 | |
| #
 | |
| # 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.
 | |
| #
 | |
| # MAKE_RELNOTES	If defined, enables generation of release documentation.
 | |
| #
 | |
| # RELNOTESTAG	CVS tag to use for checkouts of the release documentation.
 | |
| #		If not defined, treated as a checkout from HEAD.
 | |
| #
 | |
| .if !defined(DOCROOTDIR)
 | |
| .error "You must define DOCROOTDIR!"
 | |
| .endif
 | |
| 
 | |
| .if !defined(CVSROOT)
 | |
| .error "You must define CVSROOT!"
 | |
| .endif
 | |
| 
 | |
| DATE!=		date +%Y%m%d
 | |
| BUILDNAME?=	${DATE}
 | |
| 
 | |
| #
 | |
| # Set defaults for FORMATS, DOC_LANG, and INSTALL_COMPRESSED.
 | |
| #
 | |
| FORMATS?=	pdf html html-split txt
 | |
| #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.
 | |
| #
 | |
| # Don't make the compatability symlinks.
 | |
| #
 | |
| #MISCOPTIONS+=	NO_JPMAN=yes RLE=yes GEN_INDEX=1 IGNORE_COMPAT_SYMLINK=YES
 | |
| MISCOPTIONS+=	NO_JPMAN=yes RLE=yes IGNORE_COMPAT_SYMLINK=YES
 | |
| 
 | |
| DOC_PREFIX=	${DOCROOTDIR}/doc
 | |
| RELNOTES_PREFIX=${DOCROOTDIR}/src/release/doc
 | |
| DOCSTAGEDIR=	${DOCROOTDIR}/R
 | |
| DOCBUILDFILE=	${DOCSTAGEDIR}/build.txt
 | |
| DOCKEYFILE=	${DOCSTAGEDIR}/pgpkeyring.txt
 | |
| 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
 | |
| .if !defined(CVSROOT)
 | |
| 	@${ECHO} "To make a release you must define CVSROOT" && 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) and checkout
 | |
| # a clean copy of the documentation.
 | |
| .if make(release)
 | |
| 	${RM} -rf ${DOCROOTDIR}
 | |
| 	${MKDIR} ${DOCROOTDIR}
 | |
| .if defined(RELEASETAG)
 | |
| 	cd ${DOCROOTDIR}; \
 | |
| 	cvs -R -d ${CVSROOT} co -r${RELEASETAG} -P doc
 | |
| .else
 | |
| 	cd ${DOCROOTDIR}; \
 | |
| 	cvs -R -d ${CVSROOT} co -P doc
 | |
| .endif
 | |
| .if defined(MAKE_RELNOTES)
 | |
| .if defined(RELNOTESTAG)
 | |
| 	cd ${DOCROOTDIR}; \
 | |
| 	cvs -R -d ${CVSROOT} co -r${RELNOTESTAG} -P src/release/doc; \
 | |
| 	cvs -R -d ${CVSROOT} co -r${RELNOTESTAG} -P src/share/man/man4
 | |
| .else
 | |
| 	cd ${DOCROOTDIR}; \
 | |
| 	cvs -R -d ${CVSROOT} co -P src/release/doc; \
 | |
| 	cvs -R -d ${CVSROOT} co -P src/share/man/man4
 | |
| .endif
 | |
| .endif
 | |
| 	${MKDIR} ${DOCSTAGEDIR}
 | |
| .endif
 | |
| # Build documents.
 | |
| 	cd ${DOC_PREFIX} && \
 | |
| 	${MAKE} FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS} all
 | |
| .if defined(MAKE_RELNOTES)
 | |
| 	cd ${RELNOTES_PREFIX} && \
 | |
| 	${MAKE} FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS} all
 | |
| .endif
 | |
| # Build PGP key ring
 | |
| 	${RM} -f ${DOCKEYFILE}
 | |
| 	cd ${DOC_PREFIX}/en_US.ISO8859-1/books/handbook && ${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}
 | |
| 	${ECHO} "Tag:		${RELEASETAG}" >> ${DOCBUILDFILE}
 | |
| .if defined(MAKE_RELNOTES)
 | |
| 	${ECHO} "Release Documentation Tag:	${RELNOTESTAG}" >> ${DOCBUILDFILE}
 | |
| .endif
 | |
| # Make FTP staging area
 | |
| ftp.1:
 | |
| 	${RM} -rf ${DOCFTPSTAGEDIR}
 | |
| 	${MKDIR} ${DOCFTPSTAGEDIR}
 | |
| 	${MKDIR} -p ${DOCFTPSTAGEDIR}/doc
 | |
| 	cd ${DOC_PREFIX} && \
 | |
| 	${MAKE} install DOCDIR=${DOCFTPSTAGEDIR}/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
 | |
| .if defined(MAKE_RELNOTES)
 | |
| 	${MKDIR} -p ${DOCFTPSTAGEDIR}/src/release/doc
 | |
| 	cd ${RELNOTES_PREFIX} && \
 | |
| 	${MAKE} install DOCDIR=${DOCFTPSTAGEDIR}/src/release/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
 | |
| .endif
 | |
| # 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}
 | |
| 	${MKDIR} -p ${DOCCDROMSTAGEDIR}/doc
 | |
| 	cd ${DOC_PREFIX} && \
 | |
| 	${MAKE} install DOCDIR=${DOCCDROMSTAGEDIR}/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="" ${MISCOPTIONS}
 | |
| .if defined(MAKE_RELNOTES)
 | |
| 	${MKDIR} -p ${DOCCDROMSTAGEDIR}/src/release/doc
 | |
| 	cd ${RELNOTES_PREFIX} && \
 | |
| 	${MAKE} install DOCDIR=${DOCCDROMSTAGEDIR}/src/release/doc FORMATS="${FORMATS}" INSTALL_COMPRESSED="" ${MISCOPTIONS}
 | |
| .endif
 | |
| # 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 FreeBSD_Docs -publisher "The FreeBSD Project.  http://www.freebsd.org/" -o ${DOCSTAGEDIR}/doc.iso ${DOCCDROMSTAGEDIR}
 | |
| .endif
 | |
| 
 | |
| .include "../share/mk/doc.common.mk"
 | |
| .include "../share/mk/doc.project.mk"
 |