diff options
| author | Frédéric Desbiens <[email protected]> | 2026-08-11 08:54:04 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-08-11 08:54:04 -0400 |
| commit | 51ca412b368bec76c94b619ec4833209b2e54af1 (patch) | |
| tree | 04a6351f5a7aebc927657b6bcc04a165cc7be571 /scripts | |
| parent | 08eff8061c5b9e8852192de97b31b082c9711b15 (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-x | scripts/check_clang.sh | 7 |
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 |
