Makefile revision 305845
1130146Sdas# $FreeBSD: stable/11/sys/boot/efi/boot1/Makefile 305845 2016-09-15 17:30:01Z emaste $ 2130146Sdas 3130146SdasMAN= 4130146Sdas 5130146Sdas.include <src.opts.mk> 6130146Sdas 7130146SdasMK_SSP= no 8130146Sdas 9130146SdasPROG= boot1.sym 10130146SdasINTERNALPROG= 11130146SdasWARNS?= 6 12130146Sdas 13130146Sdas.if ${MK_ZFS} != "no" 14130146Sdas# Disable warnings that are currently incompatible with the zfs boot code 15130146SdasCWARNFLAGS.zfs_module.c += -Wno-array-bounds 16130146SdasCWARNFLAGS.zfs_module.c += -Wno-cast-align 17130146SdasCWARNFLAGS.zfs_module.c += -Wno-cast-qual 18130146SdasCWARNFLAGS.zfs_module.c += -Wno-missing-prototypes 19130146SdasCWARNFLAGS.zfs_module.c += -Wno-sign-compare 20130146SdasCWARNFLAGS.zfs_module.c += -Wno-unused-parameter 21130146SdasCWARNFLAGS.zfs_module.c += -Wno-unused-function 22130146Sdas.endif 23130146Sdas 24130146Sdas# architecture-specific loader code 25130146SdasSRCS= boot1.c self_reloc.c start.S ufs_module.c 26130146Sdas.if ${MK_ZFS} != "no" 27130146SdasSRCS+= zfs_module.c 28130146Sdas.endif 29226218Sdas 30226415SdasCFLAGS+= -I. 31130146SdasCFLAGS+= -I${.CURDIR}/../include 32226218SdasCFLAGS+= -I${.CURDIR}/../include/${MACHINE} 33226218SdasCFLAGS+= -I${.CURDIR}/../../../contrib/dev/acpica/include 34226218SdasCFLAGS+= -I${.CURDIR}/../../.. 35226218SdasCFLAGS+= -DEFI_UFS_BOOT 36130146Sdas.ifdef(EFI_DEBUG) 37226218SdasCFLAGS+= -DEFI_DEBUG 38226218Sdas.endif 39226218Sdas 40226218Sdas.if ${MK_ZFS} != "no" 41226218SdasCFLAGS+= -I${.CURDIR}/../../zfs/ 42226218SdasCFLAGS+= -I${.CURDIR}/../../../cddl/boot/zfs/ 43226218SdasCFLAGS+= -DEFI_ZFS_BOOT 44226218Sdas.endif 45226218Sdas 46226218Sdas# Always add MI sources and REGULAR efi loader bits 47226218Sdas.PATH: ${.CURDIR}/../loader/arch/${MACHINE} 48226218Sdas.PATH: ${.CURDIR}/../loader 49.PATH: ${.CURDIR}/../../common 50CFLAGS+= -I${.CURDIR}/../../common 51 52FILES= boot1.efi boot1.efifat 53FILESMODE_boot1.efi= ${BINMODE} 54 55LDSCRIPT= ${.CURDIR}/../loader/arch/${MACHINE}/ldscript.${MACHINE} 56LDFLAGS+= -Wl,-T${LDSCRIPT} -Wl,-Bsymbolic -shared 57 58.if ${MACHINE_CPUARCH} == "aarch64" 59CFLAGS+= -msoft-float -mgeneral-regs-only 60.endif 61.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 62CFLAGS+= -fPIC 63LDFLAGS+= -Wl,-znocombreloc 64.endif 65 66# 67# Add libstand for the runtime functions used by the compiler - for example 68# __aeabi_* (arm) or __divdi3 (i386). 69# as well as required string and memory functions for all platforms. 70# 71DPADD+= ${LIBSTAND} 72LDADD+= -lstand 73 74DPADD+= ${LDSCRIPT} 75 76NM?= nm 77OBJCOPY?= objcopy 78 79.if ${MACHINE_CPUARCH} == "amd64" 80EFI_TARGET= efi-app-x86_64 81.elif ${MACHINE_CPUARCH} == "i386" 82EFI_TARGET= efi-app-ia32 83.else 84EFI_TARGET= binary 85.endif 86 87# Arbitrarily set the PE/COFF header timestamps to 1 Jan 2016 00:00:00 88# for build reproducibility. 89SOURCE_DATE_EPOCH?=1451606400 90boot1.efi: ${PROG} 91 if ${NM} ${.ALLSRC} | grep ' U '; then \ 92 echo "Undefined symbols in ${.ALLSRC}"; \ 93 exit 1; \ 94 fi 95 SOURCE_DATE_EPOCH=${SOURCE_DATE_EPOCH} \ 96 ${OBJCOPY} -j .peheader -j .text -j .sdata -j .data \ 97 -j .dynamic -j .dynsym -j .rel.dyn \ 98 -j .rela.dyn -j .reloc -j .eh_frame \ 99 --output-target=${EFI_TARGET} ${.ALLSRC} ${.TARGET} 100 101boot1.o: ${.CURDIR}/../../common/ufsread.c 102 103# The following inserts our objects into a template FAT file system 104# created by generate-fat.sh 105 106.include "${.CURDIR}/Makefile.fat" 107BOOT1_MAXSIZE?= 131072 108 109boot1.efifat: boot1.efi 110 @set -- `ls -l boot1.efi`; \ 111 x=$$(($$5-${BOOT1_MAXSIZE})); \ 112 if [ $$x -ge 0 ]; then \ 113 echo "boot1 $$x bytes too large; regenerate FAT templates?" >&2 ;\ 114 exit 1; \ 115 fi 116 echo ${.OBJDIR} 117 uudecode ${.CURDIR}/fat-${MACHINE}.tmpl.bz2.uu 118 mv fat-${MACHINE}.tmpl.bz2 ${.TARGET}.bz2 119 bzip2 -f -d ${.TARGET}.bz2 120 dd if=boot1.efi of=${.TARGET} seek=${BOOT1_OFFSET} conv=notrunc \ 121 status=none 122 123CLEANFILES= boot1.efi boot1.efifat 124 125.include <bsd.prog.mk> 126 127beforedepend ${OBJS}: machine 128 129CLEANFILES+= machine 130 131machine: .NOMETA 132 ln -sf ${.CURDIR}/../../../${MACHINE}/include machine 133 134.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386" 135beforedepend ${OBJS}: x86 136CLEANFILES+= x86 137 138x86: .NOMETA 139 ln -sf ${.CURDIR}/../../../x86/include x86 140.endif 141