feat: implement PS/2 keyboard & shell, dynamic heap (malloc/new), Zero-Copy SHM, and SMP multicore initialization
This commit is contained in:
@@ -33,8 +33,11 @@ KERNEL_BIN := target/x86_64-unknown-none/release/opencore_kernel
|
||||
KERNEL_ELF := $(BUILD_DIR)/opencore_kernel.elf
|
||||
INIT_SERVER := $(BUILD_DIR)/init_server.elf
|
||||
UART_DRIVER := $(BUILD_DIR)/uart_driver.elf
|
||||
SH_SERVER := $(BUILD_DIR)/sh.elf
|
||||
PROCMGR := $(BUILD_DIR)/procmgr.elf
|
||||
|
||||
LIBC_OBJS := $(BUILD_DIR)/string.o $(BUILD_DIR)/syscalls.o $(BUILD_DIR)/stdlib.o
|
||||
|
||||
.PHONY: all kernel libc hal servers iso run clean help
|
||||
|
||||
all: kernel libc hal servers
|
||||
@@ -43,7 +46,7 @@ all: kernel libc hal servers
|
||||
@echo "======================================================="
|
||||
@echo " [SUCCESS] opencoreC Skeleton Build Complete!"
|
||||
@echo " Kernel: $(KERNEL_ELF)"
|
||||
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(PROCMGR)"
|
||||
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(SH_SERVER), $(PROCMGR)"
|
||||
@echo "======================================================="
|
||||
|
||||
kernel:
|
||||
@@ -56,6 +59,7 @@ libc:
|
||||
@echo "[CC] Compiling bare-metal freestanding libc..."
|
||||
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/string.c -o $(BUILD_DIR)/string.o
|
||||
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/syscalls.c -o $(BUILD_DIR)/syscalls.o
|
||||
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/stdlib.c -o $(BUILD_DIR)/stdlib.o
|
||||
|
||||
hal: libc
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
@@ -67,18 +71,24 @@ hal: libc
|
||||
servers: libc hal
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
@echo "[CXX/CC] Linking Ring 3 User-space Servers..."
|
||||
@# C++ LibIPC
|
||||
@$(CXX) $(CXXFLAGS) -c $(LIB_DIR)/libipc_cpp/src/ipc.cpp -o $(BUILD_DIR)/ipc.o
|
||||
@# Init Root Server
|
||||
@$(CXX) $(CXXFLAGS) -c $(SERVERS_DIR)/init/main.cpp -o $(BUILD_DIR)/init_main.o
|
||||
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(INIT_SERVER) \
|
||||
$(BUILD_DIR)/init_main.o $(BUILD_DIR)/syscalls.o $(BUILD_DIR)/string.o
|
||||
$(BUILD_DIR)/init_main.o $(BUILD_DIR)/ipc.o $(LIBC_OBJS)
|
||||
@# Standalone UART Driver Server
|
||||
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(SERVERS_DIR)/uart_driver/main.c -o $(BUILD_DIR)/uart_driver_main.o
|
||||
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(UART_DRIVER) \
|
||||
$(BUILD_DIR)/uart_driver_main.o $(BUILD_DIR)/uart.o $(BUILD_DIR)/syscalls.o $(BUILD_DIR)/string.o
|
||||
$(BUILD_DIR)/uart_driver_main.o $(BUILD_DIR)/uart.o $(LIBC_OBJS)
|
||||
@# Interactive Shell
|
||||
@$(CXX) $(CXXFLAGS) -c $(SERVERS_DIR)/sh/main.cpp -o $(BUILD_DIR)/sh_main.o
|
||||
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(SH_SERVER) \
|
||||
$(BUILD_DIR)/sh_main.o $(BUILD_DIR)/ipc.o $(LIBC_OBJS)
|
||||
@# Process Manager Daemon
|
||||
@$(CXX) $(CXXFLAGS) -c $(SERVERS_DIR)/procmgr/main.cpp -o $(BUILD_DIR)/procmgr_main.o
|
||||
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(PROCMGR) \
|
||||
$(BUILD_DIR)/procmgr_main.o $(BUILD_DIR)/syscalls.o $(BUILD_DIR)/string.o
|
||||
$(BUILD_DIR)/procmgr_main.o $(BUILD_DIR)/ipc.o $(LIBC_OBJS)
|
||||
|
||||
# Staging Limine Boot ISO directory
|
||||
iso: all
|
||||
@@ -86,13 +96,14 @@ iso: all
|
||||
@cp $(KERNEL_ELF) $(ISO_DIR)/boot/
|
||||
@cp $(INIT_SERVER) $(ISO_DIR)/boot/
|
||||
@cp $(UART_DRIVER) $(ISO_DIR)/boot/
|
||||
@cp $(SH_SERVER) $(ISO_DIR)/boot/
|
||||
@cp limine.conf $(ISO_DIR)/boot/limine.conf
|
||||
@cp limine.cfg $(ISO_DIR)/boot/limine.cfg
|
||||
@echo "[ISO] Staged boot files in $(ISO_DIR)/"
|
||||
|
||||
run: all
|
||||
@echo "[QEMU] Launching opencoreC in QEMU (Serial Output to Terminal)..."
|
||||
@$(QEMU) -M q35 -m 512M \
|
||||
@echo "[QEMU] Launching opencoreC in QEMU (SMP 4 Cores, Serial stdio)..."
|
||||
@$(QEMU) -M q35 -smp 4 -m 512M \
|
||||
-serial stdio \
|
||||
-display none \
|
||||
-no-reboot \
|
||||
@@ -106,10 +117,6 @@ clean:
|
||||
help:
|
||||
@echo "opencoreC Microkernel Build System"
|
||||
@echo "Targets:"
|
||||
@echo " make all - Build kernel, HAL, libc, and user servers"
|
||||
@echo " make kernel - Build Rust microkernel only"
|
||||
@echo " make hal - Build freestanding HAL drivers"
|
||||
@echo " make servers - Build Ring 3 C++ servers"
|
||||
@echo " make iso - Stage ISO root boot directory"
|
||||
@echo " make run - Launch QEMU with serial stdio"
|
||||
@echo " make all - Build kernel, HAL, libc, and all user servers"
|
||||
@echo " make run - Launch QEMU with SMP 4 Cores & Serial output"
|
||||
@echo " make clean - Clean build artifacts"
|
||||
|
||||
Reference in New Issue
Block a user