summaryrefslogtreecommitdiff
path: root/scripts/build/environments/kernel.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 /scripts/build/environments/kernel.mk
parentb9ff206e6bd3f4d67851263a6f2acb5f575cf3b0 (diff)
downloadlume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.gz
lume-48ef95c24e9ac3d11200b61af617a01b10b507d1.tar.xz
build: introduce declarative non-recursive build graph
Diffstat (limited to 'scripts/build/environments/kernel.mk')
-rw-r--r--scripts/build/environments/kernel.mk28
1 files changed, 28 insertions, 0 deletions
diff --git a/scripts/build/environments/kernel.mk b/scripts/build/environments/kernel.mk
new file mode 100644
index 0000000..088cdf0
--- /dev/null
+++ b/scripts/build/environments/kernel.mk
@@ -0,0 +1,28 @@
+# SPDX-License-Identifier: GPL-2.0-or-later
+
+WARNINGS ?= -Wall -Wextra -Wno-unused-parameter
+
+ifeq ($(BUILD_VARIANT),release)
+KERNEL_OPT_FLAGS := -O2 -g0 -DNDEBUG
+else
+KERNEL_OPT_FLAGS := -O2 -g
+endif
+
+CFLAGS := $(WARNINGS) $(KERNEL_OPT_FLAGS) \
+ -ffreestanding -nostdlib \
+ -mcmodel=medany -fPIE -MMD -MP \
+ $(TOOLCHAIN_CFLAGS) $(KCPPFLAGS) $(INCLUDES) \
+ -I$(BUILD)/generated
+
+CFLAGS_LIBC := $(CFLAGS) -std=gnu23 -Iinclude/libc-shim \
+ -Wno-parentheses -Wno-sign-compare
+
+CXXFLAGS := $(CFLAGS) $(TOOLCHAIN_CXXFLAGS) -std=c++23 \
+ -fno-exceptions -fno-rtti -fno-use-cxa-atexit \
+ -fno-threadsafe-statics
+
+# Pre-MMU assembly must never use GOT-indirect addressing.
+ASFLAGS := $(filter-out -fPIE,$(CFLAGS)) -fno-pie
+
+LDFLAGS := -nostdlib -shared -Bsymbolic -z notext -z norelro \
+ --no-dynamic-linker