Makefile revision 1.38
1#	$NetBSD: Makefile,v 1.38 2003/10/26 07:25:36 lukem Exp $
2
3S=	${.CURDIR}/../../../..
4
5PROG=		ofwboot
6FILES=		${PROG}.elf ${PROG}.xcf
7SRCS=		Locore.c ofdev.c hfs.c net.c netif_of.c alloc.c vers.c
8XCOFFXTRA=	Xcoffxtra.c
9XCOFFXTRAOBJ=	Xcoffxtra.o
10CFLAGS+=	-Wno-main -msoft-float -mmultiple -ffreestanding
11#CPPFLAGS+=	-DDEBUG -DNETIF_DEBUG
12CPPFLAGS+=	-D_STANDALONE -DSUPPORT_DHCP
13CPPFLAGS+=	-DSUPPORT_USTARFS -DHAVE_CHANGEDISK_HOOK
14CPPFLAGS+=	-DLIBSA_USE_MEMCPY -DLIBSA_USE_MEMSET
15DBG=		-Os
16
17LIBCRT0=	# nothing
18LIBCRTBEGIN=	# nothing
19LIBCRTEND=	# nothing
20LIBC=		# nothing
21
22.PATH:		${S}/arch/powerpc/powerpc
23SRCS+=		ofwmagic.S
24
25.PATH:		${S}/lib/libsa
26SRCS+=		byteorder.c
27
28NOMAN=		# defined
29STRIPFLAG=
30BINMODE=	444
31
32.if !defined(FIXCOFF)
33.include <bsd.own.mk>
34
35FIXCOFFDIR!=	cd ${.CURDIR}/../fixcoff && ${PRINTOBJDIR}
36FIXCOFF=	${FIXCOFFDIR}/fixcoff
37FIXCOFFTARG=	${FIXCOFF}
38
39${FIXCOFF}:
40	(cd ${.CURDIR}/../fixcoff; ${MAKE})
41
42.else
43FIXCOFFTARG=
44.endif
45
46NEWVERSWHAT=	"OpenFirmware Boot"
47
48# For now...
49#RELOC=		20000
50RELOC=		640000
51RELOC_FLATFILE=	600000
52
53ENTRY=		_start
54
55CLEANFILES+=	vers.c ${PROG}.elf ${PROG}.el1 ${PROG}.mrg ${PROG}.xcf
56CLEANFILES+=	machine powerpc
57
58CPPFLAGS+=	-I. -I${.CURDIR} -I${.CURDIR}/../../.. -I${.CURDIR}/../../../..
59CPPFLAGS+=	-DRELOC=0x${RELOC} -DRELOC_FLATFILE=0x${RELOC_FLATFILE}
60#CPPFLAGS+=	-DXCOFF_GLUE		# for booting PCI Powermacs
61
62CLEANFILES+= ${XCOFFXTRAOBJ} boot.o boot1.o
63
64.if !make(obj) && !make(clean) && !make(cleandir)
65.BEGIN:
66	@[ -h machine ] || ln -s ${S}/arch/${MACHINE}/include machine
67	@[ -h powerpc ] || ln -s ${S}/arch/powerpc/include powerpc
68.NOPATH: machine powerpc
69.endif
70CLEANFILES+= machine powerpc
71
72### find out what to use for libkern
73KERN_AS=	library
74.include "${S}/lib/libkern/Makefile.inc"
75LIBKERN=	${KERNLIB}
76
77### find out what to use for libz
78Z_AS=		library
79.include "${S}/lib/libz/Makefile.inc"
80LIBZ=		${ZLIB}
81
82### find out what to use for libsa
83SA_AS=		library
84SAMISCMAKEFLAGS= SA_USE_CREAD=yes SA_USE_LOADFILE=yes
85.include "${S}/lib/libsa/Makefile.inc"
86LIBSA=		${SALIB}
87
88cleandir distclean: cleanlibdir
89
90cleanlibdir:
91	rm -rf lib
92
93.PHONY: vers.c
94vers.c: version
95	${HOST_SH} ${S}/conf/newvers_stand.sh ${.CURDIR}/version "macppc" ${NEWVERSWHAT}
96
97all realall: ${PROG} ${PROG}.xcf ${PROG}.elf
98
99${PROG}: ${OBJS} boot1.o ${LIBSA} ${LIBZ} ${LIBKERN} 
100	${LD} -s -N -Ttext ${RELOC_FLATFILE} -Bstatic -o ${PROG}.el1 \
101	    ${OBJS} boot1.o ${LIBSA} ${LIBZ} ${LIBKERN}
102	${OBJCOPY} -O binary ${PROG}.el1 ${PROG}
103
104.include <bsd.prog.mk>
105
106${PROG}.elf: ${OBJS} boot.o ${LIBSA} ${LIBZ} ${LIBKERN}
107	${LD} -s -N -Ttext ${RELOC} -Bstatic -o ${PROG}.elf \
108	    ${OBJS} boot.o ${LIBSA} ${LIBZ} ${LIBKERN}
109
110${PROG}.xcf: ${OBJS} boot.o ${XCOFFXTRAOBJ} ${LIBSA} ${LIBZ} ${LIBKERN} ${FIXCOFFTARG}
111	${LD} -s -N -T ${.CURDIR}/../fixcoff/elf32_powerpc_merge.x -e _entry \
112	    -Ttext ${RELOC} -Bstatic -o ${PROG}.mrg  ${XCOFFXTRAOBJ} \
113	    ${OBJS} boot.o ${LIBSA} ${LIBZ} ${LIBKERN}
114	${OBJCOPY} -O aixcoff-rs6000 -R .comment -R .note \
115	    ${PROG}.mrg ${PROG}.xcf
116	${FIXCOFF} ${PROG}.xcf
117