Makefile revision 219641
1171802Sdelphij# $FreeBSD: head/release/Makefile 219641 2011-03-14 13:47:17Z nwhitehorn $ 2170808Sdelphij# 3182739Sdelphij# Makefile for building releases and release media. 4171802Sdelphij# 5170808Sdelphij# User-driven targets: 6170808Sdelphij# cdrom: Builds release CD-ROM media (release.iso) 7170808Sdelphij# ftp: Sets up FTP distribution area (ftp) 8170808Sdelphij# release: Build all media and FTP distribution area 9170808Sdelphij# 10170808Sdelphij# Variables affecting the build process: 11170808Sdelphij# WORLDDIR: location of src tree -- must have built world and default kernel 12170808Sdelphij# (by default, the directory above this one) 13170808Sdelphij# PORTSDIR: location of ports tree to distribute (default: /usr/ports) 14170808Sdelphij# DOCDIR: location of doc tree (default: /usr/doc) 15170808Sdelphij# NOPORTS: if set, do not distribute ports tree 16170808Sdelphij# NOSRC: if set, do not distribute source tree 17170808Sdelphij# NODOC: if set, do not generate release documentation 18170808Sdelphij# TARGET/TARGET_ARCH: architecture of built release 19170808Sdelphij# 20170808Sdelphij 21170808SdelphijWORLDDIR?= ${.CURDIR}/.. 22170808SdelphijPORTSDIR?= /usr/ports 23170808SdelphijDOCDIR?= /usr/doc 24170808SdelphijRELNOTES_LANG?= en_US.ISO8859-1 25170808Sdelphij 26170808SdelphijTARGET_ARCH?= ${MACHINE_ARCH} 27170808Sdelphij.if ${TARGET_ARCH} == ${MACHINE_ARCH} 28170808SdelphijTARGET?= ${MACHINE} 29170808Sdelphij.else 30170808SdelphijTARGET?= ${TARGET_ARCH} 31170808Sdelphij.endif 32170808SdelphijIMAKE= ${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET} 33170808SdelphijDISTDIR= ${.OBJDIR}/dist 34170808Sdelphij 35170808Sdelphij.if !exists(${DOCDIR}) 36170808SdelphijNODOC= true 37170808Sdelphij.endif 38170808Sdelphij.if !exists(${PORTSDIR}) 39170808SdelphijNOPORTS= true 40170808Sdelphij.endif 41170808Sdelphij 42170808SdelphijEXTRA_PACKAGES= 43170808Sdelphij.if !defined(NOPORTS) 44170808SdelphijEXTRA_PACKAGES+= ports.txz 45197850Sdelphij.endif 46197850Sdelphij.if !defined(NOSRC) 47170808SdelphijEXTRA_PACKAGES+= src.txz 48170808Sdelphij.endif 49170808Sdelphij.if !defined(NODOC) 50170808SdelphijEXTRA_PACKAGES+= reldoc 51170808Sdelphij.endif 52170808Sdelphij 53170808SdelphijRELEASE_TARGETS= ftp 54170808Sdelphij.if exists(${.CURDIR}/${TARGET}/mkisoimages.sh) 55170808SdelphijRELEASE_TARGETS+= cdrom 56188929Salc.endif 57170808Sdelphij.if exists(${.CURDIR}/${TARGET}/make-memstick.sh) 58170808SdelphijRELEASE_TARGETS+= memstick 59170808Sdelphij.endif 60170808Sdelphij 61170808Sdelphij.include <bsd.obj.mk> 62170808Sdelphij 63170808Sdelphijbase.txz: 64170808Sdelphij -mkdir ${DISTDIR} 65171069Sdelphij cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${DISTDIR} 66170808Sdelphij# Set up mergemaster root database 67170808Sdelphij sh ${.CURDIR}/scripts/mm-mtree.sh -F \ 68170808Sdelphij "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" -D "${DISTDIR}/base" 69170808Sdelphij# Merge handbook, etc. from doc tree into src tree doc distribution 70170808Sdelphij.if !defined(NODOC) 71170808Sdelphij cd ${DOCDIR} && ${IMAKE} all install \ 72170808Sdelphij DOCDIR=${DISTDIR}/doc/usr/share/doc 'FORMATS=html html-split txt' \ 73170808Sdelphij INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES 74170808Sdelphij.endif 75170808Sdelphij cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${DISTDIR} 76170808Sdelphij mv ${DISTDIR}/*.txz ${.OBJDIR} 77170808Sdelphij 78170808Sdelphijkernel.txz: 79170808Sdelphij -mkdir ${DISTDIR} 80191990Sattilio cd ${WORLDDIR} && ${IMAKE} distributekernel packagekernel DISTDIR=${DISTDIR} 81170808Sdelphij mv ${DISTDIR}/kernel.txz ${.OBJDIR} 82170808Sdelphij 83170808Sdelphijsrc.txz: 84170808Sdelphij -mkdir -p ${DISTDIR}/usr 85170808Sdelphij ln -fs ${WORLDDIR} ${DISTDIR}/usr/src 86170808Sdelphij cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/src.txz --exclude .svn \ 87170808Sdelphij --exclude CVS usr/src 88170808Sdelphij 89197953Sdelphijports.txz: 90197953Sdelphij -mkdir -p ${DISTDIR}/usr 91197953Sdelphij ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports 92197953Sdelphij cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/ports.txz \ 93197953Sdelphij --exclude usr/ports/distfiles --exclude usr/ports/packages \ 94170808Sdelphij --exclude 'usr/ports/INDEX*' --exclude work usr/ports 95171799Sdelphij 96171799Sdelphijreldoc: 97176559Sattilio cd ${.CURDIR}/doc && ${MAKE} all install clean 'FORMATS=html txt' \ 98171802Sdelphij INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES DOCDIR=${.OBJDIR}/rdoc 99175294Sattilio -mkdir ${.OBJDIR}/reldoc 100170808Sdelphij.for i in hardware readme relnotes errata 101171799Sdelphij ln -f ${.OBJDIR}/rdoc/${RELNOTES_LANG}/${i}/article.txt \ 102191990Sattilio ${.OBJDIR}/reldoc/${i:U}.TXT 103170808Sdelphij ln -f ${.OBJDIR}/rdoc/${RELNOTES_LANG}/${i}/article.html \ 104175202Sattilio ${.OBJDIR}/reldoc/${i:U}.HTM 105171802Sdelphij.endfor 106170808Sdelphij cp ${.OBJDIR}/rdoc/${RELNOTES_LANG}/readme/docbook.css ${.OBJDIR}/reldoc 107170808Sdelphij 108170808Sdelphijsystem: packagesystem 109170808Sdelphij# Install system 110170808Sdelphij -mkdir ${.OBJDIR}/release 111188318Skib cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${.OBJDIR}/release 112211598Sed -rm ${.OBJDIR}/release/boot/kernel/*.symbols 113211598Sed# Copy distfiles 114211598Sed mkdir ${.OBJDIR}/release/usr/freebsd-dist 115170808Sdelphij cp ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST \ 116170808Sdelphij ${.OBJDIR}/release/usr/freebsd-dist 117170808Sdelphij# Copy documentation, if generated 118170808Sdelphij.if !defined(NODOC) 119170808Sdelphij cp ${.OBJDIR}/reldoc/* ${.OBJDIR}/release 120170808Sdelphij.endif 121211598Sed# Set up installation environment 122211598Sed ln -s /tmp/bsdinstall_etc/resolv.conf ${.OBJDIR}/release/etc/resolv.conf 123211598Sed echo sendmail_enable=\"NONE\" > ${.OBJDIR}/release/etc/rc.conf 124211598Sed echo hostid_enable=\"NO\" >> ${.OBJDIR}/release/etc/rc.conf 125170808Sdelphij touch ${.OBJDIR}/release/etc/fstab 126170808Sdelphij cp ${.CURDIR}/rc.local ${.OBJDIR}/release/etc 127170808Sdelphij touch ${.OBJDIR}/${.TARGET} 128170808Sdelphij 129170808Sdelphijrelease.iso: system 130170808Sdelphij echo kernel_options=\"-C\" > ${.OBJDIR}/release/boot/loader.conf 131170808Sdelphij sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.OBJDIR}/release.iso ${.OBJDIR}/release 132170808Sdelphij rm ${.OBJDIR}/release/boot/loader.conf 133170808Sdelphij 134170808Sdelphijmemstick: system 135170808Sdelphij sh ${.CURDIR}/${TARGET}/make-memstick.sh ${.OBJDIR}/release ${.OBJDIR}/memstick 136170808Sdelphij 137170808Sdelphijpackagesystem: base.txz kernel.txz ${EXTRA_PACKAGES} 138170808Sdelphij sh ${.CURDIR}/scripts/make-manifest.sh ${.OBJDIR}/*.txz > ${.OBJDIR}/MANIFEST 139170808Sdelphij touch ${.OBJDIR}/${.TARGET} 140170808Sdelphij 141170808Sdelphijcdrom: release.iso 142170808Sdelphijftp: packagesystem 143170808Sdelphij rm -rf ${.OBJDIR}/ftp 144170808Sdelphij mkdir ${.OBJDIR}/ftp 145170808Sdelphij cp ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST ${.OBJDIR}/ftp 146170808Sdelphij 147170808Sdelphijrelease: ${RELEASE_TARGETS} 148170808Sdelphij 149170808Sdelphijclean: 150170808Sdelphij chflags -R noschg ${.OBJDIR} 151170808Sdelphij rm -rf ${.OBJDIR}/dist ${.OBJDIR}/ftp 152170808Sdelphij rm -f packagesystem 153170808Sdelphij rm -f ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST 154170808Sdelphij rm -f system 155170808Sdelphij rm -rf ${.OBJDIR}/release 156170808Sdelphij rm -f ${.OBJDIR}/release.iso ${.OBJDIR}/memstick 157170808Sdelphij 158170808Sdelphij