Makefile.booters revision 1.42
1# $NetBSD: Makefile.booters,v 1.42 2003/10/26 07:25:37 lukem Exp $
2
3.include <bsd.sys.mk>		# for HOST_SH
4
5# $S must correspond to the top of the 'sys' tree
6S=	${.CURDIR}/../../../..
7
8.BEGIN: machine pmax mips
9${PROG} realdepend realall: machine pmax mips
10CLEANFILES+= machine pmax mips
11machine:
12	-rm -f ${.TARGET}
13	ln -s $S/arch/${MACHINE}/include ${.TARGET}
14pmax:
15	-rm -f ${.TARGET}
16	ln -s $S/arch/${MACHINE}/include ${.TARGET}
17mips:
18	-rm -f ${.TARGET}
19	ln -s $S/arch/mips/include mips
20
21BINMODE?=	444
22
23# XXX SHOULD NOT NEED TO DEFINE THESE!
24LIBCRT0=
25LIBC=
26LIBCRTBEGIN=
27LIBCRTEND=
28
29.PATH:		${.CURDIR}/../common
30AFLAGS+=	-D_LOCORE -D_KERNEL -mno-abicalls
31# -I${.CURDIR}/../.. done by Makefile.inc
32CPPFLAGS+=	-nostdinc -D_STANDALONE -DNO_ABICALLS -D_NO_PROM_DEFINES \
33		-I${.OBJDIR} -I${S}
34# compiler flags for smallest code size
35CFLAGS=		-ffreestanding -Os -g -mmemcpy -mno-abicalls -G 128
36OFORMAT=	--oformat elf32-littlemips
37LDBUG=		-T $S/arch/mips/conf/stand.ldscript
38
39NETBSD_VERS!=	${HOST_SH} ${.CURDIR}/../../../../conf/osrelease.sh
40CPPFLAGS+=	-DNETBSD_VERS='"${NETBSD_VERS}"'
41
42PRIMARY_LOAD_ADDRESS?=	0x80700000
43SECONDARY_LOAD_ADDRESS?=0x80710000
44
45NOMAN=		# defined
46
47.if defined(PRIMARY_PROG)
48PROG=		${PRIMARY_PROG}
49SRCS =		start.S bootxx.c callvec.c
50SRCS+=		devopen.c conf.c rz.c
51SRCS+=		bootinit.S bootread.S clear_cache.S printf.S
52
53LOAD_ADDRESS=	${PRIMARY_LOAD_ADDRESS}
54# Pick a number, any number...
55PRIMARY_MAX_TOTAL!=	expr 16 \* 1024
56
57CPPFLAGS+=	-DPRIMARY_BOOTBLOCK \
58		-DPRIMARY_LOAD_ADDRESS="${PRIMARY_LOAD_ADDRESS}" \
59		-DNO_GETCHAR \
60		-DLIBSA_NO_FS_SYMLINK -DLIBSA_NO_FS_WRITE \
61		-DLIBSA_NO_FS_CLOSE \
62		-DLIBSA_NO_DEV_CLOSE \
63		-DLIBSA_SINGLE_DEVICE=rz \
64		-D"rzioctl(x,y,z)=EINVAL" -D"rzclose(f)=0" \
65		-DLIBSA_NO_TWIDDLE \
66		-DLIBSA_NO_FD_CHECKING \
67		-DLIBSA_NO_RAW_ACCESS \
68		-DLIBSA_NO_DISKLABEL_MSGS \
69		-DALLOC_FIRST_FIT \
70		-DLIBSA_USE_MEMCPY -DLIBSA_USE_MEMSET
71
72CHECKSIZE_CMD?=	SIZE=${SIZE} ${HOST_SH} ${.CURDIR}/../common/checksize.sh
73
74.elif defined(SECONDARY_PROG)
75PROG=		${SECONDARY_PROG}
76LOAD_ADDRESS=	${SECONDARY_LOAD_ADDRESS}
77CPPFLAGS+=	-DSECONDARY_BOOTBLOCK
78SRCS+=	vers.c
79CLEANFILES+= vers.c
80.else
81# XXX ?
82.endif
83
84### find out what to use for libkern
85KERN_AS=	library
86.include "${S}/lib/libkern/Makefile.inc"
87LIBKERN=	${KERNLIB}
88
89### find out what to use for libz
90.if defined(PRIMARY_PROG)
91LIBZ=
92.else
93Z_AS=		library
94.include "${S}/lib/libz/Makefile.inc"
95LIBZ=		${ZLIB}
96.endif
97
98### find out what to use for libsa
99SA_AS=		library
100.if defined(PRIMARY_PROG)
101SAMISCMAKEFLAGS+=SA_INCLUDE_NET=no
102.endif
103.if defined(SECONDARY_PROG)
104SAMISCMAKEFLAGS+=SA_USE_LOADFILE=yes SA_USE_CREAD=yes
105SAMISCMAKEFLAGS+=SA_INCLUDE_NET=yes
106.endif
107.include "${S}/lib/libsa/Makefile.inc"
108LIBSA=		${SALIB}
109
110LIBS=		${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN}
111
112.include <bsd.own.mk>
113
114.PHONY: vers.c
115vers.c: ${.CURDIR}/version
116	${HOST_SH} ${S}/conf/newvers_stand.sh -N ${.CURDIR}/version "pmax"
117
118${PROG}: machine mips pmax ${OBJS} ${LIBS}
119	${LD} ${OFORMAT} -Map ${PROG}.map -N -x -Ttext ${LOAD_ADDRESS} \
120	    ${LDBUG} -e start -o ${PROG} ${OBJS} ${LIBS}
121	@${SIZE} ${PROG}
122.if defined(CHECKSIZE_CMD)
123	@${CHECKSIZE_CMD} ${PROG} ${PRIMARY_MAX_LOAD} ${PRIMARY_MAX_TOTAL} || \
124	    (rm -f ${PROG} ; false)
125.endif
126.if defined(DO_ECOFF_BINARY)
127	@echo -n "Creating ECOFF binary... "
128	@mv ${PROG} ${PROG}.elf
129	@${ELF2ECOFF} ${PROG}.elf ${PROG}
130	@echo done.
131.endif
132
133.include <bsd.prog.mk>
134
135CLEANFILES+=	${PROG}.map
136
137cleandir distclean: cleanlibdir
138
139cleanlibdir:
140	rm -rf lib
141