-default: mbr vbr-fat32 LOADER.BIN
+default: mbr vbr-fat32 stage3/LOADER.BIN stage3/loader.elf
-all: mbr vbr-fat32 LOADER.BIN disk.img
+CFLAGS=-g -ffreestanding -Istage3
+LD=i686-elf-gcc
+LDFLAGS=-T stage3/stage3.ld -ffreestanding -nostdlib -g
+
+STAGE3_OBJ=stage3/loader.o stage3/paging.o stage3/elf.o stage3/prekernel.o
mbr: mbr.s
$(AS) $(ASFLAGS) -w-zeroing -o $@ $<
-vbr-fat32: vbr-fat32.s fat32.s fat32-structs.s
+vbr-fat32: vbr-fat32.s fat32/*.s
$(AS) $(ASFLAGS) -o $@ $<
-LOADER.BIN: loader.s
- $(AS) $(ASFLAGS) -o $@ $<
+stage3/loader.elf: $(STAGE3_OBJ)
+ $(CC) $(LDFLAGS) -o $@ $^ -lgcc -Wl,--oformat=elf32-i386
+
+stage3/LOADER.BIN: $(STAGE3_OBJ)
+ $(CC) $(LDFLAGS) -o $@ $^ -lgcc
-disk.img: mbr vbr-fat32 LOADER.BIN disk.dump
- truncate -s100M disk.img
- sfdisk disk.img < disk.dump
- mkfs.fat -F 32 --offset 2048 disk.img
- dd if=mbr of=disk.img bs=440 count=1 conv=notrunc
- dd if=vbr-fat32 of=disk.img bs=1 skip=90 seek=1048666 conv=notrunc
- mcopy -i disk.img@@1M LOADER.BIN ::.
+stage3/loader.o: stage3/loader.s stage3/*.s
+ $(AS) $(ASFLAGS) -f elf -g dwarf2 -DGIT_REVISION=\"$(GIT_REV)\" -o $@ $<
clean:
- -rm mbr vbr-fat32 LOADER.BIN disk.img
+ -rm mbr vbr-fat32 stage3/LOADER.BIN stage3/loader.elf $(STAGE3_OBJ) disk.img
-.PHONY : default all clean
+.PHONY : default clean