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)"
}