Makefile revision 213136
1257251Skib# $FreeBSD: head/sys/boot/i386/zfsboot/Makefile 213136 2010-09-24 19:49:12Z pjd $ 2278947Skib 3257251Skib.PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../common ${.CURDIR}/../../common 4257251Skib 5257251SkibFILES= zfsboot 6257251Skib 7257251SkibNM?= nm 8257251Skib 9257251Skib# A value of 0x80 enables LBA support. 10257251SkibBOOT_BOOT1_FLAGS?= 0x80 11257251Skib 12257251SkibBOOT_COMCONSOLE_PORT?= 0x3f8 13257251SkibBOOT_COMCONSOLE_SPEED?= 9600 14257251SkibB2SIOFMT?= 0x3 15257251Skib 16257251SkibREL1= 0x700 17257251SkibORG1= 0x7c00 18257251SkibORG2= 0x2000 19257251Skib 20257251SkibCFLAGS= -DBOOTPROG=\"zfsboot\" \ 21257251Skib -Os -g \ 22257251Skib -fno-guess-branch-probability \ 23257251Skib -fomit-frame-pointer \ 24257251Skib -fno-unit-at-a-time \ 25257251Skib -mno-align-long-strings \ 26257251Skib -mrtd \ 27257251Skib -mno-mmx -mno-3dnow -mno-sse -mno-sse2 -mno-sse3 \ 28257251Skib -DBOOT2 \ 29257251Skib -DFLAGS=${BOOT_BOOT1_FLAGS} \ 30257251Skib -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ 31257251Skib -DSIOFMT=${B2SIOFMT} \ 32257251Skib -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ 33257251Skib -I${.CURDIR}/../../common \ 34257251Skib -I${.CURDIR}/../common \ 35257251Skib -I${.CURDIR}/../../zfs \ 36257251Skib -I${.CURDIR}/../../../cddl/boot/zfs \ 37257251Skib -I${.CURDIR}/../btx/lib -I. \ 38257251Skib -I${.CURDIR}/../boot2 \ 39257251Skib -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ 40257251Skib -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ 41257251Skib -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings \ 42257251Skib -Winline --param max-inline-insns-single=100 43257251Skib 44257251SkibLDFLAGS=-static -N --gc-sections 45257251Skib 46257251Skib# Pick up ../Makefile.inc early. 47257251Skib.include <bsd.init.mk> 48257251Skib 49257251SkibCLEANFILES= zfsboot 50257251Skib 51257251Skibzfsboot: zfsboot1 zfsboot2 52257251Skib cat zfsboot1 zfsboot2 > zfsboot 53257251Skib 54257251SkibCLEANFILES+= zfsboot1 zfsldr.out zfsldr.o 55257251Skib 56257251Skibzfsboot1: zfsldr.out 57257251Skib objcopy -S -O binary zfsldr.out ${.TARGET} 58257251Skib 59257251Skibzfsldr.out: zfsldr.o 60257251Skib ${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o 61257251Skib 62257251SkibCLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ 63257251Skib zfsboot.o zfsboot.s zfsboot.s.tmp xreadorg.h sio.o 64257251Skib 65257251Skib# We currently allow 32768 bytes for zfsboot - in practice it could be 66257251Skib# any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. 67257251Skib# 68257251SkibBOOT2SIZE= 32768 69257251Skib 70257251Skibzfsboot2: zfsboot.ld 71257251Skib @set -- `ls -l zfsboot.ld`; x=$$((${BOOT2SIZE}-$$5)); \ 72257251Skib echo "$$x bytes available"; test $$x -ge 0 73257251Skib dd if=zfsboot.ld of=${.TARGET} obs=${BOOT2SIZE} conv=osync 74257251Skib 75257251Skibzfsboot.ld: zfsboot.ldr zfsboot.bin ${BTXKERN} 76257251Skib btxld -v -E ${ORG2} -f bin -b ${BTXKERN} -l zfsboot.ldr \ 77257251Skib -o ${.TARGET} -P 1 zfsboot.bin 78257251Skib 79257251Skibzfsboot.ldr: 80257251Skib cp /dev/null ${.TARGET} 81257251Skib 82278947Skibzfsboot.bin: zfsboot.out 83278947Skib objcopy -S -O binary zfsboot.out ${.TARGET} 84278947Skib 85278947Skibzfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o util.o 86278947Skib ${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND} 87278947Skib 88278947Skibzfsboot.o: zfsboot.s 89278947Skib 90278947SkibSRCS= zfsboot.c xreadorg.h 91278947Skib 92278947Skibzfsboot.s: zfsboot.c xreadorg.h ${.CURDIR}/../../zfs/zfsimpl.c 93278947Skib ${CC} ${CFLAGS} -S -o zfsboot.s.tmp ${.CURDIR}/zfsboot.c 94278947Skib sed -e '/align/d' -e '/nop/d' < zfsboot.s.tmp > zfsboot.s 95278947Skib rm -f zfsboot.s.tmp 96278947Skib 97278947Skibxreadorg.h: zfsldr.out 98278947Skib ${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \ 99278947Skib { x = $$1 - ORG1; \ 100278947Skib printf("#define XREADORG %#x\n", REL1 + x) }' \ 101278947Skib ORG1=`printf "%d" ${ORG1}` \ 102278947Skib REL1=`printf "%d" ${REL1}` > ${.TARGET} 103278947Skib 104278947Skib.if ${MACHINE_CPUARCH} == "amd64" 105278947Skibbeforedepend zfsboot.s: machine 106280343SkibCLEANFILES+= machine 107278947Skibmachine: 108278947Skib ln -sf ${.CURDIR}/../../../i386/include machine 109278947Skib.endif 110278947Skib 111278947Skib.include <bsd.prog.mk> 112278947Skib