feat(tfut): add support for hooks and run configs
With this patch, the pre_tfut_build hook can be implemented in the
TFUT run config files in order to perform custom actions, such as
setting build targets. This way, build targets can be specified in
the TFUT run config files, as it is currently done for TF-A, allowing
for more flexibility.
Signed-off-by: Juan Pablo Conde <juanpablo.conde@arm.com>
Signed-off-by: Edward Potapov <edward.potapov@arm.com>
Change-Id: If8a4d0c63a885eee9ffdd8f2c5a68c6a3cff9cd4
diff --git a/run_config_tfut/bl1_fwu b/run_config_tfut/bl1_fwu
new file mode 100644
index 0000000..c65bc46
--- /dev/null
+++ b/run_config_tfut/bl1_fwu
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ targets="bl1_fwu" add_tfut_build_targets
+}
+
diff --git a/run_config_tfut/coverage b/run_config_tfut/coverage
new file mode 100644
index 0000000..c9506de
--- /dev/null
+++ b/run_config_tfut/coverage
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ set_hook_var "COVERAGE" "1"
+}
+
diff --git a/run_config_tfut/default b/run_config_tfut/default
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/run_config_tfut/default
diff --git a/run_config_tfut/gpt b/run_config_tfut/gpt
new file mode 100644
index 0000000..6005e34
--- /dev/null
+++ b/run_config_tfut/gpt
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ targets="gpt" add_tfut_build_targets
+}
diff --git a/run_config_tfut/memcmp b/run_config_tfut/memcmp
new file mode 100644
index 0000000..3c1aad6
--- /dev/null
+++ b/run_config_tfut/memcmp
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ targets="memcmp" add_tfut_build_targets
+}
+
diff --git a/run_config_tfut/memcpy b/run_config_tfut/memcpy
new file mode 100644
index 0000000..0a65e82
--- /dev/null
+++ b/run_config_tfut/memcpy
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ targets="memcpy" add_tfut_build_targets
+}
+
diff --git a/run_config_tfut/memset b/run_config_tfut/memset
new file mode 100644
index 0000000..c810a67
--- /dev/null
+++ b/run_config_tfut/memset
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ targets="memset" add_tfut_build_targets
+}
diff --git a/run_config_tfut/no_coverage b/run_config_tfut/no_coverage
new file mode 100644
index 0000000..b24f07d
--- /dev/null
+++ b/run_config_tfut/no_coverage
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ set_hook_var "COVERAGE" "0"
+}
+
diff --git a/run_config_tfut/object_pool b/run_config_tfut/object_pool
new file mode 100644
index 0000000..b0e72ea
--- /dev/null
+++ b/run_config_tfut/object_pool
@@ -0,0 +1,11 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ targets="object_pool" add_tfut_build_targets
+}
+
diff --git a/run_config_tfut/snprintf b/run_config_tfut/snprintf
new file mode 100644
index 0000000..0677bfb
--- /dev/null
+++ b/run_config_tfut/snprintf
@@ -0,0 +1,10 @@
+#!/usr/bin/env bash
+#
+# Copyright (c) 2024, Arm Limited. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+pre_tfut_build() {
+ targets="snprintf" add_tfut_build_targets
+}
diff --git a/script/build_package.sh b/script/build_package.sh
index eaa29a1..e7e1fe7 100755
--- a/script/build_package.sh
+++ b/script/build_package.sh
@@ -127,6 +127,15 @@
done
fi
+ if [ "$run_config_tfut_candidates" ]; then
+ for config_fragment in $run_config_tfut_candidates; do
+ (
+ source "$ci_root/run_config_tfut/$config_fragment"
+ call_func "$func" "$config_fragment"
+ )
+ done
+ fi
+
# Also source test config file
(
unset "$func"
@@ -779,8 +788,12 @@
fi
fi
- config=$(cat "$config_file" | grep -v "tests=")
- cmake_config=$(echo "$config" | sed -e 's/^/\-D/')
+ #TODO: extract vars from env to use them for cmake
+
+ test -f "$config_file"
+
+ config=$(cat "$config_file" | grep -v "tests=") \
+ && cmake_config=$(echo "$config" | sed -e 's/^/\-D/')
# Check if cmake is installed
if ! command -v cmake &> /dev/null
@@ -829,9 +842,9 @@
set_hook_var "spm_build_targets" "$targets"
}
-set_tfut_build_targets() {
- echo "Set build target to '${targets:?}'"
- set_hook_var "tfut_build_targets" "$targets"
+add_tfut_build_targets() {
+ echo "Add TFUT build targets '${targets:?}'"
+ append_hook_var "tfut_build_targets" "$targets "
}
set_spm_out_dir() {
@@ -1259,6 +1272,20 @@
fi
fi
+if [ "$run_config_tfut" ]; then
+ # Get candidates for run TFUT config
+ run_config_tfut_candidates="$("$ci_root/script/gen_run_config_candidates.py" \
+ "--unit-testing" "$run_config_tfut")"
+ if [ -z "$run_config_tfut_candidates" ]; then
+ die "No run TFUT config candidates!"
+ else
+ echo
+ echo "Chosen fragments:"
+ echo
+ echo "$run_config_tfut_candidates" | sed 's/^\|\n/\t/g'
+ fi
+fi
+
call_hook "test_setup"
echo
@@ -1549,6 +1576,9 @@
echo "Building Trusted Firmware UT ($mode) ..." |& log_separator
+ # Clean TFUT build targets
+ set_hook_var "tfut_build_targets" ""
+
# Call pre-build hook
call_hook pre_tfut_build
diff --git a/script/gen_run_config_candidates.py b/script/gen_run_config_candidates.py
index 5a52f99..e6c4e25 100755
--- a/script/gen_run_config_candidates.py
+++ b/script/gen_run_config_candidates.py
@@ -16,6 +16,8 @@
parser = argparse.ArgumentParser(description="Choose run configurations")
parser.add_argument("--print-only", "-p", action="store_true", default=False,
help="Print only; don't check for matching run configs.")
+parser.add_argument("--unit-testing", action="store_true", default=False,
+ help="Use to indicate if it is a unit testing config or not")
parser.add_argument("args", nargs=argparse.REMAINDER, help="Run configuration")
opts = parser.parse_args()
@@ -24,7 +26,10 @@
# Obtain path to run_config directory
script_root = os.path.dirname(os.path.abspath(sys.argv[0]))
-run_config_dir = os.path.join(script_root, os.pardir, "run_config")
+if (not opts.unit_testing):
+ run_config_dir = os.path.join(script_root, os.pardir, "run_config")
+else:
+ run_config_dir = os.path.join(script_root, os.pardir, "run_config_tfut")
arg = opts.args[0]
run_config = arg.split(":")[-1]
diff --git a/tfut_config/default b/tfut_config/default
index b057c32..e69de29 100644
--- a/tfut_config/default
+++ b/tfut_config/default
@@ -1 +0,0 @@
-COVERAGE=OFF