Makefile revision 102556
148730Siwasaki# $FreeBSD: head/sys/boot/i386/loader/Makefile 102556 2002-08-29 02:02:28Z peter $
248730Siwasaki
3214907SjoelBASE=		loader
448730SiwasakiPROG=		${BASE}
548730SiwasakiSTRIP=
648730SiwasakiNEWVERSWHAT=	"bootstrap loader" i386
748730SiwasakiBINDIR?=	/boot
848730SiwasakiINSTALLFLAGS=	-b
948730Siwasaki
1048730Siwasaki# architecture-specific loader code
1148730SiwasakiSRCS=		main.c conf.c
1248730Siwasaki
1348730SiwasakiCFLAGS+=	-ffreestanding
1448730Siwasaki# Enable PXE TFTP or NFS support, not both.
1548730Siwasaki.if defined(LOADER_TFTP_SUPPORT)
1648730SiwasakiCFLAGS+=	-DLOADER_TFTP_SUPPORT
1748730Siwasaki.else
1848730SiwasakiCFLAGS+=	-DLOADER_NFS_SUPPORT
1948730Siwasaki.endif
2048730Siwasaki
2148730Siwasaki# Enable PnP and ISA-PnP code.
2248730SiwasakiHAVE_PNP=	yes
2348730SiwasakiHAVE_ISABUS=	yes
2448730Siwasaki
2548730Siwasaki.if !defined(NOFORTH)
2648730Siwasaki# Enable BootForth
2748730SiwasakiBOOT_FORTH=	yes
2848730SiwasakiCFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
2950479Speter.if exists(${.OBJDIR}/../../ficl/libficl.a)
3048730SiwasakiLIBFICL=	${.OBJDIR}/../../ficl/libficl.a
3148730Siwasaki.else
32124786SruLIBFICL=	${.CURDIR}/../../ficl/libficl.a
3348730Siwasaki.endif
3448730Siwasaki.endif
3548730Siwasaki
3648730Siwasaki.if defined(LOADER_BZIP2_SUPPORT)
3748730SiwasakiCFLAGS+=	-DLOADER_BZIP2_SUPPORT
3868965Sru.endif
3948730Siwasaki.if !defined(LOADER_NO_GZIP_SUPPORT)
4048730SiwasakiCFLAGS+=	-DLOADER_GZIP_SUPPORT
41116666Smdodd.endif
4248730Siwasaki
4348730Siwasaki# Always add MI sources 
4499968Scharnier.PATH:		${.CURDIR}/../../common
4599968Scharnier.include	<${.CURDIR}/../../common/Makefile.inc>
4699968ScharnierCFLAGS+=	-I${.CURDIR}/../../common
4748730SiwasakiCFLAGS+=	-I${.CURDIR}/../../.. -I.
4881251Sru
4948730SiwasakiCLEANFILES+=	vers.c vers.o ${BASE}.list ${BASE}.bin ${BASE}.sym ${BASE}.help
50131500Sru
51131500SruCFLAGS+=	-Wall
5248730SiwasakiLDFLAGS=	-nostdlib -static -Ttext 0x0
5368965Sru
54131500Sru# i386 standalone support library
55131500SruLIBI386=	${.OBJDIR}/../libi386/libi386.a
5668965SruCFLAGS+=	-I${.CURDIR}/..
5748730Siwasaki
5848730Siwasaki# where to get libstand from
5968965Sru#XXX need a better way to do this
6079755SddLIBSTAND=	${.CURDIR}/../../../../lib/libstand/libstand.a
6179755Sdd.if !exists(${LIBSTAND})
6248730SiwasakiLIBSTAND=	${.OBJDIR}/../../../../lib/libstand/libstand.a
6379755Sdd.if !exists(${LIBSTAND})
6448730SiwasakiLIBSTAND=	-lstand
6548730Siwasaki.endif
6699968Scharnier.endif
6799968ScharnierCFLAGS+=	-I${.CURDIR}/../../../../lib/libstand/
6899968Scharnier
69233522Sjoel# BTX components
7048730Siwasaki.if exists(${.OBJDIR}/../btx)
71131500SruBTXDIR=		${.OBJDIR}/../btx
72131500Sru.else
7368965SruBTXDIR=		${.CURDIR}/../btx
7448730Siwasaki.endif
7548730SiwasakiBTXLDR=		${BTXDIR}/btxldr/btxldr
7648730SiwasakiBTXKERN=	${BTXDIR}/btx/btx
7748730SiwasakiBTXCRT=		${BTXDIR}/lib/crt0.o
7848730SiwasakiCFLAGS+=	-I${.CURDIR}/../btx/lib
7948730Siwasaki
80116666Smdodd# BTX is expecting ELF components
81116666SmdoddCFLAGS+=	-elf
82116666Smdodd
83116666Smdodd# Debug me!
84141846Sru#CFLAGS+=	-g
85116666Smdodd#LDFLAGS+=	-g
86116666Smdodd
8748730Siwasakivers.o:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
8848730Siwasaki	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
8948730Siwasaki	${CC} -c vers.c
9048730Siwasaki
9148730Siwasaki${BASE}: ${BASE}.bin ${BTXLDR} ${BTXKERN} ${BTXCRT}
9268965Sru	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
9348730Siwasaki		-b ${BTXKERN} ${BASE}.bin
9481251Sru#	/usr/bin/kzip ${.TARGET}
9581251Sru#	mv ${.TARGET}.kz ${.TARGET}
9648730Siwasaki
9748730Siwasaki${BASE}.bin: ${BASE}.sym
9848730Siwasaki	cp ${.ALLSRC} ${.TARGET}
9948730Siwasaki	strip -R .comment -R .note ${.TARGET}
10079755Sdd
10168965Sru${BASE}.help: help.common help.i386
102208075Suqs	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
103208075Suqs
104208075Suqs.PATH: ${.CURDIR}/../../forth 
10548730SiwasakiFILES=	${BASE}.help loader.4th support.4th loader.conf
10648730SiwasakiFILESDIR_loader.conf=	/boot/defaults
10799968Scharnier
10899968Scharnier.if !exists(${DESTDIR}/boot/loader.rc)
10999968ScharnierFILES+=	loader.rc
11048730Siwasaki.endif
11148730Siwasaki
11248730Siwasaki.include <${.CURDIR}/../Makefile.inc>
11348730Siwasaki
11448730Siwasaki# Cannot use ${OBJS} above this line
11568965Sru.include <bsd.prog.mk>
11648730Siwasaki
11748730Siwasaki${BASE}.sym: ${OBJS} ${LIBI386} ${LIBSTAND} ${LIBFICL} vers.o
11879755Sdd	${CC} ${LDFLAGS} -o ${.TARGET} ${BTXCRT} ${OBJS} vers.o \
11968965Sru		${LIBFICL} ${LIBI386} ${LIBSTAND}
12048730Siwasaki
12148730Siwasaki# If it's not there, don't consider it a target
122131500Sru.if exists(${.CURDIR}/../../../i386/include)
123131500Srubeforedepend ${OBJS}: machine
12448730Siwasaki
12548730Siwasakimachine:
12679755Sdd	ln -sf ${.CURDIR}/../../../i386/include machine
12768965Sru
12848730Siwasaki.endif
12948730Siwasaki
13048730SiwasakiCLEANFILES+=	machine
13148730Siwasaki