mirror of
https://github.com/gbowne1/ClassicOS.git
synced 2025-10-26 10:15:06 -07:00
make: explicit build dir, separate stage1 target so it can be called easier
This commit is contained in:
25
Makefile
25
Makefile
@@ -4,25 +4,32 @@ LD = ld
|
|||||||
QEMU = qemu-system-i386
|
QEMU = qemu-system-i386
|
||||||
IMG_SIZE = 1440k
|
IMG_SIZE = 1440k
|
||||||
|
|
||||||
|
BUILD_DIR = build
|
||||||
|
|
||||||
BOOT_SRC = bootloader/boot.asm
|
BOOT_SRC = bootloader/boot.asm
|
||||||
BOOT_BIN = build/boot.bin
|
BOOT_BIN = $(BUILD_DIR)/boot.bin
|
||||||
BOOT_IMG = build/boot.img
|
BOOT_IMG = $(BUILD_DIR)/boot.img
|
||||||
KERNEL_SRC = kernel/kmain.c
|
KERNEL_SRC = kernel/kmain.c
|
||||||
KERNEL_BIN = build/kernel.bin
|
KERNEL_BIN = $(BUILD_DIR)/kernel.bin
|
||||||
DISK_IMG = build/disk.img
|
DISK_IMG = $(BUILD_DIR)/disk.img
|
||||||
|
|
||||||
all: $(BOOT_IMG) $(KERNEL_BIN) $(DISK_IMG)
|
all: $(BOOT_IMG) $(KERNEL_BIN) $(DISK_IMG)
|
||||||
|
|
||||||
$(BOOT_BIN): $(BOOT_SRC)
|
stage1: $(BOOT_IMG)
|
||||||
|
|
||||||
|
$(BUILD_DIR):
|
||||||
|
mkdir -p $@
|
||||||
|
|
||||||
|
$(BOOT_BIN): $(BOOT_SRC) | $(BUILD_DIR)
|
||||||
$(AS) -f bin -o $@ $<
|
$(AS) -f bin -o $@ $<
|
||||||
|
|
||||||
$(BOOT_IMG): $(BOOT_BIN)
|
$(BOOT_IMG): $(BOOT_BIN)
|
||||||
cp $(BOOT_BIN) $@
|
cp $(BOOT_BIN) $@
|
||||||
truncate -s $(IMG_SIZE) $@
|
truncate -s $(IMG_SIZE) $@
|
||||||
|
|
||||||
$(KERNEL_BIN): $(KERNEL_SRC)
|
$(KERNEL_BIN): $(KERNEL_SRC) | $(BUILD_DIR)
|
||||||
$(CC) -ffreestanding -c $< -o build/kernel.o
|
$(CC) -ffreestanding -c $< -o $(BUILD_DIR)/kernel.o
|
||||||
$(LD) -T bootloader/linker.ld -o $@ build/kernel.o
|
$(LD) -T bootloader/linker.ld -o $@ $(BUILD_DIR)/kernel.o
|
||||||
|
|
||||||
$(DISK_IMG): $(BOOT_IMG) $(KERNEL_BIN)
|
$(DISK_IMG): $(BOOT_IMG) $(KERNEL_BIN)
|
||||||
dd if=$(BOOT_IMG) of=$@ bs=512 seek=4
|
dd if=$(BOOT_IMG) of=$@ bs=512 seek=4
|
||||||
@@ -32,4 +39,4 @@ run: $(DISK_IMG)
|
|||||||
$(QEMU) -drive file=$<,format=raw,if=floppy
|
$(QEMU) -drive file=$<,format=raw,if=floppy
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf build
|
rm -rf $(BUILD_DIR)
|
||||||
|
|||||||
Reference in New Issue
Block a user