1#         $NetBSD: Makefile,v 1.26 2025/04/27 04:44:44 tsutsui Exp $
2
3WARNS               ?= 1
4NOMAN               =
5NOPIE               =
6
7BINMODE             = 444
8
9S                   = ${.CURDIR}/../../../..
10COMMON              = ${.CURDIR}/../common
11
12LIBSADIR  = ${S}/lib/libsa
13SYSVBFSDIR          = ${S}/fs/sysvbfs
14EWS4800MIPSDIR      = ${.CURDIR}/../../ews4800mips
15DEVDIR              = ${.CURDIR}/../../dev
16
17# XXX SHOULD NOT NEED TO DEFINE THESE!
18LIBCRT0=
19LIBCRTI=
20LIBC=
21LIBCRTBEGIN=
22LIBCRTEND=
23
24.PATH:              ${COMMON} ${LIBSADIR} ${SYSVBFSDIR}     \
25                    ${EWS4800MIPSDIR} ${SBDDIR} ${DEVDIR}
26
27COFFHDRFIX          = ${.OBJDIR}/coffhdrfix
28
29PROG                = boot
30BOOT_KERNEL         = boot_kernel
31FILES               += ${PROG}.coff ${BOOT_KERNEL}.gz # XXX hack to install these
32SRCS                = start.S boot.c prompt.c delay.c cmd.c loader.c
33SRCS                += bfs_subr.o disk.c diskutil.c
34SRCS                += devopen.c datafs.c bootfs.c ustarfs.c
35SRCS                += lance.c ether_if.c
36SRCS                += device_test.c cop0.c mem.c
37SRCS                += boot_device.c floppy_2d.c floppy_2hd_ibmpc.c
38#SRCS               += floppy_2hc.c
39SRCS                += console.c cons_rom.c cons_fb.c cons_zskbd.c cons_zs.c
40BINKERNEL_C         = ${COMMON}/binkernel.c
41BINKERNEL_SIZE      = 2143232 # '2 * 1024 * 1024 + 45 * 1024'
42BINKERNEL_O         = binkernel.o
43BINKERNEL_DUMMY_O= binkernel_dummy.o
44
45# ${S}/lib/libsa
46SRCS                += dev_net.c
47# ${S}/fs/sysvbfs
48SRCS                += bfs.c
49# ../../dev
50SRCS                += ga.c
51# ../../ews4800mips
52SRCS                += pdinfo.c vtoc.c
53
54.include "${S}/conf/newvers_stand.mk"
55
56TEXTADDR  = 0xa0a00000
57LINKFLAGS = -T ${S}/arch/mips/conf/stand.ldscript -Ttext ${TEXTADDR} \
58                      -e start -N
59COFFLDFLAGS         = -T ${COMMON}/coffboot.ldscript -N
60
61MIPSFLAGS = -mips1 -G 0 -mno-abicalls
62DEBUGFLAGS          = -Wall -Werror
63DEBUGFLAGS          += -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith
64DEBUGFLAGS          += -Wno-format-zero-length -Wno-sign-compare
65OPTFLAGS  = -Os -mmemcpy -fno-unwind-tables
66FLAGS               = ${MIPSFLAGS} ${DEBUGFLAGS} ${OPTFLAGS}
67AFLAGS              = -xassembler-with-cpp -D_LOCORE ${FLAGS}
68CFLAGS              = ${FLAGS} -ffreestanding
69
70CPPFLAGS  += -D_STANDALONE -DSUPPORT_BOOTP
71CPPFLAGS  += -nostdinc -I${.OBJDIR} -I${.CURDIR} -I${COMMON} -I${S}
72CPPFLAGS  += -D__daddr_t=int32_t
73#CPPFLAGS += -DBOOTP_DEBUG -DNETIF_DEBUG -DETHER_DEBUG -DNFS_DEBUG
74#CPPFLAGS += -DRPC_DEBUG -DRARP_DEBUG -DNET_DEBUG -DDEBUG -DPARANOID
75
76CLEANFILES          += ${BINKERNEL_DUMMY_O} ${BINKERNEL_O}
77CLEANFILES          += ${PROG} ${PROG}.elf ${PROG}.coff ${PROG}.tmp ${PROG}.dis
78CLEANFILES          += ${COFFHDRFIX}
79CLEANFILES          += ${BOOT_KERNEL} ${BOOT_KERNEL}.elf ${BOOT_KERNEL}.tmp
80CLEANFILES          += ${BOOT_KERNEL}.gz ${BOOT_KERNEL}.gz.tmp
81
82.include "${S}/lib/libkern/Makefile.inc"
83LIBKERN=  ${KERNLIB}
84
85.include "${S}/lib/libz/Makefile.inc"
86LIBZ=               ${ZLIB}
87
88CPPFLAGS+= -DLIBSA_ENABLE_LS_OP
89SAMISCMAKEFLAGS= SA_USE_CREAD=yes SA_USE_LOADFILE=yes SA_ENABLE_LS_OP=yes
90.include "${S}/lib/libsa/Makefile.inc"
91LIBSA=              ${SALIB}
92
93LIBS                = ${LIBSA} ${LIBZ} ${LIBKERN}
94
95# fixup GNU binutils file offset error.
96coffhdrfix:         ${COMMON}/coffhdrfix.c
97          ${HOST_CC} -o ${COFFHDRFIX} ${COMMON}/coffhdrfix.c
98
99cleandir distclean: .WAIT cleanlibdir
100
101cleanlibdir:
102          -rm -rf lib
103
104${BINKERNEL_DUMMY_O}: ${BINKERNEL_C}
105          ${_MKTARGET_COMPILE}
106          ${COMPILE.c} -DKERNEL_SIZE=0 ${BINKERNEL_C} -o ${.TARGET}
107
108${BINKERNEL_O}: ${BINKERNEL_C}
109          ${_MKTARGET_COMPILE}
110          ${COMPILE.c} -DKERNEL_SIZE=${BINKERNEL_SIZE} ${BINKERNEL_C} \
111              -o ${.TARGET}
112
113all realall: ${PROG}.coff ${BOOT_KERNEL}.gz
114
115${PROG}: ${BINKERNEL_DUMMY_O} ${OBJS} ${LIBS}
116          ${_MKTARGET_LINK}
117          ${LD} ${LINKFLAGS} -S -o ${PROG}.elf ${OBJS} ${LIBS} \
118              ${BINKERNEL_DUMMY_O}
119          ${OBJDUMP} -h ${PROG}.elf
120#         ${OBJDUMP} -m mips:4000 -d ${PROG}.elf > ${PROG}.dis
121          mv ${PROG}.elf ${PROG}
122          ls -al ${PROG}
123
124.include <bsd.klinks.mk>
125.include <bsd.prog.mk>
126
127${PROG}.coff:       ${PROG}
128          ${_MKTARGET_CREATE}
129          ${MIPS_ELF2ECOFF} ${PROG} ${.TARGET}.tmp
130          mv ${.TARGET}.tmp ${.TARGET}
131
132${BOOT_KERNEL}.gz: ${BINKERNEL_O} ${OBJS} ${LIBS}
133          ${_MKTARGET_LINK}
134          ${LD} ${LINKFLAGS} -o ${BOOT_KERNEL}.elf ${OBJS} ${LIBS} \
135              ${BINKERNEL_O}
136          mv ${BOOT_KERNEL}.elf ${BOOT_KERNEL}
137          ${OBJDUMP} -h ${BOOT_KERNEL}
138          ${TOOL_GZIP_N} -9c ${BOOT_KERNEL} > ${.TARGET}.tmp
139          mv ${.TARGET}.tmp ${.TARGET}
140          ls -al ${.TARGET}
141
142COPTS.ustarfs.c+=   -fno-strict-aliasing
143