Makefile revision 185029
1185029Spjd# $FreeBSD: head/sys/boot/i386/zfsboot/Makefile 185029 2008-11-17 20:49:29Z pjd $ 2185029Spjd 3185029Spjd.PATH: ${.CURDIR}/../boot2 4185029Spjd 5185029SpjdFILES= zfsboot 6185029Spjd 7185029SpjdNM?= nm 8185029Spjd 9185029Spjd# A value of 0x80 enables LBA support. 10185029SpjdBOOT_BOOT1_FLAGS?= 0x80 11185029Spjd 12185029SpjdBOOT_COMCONSOLE_PORT?= 0x3f8 13185029SpjdBOOT_COMCONSOLE_SPEED?= 9600 14185029SpjdB2SIOFMT?= 0x3 15185029Spjd 16185029SpjdREL1= 0x700 17185029SpjdORG1= 0x7c00 18185029SpjdORG2= 0x2000 19185029Spjd 20185029SpjdCFLAGS= -Os -g \ 21185029Spjd -fno-guess-branch-probability \ 22185029Spjd -fomit-frame-pointer \ 23185029Spjd -fno-unit-at-a-time \ 24185029Spjd -mno-align-long-strings \ 25185029Spjd -mrtd \ 26185029Spjd -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 \ 27185029Spjd -DBOOT2 \ 28185029Spjd -DFLAGS=${BOOT_BOOT1_FLAGS} \ 29185029Spjd -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ 30185029Spjd -DSIOFMT=${B2SIOFMT} \ 31185029Spjd -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ 32185029Spjd -I${.CURDIR}/../../zfs \ 33185029Spjd -I${.CURDIR}/../../../cddl/boot/zfs \ 34185029Spjd -I${.CURDIR}/../btx/lib -I. \ 35185029Spjd -I${.CURDIR}/../boot2 \ 36185029Spjd -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ 37185029Spjd -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ 38185029Spjd -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ 39185029Spjd -Winline --param max-inline-insns-single=100 40185029Spjd 41185029SpjdLDFLAGS=-static -N --gc-sections 42185029Spjd 43185029Spjd# Pick up ../Makefile.inc early. 44185029Spjd.include <bsd.init.mk> 45185029Spjd 46185029SpjdCLEANFILES= zfsboot 47185029Spjd 48185029Spjdzfsboot: zfsboot1 zfsboot2 49185029Spjd cat zfsboot1 zfsboot2 > zfsboot 50185029Spjd 51185029SpjdCLEANFILES+= zfsboot1 zfsldr.out zfsldr.o 52185029Spjd 53185029Spjdzfsboot1: zfsldr.out 54185029Spjd objcopy -S -O binary zfsldr.out ${.TARGET} 55185029Spjd 56185029Spjdzfsldr.out: zfsldr.o 57185029Spjd ${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o 58185029Spjd 59185029SpjdCLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ 60185029Spjd zfsboot.o zfsboot.s zfsboot.s.tmp zfsboot.h sio.o 61185029Spjd 62185029Spjd# We currently allow 32768 bytes for zfsboot - in practice it could be 63185029Spjd# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. 64185029Spjd# 65185029SpjdBOOT2SIZE= 32768 66185029Spjd 67185029Spjdzfsboot2: zfsboot.ld 68185029Spjd @set -- `ls -l zfsboot.ld`; x=$$((${BOOT2SIZE}-$$5)); \ 69185029Spjd echo "$$x bytes available"; test $$x -ge 0 70185029Spjd dd if=zfsboot.ld of=${.TARGET} obs=${BOOT2SIZE} conv=osync 71185029Spjd 72185029Spjdzfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} 73185029Spjd btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ 74185029Spjd -o ${.TARGET} -P 1 zfsboot.bin 75185029Spjd 76185029Spjdzfsboot.ldr: 77185029Spjd cp /dev/null ${.TARGET} 78185029Spjd 79185029Spjdzfsboot.bin: zfsboot.out 80185029Spjd objcopy -S -O binary zfsboot.out ${.TARGET} 81185029Spjd 82185029Spjdzfsboot.out: ${BTXCRT} zfsboot.o sio.o 83185029Spjd ${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} 84185029Spjd 85185029Spjdzfsboot.o: zfsboot.s 86185029Spjd 87185029SpjdSRCS= zfsboot.c zfsboot.h 88185029Spjd 89185029Spjdzfsboot.s: zfsboot.c zfsboot.h ${.CURDIR}/../../zfs/zfsimpl.c 90185029Spjd ${CC} ${CFLAGS} -S -o zfsboot.s.tmp ${.CURDIR}/zfsboot.c 91185029Spjd sed -e '/align/d' -e '/nop/d' < zfsboot.s.tmp > zfsboot.s 92185029Spjd rm -f zfsboot.s.tmp 93185029Spjd 94185029Spjdzfsboot.h: zfsldr.out 95185029Spjd ${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \ 96185029Spjd { x = $$1 - ORG1; \ 97185029Spjd printf("#define XREADORG %#x\n", REL1 + x) }' \ 98185029Spjd ORG1=`printf "%d" ${ORG1}` \ 99185029Spjd REL1=`printf "%d" ${REL1}` > ${.TARGET} 100185029Spjd 101185029Spjd.if ${MACHINE_ARCH} == "amd64" 102185029Spjdbeforedepend zfsboot.s: machine 103185029SpjdCLEANFILES+= machine 104185029Spjdmachine: 105185029Spjd ln -sf ${.CURDIR}/../../../i386/include machine 106185029Spjd.endif 107185029Spjd 108185029Spjd.include <bsd.prog.mk> 109