From 578d467b80015c52d0c96c8443b4c13936f33365 Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Mon, 11 Oct 2021 11:35:59 +0200 Subject: (IDT + keyboard) finally working --- Makefile | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index b427918..127e576 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,13 @@ -CC=i686-elf-gcc -AS=i686-elf-as -CFLAGS=-ffreestanding -O2 -Wall -Wextra +ARCH=i686-elf + +CC=$(ARCH)-gcc +AS=$(ARCH)-as +CFLAGS=-ffreestanding -O2 -Wall -Wextra -ggdb MKDIR=mkdir -p RM=rm -rf CP=cp +QEMU=qemu-system-x86_64 SOURCE_DIR=src BUILD_DIR=build @@ -12,11 +15,16 @@ ISO_DIR=isodir TARGET=myos -OBJ_FILES=boot.o kernel.o gdt.o +OBJ_FILES=boot.o kernel.o gdt.o idt.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 +all: $(BUILD_DIR)/$(TARGET).bin + # Creating iso file $(TARGET).iso: $(BUILD_DIR)/$(TARGET).bin grub-file --is-x86-multiboot $(BUILD_DIR)/myos.bin @@ -25,9 +33,8 @@ $(TARGET).iso: $(BUILD_DIR)/$(TARGET).bin $(CP) $(SOURCE_DIR)/grub.cfg $(ISO_DIR)/boot/grub/grub.cfg grub-mkrescue -o $(TARGET).iso $(ISO_DIR) -# Linking object files +# Linking object files into kernel binary $(BUILD_DIR)/$(TARGET).bin: $(OBJ) - $(MKDIR) $(BUILD_DIR) $(CC) -T $(SOURCE_DIR)/linker.ld -o $@ $(CFLAGS) -nostdlib $^ -lgcc # Compiling as sources @@ -40,10 +47,21 @@ $(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.c $(MKDIR) $(BUILD_DIR) $(CC) -c $< -o $@ -std=gnu99 $(CFLAGS) -# Boot kernel in qemu +# Boot kernel binary in qemu .PHONY: run -run: $(TARGET).iso - qemu-system-x86_64 -cdrom $(TARGET).iso +run: $(BUILD_DIR)/$(TARGET).bin + $(QEMU) -kernel $^ + +# Boot iso in qemu +.PHONY: run-iso +run-iso: $(TARGET).iso + $(QEMU) -cdrom $^ + +# Debug kernel binary in gdb +.PHONY: debug +debug: $(TARGET).bin + $(QEMU) -kernel $^ -s -S & + gdb -x .gdbinit # Clean build files .PHONY: clean -- cgit v1.2.3