op.snowstorm/Makefile

89 lines
1.7 KiB
Makefile
Raw Normal View History

2025-11-12 16:16:50 +01:00
TARGET=i686
ARCHDIR=arch/$(TARGET)/
SOURCEDIR=src/
BUILDDIR=build/
INCLUDEDIR=$(SOURCEDIR)include/
CFLAGS?=
ASFLAGS?=
# Define flags for C files
2025-11-13 21:39:22 +01:00
2025-11-12 16:16:50 +01:00
CFLAGS:=\
-O2 \
-ffreestanding \
-Wall -Wextra \
2025-11-13 21:39:22 +01:00
-fno-exceptions -fno-rtti \
2025-11-12 16:16:50 +01:00
-I$(INCLUDEDIR) \
$(CFLAGS)
2025-11-13 21:39:22 +01:00
CXXFLAGS:=$(CFLAGS)
2025-11-12 16:16:50 +01:00
# Define flags for assembly files
ASFLAGS:=\
-I$(SOURCEIDR)$(INCLUDEDIR) \
-I$(SOURCEDIR)$(ARCHDIR) \
$(ASFLAGS)
LINKERFLAGS:=\
-ffreestanding \
-O2 \
-nostdlib \
-lgcc
LIB_OBJS=\
2025-11-13 21:39:22 +01:00
$(BUILDDIR)$(ARCHDIR)bootstrap.o \
$(BUILDDIR)$(ARCHDIR)paging.o \
$(BUILDDIR)$(ARCHDIR)initialize_pages.o \
$(BUILDDIR)$(ARCHDIR)tty.o
2025-11-12 16:16:50 +01:00
KERNEL_OBJS=\
$(BUILDDIR)kernel/kernel.o
OBJS=$(LIB_OBJS) $(KERNEL_OBJS)
LINKER_PATH=$(SOURCEDIR)$(ARCHDIR)linker.ld
.PHONY: all clean snowstorm.iso debug
.SUFFIXES: .c .o .s
2025-11-13 21:39:22 +01:00
$(BUILDDIR)%.o : $(SOURCEDIR)%.cpp
i686-elf-g++ -c $< -o $@ $(CXXFLAGS)
2025-11-12 16:16:50 +01:00
$(BUILDDIR)%.o : $(SOURCEDIR)%.c
i686-elf-gcc -c $< -o $@ $(CFLAGS)
$(BUILDDIR)%.o : $(SOURCEDIR)%.s
i686-elf-as $< -o $@ $(ASFLAGS)
all: snowstorm.iso
# Take the kernel file and make a bootable ISO through GRUB
snowstorm.iso: snowstorm.kernel
cp build/snowstorm.kernel build/isodir/boot/snowstorm.kernel
grub-mkrescue -o build/snowstorm.iso build/isodir
# link all object files together
snowstorm.kernel: $(OBJS)
i686-elf-gcc -T $(LINKER_PATH) -o build/snowstorm.kernel $(OBJS) $(LINKERFLAGS)
grub-file --is-x86-multiboot build/snowstorm.kernel
2025-11-13 21:39:22 +01:00
debug: CXXFLAGS += -g -O1
2025-11-12 16:16:50 +01:00
debug: ASFLAGS += -g
2025-11-13 21:39:22 +01:00
debug: CFLAGS += -g -O1
2025-11-12 16:16:50 +01:00
debug: all
clean:
rm -f $(OBJS)
rm -f build/snowstorm.kernel
rm -f build/snowstorm.iso
rm -f build/isodir/boot/snowstorm.kernel
run: all
qemu-system-i386 -d int -no-reboot -kernel build/snowstorm.kernel
run-debug: debug
qemu-system-i386 -d int -no-reboot -S -gdb tcp::9000 -kernel build/snowstorm.kernel
2025-11-13 21:39:22 +01:00