1#	$NetBSD: Makefile,v 1.62 2025/07/25 06:18:24 martin Exp $
2
3NOLIBCSANITIZER=
4NOSANITIZER=
5NOPIE=
6
7S=	${.CURDIR}/../../../..
8
9PROG=		ofwboot
10FILES=		${PROG}.elf ${PROG}.xcf
11SRCS=		Locore.c boot.c ofdev.c hfs.c net.c netif_of.c \
12		loadfile_machdep.c
13XCOFFXTRA=	Xcoffxtra.c
14XCOFFXTRAOBJ=	Xcoffxtra.o
15CFLAGS+=	-ffreestanding
16CFLAGS+=	${${ACTIVE_CC} == "gcc":? -msoft-float :}
17CFLAGS+=	${CFLAGS_UNWIND.${ACTIVE_CC}}
18CFLAGS+=	-Wall -Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith
19#CPPFLAGS+=	-DDEBUG -DNETIF_DEBUG
20CPPFLAGS+=	-D_STANDALONE -DSUPPORT_DHCP
21CPPFLAGS+=	-DSUPPORT_USTARFS -DHAVE_CHANGEDISK_HOOK
22DBG=		-Os
23
24# PR port-macppc/44895
25SRCS+=		alloc.c			# use ./alloc.c
26#CPPFLAGS+=	-DHEAP_VARIABLE		# use libsa alloc.c
27
28LIBCRT0=	# nothing
29LIBCRTI=	# nothing
30LIBCRTBEGIN=	# nothing
31LIBCRTEND=	# nothing
32LIBC=		# nothing
33
34.PATH:		${S}/arch/powerpc/powerpc
35SRCS+=		ofwmagic.S
36
37.PATH:		${S}/lib/libsa
38SRCS+=		byteorder.c
39
40NOMAN=		# defined
41STRIPFLAG=
42BINMODE=	444
43
44.include <bsd.own.mk>
45
46.if !defined(FIXCOFF)
47.if !defined(TOOL_MACPPCFIXCOFF)
48TOOL_MACPPCFIXCOFFDIR!=	cd ${.CURDIR}/../fixcoff && ${PRINTOBJDIR}
49TOOL_MACPPCFIXCOFF=	${TOOL_MACPPCFIXCOFFDIR}/fixcoff
50.endif
51.endif
52
53NEWVERSWHAT=	"OpenFirmware Boot"
54
55# For now...
56#RELOC=		20000
57RELOC=		E00000
58
59ENTRY=		_start
60
61CLEANFILES+=	${PROG}.elf ${PROG}.el1 ${PROG}.mrg ${PROG}.xcf
62CLEANFILES+=	${XCOFFXTRAOBJ}
63
64CPPFLAGS+=	-I. -I${.CURDIR} -I${.CURDIR}/../../.. -I${.CURDIR}/../../../..
65CPPFLAGS+=	-DRELOC=0x${RELOC} -DRELOC_FLATFILE=0x${RELOC_FLATFILE}
66#CPPFLAGS+=	-DXCOFF_GLUE		# for booting PCI Powermacs
67
68LINKFLAGS=	-N -Ttext ${RELOC} -Bstatic
69LINKFLAGS+=	${LINKFLAGS_UNWIND}
70
71### find out what to use for libkern
72KERN_AS=	library
73.include "${S}/lib/libkern/Makefile.inc"
74LIBKERN=	${KERNLIB}
75
76### find out what to use for libz
77Z_AS=		library
78.include "${S}/lib/libz/Makefile.inc"
79LIBZ=		${ZLIB}
80
81### find out what to use for libsa
82SA_AS=		library
83SAMISCMAKEFLAGS= SA_USE_CREAD=yes SA_USE_LOADFILE=yes
84.include "${S}/lib/libsa/Makefile.inc"
85LIBSA=		${SALIB}
86
87cleandir distclean: .WAIT cleanlibdir
88
89cleanlibdir:
90	-rm -rf lib
91
92.include "${S}/conf/newvers_stand.mk"
93
94all realall: ${PROG} ${PROG}.xcf ${PROG}.elf
95
96${PROG}: ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} 
97	${_MKTARGET_LINK}
98	${LD} -s -o ${PROG}.el1 ${LINKFLAGS} \
99	    ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
100	${OBJCOPY} -O binary ${PROG}.el1 ${PROG}
101
102.include <bsd.klinks.mk>
103.include <bsd.prog.mk>
104
105${PROG}.elf: ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
106	${_MKTARGET_LINK}
107	${LD} -s -o ${PROG}.elf ${LINKFLAGS} \
108	    ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
109
110${PROG}.xcf: ${OBJS} ${XCOFFXTRAOBJ} ${LIBSA} ${LIBZ} ${LIBKERN}
111	${_MKTARGET_LINK}
112	${LD} -o ${PROG}.mrg ${LINKFLAGS} \
113	    -T ${.CURDIR}/../fixcoff/elf32_powerpc_merge.x \
114	    -e _entry ${XCOFFXTRAOBJ} \
115	    ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
116	${OBJCOPY} -O aixcoff-rs6000 -R .comment -R .note \
117	    --strip-debug --strip-unneeded \
118	    ${PROG}.mrg ${PROG}.xcf.${.MAKE.PID}
119	${TOOL_MACPPCFIXCOFF} ${PROG}.xcf.${.MAKE.PID} && \
120	    mv ${PROG}.xcf.${.MAKE.PID} ${PROG}.xcf
121