1# $FreeBSD: releng/11.0/sys/boot/i386/loader/Makefile 296963 2016-03-16 23:12:19Z allanjude $
2
3.include <src.opts.mk>
4MK_SSP=		no
5
6LOADER?=	loader
7PROG=		${LOADER}.sym
8MAN=	
9INTERNALPROG=
10NEWVERSWHAT?=	"bootstrap loader" x86
11
12# architecture-specific loader code
13SRCS=		main.c conf.c vers.c
14
15# Put LOADER_FIREWIRE_SUPPORT=yes in /etc/make.conf for FireWire/dcons support
16.if defined(LOADER_FIREWIRE_SUPPORT)
17CFLAGS+=	-DLOADER_FIREWIRE_SUPPORT
18LIBFIREWIRE=	${.OBJDIR}/../libfirewire/libfirewire.a
19.endif
20
21# Set by zfsloader Makefile
22.if defined(LOADER_ZFS_SUPPORT)
23CFLAGS+=	-DLOADER_ZFS_SUPPORT
24LIBZFSBOOT=	${.OBJDIR}/../../zfs/libzfsboot.a
25.endif
26
27# Enable PXE TFTP or NFS support, not both.
28.if defined(LOADER_TFTP_SUPPORT)
29CFLAGS+=	-DLOADER_TFTP_SUPPORT
30.else
31CFLAGS+=	-DLOADER_NFS_SUPPORT
32.endif
33
34# Include bcache code.
35HAVE_BCACHE=	yes
36
37# Enable PnP and ISA-PnP code.
38HAVE_PNP=	yes
39HAVE_ISABUS=	yes
40
41.if ${MK_FORTH} != "no"
42# Enable BootForth
43BOOT_FORTH=	yes
44CFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
45.if ${MACHINE_CPUARCH} == "amd64"
46LIBFICL=	${.OBJDIR}/../../ficl32/libficl.a
47.else
48LIBFICL=	${.OBJDIR}/../../ficl/libficl.a
49.endif
50.endif
51
52.if defined(LOADER_BZIP2_SUPPORT)
53CFLAGS+=	-DLOADER_BZIP2_SUPPORT
54.endif
55.if !defined(LOADER_NO_GZIP_SUPPORT)
56CFLAGS+=	-DLOADER_GZIP_SUPPORT
57.endif
58.if defined(LOADER_NANDFS_SUPPORT)
59CFLAGS+=	-DLOADER_NANDFS_SUPPORT
60.endif
61.if !defined(LOADER_NO_GELI_SUPPORT)
62CFLAGS+=	-DLOADER_GELI_SUPPORT
63LIBGELIBOOT=	${.OBJDIR}/../../geli/libgeliboot.a
64.PATH:		${.CURDIR}/../../../opencrypto
65SRCS+=		xform_aes_xts.c
66CFLAGS+=	-I${.CURDIR}/../../.. -D_STAND
67.endif
68
69# Always add MI sources
70.PATH:		${.CURDIR}/../../common
71.include	"${.CURDIR}/../../common/Makefile.inc"
72CFLAGS+=	-I${.CURDIR}/../../common
73CFLAGS+=	-I.
74
75CLEANFILES=	vers.c ${LOADER} ${LOADER}.bin loader.help
76
77CFLAGS+=	-Wall
78LDFLAGS=	-static -Ttext 0x0
79
80# i386 standalone support library
81LIBI386=	${.OBJDIR}/../libi386/libi386.a
82CFLAGS+=	-I${.CURDIR}/..
83
84LIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
85
86# BTX components
87CFLAGS+=	-I${.CURDIR}/../btx/lib
88
89# Debug me!
90#CFLAGS+=	-g
91#LDFLAGS+=	-g
92
93# Pick up ../Makefile.inc early.
94.include <bsd.init.mk>
95
96vers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version
97	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \
98		${NEWVERSWHAT}
99
100${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
101	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
102		-b ${BTXKERN} ${LOADER}.bin
103
104${LOADER}.bin: ${LOADER}.sym
105	cp ${.ALLSRC} ${.TARGET}
106	strip -R .comment -R .note ${.TARGET}
107
108loader.help: help.common help.i386
109	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
110
111FILES=	${LOADER}
112# XXX INSTALLFLAGS_loader= -b
113FILESMODE_${LOADER}= ${BINMODE} -b
114
115.if !defined(LOADER_ONLY)
116.PATH: ${.CURDIR}/../../forth
117.include	"${.CURDIR}/../../forth/Makefile.inc"
118FILES+=	pcibios.4th
119
120FILES+=	loader.rc menu.rc
121.endif
122
123# XXX crt0.o needs to be first for pxeboot(8) to work
124OBJS=	${BTXCRT}
125
126DPADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND} ${LIBGELIBOOT}
127LDADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND} ${LIBGELIBOOT}
128
129.include <bsd.prog.mk>
130
131.if ${MACHINE_CPUARCH} == "amd64"
132beforedepend ${OBJS}: machine
133CLEANFILES+=	machine
134CFLAGS+=	-DLOADER_PREFER_AMD64
135machine: .NOMETA
136	ln -sf ${.CURDIR}/../../../i386/include machine
137.endif
138