Makefile revision 93352
160107Sobrien# $FreeBSD: head/sys/boot/i386/loader/Makefile 93352 2002-03-28 19:09:44Z obrien $
217695Swosch
317695SwoschBASE=		loader
417695SwoschPROG=		${BASE}
517695Swosch#NOMAN=
617695SwoschSTRIP=
748663SyokotaNEWVERSWHAT=	"bootstrap loader" i386
817695SwoschBINDIR?=	/boot
917695SwoschINSTALLFLAGS=	-b
1017695Swosch.if !defined(LOADER_NO_AOUT_SUPPORT)
1117695SwoschLOADER_AOUT_SUPPORT=	yes
1217695Swosch.endif
1348663Syokota
1419554Sjoerg# architecture-specific loader code
1526656SacheSRCS=		main.c conf.c
1617695Swosch
1748663Syokota# Enable PXE TFTP or NFS support, not both.
1848663Syokota.if defined(LOADER_TFTP_SUPPORT)
1948663SyokotaCFLAGS+=	-DLOADER_TFTP_SUPPORT
2017695Swosch.else
2117695SwoschCFLAGS+=	-DLOADER_NFS_SUPPORT
2248663Syokota.endif
2348663Syokota
2461118Sroberto# Enable PnP and ISA-PnP code.
2517695SwoschHAVE_PNP=	yes
2617695SwoschHAVE_ISABUS=	yes
2717695Swosch
2817695Swosch.if !defined(NOFORTH)
2917695Swosch# Enable BootForth
3017695SwoschBOOT_FORTH=	yes
3117695SwoschCFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
3217695Swosch.if exists(${.OBJDIR}/../../ficl/libficl.a)
3317695SwoschLIBFICL=	${.OBJDIR}/../../ficl/libficl.a
3417695Swosch.else
3517695SwoschLIBFICL=	${.CURDIR}/../../ficl/libficl.a
3648663Syokota.endif
3717695Swosch.endif
3817695Swosch
3917695Swosch.if defined(LOADER_BZIP2_SUPPORT)
4017695SwoschCFLAGS+=	-DLOADER_BZIP2_SUPPORT
4117695Swosch.endif
4217695Swosch.if !defined(LOADER_NO_GZIP_SUPPORT)
4317695SwoschCFLAGS+=	-DLOADER_GZIP_SUPPORT
4417695Swosch.endif
45115050Smurray
4648663Syokota# Always add MI sources 
4748663Syokota.PATH:		${.CURDIR}/../../common
4817695Swosch.include	<${.CURDIR}/../../common/Makefile.inc>
4948663SyokotaCFLAGS+=	-I${.CURDIR}/../../common
5048663SyokotaCFLAGS+=	-I${.CURDIR}/../../.. -I.
5117695Swosch
5217695SwoschCLEANFILES+=	vers.c vers.o ${BASE}.list ${BASE}.bin ${BASE}.sym ${BASE}.help
5317695Swosch
5417695SwoschCFLAGS+=	-Wall
5517695SwoschLDFLAGS=	-nostdlib -static -Ttext 0x0
56115050Smurray
5717695Swosch# i386 standalone support library
5817695SwoschLIBI386=	${.OBJDIR}/../libi386/libi386.a
5917695SwoschCFLAGS+=	-I${.CURDIR}/..
6017695Swosch
6143334Syokota# where to get libstand from
6217695Swosch#XXX need a better way to do this
6332822SyokotaLIBSTAND=	${.CURDIR}/../../../../lib/libstand/libstand.a
6417695Swosch.if !exists(${LIBSTAND})
6517695SwoschLIBSTAND=	${.OBJDIR}/../../../../lib/libstand/libstand.a
6617695Swosch.if !exists(${LIBSTAND})
6717695SwoschLIBSTAND=	-lstand
6817695Swosch.endif
6917695Swosch.endif
7017695SwoschCFLAGS+=	-I${.CURDIR}/../../../../lib/libstand/
7117695Swosch
7217695Swosch# BTX components
7317695Swosch.if exists(${.OBJDIR}/../btx)
7417695SwoschBTXDIR=		${.OBJDIR}/../btx
7543334Syokota.else
7643334SyokotaBTXDIR=		${.CURDIR}/../btx
7717695Swosch.endif
7817695SwoschBTXLDR=		${BTXDIR}/btxldr/btxldr
7917695SwoschBTXKERN=	${BTXDIR}/btx/btx
8017695SwoschBTXCRT=		${BTXDIR}/lib/crt0.o
8117695SwoschCFLAGS+=	-I${.CURDIR}/../btx/lib
8217695Swosch
8317695Swosch# BTX is expecting ELF components
8417695SwoschCFLAGS+=	-elf
8517695Swosch
8617695Swosch# Debug me!
8717695Swosch#CFLAGS+=	-g
8817695Swosch#LDFLAGS+=	-g
8917695Swosch
9043334Syokotavers.o:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
9117695Swosch	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
9248663Syokota	${CC} -c vers.c
9317695Swosch
9417695Swosch${BASE}: ${BASE}.bin ${BTXLDR} ${BTXKERN} ${BTXCRT} ${BASE}.help
9518194Ssos	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
9617695Swosch		-b ${BTXKERN} ${BASE}.bin
9717695Swosch#	/usr/bin/kzip ${.TARGET}
9874119Sache#	mv ${.TARGET}.kz ${.TARGET}
9917695Swosch
10017695Swosch${BASE}.bin: ${BASE}.sym
10117695Swosch	cp ${.ALLSRC} ${.TARGET}
10217695Swosch	strip -R .comment -R .note ${.TARGET}
10317695Swosch
10417695Swosch${BASE}.help: help.common help.i386
10517695Swosch	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
10617695Swosch
10717695Swoschbeforeinstall:
10874119Sache.if exists(${.OBJDIR}/loader.help)
10917695Swosch	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
11043334Syokota		${.OBJDIR}/${BASE}.help ${DESTDIR}/boot
11143334Syokota.else
11243334Syokota	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
11343334Syokota		${.CURDIR}/${BASE}.help ${DESTDIR}/boot
11443334Syokota.endif
115.if !exists(${DESTDIR}/boot/loader.rc)
116	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
117		${.CURDIR}/../../forth/loader.rc ${DESTDIR}/boot
118.endif
119	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
120		${.CURDIR}/../../forth/loader.4th ${DESTDIR}/boot
121	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
122		${.CURDIR}/../../forth/support.4th ${DESTDIR}/boot
123	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
124		${.CURDIR}/../../forth/loader.conf ${DESTDIR}/boot/defaults
125
126.include <${.CURDIR}/../Makefile.inc>
127
128# Cannot use ${OBJS} above this line
129.include <bsd.prog.mk>
130
131${BASE}.sym: ${OBJS} ${LIBI386} ${LIBSTAND} ${LIBFICL} vers.o
132	${CC} ${LDFLAGS} -o ${.TARGET} ${BTXCRT} ${OBJS} vers.o \
133		${LIBFICL} ${LIBI386} ${LIBSTAND}
134
135# If it's not there, don't consider it a target
136.if exists(${.CURDIR}/../../../i386/include)
137beforedepend ${OBJS}: machine
138
139machine:
140	ln -sf ${.CURDIR}/../../../i386/include machine
141
142.endif
143
144CLEANFILES+=	machine
145