Makefile revision 294029
1# $FreeBSD: head/sys/boot/efi/boot1/Makefile 294029 2016-01-14 18:53:54Z smh $ 2 3MAN= 4 5.include <bsd.own.mk> 6 7MK_SSP= no 8 9PROG= boot1.sym 10INTERNALPROG= 11WARNS?= 6 12 13# architecture-specific loader code 14SRCS= boot1.c self_reloc.c start.S 15 16CFLAGS+= -I. 17CFLAGS+= -I${.CURDIR}/../include 18CFLAGS+= -I${.CURDIR}/../include/${MACHINE} 19CFLAGS+= -I${.CURDIR}/../../../contrib/dev/acpica/include 20CFLAGS+= -I${.CURDIR}/../../.. 21 22# Always add MI sources and REGULAR efi loader bits 23.PATH: ${.CURDIR}/../loader/arch/${MACHINE} 24.PATH: ${.CURDIR}/../loader 25.PATH: ${.CURDIR}/../../common 26CFLAGS+= -I${.CURDIR}/../../common 27 28FILES= boot1.efi boot1.efifat 29FILESMODE_boot1.efi= ${BINMODE} 30 31LDSCRIPT= ${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE} 32LDFLAGS= -Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared 33 34.if ${MACHINE_CPUARCH} == "aarch64" 35CFLAGS+= -msoft-float -mgeneral-regs-only 36.endif 37.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 38CFLAGS+= -fPIC 39LDFLAGS+= -Wl,-znocombreloc 40.endif 41 42# 43# Add libstand for the runtime functions used by the compiler - for example 44# __aeabi_* (arm) or __divdi3 (i386). 45# as well as required string and memory functions for all platforms. 46# 47DPADD+= ${LIBSTAND} 48LDADD+= -lstand 49 50DPADD+= ${LDSCRIPT} 51 52OBJCOPY?= objcopy 53OBJDUMP?= objdump 54 55.if ${MACHINE_CPUARCH} == "amd64" 56EFI_TARGET= efi-app-x86_64 57.elif ${MACHINE_CPUARCH} == "i386" 58EFI_TARGET= efi-app-ia32 59.else 60EFI_TARGET= binary 61.endif 62 63boot1.efi: ${PROG} 64 if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \ 65 ${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \ 66 exit 1; \ 67 fi 68 ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \ 69 -j .dynamic -j .dynsym -j .rel.dyn \ 70 -j .rela.dyn -j .reloc -j .eh_frame \ 71 --output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET} 72 73boot1.o: ${.CURDIR}/../../common/ufsread.c 74 75# The following inserts our objects into a template FAT file system 76# created by generate-fat.sh 77 78.include "${.CURDIR}/Makefile.fat" 79BOOT1_MAXSIZE?= 131072 80 81boot1.efifat: boot1.efi 82 @set -- `ls -l boot1.efi`; \ 83 x=$$(($$5-${BOOT1_MAXSIZE})); \ 84 if [ $$x -ge 0 ]; then \ 85 echo "boot1 $$x bytes too large; regenerate FAT templates?" >&2 ;\ 86 exit 1; \ 87 fi 88 echo ${.OBJDIR} 89 uudecode ${.CURDIR}/fat-${MACHINE}.tmpl.bz2.uu 90 mv fat-${MACHINE}.tmpl.bz2 ${.TARGET}.bz2 91 bzip2 -f -d ${.TARGET}.bz2 92 dd if=boot1.efi of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc 93 94CLEANFILES= boot1.efi boot1.efifat 95 96.include <bsd.prog.mk> 97 98beforedepend ${OBJS}: machine 99 100CLEANFILES+= machine 101 102machine: 103 ln -sf ${.CURDIR}/../../../${MACHINE}/include machine 104 105.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 106beforedepend ${OBJS}: x86 107CLEANFILES+= x86 108 109x86: 110 ln -sf ${.CURDIR}/../../../x86/include x86 111.endif 112