Makefile revision 235156
1279264Sdelphij# $FreeBSD: head/sys/boot/i386/loader/Makefile 235156 2012-05-09 08:07:08Z avg $
2110010Smarkm
3110010Smarkm.include <bsd.own.mk>
4160819SsimonMK_SSP=		no
5110010Smarkm
6110010SmarkmLOADER?=	loader
7110010SmarkmPROG=		${LOADER}.sym
8110010SmarkmINTERNALPROG=
9110010SmarkmNEWVERSWHAT?=	"bootstrap loader" x86
10110010Smarkm
11110010Smarkm# architecture-specific loader code
12110010SmarkmSRCS=		main.c conf.c vers.c
13110010Smarkm
14110010Smarkm# Put LOADER_FIREWIRE_SUPPORT=yes in /etc/make.conf for FireWire/dcons support
15110010Smarkm.if defined(LOADER_FIREWIRE_SUPPORT)
16110010SmarkmCFLAGS+=	-DLOADER_FIREWIRE_SUPPORT
17110010SmarkmLIBFIREWIRE=	${.OBJDIR}/../libfirewire/libfirewire.a
18110010Smarkm.endif
19110010Smarkm
20215698Ssimon# Set by zfsloader Makefile
21215698Ssimon.if defined(LOADER_ZFS_SUPPORT)
22215698SsimonCFLAGS+=	-DLOADER_ZFS_SUPPORT
23215698SsimonLIBZFSBOOT=	${.OBJDIR}/../../zfs/libzfsboot.a
24215698Ssimon.endif
25110010Smarkm
26110010Smarkm# Enable PXE TFTP or NFS support, not both.
27110010Smarkm.if defined(LOADER_TFTP_SUPPORT)
28110010SmarkmCFLAGS+=	-DLOADER_TFTP_SUPPORT
29110010Smarkm.else
30110010SmarkmCFLAGS+=	-DLOADER_NFS_SUPPORT
31110010Smarkm.endif
32110010Smarkm
33110010Smarkm# Include bcache code.
34110010SmarkmHAVE_BCACHE=	yes
35110010Smarkm
36110010Smarkm# Enable PnP and ISA-PnP code.
37110010SmarkmHAVE_PNP=	yes
38110010SmarkmHAVE_ISABUS=	yes
39110010Smarkm
40110010Smarkm.if ${MK_FORTH} != "no"
41279264Sdelphij# Enable BootForth
42279264SdelphijBOOT_FORTH=	yes
43110010SmarkmCFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
44110010SmarkmLIBFICL=	${.OBJDIR}/../../ficl/libficl.a
45215698Ssimon.endif
46215698Ssimon
47215698Ssimon.if defined(LOADER_BZIP2_SUPPORT)
48215698SsimonCFLAGS+=	-DLOADER_BZIP2_SUPPORT
49160819Ssimon.endif
50215698Ssimon.if !defined(LOADER_NO_GZIP_SUPPORT)
51160819SsimonCFLAGS+=	-DLOADER_GZIP_SUPPORT
52160819Ssimon.endif
53279264Sdelphij.if !defined(LOADER_NO_GPT_SUPPORT)
54279264SdelphijCFLAGS+=	-DLOADER_GPT_SUPPORT
55279264Sdelphij.endif
56110010Smarkm
57279264Sdelphij# Always add MI sources
58279264Sdelphij.PATH:		${.CURDIR}/../../common
59279264Sdelphij.include	"${.CURDIR}/../../common/Makefile.inc"
60279264SdelphijCFLAGS+=	-I${.CURDIR}/../../common
61279264SdelphijCFLAGS+=	-I.
62279264Sdelphij
63215698SsimonCLEANFILES=	vers.c ${LOADER} ${LOADER}.bin loader.help
64279264Sdelphij
65279264SdelphijCFLAGS+=	-Wall
66279264SdelphijLDFLAGS=	-static -Ttext 0x0
67279264Sdelphij
68279264Sdelphij# i386 standalone support library
69215698SsimonLIBI386=	${.OBJDIR}/../libi386/libi386.a
70279264SdelphijCFLAGS+=	-I${.CURDIR}/..
71110010Smarkm
72110010Smarkm# BTX components
73110010SmarkmCFLAGS+=	-I${.CURDIR}/../btx/lib
74110010Smarkm
75110010Smarkm# Debug me!
76110010Smarkm#CFLAGS+=	-g
77110010Smarkm#LDFLAGS+=	-g
78110010Smarkm
79110010Smarkm# Pick up ../Makefile.inc early.
80110010Smarkm.include <bsd.init.mk>
81110010Smarkm
82110010Smarkmvers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version
83110010Smarkm	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \
84110010Smarkm		${NEWVERSWHAT}
85110010Smarkm
86110010Smarkm${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
87110010Smarkm	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
88110010Smarkm		-b ${BTXKERN} ${LOADER}.bin
89110010Smarkm
90110010Smarkm${LOADER}.bin: ${LOADER}.sym
91110010Smarkm	cp ${.ALLSRC} ${.TARGET}
92110010Smarkm	strip -R .comment -R .note ${.TARGET}
93110010Smarkm
94110010Smarkmloader.help: help.common help.i386
95110010Smarkm	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
96110010Smarkm
97110010SmarkmFILES=	${LOADER}
98110010Smarkm# XXX INSTALLFLAGS_loader= -b
99110010SmarkmFILESMODE_${LOADER}= ${BINMODE} -b
100110010Smarkm
101110010Smarkm.if !defined(LOADER_ONLY)
102110010Smarkm.PATH: ${.CURDIR}/../../forth
103110010SmarkmFILES+=	loader.help loader.4th support.4th loader.conf
104110010SmarkmFILES+= screen.4th frames.4th beastie.4th
105110010SmarkmFILES+= brand.4th check-password.4th color.4th delay.4th
106110010SmarkmFILES+= menu.4th menu-commands.4th shortcuts.4th version.4th
107110010SmarkmFILESDIR_loader.conf=	/boot/defaults
108110010Smarkm
109110010Smarkm.if !exists(${DESTDIR}/boot/loader.rc)
110110010SmarkmFILES+=	loader.rc
111110010Smarkm.endif
112110010Smarkm.if !exists(${DESTDIR}/boot/menu.rc)
113110010SmarkmFILES+= menu.rc
114110010Smarkm.endif
115110010Smarkm.endif
116110010Smarkm
117110010Smarkm# XXX crt0.o needs to be first for pxeboot(8) to work
118110010SmarkmOBJS=	${BTXCRT}
119110010Smarkm
120110010SmarkmDPADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
121110010SmarkmLDADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
122110010Smarkm
123110010Smarkm.include <bsd.prog.mk>
124110010Smarkm
125110010Smarkm.if ${MACHINE_CPUARCH} == "amd64"
126110010Smarkmbeforedepend ${OBJS}: machine
127110010SmarkmCLEANFILES+=	machine
128110010Smarkmmachine:
129110010Smarkm	ln -sf ${.CURDIR}/../../../i386/include machine
130110010Smarkm.endif
131110010Smarkm