Makefile revision 281300
150476Speter# $FreeBSD: head/sys/boot/efi/boot1/Makefile 281300 2015-04-09 10:08:10Z andrew $ 21987Swollman 31987SwollmanMAN= 41987Swollman 5100346Sru.include <bsd.own.mk> 6100346Sru 7100346Sru# In-tree GCC does not support __attribute__((ms_abi)). 8100346Sru.if ${COMPILER_TYPE} != "gcc" 9100346Sru 10100346SruMK_SSP= no 11100346Sru 12100346SruPROG= loader.sym 13100346SruINTERNALPROG= 14100346Sru 15100346Sru# architecture-specific loader code 16100346SruSRCS= boot1.c reloc.c start.S 17100346Sru 18100346SruCFLAGS+= -I. 19100346SruCFLAGS+= -I${.CURDIR}/../include 20100346SruCFLAGS+= -I${.CURDIR}/../include/${MACHINE_CPUARCH} 21100346SruCFLAGS+= -I${.CURDIR}/../../../contrib/dev/acpica/include 22100346SruCFLAGS+= -I${.CURDIR}/../../.. 23100346Sru 24100346Sru# Always add MI sources and REGULAR efi loader bits 25100346Sru.PATH: ${.CURDIR}/../loader/arch/${MACHINE_CPUARCH} 26100346Sru.PATH: ${.CURDIR}/../loader 27100346Sru.PATH: ${.CURDIR}/../../common 28100346SruCFLAGS+= -I${.CURDIR}/../../common 29100346Sru 30100346SruFILES= boot1.efi boot1.efifat 31100346SruFILESMODE_boot1.efi= ${BINMODE} 32100346Sru 33100346SruLDSCRIPT= ${.CURDIR}/../loader/arch/${MACHINE_CPUARCH}/ldscript.${MACHINE_CPUARCH} 34132211SscottlLDFLAGS= -Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared 354257Sphk 36100346Sru.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 37100346SruCFLAGS+= -fPIC 38100346SruLDFLAGS+= -Wl,-znocombreloc 39100346Sru.endif 40100346Sru 41100346Sru.if ${MACHINE_CPUARCH} == "arm" || ${MACHINE_CPUARCH} == "i386" 42100346Sru# 43100346Sru# Add libstand for the runtime functions used by the compiler - for example 44100346Sru# __aeabi_* (arm) or __divdi3 (i386). 45100346Sru# 46100346SruDPADD+= ${LIBSTAND} 47100346SruLDADD+= -lstand 48100346Sru.endif 49100346Sru 50100346Sru${PROG}: ${LDSCRIPT} 51100346Sru 52100346SruOBJCOPY?= objcopy 53100346SruOBJDUMP?= objdump 54100346Sru 55100346Sru.if ${MACHINE_CPUARCH} == "amd64" 56100346SruEFI_TARGET= efi-app-x86_64 57100346Sru.elif ${MACHINE_CPUARCH} == "i386" 58100346SruEFI_TARGET= efi-app-ia32 59100346Sru.else 60100346SruEFI_TARGET= binary 61100346Sru.endif 62100346Sru 63100346Sruboot1.efi: loader.sym 64100346Sru if [ `${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*' | wc -l` != 0 ]; then \ 65100346Sru ${OBJDUMP} -t ${.ALLSRC} | fgrep '*UND*'; \ 66100346Sru exit 1; \ 67100346Sru fi 68100346Sru ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \ 69100346Sru -j .dynamic -j .dynsym -j .rel.dyn \ 70100346Sru -j .rela.dyn -j .reloc -j .eh_frame -j set_Xcommand_set \ 71100346Sru --output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET} 72100346Sru 73100346Sruboot1.o: ${.CURDIR}/../../common/ufsread.c 74100346Sru 75100346Sru# The following inserts out objects into a template FAT file system 76100346Sru# created by generate-fat.sh 77100346Sru 78100346Sru.include "${.CURDIR}/Makefile.fat" 79100346Sru 80100346Sruboot1.efifat: boot1.efi 81100346Sru echo ${.OBJDIR} 82100346Sru uudecode ${.CURDIR}/fat-${MACHINE_CPUARCH}.tmpl.bz2.uu 83100346Sru mv fat-${MACHINE_CPUARCH}.tmpl.bz2 ${.TARGET}.bz2 84100346Sru bzip2 -f -d ${.TARGET}.bz2 85100346Sru dd if=boot1.efi of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc 86100346Sru 87100346SruCLEANFILES= boot1.efi boot1.efifat 88100346Sru 89100346Sru.endif # ${COMPILER_TYPE} != "gcc" 90100346Sru 91100346Sru.include <bsd.prog.mk> 92100346Sru 93100346Sru.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 94100346Srubeforedepend ${OBJS}: machine x86 95100346Sru 96100346SruCLEANFILES+= machine x86 97100346Sru 98100346Srumachine: 99100346Sru ln -sf ${.CURDIR}/../../../amd64/include machine 100100346Sru 101100346Srux86: 102100346Sru ln -sf ${.CURDIR}/../../../x86/include x86 103100346Sru.endif 104100346Sru