1# $FreeBSD: src/sys/boot/i386/loader/Makefile,v 1.66 2003/06/26 03:51:57 peter Exp $ 2# 3 4PROG= loader 5STRIP= 6NEWVERSWHAT= "bootstrap loader" i386 7BINDIR?= /boot 8INSTALLFLAGS= -b 9 10# Notes: the 'loader' client is brought in with a virtual base of (typically) 11# 0xa000 and a code offset of 0x0. The btxldr is loaded at 0x200000 (?). 12# 13# MEM_BTX_USR_ARG is not used in the boot2->loader stage, only in the 14# boot1->boot2 stage (XXX what about the use in cdboot and pxeboot?) 15# 16 17# architecture-specific loader code 18SRCS= main.c conf.c 19 20# Enable PXE TFTP or NFS support, not both. 21#CFLAGS+= -DLOADER_TFTP_SUPPORT 22CFLAGS+= -DLOADER_NFS_SUPPORT 23 24# Enable PnP and ISA-PnP code. 25HAVE_PNP= yes 26HAVE_ISABUS= yes 27 28BOOT_DLOADER= yes 29CFLAGS+= -I${.CURDIR}/../../dloader 30.if exists(${.OBJDIR}/../../dloader32/libdloader32.a) 31LIBDLOADER= ${.OBJDIR}/../../dloader32/libdloader32.a 32.else 33LIBDLOADER= ${.CURDIR}/../../dloader32/libdloader32.a 34.endif 35 36.if defined(LOADER_BZIP2_SUPPORT) 37CFLAGS+= -DLOADER_BZIP2_SUPPORT 38.endif 39.if defined(LOADER_HAMMER1_SUPPORT) 40CFLAGS+= -DLOADER_HAMMER1_SUPPORT 41.endif 42.if defined(LOADER_SPLITFS_SUPPORT) 43CFLAGS+= -DLOADER_SPLITFS_SUPPORT 44.endif 45.if !defined(LOADER_NO_GZIP_SUPPORT) 46CFLAGS+= -DLOADER_GZIP_SUPPORT 47.endif 48 49# Always add MI sources 50.PATH: ${.CURDIR}/../../common 51.include <${.CURDIR}/../../common/Makefile.inc> 52CFLAGS+= -I${.CURDIR}/../../common 53CFLAGS+= -I${.CURDIR}/../../.. -I. 54 55CLEANFILES+= vers.c vers.o ${PROG}.list ${PROG}.bin ${PROG}.sym ${PROG}.help 56 57CFLAGS+= -Wall 58COMPILER_LDFLAGS= -nostdlib -static 59COMPILER_LDFLAGS+= -Wl,--script,${.CURDIR}/loader.ldscript 60 61# i386 standalone support library 62LIBI386= ${.OBJDIR}/../libi386/libi386.a 63CFLAGS+= -I${.CURDIR}/.. 64 65# where to get libstand from 66#XXX need a better way to do this 67LIBSTAND= ${.CURDIR}/../../libstand32/libstand32.a 68.if !exists(${LIBSTAND}) 69LIBSTAND= ${.OBJDIR}/../../libstand32/libstand32.a 70.endif 71CFLAGS+= -I${.CURDIR}/../../../lib 72 73# BTX components 74.if exists(${.OBJDIR}/../btx) 75BTXDIR= ${.OBJDIR}/../btx 76.else 77BTXDIR= ${.CURDIR}/../btx 78.endif 79BTXLDR= ${BTXDIR}/btxldr/btxldr 80BTXKERN= ${BTXDIR}/btx/btx 81BTXCRT= ${BTXDIR}/lib/crt0.o 82CFLAGS+= -I${.CURDIR}/../btx/lib 83 84# Debug me! 85#CFLAGS+= -g 86 87vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version 88 sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} 89 90vers.o: vers.c 91 ${CC} ${CFLAGS} -c vers.c 92 93${PROG}: ${PROG}.bin ${BTXLDR} ${BTXKERN} ${BTXCRT} 94 ${.OBJDIR}/../btxld/btxld.nx -v -f aout -e ${LOADER_ADDRESS} \ 95 -o ${.TARGET} -l ${BTXLDR} -b ${BTXKERN} ${PROG}.bin 96 97${PROG}.bin: ${PROG}.sym 98 cp ${.ALLSRC} ${.TARGET} 99 strip -R .comment -R .note -R .note.gnu.gold-version ${.TARGET} 100 101${PROG}.help: help.common help.i386 102 cat ${.ALLSRC} | awk -f ${.CURDIR}/../../common/merge_help.awk > ${.TARGET} 103 104.PATH: ${.CURDIR}/../../dloader 105FILES= ${PROG}.help loader.conf loader-bootp.conf dloader.menu 106FILESDIR_loader.conf= /boot/defaults 107FILESDIR_loader-bootp.conf= /boot/defaults 108FILESDIR_dloader.menu= /boot/defaults 109 110.if !exists(${DESTDIR}/boot/dloader.rc) 111FILES+= ${.CURDIR}/dloader.rc 112.endif 113 114.include "../Makefile.inc" 115 116# Cannot use ${OBJS} above this line 117.include <bsd.prog.mk> 118 119${PROG}.sym: ${OBJS} ${LIBI386} ${LIBSTAND} ${LIBDLOADER} vers.o 120 ${CC} ${COMPILER_LDFLAGS} -o ${.TARGET} ${BTXCRT} ${OBJS} vers.o \ 121 ${LIBDLOADER} ${LIBI386} ${LIBSTAND} 122