summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile33
1 files changed, 15 insertions, 18 deletions
diff --git a/Makefile b/Makefile
index c58cc84..dc2c620 100644
--- a/Makefile
+++ b/Makefile
@@ -14,27 +14,29 @@ BUILD_DIR=build
ISO_DIR=isodir
TARGET=myos
+BINARY=$(BUILD_DIR)/$(TARGET).bin
+ISO=$(TARGET).iso
-OBJ_FILES=boot.o kernel.o gdt.o idt.o keyboard.o vga.o string.o tty.o stdio.o
+OBJ_FILES=boot.o kernel.o gdt.o idt.o keyboard.o keymap.o vga.o string.o tty.o stdio.o heap.o
CRTBEGIN_OBJ=$(shell $(CC) -print-file-name=crtbegin.o)
CRTEND_OBJ=$(shell $(CC) -print-file-name=crtend.o)
OBJ=$(BUILD_DIR)/crti.o $(CRTBEGIN_OBJ) $(patsubst %,$(BUILD_DIR)/%,$(OBJ_FILES)) $(CRTEND_OBJ) $(BUILD_DIR)/crtn.o
# Default action is set to making kernel binary
-.PHONY: all run run-iso debug clean
-all: $(BUILD_DIR)/$(TARGET).bin
+.PHONY: all run run-iso clean
+all: $(BINARY)
# Creating iso file
-$(TARGET).iso: $(BUILD_DIR)/$(TARGET).bin
- grub-file --is-x86-multiboot $(BUILD_DIR)/myos.bin
+$(ISO): $(BINARY)
+ grub-file --is-x86-multiboot $(BINARY)
mkdir -p $(ISO_DIR)/boot/grub
- $(CP) $(BUILD_DIR)/myos.bin $(ISO_DIR)/boot/myos.bin
+ $(CP) $(BINARY) $(ISO_DIR)/boot/$(TARGET).bin
$(CP) $(SOURCE_DIR)/grub.cfg $(ISO_DIR)/boot/grub/grub.cfg
- grub-mkrescue -o $(TARGET).iso $(ISO_DIR)
+ grub-mkrescue -o $(ISO) $(ISO_DIR)
# Linking object files into kernel binary
-$(BUILD_DIR)/$(TARGET).bin: $(OBJ)
+$(BINARY): $(OBJ)
$(CC) -T $(SOURCE_DIR)/linker.ld -o $@ $(CFLAGS) -nostdlib $^ -lgcc
# Compiling as sources
@@ -48,18 +50,13 @@ $(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.c
$(CC) -c $< -o $@ -std=gnu99 $(CFLAGS)
# Boot kernel binary in qemu
-run: $(BUILD_DIR)/$(TARGET).bin
- $(QEMU) -kernel $^
+run: $(BINARY)
+ $(QEMU) -kernel $<
# Boot iso in qemu
-run-iso: $(TARGET).iso
- $(QEMU) -cdrom $^
-
-# Debug kernel binary in gdb
-debug: $(TARGET).bin
- $(QEMU) -kernel $^ -s -S &
- gdb -x .gdbinit
+run-iso: $(ISO)
+ $(QEMU) -cdrom $<
# Clean build files
clean:
- $(RM) $(BUILD_DIR) $(ISO_DIR) $(TARGET).iso
+ $(RM) $(BUILD_DIR) $(ISO_DIR) $(ISO)