diff --git a/.gitignore b/.gitignore index 540202a..afda4de 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ -*.bin *.iso -*.o *.sw* iso/boot/*.bin +out diff --git a/Makefile b/Makefile index 728ead6..2484913 100644 --- a/Makefile +++ b/Makefile @@ -2,43 +2,35 @@ CXXFLAGS := -m32 -ggdb -g3 -O1 -fno-pic -fno-rtti -fno-exceptions -std=c++23 \ -Wall -Wextra -pedantic -Werror LDFLAGS := $(CXXFLAGS) -T link.ld -static -nostdlib -fno-use-cxa-atexit -CXXFILES := acpi.cpp \ - ata.cpp \ - boot.cpp \ - gdt.cpp \ - idt.cpp \ - keyboard.cpp \ - memmove.cpp \ - memory.cpp \ - multiboot.cpp \ - pic.cpp \ - pit.cpp \ - tasking.cpp \ - vgaterminal.cpp \ - kernel.cpp - -OBJS := $(subst .cpp,.o,$(CXXFILES)) - -all: myos.iso - -myos.iso: myos.bin iso/boot/grub/grub.cfg +CXXFILES := $(wildcard src/*.cpp) + +PROJECT := myos +PRJISO := $(PROJECT).iso +PRJBIN := $(PROJECT).bin +OBJS := $(patsubst src/%.cpp,out/%.o,$(CXXFILES)) + +all: $(PRJISO) + +$(PRJISO): iso/boot/$(PRJBIN) iso/boot/grub/grub.cfg @echo " ISO " $@ - @cp myos.bin iso/boot/ - @grub-mkrescue -o myos.iso iso/ + @grub-mkrescue -o $@ iso/ -myos.bin: $(OBJS) link.ld +iso/boot/$(PRJBIN): $(OBJS) link.ld @echo " LD " $@ @g++ $(LDFLAGS) -o $@ $(OBJS) -%.o: %.cpp +out/: + @mkdir out + +out/%.o: src/%.cpp @echo " CXX " $< @g++ $(CXXFLAGS) -c $< -o $@ clean: @echo " CLEAN" - @rm -f $(OBJS) myos.bin myos.iso + @rm -f $(OBJS) $(PRJBIN) $(PRJISO) run: myos.iso @echo " QEMU" - @qemu-system-i386 -drive file=$<,index=2,media=cdrom -monitor stdio -no-reboot -s -S #-d int + @qemu-system-i386 -drive file=$<,index=2,media=cdrom -monitor stdio -no-reboot #-s -S #-d int diff --git a/acpi.cpp b/src/acpi.cpp similarity index 100% rename from acpi.cpp rename to src/acpi.cpp diff --git a/acpi.hpp b/src/acpi.hpp similarity index 100% rename from acpi.hpp rename to src/acpi.hpp diff --git a/ata.cpp b/src/ata.cpp similarity index 100% rename from ata.cpp rename to src/ata.cpp diff --git a/ata.hpp b/src/ata.hpp similarity index 100% rename from ata.hpp rename to src/ata.hpp diff --git a/boot.cpp b/src/boot.cpp similarity index 100% rename from boot.cpp rename to src/boot.cpp diff --git a/circularbuffer.hpp b/src/circularbuffer.hpp similarity index 100% rename from circularbuffer.hpp rename to src/circularbuffer.hpp diff --git a/gdt.cpp b/src/gdt.cpp similarity index 100% rename from gdt.cpp rename to src/gdt.cpp diff --git a/gdt.hpp b/src/gdt.hpp similarity index 100% rename from gdt.hpp rename to src/gdt.hpp diff --git a/idt.cpp b/src/idt.cpp similarity index 100% rename from idt.cpp rename to src/idt.cpp diff --git a/idt.hpp b/src/idt.hpp similarity index 100% rename from idt.hpp rename to src/idt.hpp diff --git a/kernel.cpp b/src/kernel.cpp similarity index 100% rename from kernel.cpp rename to src/kernel.cpp diff --git a/keyboard.cpp b/src/keyboard.cpp similarity index 100% rename from keyboard.cpp rename to src/keyboard.cpp diff --git a/keyboard.hpp b/src/keyboard.hpp similarity index 100% rename from keyboard.hpp rename to src/keyboard.hpp diff --git a/memmove.cpp b/src/memmove.cpp similarity index 100% rename from memmove.cpp rename to src/memmove.cpp diff --git a/memory.cpp b/src/memory.cpp similarity index 100% rename from memory.cpp rename to src/memory.cpp diff --git a/memory.hpp b/src/memory.hpp similarity index 100% rename from memory.hpp rename to src/memory.hpp diff --git a/multiboot.cpp b/src/multiboot.cpp similarity index 100% rename from multiboot.cpp rename to src/multiboot.cpp diff --git a/multiboot.hpp b/src/multiboot.hpp similarity index 100% rename from multiboot.hpp rename to src/multiboot.hpp diff --git a/pic.cpp b/src/pic.cpp similarity index 100% rename from pic.cpp rename to src/pic.cpp diff --git a/pic.hpp b/src/pic.hpp similarity index 100% rename from pic.hpp rename to src/pic.hpp diff --git a/pit.cpp b/src/pit.cpp similarity index 100% rename from pit.cpp rename to src/pit.cpp diff --git a/pit.hpp b/src/pit.hpp similarity index 100% rename from pit.hpp rename to src/pit.hpp diff --git a/portio.hpp b/src/portio.hpp similarity index 100% rename from portio.hpp rename to src/portio.hpp diff --git a/tasking.cpp b/src/tasking.cpp similarity index 100% rename from tasking.cpp rename to src/tasking.cpp diff --git a/tasking.hpp b/src/tasking.hpp similarity index 100% rename from tasking.hpp rename to src/tasking.hpp diff --git a/textoutput.hpp b/src/textoutput.hpp similarity index 100% rename from textoutput.hpp rename to src/textoutput.hpp diff --git a/vgaterminal.cpp b/src/vgaterminal.cpp similarity index 100% rename from vgaterminal.cpp rename to src/vgaterminal.cpp diff --git a/vgaterminal.hpp b/src/vgaterminal.hpp similarity index 100% rename from vgaterminal.hpp rename to src/vgaterminal.hpp