1# $FreeBSD: releng/11.0/sys/boot/i386/loader/Makefile 296963 2016-03-16 23:12:19Z allanjude $ 2 3.include <src.opts.mk> 4MK_SSP= no 5 6LOADER?= loader 7PROG= ${LOADER}.sym 8MAN= 9INTERNALPROG= 10NEWVERSWHAT?= "bootstrap loader" x86 11 12# architecture-specific loader code 13SRCS= main.c conf.c vers.c 14 15# Put LOADER_FIREWIRE_SUPPORT=yes in /etc/make.conf for FireWire/dcons support 16.if defined(LOADER_FIREWIRE_SUPPORT) 17CFLAGS+= -DLOADER_FIREWIRE_SUPPORT 18LIBFIREWIRE= ${.OBJDIR}/../libfirewire/libfirewire.a 19.endif 20 21# Set by zfsloader Makefile 22.if defined(LOADER_ZFS_SUPPORT) 23CFLAGS+= -DLOADER_ZFS_SUPPORT 24LIBZFSBOOT= ${.OBJDIR}/../../zfs/libzfsboot.a 25.endif 26 27# Enable PXE TFTP or NFS support, not both. 28.if defined(LOADER_TFTP_SUPPORT) 29CFLAGS+= -DLOADER_TFTP_SUPPORT 30.else 31CFLAGS+= -DLOADER_NFS_SUPPORT 32.endif 33 34# Include bcache code. 35HAVE_BCACHE= yes 36 37# Enable PnP and ISA-PnP code. 38HAVE_PNP= yes 39HAVE_ISABUS= yes 40 41.if ${MK_FORTH} != "no" 42# Enable BootForth 43BOOT_FORTH= yes 44CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386 45.if ${MACHINE_CPUARCH} == "amd64" 46LIBFICL= ${.OBJDIR}/../../ficl32/libficl.a 47.else 48LIBFICL= ${.OBJDIR}/../../ficl/libficl.a 49.endif 50.endif 51 52.if defined(LOADER_BZIP2_SUPPORT) 53CFLAGS+= -DLOADER_BZIP2_SUPPORT 54.endif 55.if !defined(LOADER_NO_GZIP_SUPPORT) 56CFLAGS+= -DLOADER_GZIP_SUPPORT 57.endif 58.if defined(LOADER_NANDFS_SUPPORT) 59CFLAGS+= -DLOADER_NANDFS_SUPPORT 60.endif 61.if !defined(LOADER_NO_GELI_SUPPORT) 62CFLAGS+= -DLOADER_GELI_SUPPORT 63LIBGELIBOOT= ${.OBJDIR}/../../geli/libgeliboot.a 64.PATH: ${.CURDIR}/../../../opencrypto 65SRCS+= xform_aes_xts.c 66CFLAGS+= -I${.CURDIR}/../../.. -D_STAND 67.endif 68 69# Always add MI sources 70.PATH: ${.CURDIR}/../../common 71.include "${.CURDIR}/../../common/Makefile.inc" 72CFLAGS+= -I${.CURDIR}/../../common 73CFLAGS+= -I. 74 75CLEANFILES= vers.c ${LOADER} ${LOADER}.bin loader.help 76 77CFLAGS+= -Wall 78LDFLAGS= -static -Ttext 0x0 79 80# i386 standalone support library 81LIBI386= ${.OBJDIR}/../libi386/libi386.a 82CFLAGS+= -I${.CURDIR}/.. 83 84LIBSTAND= ${.OBJDIR}/../../libstand32/libstand.a 85 86# BTX components 87CFLAGS+= -I${.CURDIR}/../btx/lib 88 89# Debug me! 90#CFLAGS+= -g 91#LDFLAGS+= -g 92 93# Pick up ../Makefile.inc early. 94.include <bsd.init.mk> 95 96vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version 97 sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/../loader/version \ 98 ${NEWVERSWHAT} 99 100${LOADER}: ${LOADER}.bin ${BTXLDR} ${BTXKERN} 101 btxld -v -f aout -e ${LOADER_ADDRESS} -o ${.TARGET} -l ${BTXLDR} \ 102 -b ${BTXKERN} ${LOADER}.bin 103 104${LOADER}.bin: ${LOADER}.sym 105 cp ${.ALLSRC} ${.TARGET} 106 strip -R .comment -R .note ${.TARGET} 107 108loader.help: help.common help.i386 109 cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET} 110 111FILES= ${LOADER} 112# XXX INSTALLFLAGS_loader= -b 113FILESMODE_${LOADER}= ${BINMODE} -b 114 115.if !defined(LOADER_ONLY) 116.PATH: ${.CURDIR}/../../forth 117.include "${.CURDIR}/../../forth/Makefile.inc" 118FILES+= pcibios.4th 119 120FILES+= loader.rc menu.rc 121.endif 122 123# XXX crt0.o needs to be first for pxeboot(8) to work 124OBJS= ${BTXCRT} 125 126DPADD= ${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND} ${LIBGELIBOOT} 127LDADD= ${LIBFICL} ${LIBFIREWIRE} ${LIBZFSBOOT} ${LIBI386} ${LIBSTAND} ${LIBGELIBOOT} 128 129.include <bsd.prog.mk> 130 131.if ${MACHINE_CPUARCH} == "amd64" 132beforedepend ${OBJS}: machine 133CLEANFILES+= machine 134CFLAGS+= -DLOADER_PREFER_AMD64 135machine: .NOMETA 136 ln -sf ${.CURDIR}/../../../i386/include machine 137.endif 138