197d92980SPeter Wemm# $FreeBSD$ 20202c140SRodney W. Grimes# 3*12ad0bb1SNathan Whitehorn# Makefile for building releases and release media. 4bd668f6fSPoul-Henning Kamp# 5*12ad0bb1SNathan Whitehorn# User-driven targets: 6*12ad0bb1SNathan Whitehorn# cdrom: Builds release CD-ROM media (release.iso) 7*12ad0bb1SNathan Whitehorn# ftp: Sets up FTP distribution area (ftp) 8*12ad0bb1SNathan Whitehorn# release: Build all media and FTP distribution area 9bd668f6fSPoul-Henning Kamp# 10*12ad0bb1SNathan Whitehorn# Variables affecting the build process: 11*12ad0bb1SNathan Whitehorn# WORLDDIR: location of src tree -- must have built world and default kernel 12*12ad0bb1SNathan Whitehorn# (by default, the directory above this one) 13*12ad0bb1SNathan Whitehorn# PORTSDIR: location of ports tree to distribute (default: /usr/ports) 14*12ad0bb1SNathan Whitehorn# DOCDIR: location of doc tree (default: /usr/doc) 15*12ad0bb1SNathan Whitehorn# NOPORTS: if set, do not distribute ports tree 16*12ad0bb1SNathan Whitehorn# NOSRC: if set, do not distribute source tree 17*12ad0bb1SNathan Whitehorn# NODOC: if set, do not generate release documentation 18*12ad0bb1SNathan Whitehorn# TARGET/TARGET_ARCH: architecture of built release 19b03ddec9SJohn Baldwin# 20ab0e9cdcSPoul-Henning Kamp 21*12ad0bb1SNathan WhitehornWORLDDIR?= ${.CURDIR}/.. 22*12ad0bb1SNathan WhitehornPORTSDIR?= /usr/ports 23*12ad0bb1SNathan WhitehornDOCDIR?= /usr/doc 24*12ad0bb1SNathan WhitehornRELNOTES_LANG?= en_US.ISO8859-1 25fff8eb57SJohn Baldwin 268f1f55e9SRuslan ErmilovTARGET_ARCH?= ${MACHINE_ARCH} 278f1f55e9SRuslan Ermilov.if ${TARGET_ARCH} == ${MACHINE_ARCH} 288f1f55e9SRuslan ErmilovTARGET?= ${MACHINE} 298f1f55e9SRuslan Ermilov.else 308f1f55e9SRuslan ErmilovTARGET?= ${TARGET_ARCH} 318f1f55e9SRuslan Ermilov.endif 32*12ad0bb1SNathan WhitehornIMAKE= ${MAKE} TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET} 33*12ad0bb1SNathan WhitehornDISTDIR= ${.OBJDIR}/dist 348f1f55e9SRuslan Ermilov 35*12ad0bb1SNathan Whitehorn.if !exists(${DOCDIR}) 36*12ad0bb1SNathan WhitehornNODOC= true 37*12ad0bb1SNathan Whitehorn.endif 38*12ad0bb1SNathan Whitehorn.if !exists(${PORTSDIR}) 39*12ad0bb1SNathan WhitehornNOPORTS= true 40dd1a1b3dSJoerg Wunsch.endif 41dd1a1b3dSJoerg Wunsch 42*12ad0bb1SNathan WhitehornEXTRA_PACKAGES= 436daa108fSRuslan Ermilov.if !defined(NOPORTS) 44*12ad0bb1SNathan WhitehornEXTRA_PACKAGES+= ports.txz 456daa108fSRuslan Ermilov.endif 464731faa3SJordan K. Hubbard.if !defined(NOSRC) 47*12ad0bb1SNathan WhitehornEXTRA_PACKAGES+= src.txz 482e3a1557SKen Smith.endif 49a1b193b5SJohn Baldwin.if !defined(NODOC) 50*12ad0bb1SNathan WhitehornEXTRA_PACKAGES+= reldoc 51b2200964SJohn Baldwin.endif 52b2200964SJohn Baldwin 53*12ad0bb1SNathan WhitehornRELEASE_TARGETS= ftp 54*12ad0bb1SNathan Whitehorn.if exists(${.CURDIR}/${TARGET}/mkisoimages.sh) 55*12ad0bb1SNathan WhitehornRELEASE_TARGETS+= cdrom 566daa108fSRuslan Ermilov.endif 57*12ad0bb1SNathan Whitehorn.if exists(${.CURDIR}/${TARGET}/make-memstick.sh) 58*12ad0bb1SNathan WhitehornRELEASE_TARGETS+= memstick 59e738d1eaSJohn Baldwin.endif 60e738d1eaSJohn Baldwin 618eb4e096SRuslan Ermilov.include <bsd.obj.mk> 62*12ad0bb1SNathan Whitehorn 63*12ad0bb1SNathan Whitehornbase.txz: 64*12ad0bb1SNathan Whitehorn -mkdir ${DISTDIR} 65*12ad0bb1SNathan Whitehorn cd ${WORLDDIR} && ${IMAKE} distributeworld DISTDIR=${DISTDIR} 66*12ad0bb1SNathan Whitehorn# Set up mergemaster root database 67*12ad0bb1SNathan Whitehorn sh ${.CURDIR}/scripts/mm-mtree.sh -F \ 68*12ad0bb1SNathan Whitehorn "TARGET_ARCH=${TARGET_ARCH} TARGET=${TARGET}" -D "${DISTDIR}/base" 69*12ad0bb1SNathan Whitehorn# Merge handbook, etc. from doc tree into src tree doc distribution 70*12ad0bb1SNathan Whitehorn.if !defined(NODOC) 71*12ad0bb1SNathan Whitehorn cd ${DOCDIR} && ${IMAKE} all install \ 72*12ad0bb1SNathan Whitehorn DOCDIR=${DISTDIR}/doc/usr/share/doc 'FORMATS=html html-split txt' \ 73*12ad0bb1SNathan Whitehorn INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES 74*12ad0bb1SNathan Whitehorn.endif 75*12ad0bb1SNathan Whitehorn cd ${WORLDDIR} && ${IMAKE} packageworld DISTDIR=${DISTDIR} 76*12ad0bb1SNathan Whitehorn mv ${DISTDIR}/*.txz ${.OBJDIR} 77*12ad0bb1SNathan Whitehorn 78*12ad0bb1SNathan Whitehornkernel.txz: 79*12ad0bb1SNathan Whitehorn -mkdir ${DISTDIR} 80*12ad0bb1SNathan Whitehorn cd ${WORLDDIR} && ${IMAKE} distributekernel packagekernel DISTDIR=${DISTDIR} 81*12ad0bb1SNathan Whitehorn mv ${DISTDIR}/kernel.txz ${.OBJDIR} 82*12ad0bb1SNathan Whitehorn 83*12ad0bb1SNathan Whitehornsrc.txz: 84*12ad0bb1SNathan Whitehorn -mkdir -p ${DISTDIR}/usr 85*12ad0bb1SNathan Whitehorn ln -fs ${WORLDDIR} ${DISTDIR}/usr/src 86*12ad0bb1SNathan Whitehorn cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/src.txz --exclude .svn \ 87*12ad0bb1SNathan Whitehorn --exclude CVS usr/src 88*12ad0bb1SNathan Whitehorn 89*12ad0bb1SNathan Whitehornports.txz: 90*12ad0bb1SNathan Whitehorn -mkdir -p ${DISTDIR}/usr 91*12ad0bb1SNathan Whitehorn ln -fs ${PORTSDIR} ${DISTDIR}/usr/ports 92*12ad0bb1SNathan Whitehorn cd ${DISTDIR} && tar cLvJf ${.OBJDIR}/ports.txz \ 93*12ad0bb1SNathan Whitehorn --exclude usr/ports/distfiles --exclude usr/ports/packages \ 94*12ad0bb1SNathan Whitehorn --exclude 'usr/ports/INDEX*' --exclude work usr/ports 95*12ad0bb1SNathan Whitehorn 96*12ad0bb1SNathan Whitehornreldoc: 97*12ad0bb1SNathan Whitehorn cd ${.CURDIR}/doc && ${MAKE} all install clean 'FORMATS=html txt' \ 98*12ad0bb1SNathan Whitehorn INSTALL_COMPRESSED='' URLS_ABSOLUTE=YES DOCDIR=${.OBJDIR}/rdoc 99*12ad0bb1SNathan Whitehorn -mkdir ${.OBJDIR}/reldoc 100*12ad0bb1SNathan Whitehorn.for i in hardware readme relnotes errata 101*12ad0bb1SNathan Whitehorn ln -f ${.OBJDIR}/rdoc/${RELNOTES_LANG}/${i}/article.txt \ 102*12ad0bb1SNathan Whitehorn ${.OBJDIR}/reldoc/${i:U}.TXT 103*12ad0bb1SNathan Whitehorn ln -f ${.OBJDIR}/rdoc/${RELNOTES_LANG}/${i}/article.html \ 104*12ad0bb1SNathan Whitehorn ${.OBJDIR}/reldoc/${i:U}.HTM 105*12ad0bb1SNathan Whitehorn.endfor 106*12ad0bb1SNathan Whitehorn cp ${.OBJDIR}/rdoc/${RELNOTES_LANG}/readme/docbook.css ${.OBJDIR}/reldoc 107*12ad0bb1SNathan Whitehorn 108*12ad0bb1SNathan Whitehornsystem: packagesystem 109*12ad0bb1SNathan Whitehorn# Install system 110*12ad0bb1SNathan Whitehorn -mkdir ${.OBJDIR}/release 111*12ad0bb1SNathan Whitehorn cd ${WORLDDIR} && ${IMAKE} installkernel installworld distribution DESTDIR=${.OBJDIR}/release 112*12ad0bb1SNathan Whitehorn -rm ${.OBJDIR}/release/boot/kernel/*.symbols 113*12ad0bb1SNathan Whitehorn# Copy distfiles 114*12ad0bb1SNathan Whitehorn mkdir ${.OBJDIR}/release/usr/freebsd-dist 115*12ad0bb1SNathan Whitehorn cp ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST \ 116*12ad0bb1SNathan Whitehorn ${.OBJDIR}/release/usr/freebsd-dist 117*12ad0bb1SNathan Whitehorn# Copy documentation, if generated 118*12ad0bb1SNathan Whitehorn.if !defined(NODOC) 119*12ad0bb1SNathan Whitehorn cp ${.OBJDIR}/reldoc/* ${.OBJDIR}/release 120*12ad0bb1SNathan Whitehorn.endif 121*12ad0bb1SNathan Whitehorn# Set up installation environment 122*12ad0bb1SNathan Whitehorn ln -s /tmp/bsdinstall_etc/resolv.conf ${.OBJDIR}/release/etc/resolv.conf 123*12ad0bb1SNathan Whitehorn echo sendmail_enable=\"NONE\" > ${.OBJDIR}/release/etc/rc.conf 124*12ad0bb1SNathan Whitehorn echo hostid_enable=\"NO\" >> ${.OBJDIR}/release/etc/rc.conf 125*12ad0bb1SNathan Whitehorn touch ${.OBJDIR}/release/etc/fstab 126*12ad0bb1SNathan Whitehorn cp ${.CURDIR}/rc.local ${.OBJDIR}/release/etc 127*12ad0bb1SNathan Whitehorn touch ${.OBJDIR}/${.TARGET} 128*12ad0bb1SNathan Whitehorn 129*12ad0bb1SNathan Whitehornrelease.iso: system 130*12ad0bb1SNathan Whitehorn echo kernel_options=\"-C\" > ${.OBJDIR}/release/boot/loader.conf 131*12ad0bb1SNathan Whitehorn sh ${.CURDIR}/${TARGET}/mkisoimages.sh -b FreeBSD_Install ${.OBJDIR}/release.iso ${.OBJDIR}/release 132*12ad0bb1SNathan Whitehorn rm ${.OBJDIR}/release/boot/loader.conf 133*12ad0bb1SNathan Whitehorn 134*12ad0bb1SNathan Whitehornmemstick: system 135*12ad0bb1SNathan Whitehorn sh ${.CURDIR}/${TARGET}/make-memstick.sh ${.OBJDIR}/release ${.OBJDIR}/memstick 136*12ad0bb1SNathan Whitehorn 137*12ad0bb1SNathan Whitehornpackagesystem: base.txz kernel.txz ${EXTRA_PACKAGES} 138*12ad0bb1SNathan Whitehorn sh ${.CURDIR}/scripts/make-manifest.sh ${.OBJDIR}/*.txz > ${.OBJDIR}/MANIFEST 139*12ad0bb1SNathan Whitehorn touch ${.OBJDIR}/${.TARGET} 140*12ad0bb1SNathan Whitehorn 141*12ad0bb1SNathan Whitehorncdrom: release.iso 142*12ad0bb1SNathan Whitehornftp: packagesystem 143*12ad0bb1SNathan Whitehorn rm -rf ${.OBJDIR}/ftp 144*12ad0bb1SNathan Whitehorn mkdir ${.OBJDIR}/ftp 145*12ad0bb1SNathan Whitehorn cp ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST ${.OBJDIR}/ftp 146*12ad0bb1SNathan Whitehorn 147*12ad0bb1SNathan Whitehornrelease: ${RELEASE_TARGETS} 148*12ad0bb1SNathan Whitehorn 149*12ad0bb1SNathan Whitehornclean: 150*12ad0bb1SNathan Whitehorn chflags -R noschg ${.OBJDIR} 151*12ad0bb1SNathan Whitehorn rm -rf ${.OBJDIR}/dist ${.OBJDIR}/ftp 152*12ad0bb1SNathan Whitehorn rm -f packagesystem 153*12ad0bb1SNathan Whitehorn rm -f ${.OBJDIR}/*.txz ${.OBJDIR}/MANIFEST 154*12ad0bb1SNathan Whitehorn rm -f system 155*12ad0bb1SNathan Whitehorn rm -rf ${.OBJDIR}/release 156*12ad0bb1SNathan Whitehorn rm -f ${.OBJDIR}/release.iso ${.OBJDIR}/memstick 157*12ad0bb1SNathan Whitehorn 158