kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

commit adf6b8fb78ceaaaf20abd899d484bc97a691696b
parent 684dd8591fd698225fd8ed3f148cddb1e337d63c
Author: Ryan Sepassi <rsepassi@gmail.com>
Date:   Tue, 26 May 2026 15:33:46 -0700

rt: auto-detect host-native runtime variant

Default RT_DEFAULT_VARIANTS to the detected host platform/arch
instead of a hard-coded list. Detect macOS, Linux, and Windows
hosts and map to the corresponding runtime variant. Print an
error when no native variant matches rather than silently
building nothing.

Diffstat:
Mrt/Makefile | 44++++++++++++++++++++++++++++++++++----------
1 file changed, 34 insertions(+), 10 deletions(-)

diff --git a/rt/Makefile b/rt/Makefile @@ -26,18 +26,42 @@ RT_VARIANTS = \ arm-eabi-thumb2 \ arm-eabi-thumb1 -RT_DEFAULT_VARIANTS = \ - aarch64-linux \ - x86_64-linux \ - riscv64-linux \ - aarch64-apple-darwin \ - x86_64-apple-darwin - -.PHONY: rt rt-all-targets $(addprefix rt-,$(RT_VARIANTS)) clean-rt - -rt: $(addprefix rt-,$(RT_DEFAULT_VARIANTS)) +RT_HOST_MACHINE ?= $(shell uname -m 2>/dev/null || printf unknown) +RT_NATIVE_VARIANT = +ifeq ($(HOST_UNAME),Darwin) +ifneq ($(filter arm64 aarch64,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = aarch64-apple-darwin +else ifneq ($(filter x86_64 amd64,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = x86_64-apple-darwin +endif +else ifeq ($(HOST_UNAME),Linux) +ifneq ($(filter x86_64 amd64,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = x86_64-linux +else ifneq ($(filter arm64 aarch64,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = aarch64-linux +else ifneq ($(filter riscv64,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = riscv64-linux +else ifneq ($(filter i386 i486 i586 i686,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = i386-linux +endif +else ifneq ($(filter MINGW% MSYS% CYGWIN%,$(HOST_UNAME)),) +ifneq ($(filter x86_64 amd64,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = x86_64-pc-windows +else ifneq ($(filter arm64 aarch64,$(RT_HOST_MACHINE)),) +RT_NATIVE_VARIANT = aarch64-windows +endif +endif + +RT_DEFAULT_VARIANTS ?= $(RT_NATIVE_VARIANT) + +.PHONY: rt rt-all-targets rt-no-native-target $(addprefix rt-,$(RT_VARIANTS)) clean-rt + +rt: $(if $(RT_DEFAULT_VARIANTS),$(addprefix rt-,$(RT_DEFAULT_VARIANTS)),rt-no-native-target) rt-all-targets: $(addprefix rt-,$(RT_VARIANTS)) +rt-no-native-target: + $(error unsupported native runtime target: HOST_UNAME=$(HOST_UNAME) RT_HOST_MACHINE=$(RT_HOST_MACHINE)) + # ---------- variant feature flags -------------------------------------------- # TARGET - clang target triple # ABI - lp64 | ilp32 | llp64