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