summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorFrédéric Desbiens <[email protected]>2026-08-11 08:54:04 -0400
committerGitHub <[email protected]>2026-08-11 08:54:04 -0400
commit51ca412b368bec76c94b619ec4833209b2e54af1 (patch)
tree04a6351f5a7aebc927657b6bcc04a165cc7be571 /scripts
parent08eff8061c5b9e8852192de97b31b082c9711b15 (diff)
Added build scripts for the AArch64 examples, which had none (#597)
The AArch64 examples could only be built through the Arm Development Studio project files beside them. There was no script, so nothing in CI or on a developer's machine could build them, and the sources they need were never named anywhere: vectors.S, v8_aarch64.S and v8_utils.S were present but unreferenced, which is why a hand written link failed on GetCPUID, GetAffinity, InvalidateUDCaches and ZeroBlock. Those four are defined in v8_aarch64.S and v8_utils.S, in the tree all along. Add one pair of scripts, in ports_arch so every AArch64 port receives them. Both derive the -mcpu value and the kernel source directory from the port directory they sit in, so a single pair serves the twelve ThreadX ports and the twelve SMP ports, the latter building against common_smp and picking up the C sources those ports carry alongside the assembly. TOOLCHAIN=atfe selects Arm Toolchain for Embedded in place of the GNU toolchain, as it does for the ARMv7 example scripts. One symbol genuinely had no definition. startup.S calls initialise_monitor_handles to open the standard file handles over a debugger connection; the GNU toolchain provides it in libgloss through --specs=rdimon.specs, while picolibc has no equivalent and neither does the LLVM toolchain's semihosting library. semihost_stub.S supplies a weak no-op, linked for that toolchain only, so a real definition always wins. Extend scripts/check_clang.sh to cover ports_smp as well as ports, since the example builds now exist there too. Verified by building every AArch64 example with Arm Toolchain for Embedded: twelve ThreadX ports at 314,744 to 315,256 bytes of text and twelve SMP ports at 325,304 to 325,880. scripts/check_clang.sh now reports 35 of 35 example builds linking with none failing, the twenty-four new ones plus the eleven that already built. The images have not been executed: the sample targets the Base platform peripheral addresses, which the available emulator does not provide. Cortex-A34, and the Cortex-A34 and A78 SMP ports, are left out. They are not in the generator's core list, so they receive nothing from ports_arch and cannot be checked for reproducibility either. Bringing them in rewrites 114 files in those three directories, which deserves its own change. Assisted-by: Claude Code (Opus 5) <[email protected]>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/check_clang.sh7
1 files changed, 4 insertions, 3 deletions
diff --git a/scripts/check_clang.sh b/scripts/check_clang.sh
index da6aaf5d..b9ff3501 100755
--- a/scripts/check_clang.sh
+++ b/scripts/check_clang.sh
@@ -1,6 +1,6 @@
#!/bin/bash
##############################################################################
-# Copyright (C) 2026 Eclipse ThreadX contributors
+# Copyright (c) 2026 Eclipse ThreadX contributors
#
# This program and the accompanying materials are made available under the
# terms of the MIT License which is available at
@@ -144,7 +144,8 @@ declare -A PORT_TARGET=(
# port headers differ by profile rather than by core.
C_CORES="cortex_m0 cortex_m4 cortex_m23 cortex_m33 cortex_m55 cortex_a7 cortex_a53 cortex_r5"
-# Example builds that are not expected to link, with the reason. Listed
+# Example builds that are not expected to link, with the reason. Named by
+# their port directory, which covers both ports/ and ports_smp/. Listed
# explicitly rather than silently skipped, so the gaps stay visible.
#
# These fail with the GNU toolchain too, so they are not LLVM problems:
@@ -224,7 +225,7 @@ if [ "$no_examples" -eq 0 ]; then
example_ok=0
example_total=0
example_known=""
- for dir in ports/*/gnu/example_build; do
+ for dir in ports/*/gnu/example_build ports_smp/*/gnu/example_build; do
[ -f "$dir/build_threadx.sh" ] && [ -f "$dir/build_threadx_sample.sh" ] || continue
core="$(echo "$dir" | cut -d/ -f2)"
case " $EXAMPLES_EXPECTED_TO_FAIL " in