aboutsummaryrefslogtreecommitdiff
path: root/release/Makefile
blob: 4321d91bf4bb80e24a4beb6fdf9e26d7333dceea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
# $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"