BZ:2562:
https://bugzilla.tianocore.org/show_bug.cgi?id=2562
EDK CI for RISC-V architecture
Enable RISC-V architecture for RISC-V EDK2 CI testing.
Signed-off-by: Abner Chang <abner.chang@hpe.com>
Cc: Bret Barkelew <Bret.Barkelew@microsoft.com>
Cc: Sean Brogan <sean.brogan@microsoft.com>
Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Gilbert Chen <gilbert.chen@hpe.com>
Cc: Daniel Helmut Schaefer <daniel.schaefer@hpe.com>
---
.../Bin/gcc_riscv64_unknown_ext_dep.yaml | 21 +++++++++++++
.../LinuxGcc5ToolChain/LinuxGcc5ToolChain.py | 31 +++++++++++++++++++
2 files changed, 52 insertions(+)
create mode 100644 BaseTools/Bin/gcc_riscv64_unknown_ext_dep.yaml
diff --git a/BaseTools/Bin/gcc_riscv64_unknown_ext_dep.yaml b/BaseTools/Bin/gcc_riscv64_unknown_ext_dep.yaml
new file mode 100644
index 0000000000..38fe300a68
--- /dev/null
+++ b/BaseTools/Bin/gcc_riscv64_unknown_ext_dep.yaml
@@ -0,0 +1,21 @@
+## @file
+# Download GCC RISCV64 compiler from RISC-V Organization release site
+# Set shell variable GCC5_RISCV64_INSTALL to this folder
+#
+# This is only downloaded when a build activates scope gcc_riscv64_unknown
+#
+# Copyright (c) Microsoft Corporation.
+# Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+{
+ "scope": "gcc_riscv64_unknown",
+ "type": "web",
+ "name": "gcc_riscv64_unknown",
+ "source": "https://media.githubusercontent.com/media/riscv/riscv-uefi-edk2-docs/master/gcc-riscv-edk2-ci-toolchain/gcc-riscv-9.2.0-2020.02-x86_64_riscv64-unknown-gnu.tar.xz",
+ "version": "9.2.0",
+ "compression_type": "tar",
+ "internal_path": "/gcc-riscv-9.2.0-2020.02-x86_64_riscv64-unknown-gnu",
+ "flags": ["set_shell_var", ],
+ "var_name": "GCC5_RISCV64_INSTALL"
+}
diff --git a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py
index c31641e931..502d2c21d2 100644
--- a/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py
+++ b/BaseTools/Plugin/LinuxGcc5ToolChain/LinuxGcc5ToolChain.py
@@ -4,6 +4,7 @@
# This plugin works in conjuncture with the tools_def
#
# Copyright (c) Microsoft Corporation
+# Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
##
import os
@@ -36,6 +37,12 @@ class LinuxGcc5ToolChain(IUefiBuildPlugin):
self.Logger.critical("Failed in check arm")
return ret
+ # Check RISCV64 compiler
+ ret = self._check_riscv64()
+ if ret != 0:
+ self.Logger.critical("Failed in check riscv64")
+ return ret
+
return 0
def _check_arm(self):
@@ -83,3 +90,27 @@ class LinuxGcc5ToolChain(IUefiBuildPlugin):
return -2
return 0
+
+ def _check_riscv64(self):
+ # check to see if full path already configured
+ if shell_environment.GetEnvironment().get_shell_var("GCC5_RISCV64_PREFIX") is not None:
+ self.Logger.info("GCC5_RISCV64_PREFIX is already set.")
+
+ else:
+ # now check for install dir. If set then set the Prefix
+ install_path = shell_environment.GetEnvironment(
+ ).get_shell_var("GCC5_RISCV64_INSTALL")
+ if install_path is None:
+ return 0
+
+ # make GCC5_RISCV64_PREFIX to align with tools_def.txt
+ prefix = os.path.join(install_path, "bin", "riscv64-unknown-elf-")
+ shell_environment.GetEnvironment().set_shell_var("GCC5_RISCV64_PREFIX", prefix)
+
+ # now confirm it exists
+ if not os.path.exists(shell_environment.GetEnvironment().get_shell_var("GCC5_RISCV64_PREFIX") + "gcc"):
+ self.Logger.error(
+ "Path for GCC5_RISCV64_PREFIX toolchain is invalid")
+ return -2
+
+ return 0
--
2.25.0
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#55362): https://edk2.groups.io/g/devel/message/55362
Mute This Topic: https://groups.io/mt/71720429/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
On Tue, Mar 3, 2020 at 10:02 PM, Abner Chang wrote: > > BaseTools/Bin/gcc_riscv64_unknown_ext_dep.yaml Web extdeps can have a hash so we are sure we get the expected file. My opinion is for edk2 extdeps we should use this feature. https://github.com/tianocore/edk2-pytool-extensions/blob/master/docs/usability/using_extdep.md#sha256-optional The rest of the changes look good. Thanks Sean -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55651): https://edk2.groups.io/g/devel/message/55651 Mute This Topic: https://groups.io/mt/71720429/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
This sounds good. Will send update with others. From: sean.brogan via [] [mailto:sean.brogan=microsoft.com@[]] Sent: Sunday, March 8, 2020 6:14 AM To: Chang, Abner (HPS SW/FW Technologist) <abner.chang@hpe.com>; devel@edk2.groups.io Subject: Re: [edk2-devel] [edk2/master PATCH RISC-V CI v1 4/6] BaseTools: Enable RISC-V architecture for RISC-V EDK2 CI. On Tue, Mar 3, 2020 at 10:02 PM, Abner Chang wrote: BaseTools/Bin/gcc_riscv64_unknown_ext_dep.yaml Web extdeps can have a hash so we are sure we get the expected file. My opinion is for edk2 extdeps we should use this feature. https://github.com/tianocore/edk2-pytool-extensions/blob/master/docs/usability/using_extdep.md#sha256-optional The rest of the changes look good. Thanks Sean -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#55669): https://edk2.groups.io/g/devel/message/55669 Mute This Topic: https://groups.io/mt/71720429/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2026 Red Hat, Inc.