Makefile revision 270168
1153486Sphk# $FreeBSD: head/sys/boot/i386/loader/Makefile 270168 2014-08-19 15:04:32Z bdrewery $
2153486Sphk
3153486Sphk.include <src.opts.mk>
4153486SphkMK_SSP=		no
5153486Sphk
6153486SphkLOADER?=	loader
7153486SphkPROG=		${LOADER}.sym
8153486SphkINTERNALPROG=
9153486SphkNEWVERSWHAT?=	"bootstrap loader" x86
10153486Sphk
11153486Sphk# architecture-specific loader code
12153486SphkSRCS=		main.c conf.c vers.c
13153486Sphk
14153486Sphk# Put LOADER_FIREWIRE_SUPPORT=yes in /etc/make.conf for FireWire/dcons support
15153486Sphk.if defined(LOADER_FIREWIRE_SUPPORT)
16153486SphkCFLAGS+=	-DLOADER_FIREWIRE_SUPPORT
17153486SphkLIBFIREWIRE=	${.OBJDIR}/../libfirewire/libfirewire.a
18153486Sphk.endif
19153486Sphk
20153486Sphk# Set by zfsloader Makefile
21153486Sphk.if defined(LOADER_ZFS_SUPPORT)
22153486SphkCFLAGS+=	-DLOADER_ZFS_SUPPORT
23153486SphkLIBZFSBOOT=	${.OBJDIR}/../../zfs/libzfsboot.a
24153486Sphk.endif
25153486Sphk
26153486Sphk# Enable PXE TFTP or NFS support, not both.
27153486Sphk.if defined(LOADER_TFTP_SUPPORT)
28153486SphkCFLAGS+=	-DLOADER_TFTP_SUPPORT
29153486Sphk.else
30153486SphkCFLAGS+=	-DLOADER_NFS_SUPPORT
31153486Sphk.endif
32153486Sphk
33153486Sphk# Include bcache code.
34153486SphkHAVE_BCACHE=	yes
35153486Sphk
36178721Sjhb# Enable PnP and ISA-PnP code.
37153486SphkHAVE_PNP=	yes
38153486SphkHAVE_ISABUS=	yes
39153486Sphk
40153486Sphk.if ${MK_FORTH} != "no"
41153486Sphk# Enable BootForth
42153486SphkBOOT_FORTH=	yes
43153486SphkCFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
44153486Sphk.if ${MACHINE_CPUARCH} == "amd64"
45153486SphkLIBFICL=	${.OBJDIR}/../../ficl32/libficl.a
46153486Sphk.else
47153486SphkLIBFICL=	${.OBJDIR}/../../ficl/libficl.a
48153486Sphk.endif
49178721Sjhb.endif
50153486Sphk
51205021Sjhb.if defined(LOADER_BZIP2_SUPPORT)
52153486SphkCFLAGS+=	-DLOADER_BZIP2_SUPPORT
53153486Sphk.endif
54153486Sphk.if !defined(LOADER_NO_GZIP_SUPPORT)
55153486SphkCFLAGS+=	-DLOADER_GZIP_SUPPORT
56153486Sphk.endif
57153486Sphk.if defined(LOADER_NANDFS_SUPPORT)
58153486SphkCFLAGS+=	-DLOADER_NANDFS_SUPPORT
59153486Sphk.endif
60153486Sphk
61153486Sphk# Always add MI sources
62153486Sphk.PATH:		${.CURDIR}/../../common
63153486Sphk.include	"${.CURDIR}/../../common/Makefile.inc"
64153486SphkCFLAGS+=	-I${.CURDIR}/../../common
65153486SphkCFLAGS+=	-I.
66153486Sphk
67153486SphkCLEANFILES=	vers.c ${LOADER} ${LOADER}.bin loader.help
68153486Sphk
69153486SphkCFLAGS+=	-Wall
70153486SphkLDFLAGS=	-static -Ttext 0x0
71153486Sphk
72153486Sphk# i386 standalone support library
73153486SphkLIBI386=	${.OBJDIR}/../libi386/libi386.a
74153486SphkCFLAGS+=	-I${.CURDIR}/..
75153486Sphk
76153486SphkLIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
77153486Sphk
78153486Sphk# BTX components
79153486SphkCFLAGS+=	-I${.CURDIR}/../btx/lib
80153486Sphk
81153486Sphk# Debug me!
82153486Sphk#CFLAGS+=	-g
83153486Sphk#LDFLAGS+=	-g
84153486Sphk
85153486Sphk# Pick up ../Makefile.inc early.
86153486Sphk.include <bsd.init.mk>
87153486Sphk
88153486Sphkvers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version
89153486Sphk	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \
90153486Sphk		${NEWVERSWHAT}
91153486Sphk
92153486Sphk${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
93153486Sphk	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
94153486Sphk		-b ${BTXKERN} ${LOADER}.bin
95153486Sphk
96153486Sphk${LOADER}.bin: ${LOADER}.sym
97153486Sphk	cp ${.ALLSRC} ${.TARGET}
98153486Sphk	strip -R .comment -R .note ${.TARGET}
99153486Sphk
100153486Sphkloader.help: help.common help.i386
101153486Sphk	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
102153486Sphk
103153486SphkFILES=	${LOADER}
104153486Sphk# XXX INSTALLFLAGS_loader= -b
105153486SphkFILESMODE_${LOADER}= ${BINMODE} -b
106153486Sphk
107153486Sphk.if !defined(LOADER_ONLY)
108153486Sphk.PATH: ${.CURDIR}/../../forth
109153486SphkFILES+=	loader.help loader.4th support.4th loader.conf
110153486SphkFILES+= screen.4th frames.4th beastie.4th
111153486SphkFILES+= brand.4th check-password.4th color.4th delay.4th
112153486SphkFILES+= menu.4th menu-commands.4th menusets.4th shortcuts.4th version.4th
113153486SphkFILESDIR_loader.conf=	/boot/defaults
114153486Sphk
115153486Sphk.if !exists(${DESTDIR}/boot/loader.rc)
116153486SphkFILES+=	loader.rc
117153486Sphk.endif
118153486Sphk.if !exists(${DESTDIR}/boot/menu.rc)
119153486SphkFILES+= menu.rc
120153486Sphk.endif
121153486Sphk.endif
122153486Sphk
123153486Sphk# XXX crt0.o needs to be first for pxeboot(8) to work
124153486SphkOBJS=	${BTXCRT}
125153486Sphk
126153486SphkDPADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
127153486SphkLDADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
128153486Sphk
129153486Sphk.include <bsd.prog.mk>
130153486Sphk
131153486Sphk.if ${MACHINE_CPUARCH} == "amd64"
132153486Sphkbeforedepend ${OBJS}: machine
133153486SphkCLEANFILES+=	machine
134153486SphkCFLAGS+=	-DLOADER_PREFER_AMD64
135153486Sphkmachine: .NOPATH
136153486Sphk	ln -sf ${.CURDIR}/../../../i386/include machine
137153486Sphk.endif
138153486Sphk