96 lines
2.9 KiB
Plaintext
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
|