From 3d9e5572bed14a53ca6f51b6f62fb30075b4a09e Mon Sep 17 00:00:00 2001 From: Diogo Costa Date: Wed, 21 Aug 2024 11:33:19 +0100 Subject: [PATCH] add(freertos): include recipe to build freertos guest Signed-off-by: Diogo Costa --- pkgs/guest/tf/freertos.nix | 79 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 pkgs/guest/tf/freertos.nix diff --git a/pkgs/guest/tf/freertos.nix b/pkgs/guest/tf/freertos.nix new file mode 100644 index 0000000..f51f9f1 --- /dev/null +++ b/pkgs/guest/tf/freertos.nix @@ -0,0 +1,79 @@ +# SPDX-License-Identifier: Apache-2.0 +# Copyright (c) Bao Project and Contributors. All rights reserved. + +{ stdenv +, fetchgit +, toolchain +, python3 +, python3Packages +, rsync +, setup-cfg +, guest_name ? "freertos" +, freertos_srcs_path ? " " +, tests_path ? " " +, list_tests ? " " +, list_suites ? " " +, log_level ? "2" +}: + +stdenv.mkDerivation rec { + # Derivation to build the freertos-guest to run the bao test framework + # MUT: freertos-guest + pname = guest_name; + version = "1.0"; + + guest_srcs = if freertos_srcs_path == " " || freertos_srcs_path == null then + fetchgit { + url = "https://github.com/bao-project/bao-freertos-test"; + rev = "b10f6d69551f3c74eccd0439dd6b58e65794a0e4"; + sha256 = "sha256-iRI0z1dbmSO2JYKqBUrhJSnZzr6Np090zeDT53VB2O8="; + fetchSubmodules = true; + } + else + freertos_srcs_path; + + + nativeBuildInputs = [ toolchain]; #build time dependencies + buildInputs = [python3 python3Packages.numpy rsync]; + + unpackPhase = '' + mkdir -p $out + mkdir -p $out/tests + mkdir -p $out/tests/src + mkdir -p $out/tests/bao-tests + + rsync -a ${guest_srcs}/* $out + rsync -r ${setup-cfg.tests_srcs}/* $out/tests/src + rsync -r ${setup-cfg.bao-tests}/* $out/tests/bao-tests + + chmod -R +rwx $out/ + cd $out/tests/bao-tests/framework + python3 codegen.py -dir $out/tests/src -o $out/tests/bao-tests/src/testf_entry.c + cd $out + ''; + + buildPhase = '' + export ARCH=${setup-cfg.arch} + export CROSS_COMPILE=${setup-cfg.toolchain_name}- + export TESTF_TESTS_DIR=$out/tests/src + export TESTF_REPO_DIR=$out/tests/bao-tests + export FREERTOS_PARAMS="STD_ADDR_SPACE=y" + + if [ "$ARCH" == "aarch64" ]; then + make -C $out PLATFORM=${setup-cfg.platform_name} \ + BAO_TEST=1 SUITES=${list_suites} TESTS=${list_tests} \ + TESTF_LOG_LEVEL=${log_level} \ + ${setup-cfg.irq_flags} $FREERTOS_PARAMS + else + make -C $out PLATFORM=${setup-cfg.platform_name} \ + BAO_TEST=1 SUITES=${list_suites} TESTS=${list_tests} \ + TESTF_LOG_LEVEL=${log_level} $FREERTOS_PARAMS + fi + ''; + + installPhase = '' + mkdir -p $out/bin + cp $out/build/${setup-cfg.platform_name}/freertos.bin $out/bin/${guest_name}.bin + ''; + +}