Files

64 lines
2.3 KiB
Bash

#!/bin/sh
set -eu
# This is the only firmware build entry point used by the composing Codex.
# Codex may modify the complete writable task source; the service supplies
# separate incremental build/output directories. Every compiler control is one.
script_dir=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
workspace=$(CDPATH= cd -- "$script_dir/../../../.." && pwd)
build_dir=${N7_CODEX_FIRMWARE_BUILD_DIR:?N7_CODEX_FIRMWARE_BUILD_DIR is required}
output_dir=${N7_CODEX_FIRMWARE_OUTPUT_DIR:?N7_CODEX_FIRMWARE_OUTPUT_DIR is required}
task_build_dir="$build_dir/task-workspace"
generated_source="$build_dir/generated-application-source"
build_cpu=${N7_BUILD_CPU:-0}
report_failure() {
result=$?
trap - EXIT
if [ "$result" -ne 0 ]; then
echo "N7_CODEX_FIRMWARE_BUILD_FAILED exit=$result" >&2
fi
exit "$result"
}
trap report_failure EXIT
export N7_BUILD_JOBS=1
export CMAKE_BUILD_PARALLEL_LEVEL=1
export MAKEFLAGS=-j1
export NINJAFLAGS=-j1
export OMP_NUM_THREADS=1
export OPENBLAS_NUM_THREADS=1
export MKL_NUM_THREADS=1
export NUMEXPR_NUM_THREADS=1
export RAYON_NUM_THREADS=1
export GOMAXPROCS=1
mkdir -p "$build_dir" "$output_dir"
rm -rf "$generated_source"
python3 "$workspace/tools/prepare_gcc_application_source.py" \
--source-root "$workspace/third_party/ZL-test-scripts" \
--project-root "$workspace" \
--output-root "$generated_source"
test -s "$generated_source/src/main_cm0plus.c"
test -s "$generated_source/src/ota_self_compose_plan.h"
echo "N7_CODEX_FIRMWARE_BUILD_START cpu=1"
taskset -c "$build_cpu" cmake \
-S "$workspace/firmware/gcc" -B "$task_build_dir" -G Ninja \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_TOOLCHAIN_FILE="$workspace/firmware/gcc/arm-none-eabi-toolchain.cmake" \
-DOTA_PROJECT_ROOT="$workspace" \
-DOTA_SDK_ROOT="$workspace/third_party/ZL-test-scripts/T2G_Sample_Driver_Library_7.9.0" \
-DOTA_SOURCE_ROOT="$workspace/third_party/ZL-test-scripts" \
-DOTA_GENERATED_SOURCE_ROOT="$generated_source" \
-DOTA_OUTPUT_DIR="$output_dir"
taskset -c "$build_cpu" cmake --build "$task_build_dir" \
--target app_self_compose --parallel 1
firmware="$output_dir/self-compose.raw.bin"
test -s "$firmware"
size=$(wc -c <"$firmware" | tr -d ' ')
sha256=$(sha256sum "$firmware" | awk '{print $1}')
echo "N7_CODEX_FIRMWARE_BUILD_OK cpu=1 bytes=$size sha256=$sha256"
trap - EXIT