fix: sync template sysroot, add script

This commit is contained in:
2026-06-12 11:56:20 +02:00
parent 22691c5c17
commit 44f86a8b19
33 changed files with 5172 additions and 147 deletions
+66
View File
@@ -0,0 +1,66 @@
#!/bin/bash
# sync_template.sh - Refresh the standalone app SDK (template/sysroot) from the
# live tree: headers from programs/include + freestanding toolchain headers,
# libraries from programs/lib build outputs.
# Usage: ./scripts/sync_template.sh (from project root; run 'make programs' first)
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
SYSROOT="$PROJECT_ROOT/template/sysroot"
INC="$SYSROOT/include"
LIB="$SYSROOT/lib"
# Include directories from programs/include that form the app SDK surface.
# (gui/dialogs.hpp depends on libloader/, so it ships too.)
SDK_DIRS=(Api gui http libc libloader montauk tls)
# Library build outputs copied into sysroot/lib.
SDK_LIBS=(
"programs/lib/libc/liblibc.a"
"programs/lib/libc/crt1.o"
"programs/lib/libc/crti.o"
"programs/lib/libc/crtn.o"
"programs/lib/bearssl/libbearssl.a"
"programs/lib/libjpeg/libjpeg.a"
"programs/lib/tls/libtls.a"
)
# All libraries must exist before we wipe anything.
for f in "${SDK_LIBS[@]}"; do
if [ ! -f "$PROJECT_ROOT/$f" ]; then
echo "sync_template: missing $f - run 'make programs' first" >&2
exit 1
fi
done
# The sysroot is fully generated from the sources below, so rebuild it from
# scratch to drop headers that no longer exist upstream.
rm -rf "$INC" "$LIB"
mkdir -p "$INC" "$LIB"
# Freestanding C headers (intrinsics, stddef.h, ...) and C++ headers,
# flattened into the sysroot root like the compiler's default search path.
cp -r "$PROJECT_ROOT/kernel/freestnd-c-hdrs/x86_64/include/." "$INC/"
cp -r "$PROJECT_ROOT/kernel/freestnd-cxx-hdrs/x86_64/include/." "$INC/"
# MontaukOS SDK headers.
for d in "${SDK_DIRS[@]}"; do
cp -r "$PROJECT_ROOT/programs/include/$d" "$INC/$d"
done
# BearSSL public headers, available both as <bearssl.h> and <bearssl/bearssl.h>.
cp "$PROJECT_ROOT"/programs/lib/bearssl/inc/*.h "$INC/"
mkdir -p "$INC/bearssl"
cp "$PROJECT_ROOT"/programs/lib/bearssl/inc/*.h "$INC/bearssl/"
# Libraries and CRT objects.
for f in "${SDK_LIBS[@]}"; do
cp "$PROJECT_ROOT/$f" "$LIB/"
done
echo "sync_template: refreshed $SYSROOT"
echo " headers: freestnd-c-hdrs, freestnd-cxx-hdrs, programs/include/{${SDK_DIRS[*]}}, bearssl"
echo " libraries: $(cd "$LIB" && ls | tr '\n' ' ')"