Makefile revision 296705
155714Skris# $FreeBSD: head/sys/boot/i386/loader/Makefile 296705 2016-03-11 23:45:45Z bdrewery $
255714Skris
355714Skris.include <src.opts.mk>
455714SkrisMK_SSP=		no
555714Skris
655714SkrisLOADER?=	loader
755714SkrisPROG=		${LOADER}.sym
855714SkrisMAN=	
9238405SjkimINTERNALPROG=
1055714SkrisNEWVERSWHAT?=	"bootstrap loader" x86
1155714Skris
1259191Skris# architecture-specific loader code
1355714SkrisSRCS=		main.c conf.c vers.c
14238405Sjkim
15160814Ssimon# Put LOADER_FIREWIRE_SUPPORT=yes in /etc/make.conf for FireWire/dcons support
16238405Sjkim.if defined(LOADER_FIREWIRE_SUPPORT)
17160814SsimonCFLAGS+=	-DLOADER_FIREWIRE_SUPPORT
18160814SsimonLIBFIREWIRE=	${.OBJDIR}/../libfirewire/libfirewire.a
19238405Sjkim.endif
20160814Ssimon
21238405Sjkim# Set by zfsloader Makefile
22160814Ssimon.if defined(LOADER_ZFS_SUPPORT)
23238405SjkimCFLAGS+=	-DLOADER_ZFS_SUPPORT
24194206SsimonLIBZFSBOOT=	${.OBJDIR}/../../zfs/libzfsboot.a
25238405Sjkim.endif
26238405Sjkim
27238405Sjkim# Enable PXE TFTP or NFS support, not both.
28238405Sjkim.if defined(LOADER_TFTP_SUPPORT)
29238405SjkimCFLAGS+=	-DLOADER_TFTP_SUPPORT
30238405Sjkim.else
31238405SjkimCFLAGS+=	-DLOADER_NFS_SUPPORT
32238405Sjkim.endif
33238405Sjkim
34238405Sjkim# Include bcache code.
35238405SjkimHAVE_BCACHE=	yes
36238405Sjkim
37238405Sjkim# Enable PnP and ISA-PnP code.
38238405SjkimHAVE_PNP=	yes
39238405SjkimHAVE_ISABUS=	yes
40238405Sjkim
41238405Sjkim.if ${MK_FORTH} != "no"
42238405Sjkim# Enable BootForth
43238405SjkimBOOT_FORTH=	yes
44238405SjkimCFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
45238405Sjkim.if ${MACHINE_CPUARCH} == "amd64"
46238405SjkimLIBFICL=	${.OBJDIR}/../../ficl32/libficl.a
47238405Sjkim.else
48238405SjkimLIBFICL=	${.OBJDIR}/../../ficl/libficl.a
49194206Ssimon.endif
50194206Ssimon.endif
51142425Snectar
5255714Skris.if defined(LOADER_BZIP2_SUPPORT)
53238405SjkimCFLAGS+=	-DLOADER_BZIP2_SUPPORT
54238405Sjkim.endif
55238405Sjkim.if !defined(LOADER_NO_GZIP_SUPPORT)
56238405SjkimCFLAGS+=	-DLOADER_GZIP_SUPPORT
57238405Sjkim.endif
58238405Sjkim.if defined(LOADER_NANDFS_SUPPORT)
5955714SkrisCFLAGS+=	-DLOADER_NANDFS_SUPPORT
6055714Skris.endif
6155714Skris
62238405Sjkim# Always add MI sources
63238405Sjkim.PATH:		${.CURDIR}/../../common
64142425Snectar.include	"${.CURDIR}/../../common/Makefile.inc"
6555714SkrisCFLAGS+=	-I${.CURDIR}/../../common
6655714SkrisCFLAGS+=	-I.
6755714Skris
6855714SkrisCLEANFILES=	vers.c ${LOADER} ${LOADER}.bin loader.help
6955714Skris
70160814SsimonCFLAGS+=	-Wall
71160814SsimonLDFLAGS=	-static -Ttext 0x0
72109998Smarkm
7355714Skris# i386 standalone support library
7455714SkrisLIBI386=	${.OBJDIR}/../libi386/libi386.a
7555714SkrisCFLAGS+=	-I${.CURDIR}/..
7655714Skris
7755714SkrisLIBSTAND=	${.OBJDIR}/../../libstand32/libstand.a
7855714Skris
7955714Skris# BTX components
80109998SmarkmCFLAGS+=	-I${.CURDIR}/../btx/lib
81160814Ssimon
82194206Ssimon# Debug me!
83160814Ssimon#CFLAGS+=	-g
84160814Ssimon#LDFLAGS+=	-g
8555714Skris
86238405Sjkim# Pick up ../Makefile.inc early.
8755714Skris.include <bsd.init.mk>
8855714Skris
8955714Skrisvers.c:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version
90160814Ssimon	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \
9155714Skris		${NEWVERSWHAT}
9255714Skris
9355714Skris${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN}
9455714Skris	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
9555714Skris		-b ${BTXKERN} ${LOADER}.bin
9655714Skris
9755714Skris${LOADER}.bin: ${LOADER}.sym
9855714Skris	cp ${.ALLSRC} ${.TARGET}
9955714Skris	strip -R .comment -R .note ${.TARGET}
10055714Skris
10155714Skrisloader.help: help.common help.i386
10268651Skris	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
10368651Skris
104109998SmarkmFILES=	${LOADER}
105194206Ssimon# XXX INSTALLFLAGS_loader= -b
10655714SkrisFILESMODE_${LOADER}= ${BINMODE} -b
10755714Skris
10855714Skris.if !defined(LOADER_ONLY)
10955714Skris.PATH: ${.CURDIR}/../../forth
110109998Smarkm.include	"${.CURDIR}/../../forth/Makefile.inc"
111238405SjkimFILES+=	pcibios.4th
112109998Smarkm
113160814SsimonFILES+=	loader.rc menu.rc
114160814Ssimon.endif
115111147Snectar
116111147Snectar# XXX crt0.o needs to be first for pxeboot(8) to work
11755714SkrisOBJS=	${BTXCRT}
118160814Ssimon
119194206SsimonDPADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
12059191SkrisLDADD=	${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND}
12155714Skris
12255714Skris.include <bsd.prog.mk>
12355714Skris
12455714Skris.if ${MACHINE_CPUARCH} == "amd64"
12568651Skrisbeforedepend ${OBJS}: machine
12655714SkrisCLEANFILES+=	machine
12755714SkrisCFLAGS+=	-DLOADER_PREFER_AMD64
12855714Skrismachine:
12955714Skris	ln -sf ${.CURDIR}/../../../i386/include machine
13055714Skris.endif
13155714Skris