# $NetBSD: Makefile.booters,v 1.57 2004/06/21 18:20:08 jmc Exp $ .include STRIPFLAG= BINMODE=444 LIBCRT0= # nothing LIBCRTBEGIN= # nothing LIBCRTEND= # nothing LIBC= # nothing # Make sure we override any optimization options specified by the # user. .if ${MACHINE_ARCH} == "x86_64" COPTS= -Os -m32 CPPFLAGS+= -DBOOT_ELF64 .else COPTS= -Os -mcpu=i386 .endif COPTS+= -ffreestanding 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 # XXX .if ${MACHINE_ARCH} == "x86_64" CPPFLAGS+=-m32 LD+=-m elf_i386 LIBKERN_ARCH=i386 KERNMISCMAKEFLAGS="LIBKERN_ARCH=i386" .endif CLEANFILES+= ${STARTFILE} vers.c ${BASE}.list SRCS+= vers.c .if !make(obj) && !make(clean) && !make(cleandir) .BEGIN: machine x86 lib .NOPATH: machine x86 .endif realdepend realall: machine x86 lib CLEANFILES+= machine x86 machine:: x86 -rm -f $@ ln -s $S/arch/i386/include $@ x86:: -rm -f $@ ln -s $S/arch/x86/include $@ ${OBJS} ${ROMSTART} ${DOSSTART} ${PXESTART}: machine x86 lib lib: .ifdef LIBOBJ -rm -f $@ ln -s ${LIBOBJ}/lib . [ -d ${LIBOBJ}/lib ] || mkdir ${LIBOBJ}/lib .else mkdir lib .endif ### 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: cleanlibdir cleanlibdir: -rm -rf lib .if ${OBJECT_FMT} == "ELF" LDFLAGS=-M -e start # -N does not work properly. .else LDFLAGS=-N -M -e _start .endif LIBLIST=${LIBI386} ${LIBSA} ${LIBZ} ${LIBSA} ${LIBKERN} ${LIBI386} ${LIBSA} vers.c: ${VERSIONFILE} ${SOURCES} ${HOST_SH} ${S}conf/newvers_stand.sh ${.ALLSRC} ${MACHINE} ${NEWVERSWHAT} CLEANFILES+= ${BASE}.sym ${BASE}.sym: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386} ${LD} -o ${BASE}.sym ${LDFLAGS} -Ttext ${RELOC} \ ${STARTFILE} ${OBJS} ${LIBLIST} >${BASE}.list CLEANFILES+= ${BASE}.rom ${BASE}.rom: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386} ${LD} -o ${BASE}.sym ${LDFLAGS} -Ttext ${RELOC} ${STARTFILE} ${OBJS} \ ${LIBLIST} >${BASE}.list ${OBJCOPY} -O binary ${BASE}.sym ${BASE}.bin ${GENPROM} ${ROM_SIZE} < ${BASE}.bin > ${BASE}.rom || \ rm -f ${BASE}.rom rm -f ${BASE}.bin CLEANFILES+= ${BASE}.com ${BASE}.com: ${STARTFILE} ${OBJS} ${LIBSA} ${LIBZ} ${LIBKERN} ${LIBI386} ${LD} -o ${BASE}.sym ${LDFLAGS} -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} ${LD} -o ${BASE}.sym ${LDFLAGS} -Ttext ${RELOC} ${STARTFILE} ${OBJS} \ ${LIBLIST} > ${BASE}.list ${OBJCOPY} -O binary ${BASE}.sym ${BASE}.bin .include