1*ca987d46SWarner Losh# $FreeBSD$ 2*ca987d46SWarner Losh 3*ca987d46SWarner LoshHAVE_GELI=yes 4*ca987d46SWarner Losh 5*ca987d46SWarner Losh.include <bsd.init.mk> 6*ca987d46SWarner Losh 7*ca987d46SWarner Losh.PATH: ${BOOTSRC}/i386/boot2 ${BOOTSRC}/i386/common ${SASRC} 8*ca987d46SWarner Losh 9*ca987d46SWarner LoshFILES= zfsboot 10*ca987d46SWarner LoshMAN= zfsboot.8 11*ca987d46SWarner Losh 12*ca987d46SWarner LoshNM?= nm 13*ca987d46SWarner Losh 14*ca987d46SWarner LoshBOOT_COMCONSOLE_PORT?= 0x3f8 15*ca987d46SWarner LoshBOOT_COMCONSOLE_SPEED?= 9600 16*ca987d46SWarner LoshB2SIOFMT?= 0x3 17*ca987d46SWarner Losh 18*ca987d46SWarner LoshREL1= 0x700 19*ca987d46SWarner LoshORG1= 0x7c00 20*ca987d46SWarner LoshORG2= 0x2000 21*ca987d46SWarner Losh 22*ca987d46SWarner LoshCFLAGS+=-DBOOTPROG=\"zfsboot\" \ 23*ca987d46SWarner Losh -O1 \ 24*ca987d46SWarner Losh -DZFS -DBOOT2 \ 25*ca987d46SWarner Losh -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ 26*ca987d46SWarner Losh -DSIOFMT=${B2SIOFMT} \ 27*ca987d46SWarner Losh -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ 28*ca987d46SWarner Losh -I${LDRSRC} \ 29*ca987d46SWarner Losh -I${BOOTSRC}/i386/common \ 30*ca987d46SWarner Losh -I${BOOTSRC}/i386 \ 31*ca987d46SWarner Losh -I${ZFSSRC} \ 32*ca987d46SWarner Losh -I${SYSDIR}/cddl/boot/zfs \ 33*ca987d46SWarner Losh -I${BTXLIB} \ 34*ca987d46SWarner Losh -I${BOOTSRC}/i386/boot2 \ 35*ca987d46SWarner Losh -Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align \ 36*ca987d46SWarner Losh -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ 37*ca987d46SWarner Losh -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ 38*ca987d46SWarner Losh -Winline 39*ca987d46SWarner Losh 40*ca987d46SWarner LoshCFLAGS.gcc+= --param max-inline-insns-single=100 41*ca987d46SWarner Losh.if ${MACHINE} == "amd64" 42*ca987d46SWarner LoshLIBZFSBOOT=${BOOTOBJ}/zfs32/libzfsboot.a 43*ca987d46SWarner Losh.else 44*ca987d46SWarner LoshLIBZFSBOOT=${BOOTOBJ}/zfs/libzfsboot.a 45*ca987d46SWarner Losh.endif 46*ca987d46SWarner Losh 47*ca987d46SWarner LoshLD_FLAGS+=${LD_FLAGS_BIN} 48*ca987d46SWarner Losh 49*ca987d46SWarner LoshCLEANFILES+= zfsboot 50*ca987d46SWarner Losh 51*ca987d46SWarner Loshzfsboot: zfsboot1 zfsboot2 52*ca987d46SWarner Losh cat zfsboot1 zfsboot2 > zfsboot 53*ca987d46SWarner Losh 54*ca987d46SWarner LoshCLEANFILES+= zfsboot1 zfsldr.out zfsldr.o 55*ca987d46SWarner Losh 56*ca987d46SWarner Loshzfsboot1: zfsldr.out 57*ca987d46SWarner Losh ${OBJCOPY} -S -O binary zfsldr.out ${.TARGET} 58*ca987d46SWarner Losh 59*ca987d46SWarner Loshzfsldr.out: zfsldr.o 60*ca987d46SWarner Losh ${LD} ${LD_FLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o 61*ca987d46SWarner Losh 62*ca987d46SWarner LoshCLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ 63*ca987d46SWarner Losh zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o 64*ca987d46SWarner Losh 65*ca987d46SWarner Losh# We currently allow 128k bytes for zfsboot - in practice it could be 66*ca987d46SWarner Losh# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. 67*ca987d46SWarner Losh# 68*ca987d46SWarner LoshBOOT2SIZE= 131072 69*ca987d46SWarner Losh 70*ca987d46SWarner Loshzfsboot2: zfsboot.ld 71*ca987d46SWarner Losh @set -- `ls -l ${.ALLSRC}`; x=$$((${BOOT2SIZE}-$$5)); \ 72*ca987d46SWarner Losh echo "$$x bytes available"; test $$x -ge 0 73*ca987d46SWarner Losh ${DD} if=${.ALLSRC} of=${.TARGET} obs=${BOOT2SIZE} conv=osync 74*ca987d46SWarner Losh 75*ca987d46SWarner Loshzfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} 76*ca987d46SWarner Losh btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ 77*ca987d46SWarner Losh -o ${.TARGET} -P 1 zfsboot.bin 78*ca987d46SWarner Losh 79*ca987d46SWarner Loshzfsboot.ldr: 80*ca987d46SWarner Losh cp /dev/null ${.TARGET} 81*ca987d46SWarner Losh 82*ca987d46SWarner Loshzfsboot.bin: zfsboot.out 83*ca987d46SWarner Losh ${OBJCOPY} -S -O binary zfsboot.out ${.TARGET} 84*ca987d46SWarner Losh 85*ca987d46SWarner Loshzfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o 86*ca987d46SWarner Losh ${LD} ${LD_FLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBZFSBOOT} ${LIBGELIBOOT} ${LIBSA32} 87*ca987d46SWarner Losh 88*ca987d46SWarner LoshSRCS= zfsboot.c 89*ca987d46SWarner Losh 90*ca987d46SWarner Losh.include <bsd.prog.mk> 91*ca987d46SWarner Losh 92*ca987d46SWarner Losh# XXX: clang integrated-as doesn't grok .codeNN directives yet 93*ca987d46SWarner LoshCFLAGS.zfsldr.S= ${CLANG_NO_IAS} 94