project-lakitu: Fix sys-boot/shim build for ARM64

- Pass expected ARCH value expected by the shim Makefile
- Let makefile modify ARCH_LDFLAGS value passed from command-line

BUG=b/175740683
TEST=presubmit
RELEASE_NOTE=None

Change-Id: I2219c0f61b065c7caa03a16f8b973ea16686760d
Reviewed-on: https://cos-review.googlesource.com/c/cos/overlays/board-overlays/+/12110
Reviewed-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Reviewed-by: Roy Yang <royyang@google.com>
Tested-by: Cusky Presubmit Bot <presubmit@cos-infra-prod.iam.gserviceaccount.com>
diff --git a/project-lakitu/sys-boot/shim/files/shim-14.0-aarch64-build-fix.patch b/project-lakitu/sys-boot/shim/files/shim-14.0-aarch64-build-fix.patch
new file mode 100644
index 0000000..96bbf99
--- /dev/null
+++ b/project-lakitu/sys-boot/shim/files/shim-14.0-aarch64-build-fix.patch
@@ -0,0 +1,20 @@
+--- Makefile.orig	2021-02-05 20:37:42.864127028 +0000
++++ Makefile	2021-02-05 20:38:16.902167034 +0000
+@@ -98,7 +98,7 @@
+ 	ARCH_SUFFIX_UPPER	?= AA64
+ 	FORMAT			:= -O binary
+ 	SUBSYSTEM		:= 0xa
+-	ARCH_LDFLAGS		+= --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
++	override ARCH_LDFLAGS	+= --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
+ endif
+ ifeq ($(ARCH),arm)
+ 	CFLAGS += -DMDE_CPU_ARM -DPAGE_SIZE=4096 -mstrict-align
+@@ -107,7 +107,7 @@
+ 	ARCH_SUFFIX_UPPER	?= ARM
+ 	FORMAT			:= -O binary
+ 	SUBSYSTEM		:= 0xa
+-	ARCH_LDFLAGS		+= --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
++	override ARCH_LDFLAGS	+= --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
+ endif
+ 
+ FORMAT		?= --target efi-app-$(ARCH)
diff --git a/project-lakitu/sys-boot/shim/shim-14.0.20180308-r4.ebuild b/project-lakitu/sys-boot/shim/shim-14.0.20180308-r5.ebuild
similarity index 100%
rename from project-lakitu/sys-boot/shim/shim-14.0.20180308-r4.ebuild
rename to project-lakitu/sys-boot/shim/shim-14.0.20180308-r5.ebuild
diff --git a/project-lakitu/sys-boot/shim/shim-14.0.20180308.ebuild b/project-lakitu/sys-boot/shim/shim-14.0.20180308.ebuild
index b75480f..fc7d9c8 100644
--- a/project-lakitu/sys-boot/shim/shim-14.0.20180308.ebuild
+++ b/project-lakitu/sys-boot/shim/shim-14.0.20180308.ebuild
@@ -22,8 +22,25 @@
 
 S="${WORKDIR}/${PN}-${GIT_COMMIT_ID}"
 
+shim_arch() {
+	case ${ARCH} in
+	amd64) echo "x86_64";;
+	arm64) echo "aarch64";;
+	*)     eerror "unsupported architecture: ${ARCH}";;
+	esac
+}
+
+shim_binary() {
+	case ${ARCH} in
+	amd64) echo "shimx64.efi";;
+	arm64) echo "shimaa64.efi";;
+	*)     eerror "unsupported architecture: ${ARCH}";;
+	esac
+}
+
 src_prepare() {
 	cros_use_gcc
+	epatch "${FILESDIR}"/${PN}-14.0-aarch64-build-fix.patch
 	default
 }
 
@@ -31,17 +48,17 @@
 	local arch_ldflags=""
 	tc-ld-is-gold && arch_ldflags="--no-experimental-use-relr"
 
-	emake ARCH="x86_64" \
+	emake ARCH="$(shim_arch)" \
 		CROSS_COMPILE="${CHOST}-" \
 		EFI_INCLUDE="${ROOT}/usr/include/efi" \
 		EFI_PATH="${ROOT}/usr/$(get_libdir)" \
 		ARCH_LDFLAGS="${arch_ldflags}" \
 		COMMITID="${GIT_COMMIT_ID}" \
 		DEFAULT_LOADER="\\\\\\\\grub-lakitu.efi" \
-		shimx64.efi
+		$(shim_binary)
 }
 
 src_install() {
 	insinto /boot/efi/boot
-	doins "shimx64.efi"
+	doins "$(shim_binary)"
 }