xref: /netbsd-src/sys/arch/sparc/stand/ofwboot/Makefile (revision 782713e6c126f1866c6d9cfdee4ceb49483b5828)
1#	$NetBSD: Makefile,v 1.40 2020/09/06 07:20:29 mrg Exp $
2
3.include <bsd.init.mk>
4
5CURDIR=	${.CURDIR}
6S=	${CURDIR}/../../../..
7
8#
9# Override normal settings
10#
11
12WARNS?=		2
13KLINK_MACHINE=	sparc64
14
15PROG?=		ofwboot
16SRCS=		srt0.s Locore.c boot.c ofdev.c alloc.c net.c netif_of.c
17SRCS+=		bootinfo.c loadfile_machdep.c promlib.c prf.c isfloppy.c
18.if ${MACHINE_ARCH} == "sparc64"
19SRCS+=		hvcall.S
20CPPFLAGS+=	-DSUN4V
21.endif
22.PATH:		${S}/arch/sparc64/sparc64 ${S}/arch/sparc/stand/common
23
24# XXX SHOULD NOT NEED TO DEFINE THESE!
25LIBCRT0=
26LIBCRTI=
27LIBC=
28LIBCRTBEGIN=
29LIBCRTEND=
30
31COPTS+=		-ffreestanding -mcpu=v9
32CWARNFLAGS+=	-Wno-main
33CFLAGS+=	${COPTS}
34CPPFLAGS+=	-D_STANDALONE
35CPPFLAGS+=	-DBOOT_ELF32 -DBOOT_ELF64 -DBOOT_AOUT
36CPPFLAGS+=	-DNETBOOT
37CPPFLAGS+=	-DSUPPORT_DHCP
38#CPPFLAGS+=	-DNETIF_DEBUG
39#CPPFLAGS+=	-D_DEBUG
40
41# Follow the suit of Makefile.kern.inc; needed for the lfs64 union
42# accessors -- they don't actually dereference the resulting pointer,
43# just use it for type-checking.
44CWARNFLAGS.clang+=	-Wno-error=address-of-packed-member
45CWARNFLAGS.gcc+=	${GCC_NO_ADDR_OF_PACKED_MEMBER}
46
47LINKS+=		${BINDIR}/ofwboot ${BINDIR}/ofwboot.net
48
49NOMAN=		# defined
50STRIPFLAG=
51BINMODE=	444
52
53NEWVERSWHAT=	"OpenFirmware Boot"
54
55#
56# Elf64 defaults to 1MB
57#
58# We may get address conflicts with other bootloaders, say
59# Sun's ufsboot, so we'll pick a reasonably empty address.
60#
61RELOC=		100000
62
63ENTRY=		_start
64
65CPPFLAGS+=	-I${CURDIR}/../../.. -I${CURDIR}/../../../.. -I${CURDIR} -I.
66CPPFLAGS+=	-I${CURDIR}/../../../../../common/include
67CPPFLAGS+=	-DRELOC=0x${RELOC}
68
69#
70# XXXXX FIXME
71#
72CPPFLAGS+=	-DSPARC_BOOT_AOUT
73CPPFLAGS+=	-DSPARC_BOOT_ELF
74CPPFLAGS+=	-DSPARC_BOOT_UFS
75CPPFLAGS+=	-DSPARC_BOOT_NFS
76CPPFLAGS+=	-DSPARC_BOOT_CD9660
77
78### find out what to use for libkern
79KERN_AS=	library
80.include "${S}/lib/libkern/Makefile.inc"
81LIBKERN=	${KERNLIB}
82
83### find out what to use for libz
84Z_AS=		library
85.include "${S}/lib/libz/Makefile.inc"
86LIBZ=		${ZLIB}
87
88### find out what to use for libsa
89SA_AS=		library
90SAMISCMAKEFLAGS= SA_USE_LOADFILE=yes SA_USE_CREAD=yes
91SAMISCCPPFLAGS+= -DCOMPAT_SOLARIS_UFS
92.include "${S}/lib/libsa/Makefile.inc"
93LIBSA=		${SALIB}
94
95.include "${S}/conf/newvers_stand.mk"
96
97.include <bsd.own.mk>
98.include <bsd.klinks.mk>
99
100.if CROSS
101${PROG}: ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
102	${_MKTARGET_LINK}
103	${LD} -N -p -Ttext ${RELOC} -e ${ENTRY} >lderr -o ${PROG} \
104	    ${OBJS} -L${SADST} -lsa -L${ZDST} -lz -L${KERNDST} -lkern # solaris linker
105.else
106${PROG}: ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
107	${_MKTARGET_LINK}
108	${LD} -X -N -S -Ttext ${RELOC} -e ${ENTRY} -o ${PROG} \
109	    ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}	# native linker
110.endif
111
112.include <bsd.prog.mk>
113
114CPUFLAGS+=		-mcpu=v9
115AFLAGS+=		-Wa,-Av9a
116AFLAGS+=		-x assembler-with-cpp -D_LOCORE -D__ELF__
117
118NORMAL_S=	${CC} ${AFLAGS} ${AFLAGS.${<:T}}  ${CPPFLAGS} -c $<
119srt0.o: srt0.s
120	${NORMAL_S}
121
122hvcall.o: hvcall.S
123	${NORMAL_S}
124
125
126# Explicit dependency for this.
127boot.o: boot.c
128