feat: redesign installer on MTK toolkit with component selection

Rewrite the Installer app on the Montauk Toolkit (Canvas + gui/mtk
widgets, theme, hover states, scrollbar) replacing the hand-rolled px_*
renderer and bespoke TrueType usage.

Add a new "Software" step: an expandable checkbox tree for optional
components (Montauk SDK with gcc/g++, binutils, tcc, lua sub-items;
Games; Office; Internet apps; Printing; experimental httpd and SDR).
Unchecked components' paths are excluded from the install copy, with a
longest-path ownership rule so e.g. sdk/tcc installs even when the rest
of the SDK is deselected. The update flow refreshes only the components
the target already has.

Add tri-state checkbox and disclosure-arrow widgets to the MTK toolkit
(anti-aliased, supersampled).

Merge tcc and lua into 0:/sdk (0:/sdk/tcc, 0:/sdk/lua) and drop 0:/lib:
update tcc config.h, lua luaconf.h, both Makefiles, the devkit clean
scope, man pages and montaukos.org notices.

Make printing optional: init skips printd when 0:/os/printd.elf is
absent.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
This commit is contained in:
2026-07-17 20:52:19 +02:00
co-authored by Claude Opus 4.8
parent 8e6b619b02
commit 0377be4524
18 changed files with 1647 additions and 813 deletions
+9 -6
View File
@@ -295,11 +295,11 @@ gen-syscalls:
# check-syscalls guards against shipping a stale C API header into the ramdisk.
tcc: libc check-syscalls
$(MAKE) -C src/tcc
mkdir -p $(BINDIR)/lib/tcc/include
cp -r src/tcc/tcc_include/* $(BINDIR)/lib/tcc/include/
cp include/libc/*.h $(BINDIR)/lib/tcc/include/
mkdir -p $(BINDIR)/lib/tcc/include/sys
cp include/libc/sys/*.h $(BINDIR)/lib/tcc/include/sys/
mkdir -p $(BINDIR)/sdk/tcc/include
cp -r src/tcc/tcc_include/* $(BINDIR)/sdk/tcc/include/
cp include/libc/*.h $(BINDIR)/sdk/tcc/include/
mkdir -p $(BINDIR)/sdk/tcc/include/sys
cp include/libc/sys/*.h $(BINDIR)/sdk/tcc/include/sys/
# Build Lua interpreter and static library (depends on libc).
lua: libc
@@ -388,7 +388,10 @@ DEVKIT_TOOLS := as ld ar nm objcopy objdump readelf ranlib strip size strings ad
.PHONY: devkit
devkit: libc
ifneq ($(wildcard $(NATIVE_BIN)/as),)
rm -rf $(BINDIR)/sdk
# Clean only the devkit-owned subtrees; sdk/tcc and sdk/lua are
# installed into bin/sdk/ by their own targets.
rm -rf $(BINDIR)/sdk/bin $(BINDIR)/sdk/lib $(BINDIR)/sdk/include \
$(BINDIR)/sdk/libexec $(BINDIR)/sdk/x86_64-montauk
mkdir -p $(BINDIR)/sdk/bin $(BINDIR)/sdk/lib $(BINDIR)/sdk/include
for t in $(DEVKIT_TOOLS); do \
cp $(NATIVE_BIN)/$$t $(BINDIR)/sdk/bin/$$t.elf || exit 1; \