Makefile revision 82133
121173Sjkh# $FreeBSD: head/sys/boot/i386/loader/Makefile 82133 2001-08-22 08:02:01Z peter $
250479Speter
350479SpeterBASE=		loader
421173SjkhPROG=		${BASE}
521173Sjkh#NOMAN=
621173SjkhSTRIP=
721173SjkhNEWVERSWHAT=	"bootstrap loader" i386
821173SjkhBINDIR?=	/boot
921173Sjkh
1021173Sjkh# architecture-specific loader code
1121173SjkhSRCS=		main.c conf.c
1221173Sjkh
1321173Sjkh# Enable PXE TFTP or NFS support, not both.
14159363Strhodes.if defined(LOADER_TFTP_SUPPORT)
15159363StrhodesCFLAGS+=	-DLOADER_TFTP_SUPPORT
16159363Strhodes.else
17159363StrhodesCFLAGS+=	-DLOADER_NFS_SUPPORT
18159363Strhodes.endif
19159363Strhodes
20159363Strhodes# Enable PnP and ISA-PnP code.
2164057SalexHAVE_PNP=	yes
2264057SalexHAVE_ISABUS=	yes
2364057Salex
2421173Sjkh.if !defined(NOFORTH)
2564057Salex# Enable BootForth
2664057SalexBOOT_FORTH=	yes
27100446SwoschCFLAGS+=	-DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386
2821369Smax.if exists(${.OBJDIR}/../../ficl/libficl.a)
2964057SalexLIBFICL=	${.OBJDIR}/../../ficl/libficl.a
3093217Sru.else
3164057SalexLIBFICL=	${.CURDIR}/../../ficl/libficl.a
3221173Sjkh.endif
3393217Sru.endif
3421173Sjkh
3521173Sjkh# Always add MI sources 
3664047Salex.PATH:		${.CURDIR}/../../common
3764047Salex.include	<${.CURDIR}/../../common/Makefile.inc>
3864047SalexCFLAGS+=	-I${.CURDIR}/../../common
3964047SalexCFLAGS+=	-I${.CURDIR}/../../.. -I.
4021173Sjkh
4121173SjkhCLEANFILES+=	vers.c vers.o ${BASE}.list ${BASE}.bin ${BASE}.sym ${BASE}.help
4221173Sjkh
4321173SjkhCFLAGS+=	-Wall
4493217SruLDFLAGS=	-nostdlib -static -Ttext 0x0
4521173Sjkh
46215293Sjoel# i386 standalone support library
47215293SjoelLIBI386=	${.OBJDIR}/../libi386/libi386.a
48215293SjoelCFLAGS+=	-I${.CURDIR}/..
4921173Sjkh
5021173Sjkh# where to get libstand from
5164047Salex#XXX need a better way to do this
5221173SjkhLIBSTAND=	${.CURDIR}/../../../../lib/libstand/libstand.a
5393217Sru.if !exists(${LIBSTAND})
5421173SjkhLIBSTAND=	${.OBJDIR}/../../../../lib/libstand/libstand.a
5521173Sjkh.if !exists(${LIBSTAND})
5621173SjkhLIBSTAND=	-lstand
5721173Sjkh.endif
5821173Sjkh.endif
5921173SjkhCFLAGS+=	-I${.CURDIR}/../../../../lib/libstand/
6021173Sjkh
6121173Sjkh# BTX components
6293217Sru.if exists(${.OBJDIR}/../btx)
6337283SjkhBTXDIR=		${.OBJDIR}/../btx
6421173Sjkh.else
6521173SjkhBTXDIR=		${.CURDIR}/../btx
6621173Sjkh.endif
6721173SjkhBTXLDR=		${BTXDIR}/btxldr/btxldr
6821173SjkhBTXKERN=	${BTXDIR}/btx/btx
6921173SjkhBTXCRT=		${BTXDIR}/lib/crt0.o
70156171SceriCFLAGS+=	-I${.CURDIR}/../btx/lib
71156171Sceri
7221173Sjkh# BTX is expecting ELF components
7321173SjkhCFLAGS+=	-elf
7465298Smarkm
7521173Sjkh# Debug me!
7621173Sjkh#CFLAGS+=	-g
7721173Sjkh#LDFLAGS+=	-g
7821173Sjkh
7921173Sjkhvers.o:	${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version
8021173Sjkh	sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT}
8121173Sjkh	${CC} -c vers.c
8221173Sjkh
8321173Sjkh${BASE}: ${BASE}.bin ${BTXLDR} ${BTXKERN} ${BTXCRT} ${BASE}.help
8421173Sjkh	btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \
8521173Sjkh		-b ${BTXKERN} ${BASE}.bin
8621173Sjkh#	/usr/bin/kzip ${.TARGET}
8721173Sjkh#	mv ${.TARGET}.kz ${.TARGET}
8821173Sjkh
8921173Sjkh${BASE}.bin: ${BASE}.sym
90100446Swosch	cp ${.ALLSRC} ${.TARGET}
91	strip -R .comment -R .note ${.TARGET}
92
93${BASE}.help: help.common help.i386
94	cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET}
95
96beforeinstall:
97.if exists(${DESTDIR}/boot/loader)
98	mv ${DESTDIR}/boot/loader ${DESTDIR}/boot/loader.old
99.endif
100.if exists(${.OBJDIR}/loader.help)
101	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
102		${.OBJDIR}/${BASE}.help ${DESTDIR}/boot
103.else
104	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
105		${.CURDIR}/${BASE}.help ${DESTDIR}/boot
106.endif
107.if !exists(${DESTDIR}/boot/loader.rc)
108	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
109		${.CURDIR}/../../forth/loader.rc ${DESTDIR}/boot
110.endif
111	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
112		${.CURDIR}/../../forth/loader.4th ${DESTDIR}/boot
113	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
114		${.CURDIR}/../../forth/support.4th ${DESTDIR}/boot
115	${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 \
116		${.CURDIR}/../../forth/loader.conf ${DESTDIR}/boot/defaults
117
118.include <${.CURDIR}/../Makefile.inc>
119
120# Cannot use ${OBJS} above this line
121.include <bsd.prog.mk>
122
123${BASE}.sym: ${OBJS} ${LIBI386} ${LIBSTAND} ${LIBFICL} vers.o
124	${CC} ${LDFLAGS} -o ${.TARGET} ${BTXCRT} ${OBJS} vers.o \
125		${LIBFICL} ${LIBI386} ${LIBSTAND}
126
127# If it's not there, don't consider it a target
128.if exists(${.CURDIR}/../../../i386/include)
129beforedepend ${OBJS}: machine
130
131machine:
132	ln -sf ${.CURDIR}/../../../i386/include machine
133
134.endif
135
136CLEANFILES+=	machine
137