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