NetBSD/sys/arch/i386/stand/Makefile.booters
mrg cb93b81028 add support for new GCC 9 warnings that may be too much to fix
right now.  new address-of-packed-member and format-overflow
warnings have new GCC_NO_ADDR_OF_PACKED_MEMBER amd
GCC_NO_FORMAT_OVERFLOW variables to remove these warnings.

apply to a bunch of the tree.  mostly, these are real bugs that
should be fixed, but in many cases, only by removing the 'packed'
attribute from some structure that doesn't really need it.  (i
looked at many different ones, and while perhaps 60-80% were
already properly aligned, it wasn't clear to me that the uses
were always coming from sane data vs network alignment, so it
doesn't seem safe to remove packed without careful research for
each affect struct.)  clang already warned (and was not erroring)
for many of these cases, but gcc picked up dozens more.
2020-09-06 07:20:26 +00:00

122 lines
3.1 KiB
Makefile

# $NetBSD: Makefile.booters,v 1.94 2020/09/06 07:20:28 mrg Exp $
NOLIBCSANITIZER=
NOSANITIZER=
.include <bsd.own.mk>
STRIPFLAG=
BINMODE=444
LIBCRT0= # nothing
LIBCRTI= # nothing
LIBCRTBEGIN= # nothing
LIBCRTEND= # nothing
LIBC= # nothing
# Make sure we override any optimization options specified by the
# user.
.if ${MACHINE_ARCH} == "x86_64"
CPUFLAGS= -m32 -march=i386 -mtune=i386
.else
CPUFLAGS= -march=i386 -mtune=i386
.endif
COPTS= ${OPT_SIZE.${ACTIVE_CC}}
I386_STAND_DIR?= $S/arch/i386/stand
.PATH: ${I386_STAND_DIR}/lib
ROMSTART= start_rom.o
GENPROMDIR= ${I386_STAND_DIR}/genprom
GENPROMOBJDIR!= cd ${GENPROMDIR} && ${PRINTOBJDIR}
GENPROM= ${GENPROMOBJDIR}/genprom
.PATH: ${I386_STAND_DIR}/lib/crt/dos
DOSSTART= start_dos.o doscommain.o
.PATH: ${I386_STAND_DIR}/lib/crt/pxe
PXESTART= start_pxe.o
CPPFLAGS+= -nostdinc -I${.OBJDIR} -I$S -I${I386_STAND_DIR}/lib -I$S/lib/libsa
CPPFLAGS+= -D_STANDALONE
LDFLAGS+= -nostdlib
# XXX
.if ${MACHINE_ARCH} == "x86_64"
CPPFLAGS+=-m32
LDFLAGS+=-Wl,-m,elf_i386
LIBKERN_ARCH=i386
KERNMISCMAKEFLAGS="LIBKERN_ARCH=i386"
.endif
CLEANFILES+= ${STARTFILE} ${BASE}.list
### find out what to use for libkern
KERN_AS= library
.include "${S}/lib/libkern/Makefile.inc"
LIBKERN= ${KERNLIB}
### find out what to use for libz
Z_AS= library
.include "${S}/lib/libz/Makefile.inc"
LIBZ= ${ZLIB}
### find out what to use for libsa
SA_AS= library
SAMISCMAKEFLAGS+="SA_USE_LOADFILE=yes"
.include "${S}/lib/libsa/Makefile.inc"
LIBSA= ${SALIB}
### find out what to use for libi386
I386DIR= ${I386_STAND_DIR}/lib
.include "${I386DIR}/Makefile.inc"
LIBI386= ${I386LIB}
cleandir distclean: .WAIT cleanlibdir
cleanlibdir:
-rm -rf lib
LDFLAGS+=-Wl,-M -Wl,-e,start # -N does not work properly.
LIBLIST=${LIBI386} ${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN} ${LIBI386} ${LIBSA}
VERSIONMACHINE=x86
.include "${S}/conf/newvers_stand.mk"
CLEANFILES+= ${BASE}.sym
${BASE}.sym: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
${_MKTARGET_LINK}
${CC} -o ${BASE}.sym ${LDFLAGS} -Wl,-Ttext,${RELOC} \
${STARTFILE} ${OBJS} ${LIBLIST} >${BASE}.list
CLEANFILES+= ${BASE}.rom ${BASE}.rom.tmp
${BASE}.rom: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
${_MKTARGET_LINK}
${CC} -o ${BASE}.sym ${LDFLAGS} -Wl,-Ttext,${RELOC} \
${STARTFILE} ${OBJS} ${LIBLIST} >${BASE}.list
${OBJCOPY} -O binary ${BASE}.sym ${BASE}.rom.tmp
${GENPROM} ${ROM_SIZE} < ${BASE}.rom.tmp > ${BASE}.rom || \
( rm -f ${BASE}.rom && false )
rm -f ${BASE}.rom.tmp
CLEANFILES+= ${BASE}.com
${BASE}.com: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
${_MKTARGET_LINK}
${CC} -o ${BASE}.sym ${LDFLAGS} -Wl,-Ttext,${RELOC} \
${STARTFILE} ${OBJS} ${LIBLIST} >${BASE}.list
${OBJCOPY} -O binary ${BASE}.sym ${BASE}.com
CLEANFILES+= ${BASE}.bin
${BASE}.bin: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386}
${_MKTARGET_LINK}
${CC} -o ${BASE}.sym ${LDFLAGS} -Wl,-Ttext,${RELOC} \
${STARTFILE} ${OBJS} ${LIBLIST} > ${BASE}.list
${OBJCOPY} -O binary ${BASE}.sym ${BASE}.bin
CWARNFLAGS.gcc+= ${GCC_NO_ADDR_OF_PACKED_MEMBER}
.include <bsd.prog.mk>
KLINK_MACHINE= i386
.include <bsd.klinks.mk>