Makefile revision 104680
1288425Sjkim# $FreeBSD: head/sys/boot/i386/gptboot/Makefile 104680 2002-10-08 15:49:35Z phk $ 2288425Sjkim 3288425SjkimPROG= boot2 4288425SjkimNOMAN= 5288425SjkimSTRIP= 6288425SjkimBINDIR?= /boot 7288425SjkimBINMODE= 444 8288425SjkimCLEANFILES+= boot1 boot1.out boot1.o \ 9298714Sjkim boot2.ldr boot2.bin boot2.ld boot2.out boot2.o boot2.h \ 10288425Sjkim boot2.s sio.o 11288425Sjkim 12288425SjkimNM?= nm 13288425Sjkim 14288425Sjkim# A value of 0x80 enables LBA support. 15288425SjkimB1FLAGS= 0x80 16288425Sjkim 17288425SjkimBOOT_COMCONSOLE_PORT?= 0x3f8 18288425SjkimBOOT_COMCONSOLE_SPEED?= 9600 19288425SjkimB2SIOFMT?= 0x3 20288425Sjkim 21288425Sjkim.if exists(${.OBJDIR}/../btx) 22288425SjkimBTX= ${.OBJDIR}/../btx 23288425Sjkim.else 24288425SjkimBTX= ${.CURDIR}/../btx 25288425Sjkim.endif 26288425Sjkim 27288425SjkimREL1= 0x700 28288425SjkimORG1= 0x7c00 29288425SjkimORG2= 0x1000 30288425Sjkim 31288425Sjkim# Setting this to anything else gives UFS1+2 support and larger 32288425Sjkim# boot2 binary. 33288425SjkimBOOT2_UFS?= UFS1_ONLY 34288425Sjkim 35288425SjkimCFLAGS= -elf -ffreestanding -Os -fno-builtin \ 36288425Sjkim -fno-guess-branch-probability \ 37288425Sjkim -mrtd \ 38288425Sjkim -I${.CURDIR}/../../common \ 39288425Sjkim -I${.CURDIR}/../btx/lib -I. \ 40288425Sjkim -Wall -Waggregate-return -Wbad-function-cast -Wcast-align \ 41288425Sjkim -Wmissing-declarations -Wmissing-prototypes -Wnested-externs \ 42288425Sjkim -Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings 43288425Sjkim 44288425Sjkim.if ${BOOT2_UFS} == "UFS1_ONLY" 45288425SjkimCFLAGS+= -D${BOOT2_UFS} 46288425Sjkim.else 47288425Sjkim# nothing here 48288425Sjkim.endif 49288425Sjkim 50288425SjkimLDFLAGS=-nostdlib -static -N 51288425Sjkim 52288425Sjkimall: boot1 boot2 53288425Sjkim 54288425Sjkimboot1: boot1.out 55288425Sjkim objcopy -S -O binary boot1.out ${.TARGET} 56288425Sjkim 57288425Sjkimboot1.out: boot1.o 58288425Sjkim ${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} boot1.o 59288425Sjkim 60288425Sjkimboot1.o: boot1.s 61288425Sjkim ${CPP} ${CFLAGS} ${.IMPSRC} | \ 62288425Sjkim ${AS} ${AFLAGS} --defsym FLAGS=${B1FLAGS} -o ${.TARGET} 63288425Sjkim 64288425Sjkimboot2.o: boot2.c ${.CURDIR}/../../common/ufsread.c 65288425Sjkim ${CC} ${CFLAGS} -S -o boot2.s.tmp ${.IMPSRC} 66288425Sjkim sed -e '/align/d' -e '/nop/d' < boot2.s.tmp > boot2.s 67288425Sjkim rm -f boot2.s.tmp 68288425Sjkim ${AS} ${AFLAGS} -o boot2.o boot2.s 69288425Sjkim 70288425Sjkimboot2.h: boot1.out 71288425Sjkim ${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \ 72288425Sjkim { x = $$1 - ORG1; \ 73288425Sjkim printf("#define XREADORG %#x\n", REL1 + x) }' \ 74288425Sjkim ORG1=`printf "%d" ${ORG1}` \ 75288425Sjkim REL1=`printf "%d" ${REL1}` > boot2.h 76288425Sjkim 77288425Sjkimboot2: boot2.ldr boot2.bin ${BTX}/btx/btx 78288425Sjkim btxld -v -E ${ORG2} -f bin -b ${BTX}/btx/btx -l boot2.ldr \ 79288425Sjkim -o boot2.ld -P 1 boot2.bin 80288425Sjkim.if ${BOOT2_UFS} == "UFS1_ONLY" 81288425Sjkim @ls -l boot2.ld | awk '{ x = 7680 - $$5; \ 82288425Sjkim print x " bytes available"; if (x < 0) exit 1 }' 83288425Sjkim dd if=boot2.ld of=${.TARGET} obs=7680 conv=osync 2>/dev/null 84288425Sjkim.else 85288425Sjkim @ls -l boot2.ld | awk '{ x = 9728 - $$5; \ 86288425Sjkim print x " bytes available"; if (x < 0) exit 1 }' 87288425Sjkim dd if=boot2.ld of=${.TARGET} obs=9728 conv=osync 2>/dev/null 88288425Sjkim.endif 89288425Sjkim 90288425Sjkimboot2.ldr: 91288425Sjkim dd if=/dev/zero of=${.TARGET} bs=512 count=1 2>/dev/null 92288425Sjkim 93288425Sjkimboot2.bin: boot2.out 94288425Sjkim objcopy -S -O binary boot2.out ${.TARGET} 95288425Sjkim 96288425Sjkimboot2.out: boot2.o sio.o 97288425Sjkim ${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} \ 98288425Sjkim ${BTX}/lib/crt0.o ${.ALLSRC} 99288425Sjkim 100288425Sjkimboot2.o: boot2.h 101288425Sjkim 102288425Sjkimsio.o: sio.s 103288425Sjkim ${AS} ${AFLAGS} --defsym SIOPRT=${BOOT_COMCONSOLE_PORT} \ 104288425Sjkim --defsym SIOFMT=${B2SIOFMT} \ 105288425Sjkim --defsym SIOSPD=${BOOT_COMCONSOLE_SPEED} \ 106288425Sjkim ${.IMPSRC} -o ${.TARGET} 107288425Sjkim 108288425Sjkiminstall: 109288425Sjkim ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 110288425Sjkim boot1 ${DESTDIR}${BINDIR}/boot1 111288425Sjkim ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ 112288425Sjkim boot2 ${DESTDIR}${BINDIR}/boot2 113288425Sjkim 114288425Sjkim.include <bsd.prog.mk> 115288425Sjkim