1 1.6 isaki # $NetBSD: Makefile.xxboot,v 1.6 2020/01/16 13:15:47 isaki Exp $ 2 1.1 minoura 3 1.1 minoura NOMAN= # defined 4 1.1 minoura 5 1.1 minoura .include <bsd.own.mk> 6 1.1 minoura 7 1.1 minoura BOOT= $(DEV)boot_$(FS) 8 1.1 minoura VERSIONFILE= ${.CURDIR}/../version 9 1.1 minoura VERSION!= ${TOOL_AWK} -F: '$$1 ~ /^[0-9.]*$$/ { it = $$1; } \ 10 1.1 minoura END { print it }' ${VERSIONFILE} 11 1.1 minoura NEWVERSWHAT= "${BOOT}" 12 1.1 minoura 13 1.1 minoura # text and bss addresses in hex 14 1.1 minoura TEXT= 0f0000 # Primary (me) 15 1.1 minoura TEXTDATASIZE= 2000 # 8KB for UFS at maximum 16 1.1 minoura # 30KB (=(16-1)*2048) for ISO9660 at max. 17 1.1 minoura BOOT_TEXT= 006000 # Secondary (/boot) 18 1.1 minoura 19 1.1 minoura PROG= $(BOOT) 20 1.1 minoura BINDIR= /usr/mdec 21 1.1 minoura STRIPFLAG= 22 1.1 minoura BINMODE= 444 23 1.1 minoura 24 1.1 minoura S= ${.CURDIR}/../../../../.. 25 1.1 minoura M= $S/arch/x68k 26 1.1 minoura .PATH: ${.CURDIR}/.. 27 1.1 minoura SRCS= boot.S bootmain.c conf.c consio1.c $(DEVDRV).c 28 1.1 minoura 29 1.4 christos .include "${S}/conf/newvers_stand.mk" 30 1.1 minoura 31 1.2 joerg CFLAGS= -Os -fomit-frame-pointer -fno-unwind-tables 32 1.1 minoura #CFLAGS+= -Wall 33 1.1 minoura CPPFLAGS+= -D_STANDALONE 34 1.1 minoura CPPFLAGS+= -DTEXTADDR="0x$(TEXT)" -DBOOT_TEXTADDR="0x$(BOOT_TEXT)" 35 1.1 minoura CPPFLAGS+= -DTDSIZE="0x$(TEXTDATASIZE)" 36 1.1 minoura CPPFLAGS+= -DPROG=\"$(PROG)\" -DBOOT_VERS=\"$(VERSION)\" 37 1.1 minoura CPPFLAGS+= -DBOOT_STAGE1 $(BOOTCPPFLAGS) 38 1.1 minoura CPPFLAGS+= -nostdinc -I${.OBJDIR} -I${S} 39 1.1 minoura CPPFLAGS+= -I$M/stand/libiocs -I$M/stand/libsa -I$M/stand/common 40 1.1 minoura AFLAGS= ${CFLAGS:M-[ID]*} 41 1.1 minoura LINKFLAGS= -n -Bstatic -T ${.CURDIR}/../xxboot.ldscript -M 42 1.1 minoura LINKFLAGS+= -noinhibit-exec # XXX 43 1.1 minoura LIBIOCS!= cd $M/stand/libiocs && ${PRINTOBJDIR} 44 1.1 minoura LIBSA!= cd $M/stand/libsa && ${PRINTOBJDIR} 45 1.1 minoura LDLIBS= -L${LIBSA}/lib/sa -lsa -L ${LIBSA}/lib/kern -lkern 46 1.1 minoura LDLIBS+= -L${LIBIOCS} -liocs 47 1.1 minoura 48 1.1 minoura .PATH: $S/lib/libsa 49 1.1 minoura CPPFLAGS+= -DLIBSA_SINGLE_FILESYSTEM=$(FS) 50 1.1 minoura CPPFLAGS+= -DLIBSA_SINGLE_DEVICE=$(DEV) 51 1.1 minoura CPPFLAGS+= -DLIBSA_NO_TWIDDLE -DLIBSA_NO_FD_CHECKING -DLIBSA_NO_RAW_ACCESS -DLIBSA_NO_FS_WRITE 52 1.1 minoura SRCS+= open.c close.c read.c lseek.c loadfile.c loadfile_aout.c alloc.c 53 1.1 minoura SRCS+= $(FS).c 54 1.1 minoura 55 1.1 minoura .PATH: $M/stand/common 56 1.1 minoura SRCS+= exec_image.S 57 1.1 minoura 58 1.1 minoura .include "${.CURDIR}/../../Makefile.booters" 59 1.1 minoura 60 1.1 minoura CLEANFILES+= ${PROG}.x $(PROG).map ${PROG} 61 1.1 minoura 62 1.1 minoura 63 1.1 minoura ${PROG}: $(OBJS) 64 1.1 minoura ${_MKTARGET_LINK} 65 1.1 minoura $(LD) $(LINKFLAGS) -o ${PROG} $(OBJS) $(LDLIBS) > $(PROG).map 66 1.1 minoura @grep first_kbyte $(PROG).map 67 1.6 isaki @if [ `${TOOL_AWK} \ 68 1.6 isaki '/first_kbyte/ {print "eval(eval("$$1")-eval(0x'$(TEXT)'))"}' \ 69 1.6 isaki $(PROG).map | ${TOOL_M4} -` -gt 1024 ]; \ 70 1.1 minoura then echo '$(BOOT): first_kbyte exceeds the first killobyte'; \ 71 1.1 minoura rm $(PROG) ; exit 1; \ 72 1.1 minoura fi 73 1.6 isaki @if [ `${TOOL_AWK} \ 74 1.6 isaki '/_edata/ {print "eval(eval("$$1")-eval(0x'$(TEXT)'))"}' \ 75 1.6 isaki $(PROG).map | ${TOOL_M4} -` \ 76 1.6 isaki -gt \ 77 1.6 isaki `echo 'eval(0x$(TEXTDATASIZE))' | ${TOOL_M4} -` ]; \ 78 1.1 minoura then echo '$(BOOT): text+data is too large'; \ 79 1.1 minoura rm $(PROG) ; exit 1; \ 80 1.1 minoura fi 81 1.1 minoura ${TOUCHPROG} 82 1.1 minoura 83 1.1 minoura .include <bsd.prog.mk> 84