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