Makefile.booters revision 1.33 1 # $NetBSD: Makefile.booters,v 1.33 2002/03/19 22:03:37 thorpej Exp $
2
3 .include <bsd.own.mk>
4
5 STRIPFLAG=
6 BINMODE=444
7
8 # Make sure we override any optimization options specified by the
9 # user.
10 COPTS+= -Os -mcpu=i386
11
12 I386_STAND_DIR?= $S/arch/i386/stand
13
14 .PATH: ${I386_STAND_DIR}/lib/crt/bootsect ${I386_STAND_DIR}/lib
15 BSSTART= start_bootsect.o fraglist.o bootsectmain.o biosdisk_ll.o \
16 bios_disk.o diskbuf.o
17
18 .PATH: ${I386_STAND_DIR}/lib/crt/rom
19 ROMSTART= start_rom.o
20 GENPROMDIR= ${I386_STAND_DIR}/genprom
21 GENPROMOBJDIR!= cd ${GENPROMDIR} && ${PRINTOBJDIR}
22 GENPROM= ${GENPROMOBJDIR}/genprom
23
24 .PATH: ${I386_STAND_DIR}/lib/crt/dos
25 DOSSTART= start_dos.o doscommain.o
26
27 .PATH: ${I386_STAND_DIR}/lib/crt/pxe
28 PXESTART= start_pxe.o
29
30 CPPFLAGS += -nostdinc -I${.OBJDIR} -I$S -I${I386_STAND_DIR}/lib -I$S/lib/libsa
31 CPPFLAGS+= -D_STANDALONE
32
33 CLEANFILES+= ${STARTFILE} vers.c ${BASE}.list
34 SRCS+= vers.c
35
36 .if !make(obj) && !make(clean) && !make(cleandir)
37 .BEGIN: machine
38 .NOPATH: machine
39 .endif
40
41 realdepend realall: machine
42 CLEANFILES+= machine
43
44 machine::
45 -rm -f $@
46 ln -s $S/arch/i386/include $@
47
48 ${OBJS} ${BSSTART} ${ROMSTART} ${DOSSTART} ${PXESTART}: machine
49
50 ### find out what to use for libkern
51 KERN_AS= library
52 .include "${S}/lib/libkern/Makefile.inc"
53 LIBKERN= ${KERNLIB}
54
55 ### find out what to use for libz
56 Z_AS= library
57 .include "${S}/lib/libz/Makefile.inc"
58 LIBZ= ${ZLIB}
59
60 ### find out what to use for libsa
61 SA_AS= library
62 SAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
63 .include "${S}/lib/libsa/Makefile.inc"
64 LIBSA= ${SALIB}
65
66 ### find out what to use for libi386
67 I386DIR= ${I386_STAND_DIR}/lib
68 .include "${I386DIR}/Makefile.inc"
69 LIBI386= ${I386LIB}
70
71 cleandir distclean: cleanlibdir
72
73 cleanlibdir:
74 rm -rf lib
75
76 .if ${OBJECT_FMT} == "ELF"
77 LDFLAGS=-M -e start # -N does not work properly.
78 .else
79 LDFLAGS=-N -M -e _start
80 .endif
81
82 LIBLIST=${LIBI386} ${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN} ${LIBI386} ${LIBSA}
83
84 .PHONY: vers.c
85 vers.c: ${VERSIONFILE}
86 sh ${S}conf/newvers_stand.sh ${.ALLSRC} 'i386' ${NEWVERSWHAT}
87
88 CLEANFILES+= ${BASE}.sym
89 ${BASE}.sym: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
90 ${LD} -o ${BASE}.sym ${LDFLAGS} -Ttext ${RELOC} ${STARTFILE} ${OBJS} \
91 ${LIBLIST} >${BASE}.list
92
93 CLEANFILES+= ${BASE}.rom
94 ${BASE}.rom: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
95 ${LD} -o ${BASE}.sym ${LDFLAGS} -Ttext ${RELOC} ${STARTFILE} ${OBJS} \
96 ${LIBLIST} >${BASE}.list
97 ${OBJCOPY} -O binary ${BASE}.sym ${BASE}.bin
98 ${GENPROM} ${ROM_SIZE} < ${BASE}.bin > ${BASE}.rom || \
99 rm -f ${BASE}.rom
100 rm -f ${BASE}.bin
101
102 CLEANFILES+= ${BASE}.com
103 ${BASE}.com: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
104 ${LD} -o ${BASE}.sym ${LDFLAGS} -Ttext ${RELOC} ${STARTFILE} ${OBJS} \
105 ${LIBLIST} >${BASE}.list
106 ${OBJCOPY} -O binary ${BASE}.sym ${BASE}.com
107
108 CLEANFILES+= ${BASE}.bin
109 ${BASE}.bin: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
110 ${LD} -o ${BASE}.sym ${LDFLAGS} -Ttext ${RELOC} ${STARTFILE} ${OBJS} \
111 ${LIBLIST} > ${BASE}.list
112 ${OBJCOPY} -O binary ${BASE}.sym ${BASE}.bin
113
114 .include <bsd.prog.mk>
115