.include <src.opts.mk>
# Options used when building app-specific efi components
# See conf/kern.mk for the correct set of these
CFLAGS+= -Wformat
LDFLAGS+= -nostdlib
.if ${MACHINE_CPUARCH} == "amd64"
CFLAGS+= -fshort-wchar
CFLAGS+= -mno-red-zone
.endif
.if ${MACHINE_CPUARCH} == "aarch64"
CFLAGS+= -fshort-wchar
CFLAGS+= -fPIC
.endif
.if ${MACHINE_CPUARCH} == "arm"
CFLAGS+= -fPIC
.endif
.if ${MACHINE_CPUARCH} == "amd64"
.if ${DO32:U0} == 1
EFI_TARGET= efi-app-ia32
.else
EFI_TARGET= efi-app-x86_64
.endif
.else
EFI_TARGET= binary
.endif
# GNU or ELF Tool Chain objcopy is usable for building EFI objects.
# LLVM objcopy is not. Use elfcopy if we've bootstrapped it (and thus
# known to be available) or objcopy is LLVM's.
.if ${MK_ELFTOOLCHAIN_BOOTSTRAP} != "no"
EFI_OBJCOPY?= elfcopy
.else
_v!= ${OBJCOPY} --version
.if ${_v:Mllvm-objcopy*} == ""
EFI_OBJCOPY?= ${OBJCOPY}
.else
EFI_OBJCOPY?= elfcopy
.endif
.endif
# Arbitrarily set the PE/COFF header timestamps to 1 Jan 2024 00:00:00
# for build reproducibility.
SOURCE_DATE_EPOCH?=1704067200
.include "../Makefile.inc"