From d542593092d93667cee28ba5b8bbca9d1469985e Mon Sep 17 00:00:00 2001 From: Efraim Flashner Date: Tue, 19 Dec 2023 14:05:57 +0200 Subject: gnu: Add ovmf-riscv64. * gnu/packages/firmware.scm (ovmf-riscv64): New variable. Change-Id: I483bc4496d7874cc0e9983de36cfc7a90ef7591c --- gnu/packages/firmware.scm | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'gnu') diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index 222eec07e8..3bb6eff1ec 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -1040,6 +1040,44 @@ Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.") (string-append fmw "/ovmf_arm.bin"))))))))) (supported-systems %supported-systems)))) +(define-public ovmf-riscv64 + (let ((toolchain-ver "GCC5")) + (package + (inherit ovmf) + (name "ovmf-riscv64") + (native-inputs + (append (package-native-inputs ovmf) + (if (not (string-prefix? "riscv64" (%current-system))) + `(("cross-gcc" ,(cross-gcc "riscv64-linux-gnu")) + ("cross-binutils" ,(cross-binutils "riscv64-linux-gnu"))) + '()))) + (arguments + (substitute-keyword-arguments (package-arguments ovmf) + ((#:phases phases) + #~(modify-phases #$phases + #$@(if (string-prefix? "riscv64" (%current-system)) + '() + #~((add-before 'configure 'set-env + (lambda _ + (setenv (string-append #$toolchain-ver "_RISCV64_PREFIX") + "riscv64-linux-gnu-"))))) + (replace 'build + (lambda _ + (invoke "build" "-a" "RISCV64" "-t" #$toolchain-ver + "-p" "OvmfPkg/RiscVVirt/RiscVVirtQemu.dsc"))) + (delete 'build-x64) + (replace 'install + (lambda _ + (let ((fmw (string-append #$output "/share/firmware"))) + (mkdir-p fmw) + (copy-file (string-append "Build/RiscVVirtQemu/RELEASE_" + #$toolchain-ver "/FV/RISCV_VIRT_CODE.fd") + (string-append fmw "/RISCV_VIRT_CODE.fd")) + (copy-file (string-append "Build/RiscVVirtQemu/RELEASE_" + #$toolchain-ver "/FV/RISCV_VIRT_VARS.fd") + (string-append fmw "/RISCV_VIRT_VARS.fd"))))))))) + (supported-systems %supported-systems)))) + (define* (make-arm-trusted-firmware platform #:key (triplet "aarch64-linux-gnu")) (let ((native-build? (lambda () -- cgit v1.2.3