Files
net/Makefile
2026-01-06 15:51:03 -08:00

61 lines
1.9 KiB
Makefile

ARCH ?= i686
PLATFORM ?= pcmultiboot
TARGET ?= $(ARCH)-elf
CC := $(TARGET)-gcc
LD := $(TARGET)-ld
AR := $(TARGET)-ar
PLATFORM_DIR := platform
EXEC_DIR := exec
DEV_DIR := dev
GUI_DIR := gui
OUT_KERNEL := kernel.elf
LINK_SCRIPT := $(PLATFORM_DIR)/$(PLATFORM).ld
PLATFORM_LIB := $(PLATFORM_DIR)/obj/$(PLATFORM).a
EXEC_LIB := $(EXEC_DIR)/obj/exec.a
DEV_LIB := $(DEV_DIR)/pclpt/pclpt.a $(DEV_DIR)/ne2k_isa/ne2k_isa.a $(DEV_DIR)/bga/bga.a
GUI_LIB := $(GUI_DIR)/gui.a
# ======================================
# Default target
# ======================================
all: build_components link_kernel
# ======================================
# Build components
# ======================================
build_components:
$(MAKE) -C platform PLATFORM=$(PLATFORM)
$(MAKE) -C exec TARGET=$(TARGET)
$(MAKE) -C gui TARGET=$(TARGET)
$(MAKE) -C dev/pclpt TARGET=$(TARGET)
$(MAKE) -C dev/ne2k_isa TARGET=$(TARGET)
$(MAKE) -C dev/bga TARGET=$(TARGET)
# ======================================
# Linking final kernel
# ======================================
link_kernel: $(OUT_KERNEL)
$(OUT_KERNEL): $(PLATFORM_LIB) $(EXEC_LIB) $(DEV_LIB) $(LINK_SCRIPT)
$(CC) -T $(LINK_SCRIPT) -Wl,-Map=kernel.map -nostdlib -ffreestanding -o $@ \
-Wl,--start-group $(PLATFORM_LIB) $(EXEC_LIB) $(DEV_LIB) $(GUI_LIB) -Wl,--end-group
# ======================================
# Clean
# ======================================
clean:
$(MAKE) -C platform clean PLATFORM=$(PLATFORM)
$(MAKE) -C exec clean TARGET=$(TARGET)
$(MAKE) -C gui clean TARGET=$(TARGET)
$(MAKE) -C dev/pclpt clean TARGET=$(TARGET)
$(MAKE) -C dev/ne2k_isa clean TARGET=$(TARGET)
$(MAKE) -C dev/bga clean TARGET=$(TARGET)
rm -rf $(OUT_KERNEL) kernel.map
# ======================================
# Phony targets
# ======================================
.PHONY: all clean setup_headers build_components link_kernel