Makefile revision 286368
1# $FreeBSD: head/sys/boot/i386/loader/Makefile 286368 2015-08-06 16:07:27Z 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
62# Always add MI sources
63.PATH:		${.CURDIR}/../../common
64.include	"${.CURDIR}/../../common/Makefile.inc"
65CFLAGS+=	-I${.CURDIR}/../../common
66CFLAGS+=	-I.
67
68CLEANFILES=	vers.c ${LOADER} ${LOADER}.bin loader.help
69
70CFLAGS+=	-Wall
71LDFLAGS=	-static -Ttext 0x0
72
73# i386 standalone support library
74LIBI386=	${.OBJDIR}/../libi386/libi386.a
75CFLAGS+=	-I${.CURDIR}/..
76
77LIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
78
79# BTX components
80CFLAGS+=	-I${.CURDIR}/../btx/lib
81
82# Debug me!
83#CFLAGS+=	-g
84#LDFLAGS+=	-g
85
86# Pick up ../Makefile.inc early.
87.include <bsd.init.mk>
88
89vers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version
90	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \
91		${NEWVERSWHAT}
92
93${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
94	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
95		-b ${BTXKERN} ${LOADER}.bin
96
97${LOADER}.bin: ${LOADER}.sym
98	cp ${.ALLSRC} ${.TARGET}
99	strip -R .comment -R .note ${.TARGET}
100
101loader.help: help.common help.i386
102	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
103
104FILES=	${LOADER}
105# XXX INSTALLFLAGS_loader= -b
106FILESMODE_${LOADER}= ${BINMODE} -b
107
108.if !defined(LOADER_ONLY)
109.PATH: ${.CURDIR}/../../forth
110.include	"${.CURDIR}/../../forth/Makefile.inc"
111FILES+=	pcibios.4th
112
113FILES+=	loader.rc menu.rc
114.endif
115
116# XXX crt0.o needs to be first for pxeboot(8) to work
117OBJS=	${BTXCRT}
118
119DPADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
120LDADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
121
122.include <bsd.prog.mk>
123
124.if ${MACHINE_CPUARCH} == "amd64"
125beforedepend ${OBJS}: machine
126CLEANFILES+=	machine
127CFLAGS+=	-DLOADER_PREFER_AMD64
128machine: .NOPATH
129	ln -sf ${.CURDIR}/../../../i386/include machine
130.endif
131