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