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