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