summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2021-10-09 01:22:30 +0200
committerAleksa Vučković <aleksav013@gmail.com>2021-10-09 01:22:30 +0200
commit1dd9c366b885725a3081726b05732a2b81a8e6c7 (patch)
tree40d4a1515d5707cd70ff2e368854e9533fbc5b44 /Makefile
parented5d024c8b4961b6d722bf45d2c98846afdc1191 (diff)
Small changes before adding gdt
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile50
1 files changed, 26 insertions, 24 deletions
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