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