From 1dd9c366b885725a3081726b05732a2b81a8e6c7 Mon Sep 17 00:00:00 2001 From: Aleksa Vučković Date: Sat, 9 Oct 2021 01:22:30 +0200 Subject: Small changes before adding gdt --- Makefile | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 0a86795..86585c5 100644 --- a/Makefile +++ b/Makefile @@ -1,37 +1,34 @@ -CC = i686-elf-gcc -AS = i686-elf-as -CFLAGS = +CC=i686-elf-gcc +AS=i686-elf-as +CFLAGS=-ffreestanding -O2 -Wall -Wextra -MKDIR = mkdir -p -RM = rm -rf -CP = cp +MKDIR=mkdir -p +RM=rm -rf +CP=cp -SOURCE_DIR = src -BUILD_DIR = build -ISO_DIR = isodir +SOURCE_DIR=src +BUILD_DIR=build +ISO_DIR=isodir -AS_SOURCE = boot.s -C_SOURCE = kernel.c +TARGET=myos -OBJ_FILES = boot.o kernel.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 +OBJ_FILES=boot.o kernel.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 # Creating iso file -.PHONY: all -all: $(BUILD_DIR)/myos.bin +$(TARGET).iso: $(BUILD_DIR)/$(TARGET).bin grub-file --is-x86-multiboot $(BUILD_DIR)/myos.bin mkdir -p $(ISO_DIR)/boot/grub $(CP) $(BUILD_DIR)/myos.bin $(ISO_DIR)/boot/myos.bin $(CP) $(SOURCE_DIR)/grub.cfg $(ISO_DIR)/boot/grub/grub.cfg - grub-mkrescue -o myos.iso $(ISO_DIR) + grub-mkrescue -o $(TARGET).iso $(ISO_DIR) # Linking object files -$(BUILD_DIR)/myos.bin: $(OBJ) +$(BUILD_DIR)/$(TARGET).bin: $(OBJ) $(MKDIR) $(BUILD_DIR) - $(CC) -T $(SOURCE_DIR)/linker.ld -o $(BUILD_DIR)/myos.bin -ffreestanding -O2 -nostdlib $(OBJ) -lgcc + $(CC) -T $(SOURCE_DIR)/linker.ld -o $@ $(CFLAGS) -nostdlib $^ -lgcc # Compiling as sources $(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.s @@ -41,9 +38,14 @@ $(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.s # Compiling C sources $(BUILD_DIR)/%.o: $(SOURCE_DIR)/%.c $(MKDIR) $(BUILD_DIR) - $(CC) -c $< -o $@ -std=gnu99 -ffreestanding -O2 -Wall -Wextra + $(CC) -c $< -o $@ -std=gnu99 $(CFLAGS) + +# Boot kernel in qemu +.PHONY: run +run: $(TARGET).iso + qemu-system-x86_64 -cdrom $(TARGET).iso -# Cleaning +# Clean build files .PHONY: clean clean: - $(RM) $(BUILD_DIR) $(ISO_DIR) myos.iso + $(RM) $(BUILD_DIR) $(ISO_DIR) $(TARGET).iso -- cgit v1.2.3