Makefile.booters revision 1.3
1# $NetBSD: Makefile.booters,v 1.3 2013/10/04 15:01:52 christos Exp $ 2 3.include <bsd.sys.mk> # for HOST_SH 4 5# $S must correspond to the top of the 'sys' tree 6S= ${.CURDIR}/../../../.. 7 8BINMODE?= 444 9 10# XXX SHOULD NOT NEED TO DEFINE THESE! 11LIBCRT0= 12LIBC= 13LIBCRTBEGIN= 14LIBCRTEND= 15 16.PATH: ${.CURDIR}/../common 17AFLAGS+= -D_LOCORE -D_KERNEL -mno-abicalls 18# -I${.CURDIR}/../.. done by Makefile.inc 19CPPFLAGS+= -nostdinc -D_STANDALONE -DNO_ABICALLS -D_NO_PROM_DEFINES \ 20 -I${.OBJDIR} -I${S} 21# compiler flags for smallest code size 22CFLAGS= -ffreestanding -Os -mmemcpy -mno-abicalls -G 128 23LDBUG= -T $S/arch/mips/conf/stand.ldscript 24 25NETBSD_VERS!= ${HOST_SH} ${.CURDIR}/../../../../conf/osrelease.sh 26CPPFLAGS+= -DNETBSD_VERS='"${NETBSD_VERS}"' 27 28PRIMARY_LOAD_ADDRESS?= 0x80000000 29SECONDARY_LOAD_ADDRESS?=0x80000000 30 31NOMAN= # defined 32 33.if defined(PRIMARY_PROG) 34PROG= ${PRIMARY_PROG} 35SRCS = start.S bootxx.c 36SRCS+= devopen.c conf.c ace.c printf.c putchar.c 37 38LOAD_ADDRESS= ${PRIMARY_LOAD_ADDRESS} 39# Pick a number, any number... 40PRIMARY_MAX_TOTAL!= expr 16 \* 1024 41 42CPPFLAGS+= -DPRIMARY_BOOTBLOCK \ 43 -DPRIMARY_LOAD_ADDRESS="${PRIMARY_LOAD_ADDRESS}" \ 44 -DNO_GETCHAR \ 45 -DLIBSA_NO_FS_SYMLINK -DLIBSA_NO_FS_WRITE \ 46 -DLIBSA_NO_FS_CLOSE \ 47 -DLIBSA_NO_DEV_CLOSE \ 48 -DLIBSA_SINGLE_DEVICE=ace \ 49 -D"aceioctl(x,y,z)=EINVAL" -D"aceclose(f)=0" \ 50 -DLIBSA_NO_TWIDDLE \ 51 -DLIBSA_NO_FD_CHECKING \ 52 -DLIBSA_NO_RAW_ACCESS \ 53 -DLIBSA_NO_DISKLABEL_MSGS \ 54 -DALLOC_FIRST_FIT \ 55 -DLIBSA_USE_MEMCPY -DLIBSA_USE_MEMSET 56 57CHECKSIZE_CMD?= SIZE=${SIZE} ${HOST_SH} ${.CURDIR}/../common/checksize.sh 58 59.elif defined(SECONDARY_PROG) 60PROG= ${SECONDARY_PROG} 61LOAD_ADDRESS= ${SECONDARY_LOAD_ADDRESS} 62CPPFLAGS+= -DSECONDARY_BOOTBLOCK -DHEAP_VARIABLE 63SRCS+= vers.c 64CLEANFILES+= vers.c 65.else 66# XXX ? 67.endif 68 69### find out what to use for libkern 70KERN_AS= library 71.include "${S}/lib/libkern/Makefile.inc" 72LIBKERN= ${KERNLIB} 73 74### find out what to use for libz 75.if defined(PRIMARY_PROG) 76LIBZ= 77.else 78Z_AS= library 79.include "${S}/lib/libz/Makefile.inc" 80LIBZ= ${ZLIB} 81.endif 82 83### find out what to use for libsa 84SA_AS= library 85.if defined(PRIMARY_PROG) 86SAMISCMAKEFLAGS+=SA_INCLUDE_NET=no 87.endif 88.if defined(SECONDARY_PROG) 89SAMISCMAKEFLAGS+=SA_USE_LOADFILE=yes SA_USE_CREAD=yes 90SAMISCMAKEFLAGS+=SA_INCLUDE_NET=yes 91.endif 92.include "${S}/lib/libsa/Makefile.inc" 93LIBSA= ${SALIB} 94 95LIBS= ${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN} 96 97.include <bsd.own.mk> 98 99vers.c: ${.CURDIR}/version 100 ${HOST_SH} ${S}/conf/newvers_stand.sh ${${MKREPRO} == "yes" :?:-D} \ 101 -N ${.CURDIR}/version "emips" 102 103${PROG}: ${OBJS} ${LIBS} 104 ${_MKTARGET_LINK} 105 ${LD} -Map ${PROG}.map -N -x -Ttext ${LOAD_ADDRESS} \ 106 ${LDBUG} -e start -o ${PROG}.elf ${OBJS} ${LIBS} 107 @${SIZE} ${PROG}.elf 108.if defined(CHECKSIZE_CMD) 109 @${CHECKSIZE_CMD} ${PROG}.elf ${PRIMARY_MAX_LOAD} ${PRIMARY_MAX_TOTAL} || \ 110 (rm -f ${PROG}.elf ; false) 111.endif 112 @${OBJCOPY} --output-target=binary ${PROG}.elf ${PROG}.bin 113 dd if=${PROG}.bin of=${PROG} bs=512 conv=sync 114 115.include <bsd.prog.mk> 116.include <bsd.klinks.mk> 117 118CLEANFILES+= ${PROG}.map 119 120cleandir distclean: cleanlibdir 121 122cleanlibdir: 123 -rm -rf lib 124