1# $MirOS: src/distrib/common/Makefile,v 1.65 2014/01/04 20:24:57 tg Exp $ 2 3.include <bsd.own.mk> 4 5# common variables 6REALOBJDIR!= realpath ${.OBJDIR} 7TOPDIR?= ${.CURDIR}/.. 8SYSDIR= ${TOPDIR}/../sys 9MACHCONF?= ${MACHINE} 10 11.if exists(${TOPDIR}/common/Makefile.${MACHCONF}) 12. include "${TOPDIR}/common/Makefile.${MACHCONF}" 13.endif 14 15# compiler options 16.if ${COPTS:M-O*:N-Os} 17COPTS+= -Os 18.endif 19.if !${COPTS:M-Os} 20COPTS+= -Os 21.endif 22CFLAGS+= ${CDIAGFLAGS} ${COPTS} 23HOSTCFLAGS?= ${CFLAGS} 24 25# temporary mounts 26WRKDIR= ${REALOBJDIR}/tmpdata 27TMPMOUNT= ${REALOBJDIR}/tmpmnt 28VND?= svnd0 29VND_DEV= /dev/${VND}a 30VND_RDEV= /dev/r${VND}a 31VND_CRDEV= /dev/r${VND}c 32RAWLABEL?= -r 33 34# tools selection 35RDSETROOT?= elfrdsetroot 36CRUNCHGENOPTS?= -E 37STRIP?= strip 38STRIP_CBIN?= --strip-all -R .comment -R .eh_frame 39STRIP_KERNEL?= --strip-all -R .comment -R .eh_frame 40 41# crunched binary and ramdisk (miniroot filesystem) 42CBIN?= instbin 43LISTS?= ${TOPDIR}/common/listbeg.${MACHCONF} ${TOPDIR}/common/list \ 44 ${TOPDIR}/common/listend.${MACHCONF} 45.for _i in ${LISTADDS} 46LISTS+= ${TOPDIR}/common/listadd.${_i} 47.endfor 48MTREE?= ${TOPDIR}/common/mtree.conf 49IMAGE?= ramdisk${OSrev}.fs 50IMAGESIZE?= 3584 51IMAGEOPTS?= minfree=0,optimization=space,bsize=4096,fsize=512,density=3072 52IMAGETYPE?= rdroot 53IMAGE_PREP?= @: 54 55# kernel (build one, create bsd.rd) 56RAMDISK?= RAMDISK 57KERNEL_BUILD?= Yes 58KERNEL_BSDRD?= Yes 59BSDRD_COMPR?= gzip -vn9 60AOUT_BSDRD?= No 61RAMDISK_PREP?= @: 62 63.if ${KERNEL_BUILD:L} != "no" 64. include "${TOPDIR}/common/Makefile.kernel" 65.endif 66 67# floppy (set to no to disable) 68FLOPPY?= floppy${OSrev}.fs 69FLOPPYSIZE?= 2880 70FLOPPYGEOM?= 80:2:18 71FLOPPYFILES?= boot bsd 72BOOT?= ${DESTDIR}/usr/mdec/boot 73BOOT_TAR?= ${DESTDIR}/usr/mdec/boot.fd 74BOOTXX?= ${DESTDIR}/usr/mdec/bootxx 75BOOTXX_TAR?= cat ${DESTDIR}/usr/mdec/bootxx.tar - 76BOOTSH?= ${DESTDIR}/usr/mdec/bootxx.sh 77 78# compact disc image (set to no to disable) 79CDROM?= cdrom${OSrev}.iso 80CDROM_OPTS+= applicationid=NetBSD_makefs 81CDROM_OPTS+= label=MirOS~v${OSrev}~BSD/${MACHINE}~boot-only~CD 82CDROM_OPTS+= no-trailing-padding 83CDROM_OPTS+= preparer=MirBSD_and_its_contributors 84CDROM_OPTS+= publisher=Copyright_\<c\>_2002=2014_The_MirOS_Project 85CDROM_OPTS+= rockridge 86CDROM_OPTS+= rr-squash 87CDROM_OPTS+= volumeid=$$(uname -slm | tr -- '- \#' :_):Setup 88#CDROM_OPTS+= v=1 89 90#--- 91 92.if ${KERNEL_BSDRD:L} == "yes" 93_RD_KERNELS= bsd.rd 94. if ${AOUT_BSDRD:L} != "no" 95_RD_KERNELS+= bsd.rd.net 96. endif 97.endif 98 99ALL_TGTS= ${IMAGE} ${_RD_KERNELS} ${FLOPPY:S/^no$//} ${CDROM:S/^no$//} 100INST_FILES?= ${_RD_KERNELS} ${FLOPPY:S/^no$//} ${CDROM:S/^no$//} 101_RD_TARGETS?= ${_RD_KERNELS} ${FLOPPY:S/^no$//} ${CDROM:S/^no$//} 102 103all: ${ALL_TGTS} 104 105install: 106.for _i in ${INST_FILES} 107 ${INSTALL} -c -o ${SHAREOWN} -g ${SHAREGRP} -m ${SHAREMODE} \ 108 ${_i} ${DESTDIR}/snapshot/ 109.endfor 110 111unconfig: 112 -${SUDO} umount -f ${VND_DEV} 113 -${SUDO} vnconfig -u ${VND} 114 -${SUDO} rm -rf ${TMPMOUNT} ${WRKDIR} ${IMAGE} 115 116cleannobsd: unconfig 117 rm -f *core ${CBIN} ${CBIN}.{cache,conf,mk,unstripped} ${IMAGE} \ 118 ${RDSETROOT} *.c *.o *.lo *.loo *~ bsd.uc ${_RD_TARGETS} \ 119 ${CLEANFILES} 120 121clean cleandir: cleannobsd 122 rm -f bsd 123.if ${KERNEL_BUILD:L} != "no" 124 rm -rf build 125.endif 126 127${RDSETROOT}: ${TOPDIR}/common/${RDSETROOT}.c 128 ${HOSTCC} ${HOSTCFLAGS} -DDEBUG -o $@ $> 129 130${CBIN}.conf: ${LISTS} 131 awk -f ${TOPDIR}/common/makeconf.awk CBIN=${CBIN} ${LISTS} >$@ 132 133${CBIN}.mk ${CBIN}.cache ${CBIN}.c: ${CBIN}.conf 134 crunchgen ${CRUNCHGENOPTS} -D ${BSDSRCDIR} -L ${DESTDIR}/usr/lib \ 135 -c ${CBIN}.c -e ${CBIN} -m ${CBIN}.mk ${CBIN}.conf 136 137${CBIN}: ${CBIN}.mk ${CBIN}.cache ${CBIN}.c 138 ${MAKE} -f ${CBIN}.mk all 139 cp ${CBIN} ${CBIN}.unstripped 140 ${STRIP} ${STRIP_CBIN} ${CBIN} 141 142${IMAGE}: ${CBIN} 143 test ! -e ${TMPMOUNT} || (cd ${.CURDIR}; ${MAKE} unconfig) 144 ${SUDO} rm -rf ${WRKDIR} 145 ${SUDO} mkdir -p ${WRKDIR} 146 ${SUDO} mtree -Udef ${MTREE} -p ${WRKDIR}/ 147 OBJDIR=${REALOBJDIR:Q} TARGDIR=${WRKDIR:Q} TOPDIR=${TOPDIR:Q} \ 148 DESTDIR=${DESTDIR:Q} BSDOBJDIR=${BSDOBJDIR:Q} \ 149 ${SUDO} ${SHELL} ${TOPDIR}/common/runlist.sh ${LISTS} 150 ${SUDO} rm ${WRKDIR}/${CBIN} 151 ${SUDO} makefs -s ${IMAGESIZE}b -o ${IMAGEOPTS} ${IMAGE} ${WRKDIR} 152.ifndef IMAGE_NO_ARND 153 ${SUDO} dd if=/dev/arandom bs=128 count=1 of=$@ conv=notrunc 154.endif 155 sync 156 ${SUDO} mkdir -p ${TMPMOUNT} 157 ${SUDO} vnconfig -v -c ${VND} ${IMAGE} 158 ${SUDO} disklabel -w ${RAWLABEL} ${VND} ${IMAGETYPE} 159 ${SUDO} mount -r ${VND_DEV} ${TMPMOUNT} 160 ${IMAGE_PREP} 161 @echo "" 162 @df -i ${TMPMOUNT} 163 @echo "" 164 ${SUDO} umount ${TMPMOUNT} 165 ${SUDO} fsck -fy ${VND_RDEV} 166 ${SUDO} vnconfig -v -u ${VND} 167 ${SUDO} rm -rf ${TMPMOUNT} ${WRKDIR} 168 169bsd.uc: bsd ${IMAGE} ${RDSETROOT} 170 -rm -f $@ $@~ 171 gzip -fd <bsd >$@~ 172 ${RAMDISK_PREP} 173 ${REALOBJDIR}/${RDSETROOT} $@~ <${IMAGE} 174 mv -f $@~ $@ 175 176bsd.rd: bsd.uc 177 cp -f bsd.uc bsd.uc~ 178 config -ef bsd.uc~ <<<"quit" 179 ${BSDRD_COMPR} <bsd.uc~ >$@ 180 -rm -f bsd.uc~ 181 182bsd.rd.net: bsd.uc 183 cp -f bsd.uc bsd.uc~ 184 config -ef bsd.uc~ <<<"quit" 185 ${STRIP} ${STRIP_KERNEL} bsd.uc~ 186 elf2aout bsd.uc~ $@ -b 187 -rm -f bsd.uc~ 188 189FLOPPY_BOOTCFG?=@: 190${FLOPPY}: bsd.uc 191 test ! -e ${TMPMOUNT} || (cd ${.CURDIR}; ${MAKE} unconfig) 192 ${SUDO} rm -rf ${WRKDIR} e~ 193 mkdir -p ${WRKDIR} 194 cp -f bsd.uc bsd.uc~ 195 config -ef bsd.uc~ <<<"quit" 196 ${STRIP} ${STRIP_KERNEL} bsd.uc~ 197 gzip -vn9 <bsd.uc~ >${WRKDIR}/bsd 198 -rm -f bsd.uc~ 199 ${FLOPPY_BOOTCFG} 200 dd if=/dev/zero of=${FLOPPY}~ count=${FLOPPYSIZE} 201 (tar -b 1 -M dist -cf - -C ${WRKDIR} ${FLOPPYFILES} || touch e~) | \ 202 ${BOOTXX_TAR} | dd of=${FLOPPY}~ conv=notrunc 203 @[[ ! -e e~ ]] 204 (( $$(stat -f %z ${FLOPPY}~) == 512 * ${FLOPPYSIZE} )) 205 mv -f ${FLOPPY}~ ${FLOPPY} 206 rm -rf ${WRKDIR} e~ 207 208${CDROM}: cdrom-prepare cdrom-mdcopy cdrom-generate cdrom-mdboot 209 210cdrom-prepare: bsd.uc 211 ${SUDO} rm -rf ${WRKDIR} 212 mkdir -p ${WRKDIR}/v${OSrev}/${MACHINE} 213 @if [[ -e ${TOPDIR}/contrib ]]; then \ 214 echo Integrating contrib dir; \ 215 mkdir ${WRKDIR}/contrib; \ 216 cd ${TOPDIR}/contrib; \ 217 pax -v -rw -pe . ${WRKDIR}/contrib/; \ 218 fi 219 cp ${BOOT} ${WRKDIR}/b_${MACHINE}.ldr 220.if exists(${TOPDIR}/common/boot.cfg.${MACHINE}) 221 cp ${TOPDIR}/common/boot.cfg.${MACHINE} ${WRKDIR}/boot.cfg 222.endif 223.if defined(LGRUBCFG) 224 mkdir -p ${WRKDIR}/boot/grub 225 cp ${TOPDIR}/common/${LGRUBCFG}/loopback.* ${WRKDIR}/boot/grub/ 226.endif 227 cp ${BOOTSH} ${WRKDIR}/v${OSrev}/${MACHINE}/ 228 cp -f bsd.uc bsd.uc~ 229 config -ef bsd.uc~ <<<"quit" 230 ${BSDRD_COMPR} <bsd.uc~ >${WRKDIR}/v${OSrev}/${MACHINE}/bsd.rd 231 -rm -f bsd.uc~ 232 cp ${TOPDIR}/common/00-README ${WRKDIR}/ 233 chmod -R u+w ${WRKDIR} 234 235cdrom-generate: 236 chmod -R u+w ${WRKDIR} 237 makefs -t cd9660 -o "$$(print -r -- ${CDROM_OPTS} | tr ' ~' ', ')" \ 238 ${CDROM} ${WRKDIR} 239 # pad the ISO with ]0;256K] NUL bytes, ie. for 240 # a geometry of 16 heads, 32 sectors per track 241 dd if=/dev/zero count=1 bs=$$((# (512 * 32 * 16) - \ 242 ($$(stat -f %z ${CDROM}) % (512 * 32 * 16)) )) 2>&- >>${CDROM} 243 244.include <bsd.obj.mk> 245.include <bsd.subdir.mk> 246