Makefile.booters revision 1.99 1 # $NetBSD: Makefile.booters,v 1.99 2024/06/29 13:18:18 rin Exp $
2
3 NOLIBCSANITIZER=
4 NOSANITIZER=
5 .include <bsd.own.mk>
6
7 STRIPFLAG=
8 BINMODE=444
9
10 LIBCRT0= # nothing
11 LIBCRTI= # nothing
12 LIBCRTBEGIN= # nothing
13 LIBCRTEND= # nothing
14 LIBC= # nothing
15
16 # Make sure we override any optimization options specified by the
17 # user.
18 .if ${MACHINE_ARCH} == "x86_64"
19 CPUFLAGS= -m32 -march=i386 -mtune=i386
20 .else
21 CPUFLAGS= -march=i386 -mtune=i386
22 .endif
23 COPTS= ${OPT_SIZE.${ACTIVE_CC}}
24
25 I386_STAND_DIR?= $S/arch/i386/stand
26
27 .PATH: ${I386_STAND_DIR}/lib
28
29 .PATH: ${I386_STAND_DIR}/lib/crt/dos
30 DOSSTART= start_dos.o doscommain.o
31
32 .PATH: ${I386_STAND_DIR}/lib/crt/pxe
33 PXESTART= start_pxe.o
34
35 CPPFLAGS+= -nostdinc -I${.OBJDIR} -I$S -I${I386_STAND_DIR}/lib -I$S/lib/libsa
36 CPPFLAGS+= -D_STANDALONE
37 LDFLAGS+= -nostdlib
38
39 # XXX
40 .if ${MACHINE_ARCH} == "x86_64"
41 CPPFLAGS+=-m32
42 LDFLAGS+=-Wl,-m,elf_i386
43 LIBKERN_ARCH=i386
44 KERNMISCMAKEFLAGS="LIBKERN_ARCH=i386"
45 .endif
46
47 CLEANFILES+= ${STARTFILE} ${BASE}.list
48
49 ### find out what to use for libkern
50 KERN_AS= library
51 .include "${S}/lib/libkern/Makefile.inc"
52 LIBKERN= ${KERNLIB}
53
54 ### find out what to use for libz
55 Z_AS= library
56 .include "${S}/lib/libz/Makefile.inc"
57 LIBZ= ${ZLIB}
58
59 ### find out what to use for libsa
60 SA_AS= library
61 SAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
62 SAMISCCPPFLAGS+=-DLIBSA_NFS_IMPLICIT_MOUNT
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: .WAIT cleanlibdir
72
73 cleanlibdir:
74 -rm -rf lib
75
76 LDFLAGS+=-Wl,-z,noseparate-code -Wl,-M -Wl,-e,start # -N does not work properly.
77
78 LIBLIST=${LIBI386} ${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN} ${LIBI386} ${LIBSA}
79
80 VERSIONMACHINE=x86
81 .include "${S}/conf/newvers_stand.mk"
82
83 CLEANFILES+= ${BASE}.sym
84 ${BASE}.sym: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
85 ${_MKTARGET_LINK}
86 ${CC} -o ${BASE}.sym ${LDFLAGS} -Wl,-Ttext,${RELOC} \
87 ${STARTFILE} ${OBJS} ${LIBLIST} >${BASE}.list
88
89 CLEANFILES+= ${BASE}.com
90 ${BASE}.com: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
91 ${_MKTARGET_LINK}
92 ${CC} -o ${BASE}.sym ${LDFLAGS} -Wl,-Ttext,${RELOC} \
93 ${STARTFILE} ${OBJS} ${LIBLIST} >${BASE}.list
94 ${OBJCOPY} -O binary ${BASE}.sym ${BASE}.com
95
96 CLEANFILES+= ${BASE}.bin
97 ${BASE}.bin: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
98 ${_MKTARGET_LINK}
99 ${CC} -o ${BASE}.sym ${LDFLAGS} -Wl,-Ttext,${RELOC} \
100 ${STARTFILE} ${OBJS} ${LIBLIST} > ${BASE}.list
101 ${OBJCOPY} -O binary ${BASE}.sym ${BASE}.bin
102
103 CWARNFLAGS.gcc+= ${CC_WNO_ADDRESS_OF_PACKED_MEMBER}
104
105 .include <bsd.prog.mk>
106 KLINK_MACHINE= i386
107 .include <bsd.klinks.mk>
108