1185029Spjd# $FreeBSD: stable/11/stand/i386/zfsboot/Makefile 360838 2020-05-09 08:55:18Z dim $ 2185029Spjd 3329140Skevans.include <bsd.init.mk> 4185029Spjd 5329140Skevans.PATH: ${BOOTSRC}/i386/boot2 ${BOOTSRC}/i386/common ${SASRC} 6329140Skevans 7185029SpjdFILES= zfsboot 8271609SavgMAN= zfsboot.8 9185029Spjd 10185029SpjdBOOT_COMCONSOLE_PORT?= 0x3f8 11185029SpjdBOOT_COMCONSOLE_SPEED?= 9600 12185029SpjdB2SIOFMT?= 0x3 13185029Spjd 14185029SpjdREL1= 0x700 15185029SpjdORG1= 0x7c00 16185029SpjdORG2= 0x2000 17185029Spjd 18329134SkevansCFLAGS+=-DBOOTPROG=\"zfsboot\" \ 19225530Savg -O1 \ 20308914Savg -DZFS -DBOOT2 \ 21185029Spjd -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ 22185029Spjd -DSIOFMT=${B2SIOFMT} \ 23185029Spjd -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ 24329140Skevans -I${LDRSRC} \ 25329140Skevans -I${BOOTSRC}/i386/common \ 26329140Skevans -I${BOOTSRC}/i386 \ 27329140Skevans -I${ZFSSRC} \ 28329175Skevans -I${SYSDIR}/crypto/skein \ 29329140Skevans -I${SYSDIR}/cddl/boot/zfs \ 30329140Skevans -I${BOOTSRC}/i386/boot2 \ 31328866Skevans -Wall -Waggregate-return -Wbad-function-cast -Wno-cast-align \ 32185029Spjd -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ 33334572Sdim -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings 34185029Spjd 35260334SdimCFLAGS.gcc+= --param max-inline-insns-single=100 36260334Sdim 37329140SkevansLD_FLAGS+=${LD_FLAGS_BIN} 38185029Spjd 39329140SkevansCLEANFILES+= zfsboot 40185029Spjd 41185029Spjdzfsboot: zfsboot1 zfsboot2 42185029Spjd cat zfsboot1 zfsboot2 > zfsboot 43185029Spjd 44185029SpjdCLEANFILES+= zfsboot1 zfsldr.out zfsldr.o 45185029Spjd 46185029Spjdzfsboot1: zfsldr.out 47280980Sdim ${OBJCOPY} -S -O binary zfsldr.out ${.TARGET} 48185029Spjd 49185029Spjdzfsldr.out: zfsldr.o 50360838Sdim ${LD} ${LD_FLAGS} -e start --defsym ORG=${ORG1} -T ${LDSCRIPT} -o ${.TARGET} zfsldr.o 51185029Spjd 52185029SpjdCLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ 53329140Skevans zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o 54185029Spjd 55329175Skevans# We currently allow 256k bytes for zfsboot - in practice it could be 56185029Spjd# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. 57185029Spjd# 58329175SkevansBOOT2SIZE= 262144 59185029Spjd 60185029Spjdzfsboot2: zfsboot.ld 61319024Sngie @set -- `ls -l ${.ALLSRC}`; x=$$((${BOOT2SIZE}-$$5)); \ 62185029Spjd echo "$$x bytes available"; test $$x -ge 0 63319024Sngie ${DD} if=${.ALLSRC} of=${.TARGET} obs=${BOOT2SIZE} conv=osync 64185029Spjd 65185029Spjdzfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} 66185029Spjd btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ 67185029Spjd -o ${.TARGET} -P 1 zfsboot.bin 68185029Spjd 69185029Spjdzfsboot.ldr: 70185029Spjd cp /dev/null ${.TARGET} 71185029Spjd 72185029Spjdzfsboot.bin: zfsboot.out 73280980Sdim ${OBJCOPY} -S -O binary zfsboot.out ${.TARGET} 74185029Spjd 75329140Skevanszfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o 76360838Sdim ${LD} ${LD_FLAGS} --defsym ORG=${ORG2} -T ${LDSCRIPT} -o ${.TARGET} ${.ALLSRC} ${LIBSA32} 77185029Spjd 78221177SjhbSRCS= zfsboot.c 79185029Spjd 80185029Spjd.include <bsd.prog.mk> 81232263Sdim 82232263Sdim# XXX: clang integrated-as doesn't grok .codeNN directives yet 83232263SdimCFLAGS.zfsldr.S= ${CLANG_NO_IAS} 84