diff options
| author | Aleksa Vučković <aleksav013@gmail.com> | 2021-10-11 11:35:59 +0200 |
|---|---|---|
| committer | Aleksa Vučković <aleksav013@gmail.com> | 2021-10-11 11:35:59 +0200 |
| commit | 578d467b80015c52d0c96c8443b4c13936f33365 (patch) | |
| tree | 05525782bc3baf5a01d8b657f01934e1e598a775 /Makefile | |
| parent | 3a9ccbd8e762477f75d8b164a1d99383a01414ae (diff) | |
(IDT + keyboard) finally working
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 36 |
1 files changed, 27 insertions, 9 deletions
@@ -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 |
