summaryrefslogtreecommitdiff
path: root/na/lib/module.mk
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-04-21 23:05:20 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-04-21 23:05:20 +0800
commitdf1af31b90d904fddc45c6da6da5ee36d905a0ca (patch)
treeed51b2b97da3845c842ad27d7b3b44909e703baf /na/lib/module.mk
parentde8ee60ecb4396fa0567db666f99c1b8d1114bc7 (diff)
downloadlume-df1af31b90d904fddc45c6da6da5ee36d905a0ca.tar.gz
lume-df1af31b90d904fddc45c6da6da5ee36d905a0ca.tar.xz
feat: Update Makefile and module.mk files to include additional source files and improve build process
Diffstat (limited to 'na/lib/module.mk')
-rw-r--r--na/lib/module.mk35
1 files changed, 35 insertions, 0 deletions
diff --git a/na/lib/module.mk b/na/lib/module.mk
index 46c46d4..08b29c2 100644
--- a/na/lib/module.mk
+++ b/na/lib/module.mk
@@ -1,2 +1,37 @@
# lib/module.mk
SRCS_CC += lib/panic.cc
+SRCS_CC += lib/cxx_abi.cc
+SRCS_CC += lib/rbtree.cc
+
+# ============================================================
+# musl string library (cross-platform with arch asm overrides)
+# ============================================================
+
+# Map LumeOS ARCH to musl string arch directory
+# riscv has no musl asm optimizations → pure C fallback
+MUSL_STRING_ARCH_riscv :=
+MUSL_STRING_ARCH_x86_64 := x86_64
+MUSL_STRING_ARCH_i386 := i386
+MUSL_STRING_ARCH_aarch64:= aarch64
+MUSL_STRING_ARCH_arm := arm
+
+MUSL_STRING_ARCH := $(MUSL_STRING_ARCH_$(ARCH))
+
+# Collect arch-specific asm sources (if any for this arch)
+MUSL_ASM_SRCS :=
+ifneq ($(MUSL_STRING_ARCH),)
+ MUSL_ASM_SRCS += $(wildcard lib/string/$(MUSL_STRING_ARCH)/*.S) \
+ $(wildcard lib/string/$(MUSL_STRING_ARCH)/*.s)
+endif
+
+# Derive which C files are overridden by asm (strip path+ext to get base name)
+MUSL_ASM_BASENAMES := $(sort $(basename $(notdir $(MUSL_ASM_SRCS))))
+
+# All C sources, then filter out those with asm replacements
+MUSL_ALL_C := $(wildcard lib/string/*.c)
+MUSL_EXCLUDED_C := $(foreach name,$(MUSL_ASM_BASENAMES),lib/string/$(name).c)
+MUSL_C_SRCS := $(filter-out $(MUSL_EXCLUDED_C),$(MUSL_ALL_C))
+
+SRCS_C += $(MUSL_C_SRCS)
+SRCS_S += $(filter %.S,$(MUSL_ASM_SRCS))
+SRCS_s += $(filter %.s,$(MUSL_ASM_SRCS))