Makefile revision 80751
1214501Srpaulo# $FreeBSD: head/sys/boot/i386/gptboot/Makefile 80751 2001-07-31 19:50:09Z jhb $
2214501Srpaulo
3214501SrpauloPROG=		boot2
4214501SrpauloNOMAN=
5214501SrpauloSTRIP=
6214501SrpauloBINDIR?=	/boot
7252190SrpauloBINMODE=	444
8252190SrpauloCLEANFILES+=	boot1 boot1.out boot1.o \
9214501Srpaulo		boot2.ldr boot2.bin boot2.ld boot2.out boot2.o boot2.h \
10214501Srpaulo		sio.o
11214501Srpaulo
12214501SrpauloNM?=		nm
13214501Srpaulo
14214501Srpaulo# A value of 0x80 enables LBA support.
15214501SrpauloB1FLAGS=	0x80
16214501Srpaulo
17214501SrpauloBOOT_COMCONSOLE_PORT?= 0x3f8
18214501SrpauloBOOT_COMCONSOLE_SPEED?= 9600
19214501SrpauloB2SIOFMT?=	0x3
20214501Srpaulo
21214501Srpaulo.if exists(${.OBJDIR}/../btx)
22214501SrpauloBTX=	${.OBJDIR}/../btx
23214501Srpaulo.else
24252190SrpauloBTX=	${.CURDIR}/../btx
25214501Srpaulo.endif
26214501Srpaulo
27214501SrpauloORG1=	0x7c00
28214501SrpauloORG2=	0x1000
29252190Srpaulo
30214501SrpauloCFLAGS=	-elf -I${.CURDIR}/../btx/lib -I. \
31214501Srpaulo	-Os -fno-builtin -fforce-addr -fdata-sections \
32214501Srpaulo	-malign-functions=0 -malign-jumps=0 -malign-loops=0 -mrtd \
33214501Srpaulo	-mpreferred-stack-boundary=2 \
34214501Srpaulo	-Wall -Waggregate-return -Wbad-function-cast -Wcast-align \
35214501Srpaulo	-Wmissing-declarations -Wmissing-prototypes -Wnested-externs \
36252190Srpaulo	-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings
37214501Srpaulo
38214501SrpauloLDFLAGS=-nostdlib -static -N
39214501Srpaulo
40214501Srpauloall: boot1 boot2
41214501Srpaulo
42214501Srpauloboot1: boot1.out
43214501Srpaulo	objcopy -S -O binary boot1.out ${.TARGET}
44214501Srpaulo
45214501Srpauloboot1.out: boot1.o
46214501Srpaulo	${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} boot1.o
47214501Srpaulo
48214501Srpauloboot1.o: boot1.s
49214501Srpaulo	${AS} ${AFLAGS} --defsym FLAGS=${B1FLAGS} ${.IMPSRC} -o ${.TARGET}
50214501Srpaulo
51252190Srpauloboot2.h: boot1.out
52252190Srpaulo	${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \
53252190Srpaulo	 	{ x = $$1 - ORG1; printf("#define XREADORG 0x7%x\n", x) }' \
54252190Srpaulo	 	ORG1=`printf "%d" ${ORG1}` > boot2.h
55252190Srpaulo
56252190Srpauloboot2: boot2.ldr boot2.bin ${BTX}/btx/btx
57252190Srpaulo	btxld -v -E ${ORG2} -f bin -b ${BTX}/btx/btx -l boot2.ldr \
58252190Srpaulo		-o boot2.ld -P 1 boot2.bin
59252190Srpaulo	@ls -l boot2.ld | awk '{ x = 7680 - $$5; \
60252190Srpaulo		print x " bytes available"; if (x < 0) exit 1 }'
61252190Srpaulo	dd if=boot2.ld of=${.TARGET} obs=7680 conv=osync 2>/dev/null
62252190Srpaulo
63252190Srpauloboot2.ldr:
64252190Srpaulo	dd if=/dev/zero of=${.TARGET} bs=512 count=1 2>/dev/null
65214501Srpaulo
66214501Srpauloboot2.bin: boot2.out
67214501Srpaulo	objcopy -S -O binary boot2.out ${.TARGET}
68214501Srpaulo
69214501Srpauloboot2.out: boot2.o sio.o
70214501Srpaulo	${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} \
71214501Srpaulo		${BTX}/lib/crt0.o boot2.o sio.o
72214501Srpaulo
73214501Srpauloboot2.o: boot2.h
74214501Srpaulo
75214501Srpaulosio.o: sio.s
76214501Srpaulo	${AS} ${AFLAGS} --defsym SIOPRT=${BOOT_COMCONSOLE_PORT} \
77214501Srpaulo		--defsym SIOFMT=${B2SIOFMT} \
78214501Srpaulo		--defsym SIOSPD=${BOOT_COMCONSOLE_SPEED} \
79214501Srpaulo		${.IMPSRC} -o ${.TARGET}
80214501Srpaulo
81214501Srpauloinstall:
82214501Srpaulo	${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
83214501Srpaulo		boot1 ${DESTDIR}${BINDIR}/boot1
84214501Srpaulo	${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
85214501Srpaulo		boot2 ${DESTDIR}${BINDIR}/boot2
86214501Srpaulo
87214501Srpaulo.include <bsd.prog.mk>
88214501Srpaulo