rearraged files, set up to use grub bootloader
This commit is contained in:
67
makefile
67
makefile
@@ -1,55 +1,38 @@
|
||||
CC = i686-elf-gcc
|
||||
LD = i686-elf-ld
|
||||
OBJCOPY = i686-elf-objcopy
|
||||
|
||||
CFLAGS = -m32 -ffreestanding -O2 -Wall -Wextra -nostdlib
|
||||
ASFLAGS = -m32
|
||||
OSNAME := rockos
|
||||
|
||||
BOOT_DIR := boot
|
||||
KERNEL_DIR := kernel
|
||||
BUILD_DIR := build
|
||||
C_SOURCES := $(shell find kernel -type f -name '*.c')
|
||||
S_SOURCES := $(shell find kernel -type f -name '*.s')
|
||||
|
||||
BOOT_BIN := $(BUILD_DIR)/boot.bin
|
||||
KERNEL_BIN := $(BUILD_DIR)/kernel.bin
|
||||
IMAGE := os.img
|
||||
OBJECTS := $(patsubst %.c, obj/%.o, $(C_SOURCES)) $(patsubst %.s, obj/%.o, $(S_SOURCES))
|
||||
|
||||
.PHONY: all clean run
|
||||
CFLAGS := -ffreestanding -O2 -Wall -Wextra -Ikernel
|
||||
LDFLAGS := -T kernel/linker.ld
|
||||
|
||||
all: $(IMAGE)
|
||||
.PHONY: all run clean
|
||||
|
||||
$(BUILD_DIR)/%.o: $(BOOT_DIR)/%.s | $(BUILD_DIR)
|
||||
$(CC) $(ASFLAGS) -c $< -o $@
|
||||
$(OSNAME).bin: $(OBJECTS)
|
||||
$(LD) $(LDFLAGS) -o $@ $(OBJECTS)
|
||||
|
||||
$(BUILD_DIR)/%.o: $(KERNEL_DIR)/%.s | $(BUILD_DIR)
|
||||
$(CC) $(ASFLAGS) -c $< -o $@
|
||||
$(OSNAME).iso: $(OSNAME).bin grub.cfg
|
||||
mkdir -p isodir/boot/grub
|
||||
cp $(OSNAME).bin isodir/boot/$(OSNAME)
|
||||
cp grub.cfg isodir/boot/grub/grub.cfg
|
||||
grub-mkrescue -o $(OSNAME).iso isodir
|
||||
|
||||
$(BUILD_DIR)/%.o: $(KERNEL_DIR)/%.c | $(BUILD_DIR)
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
obj/%.o: %.c
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) -c $< -o $@ $(CFLAGS)
|
||||
|
||||
$(BUILD_DIR)/boot.elf: $(BUILD_DIR)/boot.o $(BOOT_DIR)/boot.ld
|
||||
$(LD) -T $(BOOT_DIR)/boot.ld -o $@ $(BUILD_DIR)/boot.o
|
||||
obj/%.o: %.s
|
||||
@mkdir -p $(dir $@)
|
||||
$(CC) -c $< -o $@ $(CFLAGS)
|
||||
|
||||
$(BOOT_BIN): $(BUILD_DIR)/boot.elf
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
run: $(OSNAME).iso
|
||||
qemu-system-i386 -cdrom $(OSNAME).iso
|
||||
|
||||
KERNEL_OBJS := $(BUILD_DIR)/prekernel.o $(BUILD_DIR)/kmain.o
|
||||
|
||||
$(BUILD_DIR)/kernel.elf: $(KERNEL_OBJS) $(KERNEL_DIR)/kernel.ld
|
||||
$(LD) -T $(KERNEL_DIR)/kernel.ld -o $@ $(KERNEL_OBJS)
|
||||
|
||||
$(KERNEL_BIN): $(BUILD_DIR)/kernel.elf
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
||||
$(BUILD_DIR):
|
||||
mkdir -p $(BUILD_DIR)
|
||||
|
||||
$(IMAGE): $(BOOT_BIN) $(KERNEL_BIN)
|
||||
dd if=$(BOOT_BIN) of=$@ bs=512 count=1
|
||||
dd if=$(KERNEL_BIN) of=$@ bs=512 seek=1
|
||||
truncate -s 1440k $@
|
||||
|
||||
run: $(IMAGE)
|
||||
qemu-system-i386 -drive format=raw,file=$(IMAGE)
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD_DIR) $(IMAGE)
|
||||
clean:
|
||||
@echo "Cleaning up build artifacts..."
|
||||
rm -rf $(OSNAME).iso $(OSNAME).bin obj isodir
|
||||
Reference in New Issue
Block a user