feat: Add Process Manager, Limine Framebuffer GUI, RTL8139 Net stack, and extended UNIX commands
This commit is contained in:
@@ -24,7 +24,7 @@ LIMINE_DIR := boot/limine
|
||||
COMMON_FLAGS := -Wall -Wextra -O2 -ffreestanding -fno-stack-protector \
|
||||
-fno-pie -no-pie -mno-red-zone -m64 \
|
||||
-mno-sse -mno-sse2 -mno-avx \
|
||||
-I$(INCLUDE_DIR) -I$(LIB_DIR)/libc/include
|
||||
-I$(INCLUDE_DIR) -I$(LIB_DIR)/libc/include -I$(HAL_DIR)/include
|
||||
|
||||
CFLAGS := $(COMMON_FLAGS) -std=c11
|
||||
CXXFLAGS := $(COMMON_FLAGS) -std=c++20 -fno-exceptions -fno-rtti -I$(LIB_DIR)/libipc_cpp/include
|
||||
@@ -39,6 +39,7 @@ PROCMGR := $(BUILD_DIR)/procmgr.elf
|
||||
DISK_IMG := $(BUILD_DIR)/opencoreC.img
|
||||
|
||||
LIBC_OBJS := $(BUILD_DIR)/string.o $(BUILD_DIR)/syscalls.o $(BUILD_DIR)/stdlib.o
|
||||
NET_OBJS := $(BUILD_DIR)/net.o $(BUILD_DIR)/rtl8139.o $(BUILD_DIR)/pci.o
|
||||
|
||||
.PHONY: all kernel libc hal servers image run clean help limine-setup
|
||||
|
||||
@@ -48,7 +49,7 @@ all: kernel libc hal servers
|
||||
@echo "======================================================="
|
||||
@echo " [SUCCESS] opencoreC Build Complete!"
|
||||
@echo " Kernel: $(KERNEL_ELF)"
|
||||
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(SH_SERVER)"
|
||||
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(SH_SERVER), $(PROCMGR)"
|
||||
@echo " Run: make image && make run"
|
||||
@echo "======================================================="
|
||||
|
||||
@@ -63,6 +64,7 @@ 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
|
||||
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/net.c -o $(BUILD_DIR)/net.o
|
||||
|
||||
hal: libc
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
@@ -70,6 +72,8 @@ hal: libc
|
||||
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/uart.c -o $(BUILD_DIR)/uart.o
|
||||
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/pci.c -o $(BUILD_DIR)/pci.o
|
||||
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/apic.c -o $(BUILD_DIR)/apic.o
|
||||
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/fb.c -o $(BUILD_DIR)/fb.o
|
||||
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/rtl8139.c -o $(BUILD_DIR)/rtl8139.o
|
||||
|
||||
servers: libc hal
|
||||
@mkdir -p $(BUILD_DIR)
|
||||
@@ -84,10 +88,10 @@ servers: libc hal
|
||||
@$(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 $(LIBC_OBJS)
|
||||
@# Interactive Shell
|
||||
@# Interactive Shell with Networking & Framebuffer
|
||||
@$(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)
|
||||
$(BUILD_DIR)/sh_main.o $(BUILD_DIR)/ipc.o $(BUILD_DIR)/fb.o $(NET_OBJS) $(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) \
|
||||
@@ -114,6 +118,7 @@ image: all limine-setup
|
||||
@mcopy -i $(DISK_IMG)@@1M $(INIT_SERVER) ::/boot/
|
||||
@mcopy -i $(DISK_IMG)@@1M $(UART_DRIVER) ::/boot/
|
||||
@mcopy -i $(DISK_IMG)@@1M $(SH_SERVER) ::/boot/
|
||||
@mcopy -i $(DISK_IMG)@@1M $(PROCMGR) ::/boot/
|
||||
@# Bootloader config
|
||||
@mcopy -i $(DISK_IMG)@@1M limine.conf ::/
|
||||
@mcopy -i $(DISK_IMG)@@1M limine.cfg ::/
|
||||
@@ -127,15 +132,18 @@ image: all limine-setup
|
||||
@$(LIMINE_DIR)/limine bios-install $(DISK_IMG) 2>&1 | grep -v "^Physical\|^Installing\|^Stage\|^Reminder"
|
||||
@echo "[IMAGE] Done: $(DISK_IMG) (BIOS + UEFI bootable)"
|
||||
|
||||
# Launch QEMU with serial terminal (keyboard works via -serial stdio)
|
||||
# Launch QEMU with serial terminal, VGA framebuffer, and RTL8139 network card
|
||||
run: image
|
||||
@echo "[QEMU] Launching opencoreC (SMP 4 cores, Serial terminal)..."
|
||||
@echo "[QEMU] Launching opencoreC (SMP 4 cores, Serial terminal, Framebuffer, RTL8139 Net)..."
|
||||
@echo "[QEMU] Type 'help' for commands. Ctrl+A X to exit QEMU."
|
||||
@echo "-------------------------------------------------------"
|
||||
@$(QEMU) \
|
||||
-M q35 \
|
||||
-smp 4 \
|
||||
-m 512M \
|
||||
-vga std \
|
||||
-netdev user,id=net0 \
|
||||
-device rtl8139,netdev=net0 \
|
||||
-serial mon:stdio \
|
||||
-no-reboot \
|
||||
-display none \
|
||||
@@ -145,7 +153,8 @@ run: image
|
||||
qemu: $(DISK_IMG)
|
||||
@echo "[QEMU] Quick launch from existing image..."
|
||||
@echo "[QEMU] Type 'help'. Ctrl+A X to exit."
|
||||
@$(QEMU) -M q35 -smp 4 -m 512M -serial mon:stdio -no-reboot -display none \
|
||||
@$(QEMU) -M q35 -smp 4 -m 512M -vga std -netdev user,id=net0 -device rtl8139,netdev=net0 \
|
||||
-serial mon:stdio -no-reboot -display none \
|
||||
-drive file=$(DISK_IMG),format=raw
|
||||
|
||||
clean:
|
||||
|
||||
Reference in New Issue
Block a user