Files
LithosAnanake/Kconfig.variant

96 lines
2.9 KiB
Plaintext

menu "Build variant"
choice
prompt "Which StarForth build is this config for"
default STARFORTH_VARIANT_HOSTED
help
StarForth has two build targets sharing most of the physics/
heartbeat knobs below (Makefile, the hosted VM) and (Makefile.
starkernel, the bare-metal LithosAnanke kernel). TARGET profiles
and platform mode (below) are hosted-only -- the kernel build
has no equivalent. HISTORICAL: a third L4Re/Fiasco.OC platform
mode existed under this variant through mid-2026; removed as an
active target (see "Platform mode" choice below).
config STARFORTH_VARIANT_HOSTED
bool "Hosted VM (Linux)"
config STARFORTH_VARIANT_KERNEL
bool "LithosAnanke bare-metal kernel"
endchoice
if STARFORTH_VARIANT_HOSTED
choice
prompt "Optimization profile (TARGET=)"
default TARGET_STANDARD
help
Selects the hosted Makefile's TARGET= build profile. "pgo"
is not a simple flag set -- it drives a 6-stage instrument/
train/optimize recipe (see Makefile's pgo-build target) --
so selecting it here only picks which make recipe runs; it
does not itself expand into CFLAGS the way the other profiles
do.
config TARGET_STANDARD
bool "standard -- O2, LTO, safe default"
config TARGET_FAST
bool "fast -- O3, no LTO, easier debugging"
config TARGET_FASTEST
bool "fastest -- O3, ASM + LTO + direct threading, runs a benchmark after build"
config TARGET_TURBO
bool "turbo -- O3, ASM-optimized, no direct threading"
config TARGET_PGO
bool "pgo -- profile-guided optimization (multi-stage recipe)"
config TARGET_ASAN
bool "asan -- AddressSanitizer/UBSan instrumented"
endchoice
config TARGET_STRING
string
default "standard" if TARGET_STANDARD
default "fast" if TARGET_FAST
default "fastest" if TARGET_FASTEST
default "turbo" if TARGET_TURBO
default "pgo" if TARGET_PGO
default "asan" if TARGET_ASAN
choice
prompt "Platform mode"
default PLATFORM_DEFAULT
help
Mutually exclusive platform modes (hosted Makefile's MINIMAL=1
ifdef). MINIMAL swaps in freestanding-style platform sources.
HISTORICAL: a third mode, PLATFORM_L4RE (L4RE=1 -- forced
HEARTBEAT_THREAD_ENABLED off, dropped -pthread), existed here
through mid-2026. L4Re/Fiasco.OC support has been removed as an
active target; see Makefile's "Platform support" section for
the commented-out restoration path if it's ever needed again.
config PLATFORM_DEFAULT
bool "Default (Linux hosted)"
config PLATFORM_MINIMAL
bool "Minimal (freestanding, no libc dependency surface) [DISABLED]"
help
DISABLED 2026-07-08: selecting this sets MINIMAL=1, which the
Makefile now deliberately fails with $(error ...). The freestanding
platform layer (src/platform/starforth_minimal.c) was never
written -- only 5 of ~90 source files have any STARFORTH_MINIMAL
awareness. Not a quick fix; see Makefile's "ifdef MINIMAL" comment
for what a real fix would require.
endchoice
endif # STARFORTH_VARIANT_HOSTED
endmenu