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