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:
| M | rt/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