2023-02-10 19:20:17 -06:00
|
|
|
objects = entry.o kernel.o task.o handler.o interrupt.o v86.o print.o tss.o dosfs/dosfs.o gdt.o\
|
2023-02-12 00:42:14 -06:00
|
|
|
paging.o fault.o tests.o kbd.o helper.o progs.o disk.o hexedit.o textedit.o
|
2023-02-10 19:20:17 -06:00
|
|
|
CFLAGS = -target "i686-elf" -m32 -mgeneral-regs-only -ffreestanding\
|
|
|
|
-march=i686 -fno-stack-protector -Wno-int-conversion -nostdlib -c
|
|
|
|
LFLAGS = -Wl,--gc-sections -Wl,--print-gc-sections -m32 -nostartfiles -nostdlib
|
|
|
|
|
|
|
|
ifeq ($(OUTFILE),)
|
|
|
|
OUTFILE = virtdisk.bin
|
|
|
|
endif
|
|
|
|
|
|
|
|
.PHONY: $(OUTFILE)
|
|
|
|
|
|
|
|
all: $(OUTFILE)
|
|
|
|
|
|
|
|
$(OUTFILE): boot.bin kernel.bin
|
|
|
|
# Copy to boot sector, don't overwrite MBR
|
|
|
|
dd bs=400 count=1 conv=notrunc if=boot.bin of=$@
|
|
|
|
# Write kernel beyond boot sector, maximum 128K (256 sectors)
|
|
|
|
dd bs=512 count=256 seek=1 conv=notrunc if=kernel.bin of=$@
|
|
|
|
|
2023-02-12 00:42:14 -06:00
|
|
|
kernel.bin: out.o link.ld usermode.o
|
|
|
|
clang $(LFLAGS) -Wl,-M -Tlink.ld -ffreestanding -o $@ out.o usermode.o
|
|
|
|
|
|
|
|
usermode.o: usermode.bin
|
|
|
|
objcopy -I binary -O elf32-i386 -B i386 $< $@
|
2023-02-10 19:20:17 -06:00
|
|
|
|
2023-02-12 00:42:14 -06:00
|
|
|
%.bin: %.nasm
|
|
|
|
nasm -o $@ $<
|
2023-02-10 19:20:17 -06:00
|
|
|
|
|
|
|
out.o: $(objects)
|
|
|
|
clang $(LFLAGS) -e entry -r -o $@ $^
|
2022-09-16 15:50:58 -05:00
|
|
|
|
|
|
|
%.o: %.nasm
|
|
|
|
nasm -f elf32 -o $@ $<
|
|
|
|
|
|
|
|
%.o: %.c
|
2023-02-10 19:20:17 -06:00
|
|
|
clang $(CFLAGS) -ffunction-sections -fdata-sections -Os -o $@ $<
|
|
|
|
|
2022-09-14 16:50:44 -05:00
|
|
|
virtdisk:
|
|
|
|
dd bs=1M count=32 if=/dev/zero of=virtdisk.bin
|
|
|
|
echo -n -e '\x55\xaa' | dd bs=1 seek=510 conv=notrunc of=virtdisk.bin
|
2022-09-16 15:50:58 -05:00
|
|
|
|
2022-09-21 17:14:11 -05:00
|
|
|
clean:
|
2023-02-12 00:42:14 -06:00
|
|
|
rm -f $(objects) out.o kernel.bin boot.bin usermode.bin
|