1# $NetBSD: Makefile.xxboot,v 1.2 2013/08/12 16:34:05 joerg Exp $ 2 3NOMAN= # defined 4 5.include <bsd.own.mk> 6 7BOOT= $(DEV)boot_$(FS) 8VERSIONFILE= ${.CURDIR}/../version 9VERSION!= ${TOOL_AWK} -F: '$$1 ~ /^[0-9.]*$$/ { it = $$1; } \ 10 END { print it }' ${VERSIONFILE} 11NEWVERSWHAT= "${BOOT}" 12 13# text and bss addresses in hex 14TEXT= 0f0000 # Primary (me) 15TEXTDATASIZE= 2000 # 8KB for UFS at maximum 16 # 30KB (=(16-1)*2048) for ISO9660 at max. 17BOOT_TEXT= 006000 # Secondary (/boot) 18 19PROG= $(BOOT) 20BINDIR= /usr/mdec 21STRIPFLAG= 22BINMODE= 444 23 24S= ${.CURDIR}/../../../../.. 25M= $S/arch/x68k 26.PATH: ${.CURDIR}/.. 27SRCS= boot.S bootmain.c conf.c consio1.c $(DEVDRV).c 28 29SRCS+= vers.c 30CLEANFILES+= vers.c 31vers.c: ${VERSIONFILE} 32 ${_MKTARGET_CREATE} 33 ${HOST_SH} ${S}/conf/newvers_stand.sh ${.ALLSRC} ${MACHINE} ${NEWVERSWHAT} 34 35CFLAGS= -Os -fomit-frame-pointer -fno-unwind-tables 36#CFLAGS+= -Wall 37CPPFLAGS+= -D_STANDALONE 38CPPFLAGS+= -DTEXTADDR="0x$(TEXT)" -DBOOT_TEXTADDR="0x$(BOOT_TEXT)" 39CPPFLAGS+= -DTDSIZE="0x$(TEXTDATASIZE)" 40CPPFLAGS+= -DPROG=\"$(PROG)\" -DBOOT_VERS=\"$(VERSION)\" 41CPPFLAGS+= -DBOOT_STAGE1 $(BOOTCPPFLAGS) 42CPPFLAGS+= -nostdinc -I${.OBJDIR} -I${S} 43CPPFLAGS+= -I$M/stand/libiocs -I$M/stand/libsa -I$M/stand/common 44AFLAGS= ${CFLAGS:M-[ID]*} 45.if ${OBJECT_FMT} == "ELF" 46LINKFLAGS= -n -Bstatic -T ${.CURDIR}/../xxboot.ldscript -M 47LINKFLAGS+= -noinhibit-exec # XXX 48.else 49LINKFLAGS= -n -Bstatic -Ttext ${TEXT} -M 50OBJCOPY?= objcopy 51.endif 52LIBIOCS!= cd $M/stand/libiocs && ${PRINTOBJDIR} 53LIBSA!= cd $M/stand/libsa && ${PRINTOBJDIR} 54LDLIBS= -L${LIBSA}/lib/sa -lsa -L ${LIBSA}/lib/kern -lkern 55LDLIBS+= -L${LIBIOCS} -liocs 56 57.PATH: $S/lib/libsa 58CPPFLAGS+= -DLIBSA_SINGLE_FILESYSTEM=$(FS) 59CPPFLAGS+= -DLIBSA_SINGLE_DEVICE=$(DEV) 60CPPFLAGS+= -DLIBSA_NO_TWIDDLE -DLIBSA_NO_FD_CHECKING -DLIBSA_NO_RAW_ACCESS -DLIBSA_NO_FS_WRITE 61SRCS+= open.c close.c read.c lseek.c loadfile.c loadfile_aout.c alloc.c 62SRCS+= $(FS).c 63 64.PATH: $M/stand/common 65SRCS+= exec_image.S 66 67.include "${.CURDIR}/../../Makefile.booters" 68 69CLEANFILES+= ${PROG}.x $(PROG).map ${PROG} 70 71 72${PROG}: $(OBJS) 73 ${_MKTARGET_LINK} 74 $(LD) $(LINKFLAGS) -o ${PROG} $(OBJS) $(LDLIBS) > $(PROG).map 75 @grep first_kbyte $(PROG).map 76.if ${OBJECT_FMT} == "ELF" 77 @if [ `(echo ibase=16; \ 78 ${TOOL_SED} -n \ 79 's/^.*0x\([0-9a-f]*\).* first_kbyte$$/\1-$(TEXT)-400/p' \ 80 $(PROG).map | \ 81 tr a-f A-F) | bc` -gt 0 ]; \ 82 then echo '$(BOOT): first_kbyte exceeds the first killobyte'; \ 83 rm $(PROG) ; exit 1; \ 84 fi 85 @if [ `(echo ibase=16; \ 86 ${TOOL_SED} -n \ 87 's/^.*0x\([0-9a-f]*\).* _edata *= *\.$$/\1-$(TEXT)-$(TEXTDATASIZE)/p' \ 88 $(PROG).map | \ 89 tr a-f A-F) | bc` -gt 0 ]; \ 90 then echo '$(BOOT): text+data is too large'; \ 91 rm $(PROG) ; exit 1; \ 92 fi 93.else 94 mv $(PROG) $(PROG).x 95 $(OBJCOPY) -I a.out-m68k-netbsd -O binary $(PROG).x $(PROG) 96 @rm -f $(PROG).x 97 @if [ `(echo ibase=16; \ 98 ${TOOL_SED} -n \ 99 's/ first_kbyte:.*0x\(.*\),.*$$/\1-$(TEXT)-400/p' \ 100 $(PROG).map | \ 101 tr a-f A-F) | bc` -gt 0 ]; \ 102 then echo '$(BOOT): first_kbyte exceeds the first killobyte'; \ 103 rm $(PROG) ; exit 1; \ 104 fi 105 @if [ `(echo ibase=16; \ 106 ${TOOL_SED} -n \ 107 's/ _edata:.*0x\(.*\),.*$$/\1-$(TEXT)-$(TEXTDATASIZE)/p' \ 108 $(PROG).map | \ 109 tr a-f A-F) | bc` -gt 0 ]; \ 110 then echo '$(BOOT): text+data is too large'; \ 111 rm $(PROG) ; exit 1; \ 112 fi 113.endif 114 ${TOUCHPROG} 115 116.include <bsd.prog.mk> 117