summaryrefslogtreecommitdiff
path: root/lib/Build.mk
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-07-10 23:20:03 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-07-10 23:20:03 +0800
commit48ef95c24e9ac3d11200b61af617a01b10b507d1 (patch)
tree57f0e26ab98e795b19839b6eece98ca58a4b702d /lib/Build.mk
parentb9ff206e6bd3f4d67851263a6f2acb5f575cf3b0 (diff)
downloadlume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.gz
lume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.xz
build: introduce declarative non-recursive build graph
Diffstat (limited to 'lib/Build.mk')
-rw-r--r--lib/Build.mk35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/Build.mk b/lib/Build.mk
new file mode 100644
index 0000000..77d380c
--- /dev/null
+++ b/lib/Build.mk
@@ -0,0 +1,35 @@
+targets += lib/runtime lib/string lib/libfdt lib/core
+
+target.lib/runtime.kind := source-set
+target.lib/runtime.sources := \
+ lib/cxx_abi.cc lib/rbtree.cc lib/kobject.cc lib/kprintf.cc lib/klog.cc \
+ lib/random.cc lib/printf.c
+
+target.lib/string.kind := static-library
+target.lib/string.sources := $(sort $(wildcard lib/string/*.c))
+
+# Architecture assembly replaces the matching generic C implementation.
+string-arch.riscv :=
+string-arch.x86_64 := x86_64
+string-arch.aarch64 := aarch64
+string-arch.i386 := i386
+string-arch.arm := arm
+string-arch := $(string-arch.$(ARCH))
+ifneq ($(string-arch),)
+string-asm := $(sort $(wildcard lib/string/$(string-arch)/*.S) \
+ $(wildcard lib/string/$(string-arch)/*.s))
+string-asm-names := $(sort $(basename $(notdir $(string-asm))))
+target.lib/string.sources := $(filter-out \
+ $(foreach name,$(string-asm-names),lib/string/$(name).c), \
+ $(target.lib/string.sources)) $(string-asm)
+endif
+
+target.lib/libfdt.kind := static-library
+target.lib/libfdt.sources := \
+ lib/fdt.c lib/fdt_ro.c lib/fdt_wip.c lib/fdt_rw.c lib/fdt_sw.c \
+ lib/fdt_strerror.c lib/fdt_empty_tree.c lib/fdt_addresses.c
+target.lib/libfdt.private-includes := scripts/dtc/libfdt
+target.lib/libfdt.cflags := -Wno-parentheses -Wno-sign-compare
+
+target.lib/core.kind := header-library
+target.lib/core.deps := lib/runtime lib/string lib/libfdt