Files

54 lines
2.4 KiB
Markdown

# tools/kconfig — vendored Linux kernel Kconfig tooling
## What this is
This directory is a trimmed vendor drop of `scripts/kconfig/` from the
Linux kernel (`torvalds/linux`, `master` at the time of vendoring). It
provides the `Kconfig` language engine and three front ends:
- `conf` — headless config (`config`/`oldconfig`/`defconfig`/etc.)
- `mconf` — the ncurses `menuconfig` TUI (uses `lxdialog/`)
- `qconf` — the Qt `xconfig` GUI
## License — read this before touching anything in this directory
Every file here carries its own upstream `SPDX-License-Identifier: GPL-2.0`
tag. The full license text is in `LICENSE` in this directory.
This is **host-side build tooling only**. `conf`/`mconf`/`qconf` run on the
machine building StarForth, read `Kconfig`/`.config`, and emit a generated
Make-syntax config fragment (`build/$(ARCH)/include/config/auto.conf`).
None of this code is compiled into, statically or dynamically linked into,
or otherwise shipped as part of the `starforth` binary or the
`starkernel_loader.efi` / kernel image — the same relationship StarForth
already has with gcc, bison, flex, and make themselves. StarForth's own
source is licensed under the Starship License 1.0 (see the repository
root `LICENSE`); that license does not apply to this directory, and this
directory's license does not apply to the rest of the repository.
See `sbom.spdx` / `sbom.spdx.json` for the formal SBOM entry.
## What was trimmed from upstream
Kept: the core engine (`parser.y`, `lexer.l`, `preprocess.c/h`, `symbol.c`,
`expr.c/h`, `menu.c`, `confdata.c`, `lkc.h`, `lkc_proto.h`, `internal.h`,
`util.c`), `conf.c`, `mconf.c` + `lxdialog/` + `mconf-cfg.sh`, `qconf.cc` +
`qconf.h` + `qconf-cfg.sh`.
Dropped: `gconf.c`/`gconf.ui` (GTK gconfig — not needed), `nconf.c` and
friends (nconfig — not needed), kconfig's own `tests/` directory, and the
upstream `Makefile` (kept alongside as `Makefile.upstream-reference` for
comparison only — it isn't self-contained outside a full kernel source
tree, since it depends on `scripts/Kbuild.include` and
`scripts/Makefile.host` that aren't vendored here; this directory's real
`Makefile` is a small bespoke one written for StarForth specifically).
## Updating this vendor drop
```
git clone --depth 1 --filter=blob:none --sparse https://github.com/torvalds/linux.git
cd linux
git sparse-checkout set scripts/kconfig
```
then re-copy the files listed above.