Makefile.booters revision 1.2
1#	$NetBSD: Makefile.booters,v 1.2 2000/09/26 09:11:04 wdk Exp $
2
3S=	${.CURDIR}/../../../..
4MIPS=	${S}/arch/mips
5MIPSCO=	${S}/arch/mipsco
6
7.PATH:	${.CURDIR}/../common
8
9.PHONY:		machine-links
10beforedepend:	machine-links
11machine-links:	machine mipsco mips
12machine mipsco:
13	-rm -f ${.TARGET}
14	ln -s ${MIPSCO}/include ${.TARGET}
15
16mips:
17	-rm -f ${.TARGET}
18	ln -s ${MIPS}/include ${.TARGET}
19
20CLEANFILES+=	machine mipsco mips
21
22BINMODE?=	444
23
24AFLAGS+=	-D_LOCORE -D_KERNEL
25# -I${.CURDIR}/../.. done by Makefile.inc
26CPPFLAGS+=	-nostdinc -D_STANDALONE -DNO_ABICALLS -D_NO_PROM_DEFINES
27CPPFLAGS+=	-I${.OBJDIR} -I${S}
28# compiler flags for smallest code size
29CFLAGS=		-Os -mmemcpy -mno-abicalls -G 128
30
31NETBSD_VERS!=	sh ${S}/conf/osrelease.sh
32CPPFLAGS+=	-DNETBSD_VERS='"${NETBSD_VERS}"'
33
34PRIMARY_LOAD_ADDRESS?=	0x80600000
35SECONDARY_LOAD_ADDRESS?=0x80610000
36
37PRIMARY_LDSCRIPT?=	${MIPSCO}/conf/stand.ldscript
38SECONDARY_LDSCRIPT?=	${MIPS}/conf/stand.ldscript.be
39
40.if defined(PRIMARY_PROG)
41PROG=		${PRIMARY_PROG}
42SRCS =		start.S bootxx.c callvec.c
43SRCS+=		devopen.c conf.c saio.c
44SRCS+=		prom.S
45
46LOAD_ADDRESS=	${PRIMARY_LOAD_ADDRESS}
47LDSCRIPT=	${PRIMARY_LDSCRIPT}
48
49CPPFLAGS+=	-DPRIMARY_BOOTBLOCK \
50		-DPRIMARY_LOAD_ADDRESS="${PRIMARY_LOAD_ADDRESS}" \
51		-DNO_GETCHAR \
52		-DLIBSA_NO_FS_SYMLINK -DLIBSA_NO_FS_WRITE \
53		-DLIBSA_NO_FS_CLOSE \
54		-DLIBSA_NO_DEV_CLOSE \
55		-DLIBSA_SINGLE_DEVICE=saio \
56		-D"saioioctl(x,y,z)=EINVAL" -D"saioclose(f)=0" \
57		-DLIBSA_NO_TWIDDLE \
58		-DLIBSA_NO_FD_CHECKING \
59		-DLIBSA_NO_DISKLABEL_MSGS \
60		-DLIBSA_NO_RAW_ACCESS \
61		-DALLOC_FIRST_FIT \
62		-DLIBSA_USE_MEMCPY -DLIBSA_USE_MEMSET
63
64
65CHECKSIZE_CMD?=	SIZE=${SIZE} sh ${.CURDIR}/../common/checksize.sh
66
67.elif defined(SECONDARY_PROG)
68PROG=		${SECONDARY_PROG}
69LOAD_ADDRESS=	${SECONDARY_LOAD_ADDRESS}
70LDSCRIPT=	${SECONDARY_LDSCRIPT}
71CPPFLAGS+=	-DSECONDARY_BOOTBLOCK
72SRCS+=	vers.c
73CLEANFILES+= vers.c
74.else
75
76.endif
77
78### find out what to use for libkern
79KERN_AS=	library
80.include "${S}/lib/libkern/Makefile.inc"
81LIBKERN=	${KERNLIB}
82
83### find out what to use for libz
84.if defined(PRIMARY_PROG)
85LIBZ=
86.else
87Z_AS=		library
88.include "${S}/lib/libz/Makefile.inc"
89LIBZ=		${ZLIB}
90.endif
91
92### find out what to use for libsa
93SA_AS=		library
94.if defined(PRIMARY_PROG)
95SAMISCMAKEFLAGS+=SA_INCLUDE_NET=no
96.endif
97.if defined(SECONDARY_PROG)
98SAMISCMAKEFLAGS+=SA_USE_LOADFILE=yes SA_USE_CREAD=yes
99# for now:
100SAMISCMAKEFLAGS+=SA_INCLUDE_NET=no
101.endif
102.include "${S}/lib/libsa/Makefile.inc"
103LIBSA=		${SALIB}
104
105LIBS=		${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN}
106
107.PHONY: vers.c
108vers.c: ${.CURDIR}/version
109	sh ${S}/conf/newvers_stand.sh -N ${.CURDIR}/version "mipsco"
110
111${PROG}: machine-links ${LDSCRIPT} ${OBJS} ${LIBS}
112	${LD} -Map ${PROG}.map -N -x -Ttext ${LOAD_ADDRESS} -T ${LDSCRIPT} \
113	    -e start -o ${PROG} ${OBJS} ${LIBS}
114	@${SIZE} ${PROG}
115.if defined(PRIMARY_PROG)
116	@mv ${PROG} ${PROG}.elf
117	@objcopy --strip-all -O ecoff-bigmips -R .reginfo ${PROG}.elf ${PROG}
118.endif
119.if defined(CHECKSIZE_CMD)
120	@${CHECKSIZE_CMD} ${PROG} ${PRIMARY_MAX_LOAD} || \
121	    (rm -f ${PROG} ; false)
122.endif
123
124CLEANFILES+=	${PROG}.map
125
126cleandir distclean: cleanlibdir
127
128cleanlibdir:
129	rm -rf lib
130
131.include <bsd.prog.mk>
132