1# $NetBSD: Makefile.booters,v 1.17 2011/01/22 19:19:19 joerg 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 ${${MKREPRO} == "yes" :?:-D} \ 125 -N ${.CURDIR}/version "mipsco" 126 127${PROG}: machine-links ${LDSCRIPT} ${OBJS} ${LIBS} 128 ${LD} ${OFORMAT} -Map ${PROG}.map -N -x -Ttext ${LOAD_ADDRESS} \ 129 -T ${LDSCRIPT} -e start -o ${PROG} ${OBJS} ${LIBS} 130 @${SIZE} ${PROG} 131.if defined(PRIMARY_PROG) 132 mv ${PROG} ${PROG}.elf 133 ${OBJCOPY} --strip-all -O ecoff-bigmips ${STRIPSECTIONS} \ 134 ${PROG}.elf ${PROG} 135.endif 136.if defined(CHECKSIZE_CMD) 137 @${CHECKSIZE_CMD} ${PROG} ${PRIMARY_MAX_LOAD} || \ 138 (rm -f ${PROG} ; false) 139.endif 140 141CLEANFILES+= ${PROG}.map ${PROG}.elf 142 143cleandir distclean: .WAIT cleanlibdir 144 145cleanlibdir: 146 -rm -rf lib 147 148.include <bsd.prog.mk> 149