xref: /netbsd-src/sys/arch/emips/stand/Makefile.booters (revision cb5e99c6611ff46c28a8a5e70caa11591c35c3b1)
1# $NetBSD: Makefile.booters,v 1.7 2017/04/08 19:53:20 christos Exp $
2
3NOMAN=1
4.include <bsd.own.mk>
5
6# $S must correspond to the top of the 'sys' tree
7S=	${.CURDIR}/../../../..
8
9BINMODE?=	444
10
11# XXX SHOULD NOT NEED TO DEFINE THESE!
12LIBCRT0=
13LIBCRTI=
14LIBC=
15LIBCRTBEGIN=
16LIBCRTEND=
17
18.PATH:		${.CURDIR}/../common
19AFLAGS+=	-D_LOCORE -D_KERNEL -mno-abicalls
20# -I${.CURDIR}/../.. done by Makefile.inc
21CPPFLAGS+=	-nostdinc -D_STANDALONE -DNO_ABICALLS -D_NO_PROM_DEFINES \
22		-I${.OBJDIR} -I${S}
23# compiler flags for smallest code size
24CFLAGS=		-ffreestanding -Os -mmemcpy -mno-abicalls -G 128
25LDBUG=		-T $S/arch/mips/conf/stand.ldscript
26
27NETBSD_VERS!=	${HOST_SH} ${.CURDIR}/../../../../conf/osrelease.sh
28CPPFLAGS+=	-DNETBSD_VERS='"${NETBSD_VERS}"'
29
30PRIMARY_LOAD_ADDRESS?=	0x80000000
31SECONDARY_LOAD_ADDRESS?=0x80000000
32
33NOMAN=		# defined
34
35.if defined(PRIMARY_PROG)
36PROG=		${PRIMARY_PROG}
37SRCS =		start.S bootxx.c
38SRCS+=		devopen.c conf.c ace.c printf.c putchar.c
39
40LOAD_ADDRESS=	${PRIMARY_LOAD_ADDRESS}
41# Pick a number, any number...
42PRIMARY_MAX_TOTAL!=	expr 16 \* 1024
43
44CPPFLAGS+=	-DPRIMARY_BOOTBLOCK \
45		-DPRIMARY_LOAD_ADDRESS="${PRIMARY_LOAD_ADDRESS}" \
46		-DNO_GETCHAR \
47		-DLIBSA_NO_FS_SYMLINK -DLIBSA_NO_FS_WRITE \
48		-DLIBSA_NO_FS_CLOSE \
49		-DLIBSA_NO_DEV_CLOSE \
50		-DLIBSA_SINGLE_DEVICE=ace \
51		-D"aceioctl(x,y,z)=EINVAL" -D"aceclose(f)=0" \
52		-DLIBSA_NO_TWIDDLE \
53		-DLIBSA_NO_FD_CHECKING \
54		-DLIBSA_NO_RAW_ACCESS \
55		-DLIBSA_NO_DISKLABEL_MSGS \
56		-DALLOC_FIRST_FIT \
57		-DLIBSA_USE_MEMCPY -DLIBSA_USE_MEMSET
58
59CHECKSIZE_CMD?=	SIZE=${SIZE} ${HOST_SH} ${.CURDIR}/../common/checksize.sh
60
61.elif defined(SECONDARY_PROG)
62PROG=		${SECONDARY_PROG}
63LOAD_ADDRESS=	${SECONDARY_LOAD_ADDRESS}
64CPPFLAGS+=	-DSECONDARY_BOOTBLOCK -DHEAP_VARIABLE
65
66.include "${S}/conf/newvers_stand.mk"
67.else
68# XXX ?
69.endif
70
71### find out what to use for libkern
72KERN_AS=	library
73.include "${S}/lib/libkern/Makefile.inc"
74LIBKERN=	${KERNLIB}
75
76### find out what to use for libz
77.if defined(PRIMARY_PROG)
78LIBZ=
79.else
80Z_AS=		library
81.include "${S}/lib/libz/Makefile.inc"
82LIBZ=		${ZLIB}
83.endif
84
85### find out what to use for libsa
86SA_AS=		library
87.if defined(PRIMARY_PROG)
88SAMISCMAKEFLAGS+=SA_INCLUDE_NET=no
89.endif
90.if defined(SECONDARY_PROG)
91SAMISCMAKEFLAGS+=SA_USE_LOADFILE=yes SA_USE_CREAD=yes
92SAMISCMAKEFLAGS+=SA_INCLUDE_NET=yes
93.endif
94.include "${S}/lib/libsa/Makefile.inc"
95LIBSA=		${SALIB}
96
97LIBS=		${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN}
98
99.include <bsd.own.mk>
100
101${PROG}: ${OBJS} ${LIBS}
102	${_MKTARGET_LINK}
103	${LD} -Map ${PROG}.map -N -x -Ttext ${LOAD_ADDRESS} \
104	    ${LDBUG} -e start -o ${PROG}.elf ${OBJS} ${LIBS}
105	@${SIZE} ${PROG}.elf
106.if defined(CHECKSIZE_CMD)
107	@${CHECKSIZE_CMD} ${PROG}.elf ${PRIMARY_MAX_LOAD} ${PRIMARY_MAX_TOTAL} || \
108	    (rm -f ${PROG}.elf ; false)
109.endif
110	@${OBJCOPY} --output-target=binary ${PROG}.elf ${PROG}.bin
111	dd if=${PROG}.bin of=${PROG} bs=512 conv=sync
112
113.include <bsd.prog.mk>
114.include <bsd.klinks.mk>
115
116CLEANFILES+=	${PROG}.map
117
118cleandir distclean: cleanlibdir
119
120cleanlibdir:
121	-rm -rf lib
122