Makefile revision 144563
1# $FreeBSD: head/sys/boot/pc98/boot2/Makefile 144563 2005-04-03 04:58:15Z imp $
2#
3
4PROG=	boot
5# Order is very important on the SRCS line for this prog
6SRCS=	start.S table.c boot2.S boot.c asm.S bios.S serial.S
7SRCS+=	probe_keyboard.c io.c disk.c sys.c
8
9BINMODE=	444
10CFLAGS=		-Os -mrtd \
11		-fno-guess-branch-probability \
12		-fno-unit-at-a-time \
13		-D_KERNEL -DPC98 -DBOOTWAIT=${BOOTWAIT} -DTIMEOUT=${TIMEOUT}
14CFLAGS+=	-DBOOTSEG=${BOOTSEG} -DBOOTSTACK=${BOOTSTACK}
15CFLAGS+=	${CWARNFLAGS}
16CFLAGS+=	-I${.CURDIR}/../../.. -I.
17
18# By default, if a serial port is going to be used as console, use COM1
19# (aka /dev/ttyd0).
20#BOOT_COMCONSOLE_PORT?=0x30
21BOOT_COMCONSOLE_PORT?=0x238
22BOOT_COMCONSOLE_CLK?=16
23BOOT_COMCONSOLE_MODE=0x0c
24CFLAGS+=	-DCOMCONSOLE=${BOOT_COMCONSOLE_PORT} \
25		-DCOMCONSOLE_CLK=${BOOT_COMCONSOLE_CLK} \
26		-DCOMCONSOLE_MODE=${BOOT_COMCONSOLE_MODE}
27
28# feature not implemented
29BOOT_COMCONSOLE_SPEED?=9600
30CFLAGS+=	-DCOMSPEED=${BOOT_COMCONSOLE_SPEED}
31
32# Enable code to take the default boot string from a fixed location on the
33# disk.  See nextboot(8) and README.386BSD for more info.
34#CFLAGS+=	-DNAMEBLOCK
35#CFLAGS+=	-DNAMEBLOCK_WRITEBACK
36
37# Bias the conversion from the BIOS drive number to the FreeBSD unit number
38# for hard disks.  This may be useful for people booting in a mixed IDE/SCSI
39# environment (set BOOT_HD_BIAS to the number of IDE drives).
40#CFLAGS+=	-DBOOT_HD_BIAS=1
41#
42# Details: this only applies if BOOT_HD_BIAS > 0.  If the BIOS drive number
43# for the boot drive is >= BOOT_HD_BIAS, then the boot drive is assumed to
44# be SCSI and have unit number (BIOS_drive_number - BOOT_HD_BIAS).  E.g.,
45# BOOT_HD_BIAS=1 makes BIOS drive 1 correspond to 1:da(0,a) instead of
46# 1:wd(1,a).  If `da' is given explicitly, then the drive is assumed to be
47# SCSI and have BIOS drive number (da_unit_number + BOOT_HD_BIAS).  E.g.,
48# BOOT_HD_BIAS=1 makes da(0,a) correspond to 1:da(0,a) instead of 0:da(0,a).
49
50CLEANFILES+=	boot.nohdr boot.strip boot.ldr boot1 boot2 sizetest
51LDFLAGS+=	-N -Ttext 0 -e start
52NO_SHARED=	YES
53NO_MAN=
54STRIP=
55
56# tunable timeout parameter, waiting for keypress, calibrated in ms
57BOOTWAIT?=	5000
58# tunable timeout during string input, calibrated in ms
59#TIMEOUT?=	30000
60
61# Location that boot2 is loaded at
62BOOTSEG=	0x1000
63
64# Offset in BOOTSEG for the top of the stack, keep this 16 byte aligned
65BOOTSTACK=	0xFFF0
66
67boot.nohdr:	boot
68	objcopy -S -O binary boot boot.nohdr
69	ls -l boot.nohdr
70
71boot.ldr:	boot.nohdr
72	dd if=boot.nohdr of=boot.ldr bs=8192 count=1 conv=sync
73
74boot1:		boot.nohdr
75	dd if=boot.nohdr of=boot1 bs=512 count=1
76
77boot2:		boot.nohdr
78	dd if=boot.nohdr of=boot2 bs=512 skip=1
79	@dd if=boot2 skip=14 of=sizetest 2> /dev/null
80	@if [ -s sizetest ] ; then \
81		echo "boot2 is too big" >&2 ; \
82		rm boot2 ; \
83		exit 2 ; \
84	fi
85
86all:		boot.ldr boot1 boot2
87
88install:
89	${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
90		boot.ldr ${DESTDIR}${BINDIR}/boot
91	${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \
92		boot1 boot2 ${DESTDIR}${BINDIR}
93
94# If it's not there, don't consider it a target
95.if exists(${.CURDIR}/../../../pc98/include)
96beforedepend ${OBJS}: machine
97
98machine:
99	ln -sf ${.CURDIR}/../../../pc98/include machine
100
101.endif
102
103.if exists(${.CURDIR}/../../../i386/include) 
104beforedepend ${OBJS}: i386
105
106i386:
107	ln -sf ${.CURDIR}/../../../i386/include i386
108
109.endif
110
111CLEANFILES+=	machine i386
112
113.include "${.CURDIR}/../../../conf/kern.mk"
114.include <bsd.prog.mk>
115