Makefile.xxboot revision 1.6 1 # $NetBSD: Makefile.xxboot,v 1.6 2020/01/16 13:15:47 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+= -noinhibit-exec # XXX
43 LIBIOCS!= cd $M/stand/libiocs && ${PRINTOBJDIR}
44 LIBSA!= cd $M/stand/libsa && ${PRINTOBJDIR}
45 LDLIBS= -L${LIBSA}/lib/sa -lsa -L ${LIBSA}/lib/kern -lkern
46 LDLIBS+= -L${LIBIOCS} -liocs
47
48 .PATH: $S/lib/libsa
49 CPPFLAGS+= -DLIBSA_SINGLE_FILESYSTEM=$(FS)
50 CPPFLAGS+= -DLIBSA_SINGLE_DEVICE=$(DEV)
51 CPPFLAGS+= -DLIBSA_NO_TWIDDLE -DLIBSA_NO_FD_CHECKING -DLIBSA_NO_RAW_ACCESS -DLIBSA_NO_FS_WRITE
52 SRCS+= open.c close.c read.c lseek.c loadfile.c loadfile_aout.c alloc.c
53 SRCS+= $(FS).c
54
55 .PATH: $M/stand/common
56 SRCS+= exec_image.S
57
58 .include "${.CURDIR}/../../Makefile.booters"
59
60 CLEANFILES+= ${PROG}.x $(PROG).map ${PROG}
61
62
63 ${PROG}: $(OBJS)
64 ${_MKTARGET_LINK}
65 $(LD) $(LINKFLAGS) -o ${PROG} $(OBJS) $(LDLIBS) > $(PROG).map
66 @grep first_kbyte $(PROG).map
67 @if [ `${TOOL_AWK} \
68 '/first_kbyte/ {print "eval(eval("$$1")-eval(0x'$(TEXT)'))"}' \
69 $(PROG).map | ${TOOL_M4} -` -gt 1024 ]; \
70 then echo '$(BOOT): first_kbyte exceeds the first killobyte'; \
71 rm $(PROG) ; exit 1; \
72 fi
73 @if [ `${TOOL_AWK} \
74 '/_edata/ {print "eval(eval("$$1")-eval(0x'$(TEXT)'))"}' \
75 $(PROG).map | ${TOOL_M4} -` \
76 -gt \
77 `echo 'eval(0x$(TEXTDATASIZE))' | ${TOOL_M4} -` ]; \
78 then echo '$(BOOT): text+data is too large'; \
79 rm $(PROG) ; exit 1; \
80 fi
81 ${TOUCHPROG}
82
83 .include <bsd.prog.mk>
84