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