1 # $NetBSD: Makefile.booters,v 1.7 2017/04/08 19:53:20 christos Exp $ 2 3 NOMAN=1 4 .include <bsd.own.mk> 5 6 # $S must correspond to the top of the 'sys' tree 7 S= ${.CURDIR}/../../../.. 8 9 BINMODE?= 444 10 11 # XXX SHOULD NOT NEED TO DEFINE THESE! 12 LIBCRT0= 13 LIBCRTI= 14 LIBC= 15 LIBCRTBEGIN= 16 LIBCRTEND= 17 18 .PATH: ${.CURDIR}/../common 19 AFLAGS+= -D_LOCORE -D_KERNEL -mno-abicalls 20 # -I${.CURDIR}/../.. done by Makefile.inc 21 CPPFLAGS+= -nostdinc -D_STANDALONE -DNO_ABICALLS -D_NO_PROM_DEFINES \ 22 -I${.OBJDIR} -I${S} 23 # compiler flags for smallest code size 24 CFLAGS= -ffreestanding -Os -mmemcpy -mno-abicalls -G 128 25 LDBUG= -T $S/arch/mips/conf/stand.ldscript 26 27 NETBSD_VERS!= ${HOST_SH} ${.CURDIR}/../../../../conf/osrelease.sh 28 CPPFLAGS+= -DNETBSD_VERS='"${NETBSD_VERS}"' 29 30 PRIMARY_LOAD_ADDRESS?= 0x80000000 31 SECONDARY_LOAD_ADDRESS?=0x80000000 32 33 NOMAN= # defined 34 35 .if defined(PRIMARY_PROG) 36 PROG= ${PRIMARY_PROG} 37 SRCS = start.S bootxx.c 38 SRCS+= devopen.c conf.c ace.c printf.c putchar.c 39 40 LOAD_ADDRESS= ${PRIMARY_LOAD_ADDRESS} 41 # Pick a number, any number... 42 PRIMARY_MAX_TOTAL!= expr 16 \* 1024 43 44 CPPFLAGS+= -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 59 CHECKSIZE_CMD?= SIZE=${SIZE} ${HOST_SH} ${.CURDIR}/../common/checksize.sh 60 61 .elif defined(SECONDARY_PROG) 62 PROG= ${SECONDARY_PROG} 63 LOAD_ADDRESS= ${SECONDARY_LOAD_ADDRESS} 64 CPPFLAGS+= -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 72 KERN_AS= library 73 .include "${S}/lib/libkern/Makefile.inc" 74 LIBKERN= ${KERNLIB} 75 76 ### find out what to use for libz 77 .if defined(PRIMARY_PROG) 78 LIBZ= 79 .else 80 Z_AS= library 81 .include "${S}/lib/libz/Makefile.inc" 82 LIBZ= ${ZLIB} 83 .endif 84 85 ### find out what to use for libsa 86 SA_AS= library 87 .if defined(PRIMARY_PROG) 88 SAMISCMAKEFLAGS+=SA_INCLUDE_NET=no 89 .endif 90 .if defined(SECONDARY_PROG) 91 SAMISCMAKEFLAGS+=SA_USE_LOADFILE=yes SA_USE_CREAD=yes 92 SAMISCMAKEFLAGS+=SA_INCLUDE_NET=yes 93 .endif 94 .include "${S}/lib/libsa/Makefile.inc" 95 LIBSA= ${SALIB} 96 97 LIBS= ${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 116 CLEANFILES+= ${PROG}.map 117 118 cleandir distclean: cleanlibdir 119 120 cleanlibdir: 121 -rm -rf lib 122