- hypercall.c: 5 Phase 1.3 stubs -> HCALL-E01..E05 panic (no NOSYS return) - drr_stub.c: snapshot alloc fail -> DRR-E01; new skeletons DRR-E02 root key seal, DRR-E03 task kill crypto erase, DRR-E04/E05 segment/system rollback, DRR-E06/E07 driver recovery ops dispatch - sched.c: enable fail -> SCH-E02 panic (no silent demo skip) - dkm/kernel_api.c: D1 hot-unload DKM-E01, D2 bare code loader DKM-E02, SIPI AP wake DKM-E03 skeletons - virtio_net tx/rx stubs -> VNET-E01/E02; ath9k tx stub -> ATH-E01; xhci port reset -> XHC-E01; nvme MSI/MSI-X fail -> NVME-E01..E03 (no silent polling downgrade); e1000 MAC fallback -> E1K-E01 - pe_shim unimpl API -> PE-E01; PE ordinal import -> PE-E02 - kernel/main.c: lib sync / vscode install fail -> LNX-E01/E02 - NEW brand/brand.c (E1 boot anim BRAND-E01, E2 time egg BRAND-E02) and pkg/pkg.c (pacman skeleton PKG-E01..03), wired into UTSM MAKEFILE - Deliberate design-internal fallbacks kept and documented (VMX skip, bzImage skip, KDE fallback, boot-module fallback, apic->PIC route)
40 lines
1.6 KiB
Makefile
40 lines
1.6 KiB
Makefile
CC := clang
|
|
LD := ld.lld
|
|
OBJCOPY := llvm-objcopy
|
|
|
|
ROOT := ../..
|
|
OUT := $(ROOT)/SYSTEM/boot/utsm.elf
|
|
|
|
CFLAGS := -target x86_64-unknown-none -std=c11 -ffreestanding -fno-builtin -fno-stack-protector -fno-pic -fno-pie -mcmodel=kernel -mno-red-zone -mno-sse -mno-sse2 -mno-mmx -msoft-float -m64 -Wall -Wextra -Iinclude -I../utsm-ipc -O2
|
|
ASFLAGS := -target x86_64-unknown-none -ffreestanding -fno-pic -fno-pie -mcmodel=kernel -mno-red-zone -mno-sse -mno-sse2 -mno-mmx -msoft-float -m64 -Iinclude -I../utsm-ipc
|
|
LDFLAGS := -nostdlib -static -z max-page-size=0x1000 -T linker.ld
|
|
|
|
C_SOURCES := $(wildcard arch/x86_64/*.c kernel/*.c runtime/*.c mm/*.c core/*.c crypto/*.c pckc/*.c utrw/*.c drr/*.c sched/*.c dkm/*.c test/*.c vmm/*.c pe/*.c brand/*.c pkg/*.c)
|
|
S_SOURCES := $(wildcard arch/x86_64/*.S vmm/*.S sched/*.S)
|
|
OBJECTS := $(C_SOURCES:.c=.o) $(S_SOURCES:.S=.o)
|
|
DEPS := $(C_SOURCES:.c=.d)
|
|
|
|
.PHONY: all clean
|
|
|
|
# 显式指定默认目标:防止 -include 的 .d 文件(halt.d 等)抢占默认目标
|
|
.DEFAULT_GOAL := all
|
|
|
|
all: $(OUT)
|
|
|
|
# 头文件依赖追踪:clang -MMD 生成 .d,避免 config.h 等头修改后对象文件不重建
|
|
# 注意:-include 必须放在 all: 之后,否则第一个 .d 中的目标会成为 make 默认目标
|
|
-include $(DEPS)
|
|
|
|
$(OUT): $(OBJECTS) linker.ld
|
|
@mkdir -p $(dir $@)
|
|
$(LD) $(LDFLAGS) -o $@ $(OBJECTS)
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -MMD -MP -c $< -o $@
|
|
|
|
%.o: %.S
|
|
$(CC) $(ASFLAGS) -c $< -o $@
|
|
|
|
clean:
|
|
powershell -NoProfile -Command "Get-ChildItem -Path . -Recurse -Include *.o,*.d | Remove-Item -Force; if (Test-Path '$(OUT)') { Remove-Item '$(OUT)' -Force }"
|