Makefile revision 1.16
1#	$NetBSD: Makefile,v 1.16 2006/01/22 09:17:14 dsl Exp $
2
3CURDIR=	${.CURDIR}
4S=	${CURDIR}/../../../..
5
6#
7# Override normal settings
8#
9
10WARNS=		0
11
12PROG?=		ofwboot
13SRCS=		srt0.s Locore.c boot.c ofdev.c alloc.c net.c netif_of.c vers.c
14.PATH:		${S}/arch/sparc64/sparc64
15
16# XXX SHOULD NOT NEED TO DEFINE THESE!
17LIBCRT0=
18LIBC=
19LIBCRTBEGIN=
20LIBCRTEND=
21
22COPTS+=		-ffreestanding
23CWARNFLAGS+=	-Wno-main
24CFLAGS+=	${COPTS} ${CEXTRAFLAGS}
25CPPFLAGS+=	-D_STANDALONE -DSUN4U
26CPPFLAGS+=	-DBOOT_ELF32 -DBOOT_ELF64
27CPPFLAGS+=	-DNETBOOT
28CPPFLAGS+=	-DSUPPORT_DHCP
29#CPPFLAGS+=	-DNETIF_DEBUG 
30
31LINKS+=		${BINDIR}/ofwboot ${BINDIR}/ofwboot.net
32
33NOMAN=		# defined
34STRIPFLAG=
35BINMODE=	444
36
37NEWVERSWHAT=	"OpenFirmware Boot"
38
39#
40# Elf64 defaults to 1MB
41#
42# We may get address conflicts with other bootloaders, say
43# Sun's ufsboot, so we'll pick a reasonably empty address.
44#
45RELOC=		800000
46
47ENTRY=		_start
48
49CLEANFILES+=	vers.c sparc64 sparc machine
50
51CPPFLAGS+=	-I${CURDIR}/../../.. -I${CURDIR}/../../../.. -I${CURDIR} -I.
52CPPFLAGS+=	-I${CURDIR}/../../../../lib/libsa
53CPPFLAGS+=	-DRELOC=0x${RELOC}
54
55#
56# XXXXX FIXME
57#
58CPPFLAGS+=	-DSPARC_BOOT_AOUT
59CPPFLAGS+=	-DSPARC_BOOT_ELF
60CPPFLAGS+=	-DSPARC_BOOT_UFS
61CPPFLAGS+=	-DSPARC_BOOT_NFS
62#CPPFLAGS+=	-DSPARC_BOOT_HSFS
63
64### find out what to use for libkern
65KERN_AS=	library
66.include "${S}/lib/libkern/Makefile.inc"
67LIBKERN=	${KERNLIB}
68
69### find out what to use for libz
70Z_AS=		library
71.include "${S}/lib/libz/Makefile.inc"
72LIBZ=		${ZLIB}
73
74### find out what to use for libsa
75SA_AS=		library
76SAMISCMAKEFLAGS= SA_USE_CREAD=yes
77.include "${S}/lib/libsa/Makefile.inc"
78LIBSA=		${SALIB}
79
80.NOPATH: machine sparc64 sparc
81${SRCS}: machine sparc64 sparc
82
83machine:
84	rm -f machine
85	ln -s sparc64 machine
86
87sparc64:
88	rm -f sparc64
89	ln -s ${.CURDIR}/../../../sparc64/include sparc64
90
91sparc:
92	rm -f sparc
93	ln -s ${.CURDIR}/../../../sparc/include sparc
94
95cleandir distclean: cleanlibdir
96
97cleanlibdir:
98	-rm -rf lib
99
100vers.c: version
101	${HOST_SH} ${S}/conf/newvers_stand.sh ${CURDIR}/version "sparc64" ${NEWVERSWHAT}
102
103.if CROSS
104${PROG}: ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
105	${LD} -N -p -Ttext ${RELOC} -e ${ENTRY} >lderr -o ${PROG} \
106	    ${OBJS} -L${SADST} -lsa -L${ZDST} -lz -L${KERNDST} -lkern # solaris linker
107.else
108${PROG}: ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}
109	${LD} -X -N -Ttext ${RELOC} -e ${ENTRY} -o ${PROG} \
110	    ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN}	# native linker
111.endif
112
113.include <bsd.prog.mk>
114
115.if ${MACHINE_ARCH} == "sparc64"
116AFLAGS+=		-Wa,-Av9a
117CEXTRAFLAGS?=		-D_LP64
118.else
119AFLAGS+=		-Wa,-Av8plusa
120.endif
121
122.if CROSS
123AFLAGS+=		-x assembler-with-cpp -traditional-cpp -D_LOCORE -D__ELF__
124CEXTRAFLAGS?=		-D_LP64
125.else
126AFLAGS+=		-x assembler-with-cpp -traditional-cpp -D_LOCORE -D__ELF__ ${CEXTRAFLAGS}
127.endif
128
129NORMAL_S=	${CC} ${AFLAGS} ${CPPFLAGS} -c $<
130srt0.o: srt0.s
131	${NORMAL_S}
132
133# Explicit dependency for this.
134boot.o: boot.c elfXX_exec.c
135