Makefile revision 185029
1234353Sdim# $FreeBSD: head/sys/boot/i386/zfsboot/Makefile 185029 2008-11-17 20:49:29Z pjd $ 2234353Sdim 3353358Sdim.PATH: ${.CURDIR}/../boot2 4353358Sdim 5353358SdimFILES= zfsboot 6193323Sed 7193323SedNM?= nm 8193323Sed 9193323Sed# A value of 0x80 enables LBA support. 10193323SedBOOT_BOOT1_FLAGS?= 0x80 11193323Sed 12276479SdimBOOT_COMCONSOLE_PORT?= 0x3f8 13276479SdimBOOT_COMCONSOLE_SPEED?= 9600 14276479SdimB2SIOFMT?= 0x3 15288943Sdim 16276479SdimREL1= 0x700 17276479SdimORG1= 0x7c00 18276479SdimORG2= 0x2000 19276479Sdim 20276479SdimCFLAGS= -Os -g \ 21276479Sdim -fno-guess-branch-probability \ 22276479Sdim -fomit-frame-pointer \ 23276479Sdim -fno-unit-at-a-time \ 24276479Sdim -mno-align-long-strings \ 25276479Sdim -mrtd \ 26276479Sdim -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 \ 27276479Sdim -DBOOT2 \ 28276479Sdim -DFLAGS=${BOOT_BOOT1_FLAGS} \ 29276479Sdim -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ 30276479Sdim -DSIOFMT=${B2SIOFMT} \ 31276479Sdim -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ 32276479Sdim -I${.CURDIR}/../../zfs \ 33276479Sdim -I${.CURDIR}/../../../cddl/boot/zfs \ 34276479Sdim -I${.CURDIR}/../btx/lib -I. \ 35276479Sdim -I${.CURDIR}/../boot2 \ 36276479Sdim -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ 37276479Sdim -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ 38276479Sdim -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ 39276479Sdim -Winline --param max-inline-insns-single=100 40276479Sdim 41276479SdimLDFLAGS=-static -N --gc-sections 42276479Sdim 43276479Sdim# Pick up ../Makefile.inc early. 44276479Sdim.include <bsd.init.mk> 45276479Sdim 46276479SdimCLEANFILES= zfsboot 47276479Sdim 48276479Sdimzfsboot: zfsboot1 zfsboot2 49276479Sdim cat zfsboot1 zfsboot2 > zfsboot 50276479Sdim 51276479SdimCLEANFILES+= zfsboot1 zfsldr.out zfsldr.o 52276479Sdim 53276479Sdimzfsboot1: zfsldr.out 54276479Sdim objcopy -S -O binary zfsldr.out ${.TARGET} 55276479Sdim 56276479Sdimzfsldr.out: zfsldr.o 57276479Sdim ${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o 58276479Sdim 59276479SdimCLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ 60276479Sdim zfsboot.o zfsboot.s zfsboot.s.tmp zfsboot.h sio.o 61276479Sdim 62276479Sdim# We currently allow 32768 bytes for zfsboot - in practice it could be 63276479Sdim# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. 64344779Sdim# 65344779SdimBOOT2SIZE= 32768 66276479Sdim 67276479Sdimzfsboot2: zfsboot.ld 68276479Sdim @set -- `ls -l zfsboot.ld`; x=$$((${BOOT2SIZE}-$$5)); \ 69276479Sdim echo "$$x bytes available"; test $$x -ge 0 70276479Sdim dd if=zfsboot.ld of=${.TARGET} obs=${BOOT2SIZE} conv=osync 71309124Sdim 72309124Sdimzfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} 73276479Sdim btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ 74276479Sdim -o ${.TARGET} -P 1 zfsboot.bin 75276479Sdim 76276479Sdimzfsboot.ldr: 77276479Sdim cp /dev/null ${.TARGET} 78276479Sdim 79276479Sdimzfsboot.bin: zfsboot.out 80276479Sdim objcopy -S -O binary zfsboot.out ${.TARGET} 81276479Sdim 82276479Sdimzfsboot.out: ${BTXCRT} zfsboot.o sio.o 83276479Sdim ${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} 84276479Sdim 85276479Sdimzfsboot.o: zfsboot.s 86276479Sdim 87276479SdimSRCS= zfsboot.c zfsboot.h 88341825Sdim 89341825Sdimzfsboot.s: zfsboot.c zfsboot.h ${.CURDIR}/../../zfs/zfsimpl.c 90276479Sdim ${CC} ${CFLAGS} -S -o zfsboot.s.tmp ${.CURDIR}/zfsboot.c 91276479Sdim sed -e '/align/d' -e '/nop/d' < zfsboot.s.tmp > zfsboot.s 92276479Sdim rm -f zfsboot.s.tmp 93276479Sdim 94276479Sdimzfsboot.h: zfsldr.out 95276479Sdim ${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \ 96276479Sdim { x = $$1 - ORG1; \ 97276479Sdim printf("#define XREADORG %#x\n", REL1 + x) }' \ 98276479Sdim ORG1=`printf "%d" ${ORG1}` \ 99276479Sdim REL1=`printf "%d" ${REL1}` > ${.TARGET} 100276479Sdim 101276479Sdim.if ${MACHINE_ARCH} == "amd64" 102276479Sdimbeforedepend zfsboot.s: machine 103276479SdimCLEANFILES+= machine 104276479Sdimmachine: 105276479Sdim ln -sf ${.CURDIR}/../../../i386/include machine 106276479Sdim.endif 107276479Sdim 108353358Sdim.include <bsd.prog.mk> 109276479Sdim