diff --git a/release/Makefile b/release/Makefile
index f26ffa9aa9..6e704fddce 100644
--- a/release/Makefile
+++ b/release/Makefile
@@ -40,6 +40,19 @@ TOUCH?=		/usr/bin/touch
 #		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}
 
@@ -65,6 +78,7 @@ INSTALL_COMPRESSED?=	zip gz
 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
@@ -94,12 +108,27 @@ release.1:
 .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} all FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
+	${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}
@@ -116,8 +145,14 @@ release.1:
 ftp.1:
 	${RM} -rf ${DOCFTPSTAGEDIR}
 	${MKDIR} ${DOCFTPSTAGEDIR}
+	${MKDIR} -p ${DOCFTPSTAGEDIR}/doc
 	cd ${DOC_PREFIX} && \
-	${MAKE} all install DOCDIR=${DOCFTPSTAGEDIR} FORMATS="${FORMATS}" INSTALL_COMPRESSED="${INSTALL_COMPRESSED}" ${MISCOPTIONS}
+	${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
@@ -128,8 +163,14 @@ ftp.1:
 cdrom.1:
 	${RM} -rf ${DOCCDROMSTAGEDIR}
 	${MKDIR} ${DOCCDROMSTAGEDIR}
+	${MKDIR} -p ${DOCCDROMSTAGEDIR}/doc
 	cd ${DOC_PREFIX} && \
-	${MAKE} all install DOCDIR=${DOCCDROMSTAGEDIR} FORMATS="${FORMATS}" INSTALL_COMPRESSED="" ${MISCOPTIONS}
+	${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.
@@ -140,4 +181,5 @@ cdrom.1:
 	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"