os/Makefile

55 lines
1.6 KiB
Makefile
Raw Normal View History

2019-02-09 12:52:45 -06:00
PLAT=i386
2019-03-30 11:44:01 -05:00
C_SOURCES = $(wildcard kernel/*.c drivers/$(PLAT)/*.c drivers/$(PLAT)/*/*.c cpu/$(PLAT)/*.c fs/*.c)
LIBC_SOURCES = $(wildcard libc/*.c libc/*/*.c)
2019-03-31 13:10:40 -05:00
LIBC_HEADERS = $(wildcard libc/*.h libc/*/*.h)
2019-02-09 12:52:45 -06:00
OBJ = $(C_SOURCES:.c=.o $(shell cat psinfo/$(PLAT)/o.txt))
2019-03-30 11:44:01 -05:00
LIBC_OBJ = $(LIBC_SOURCES:.c=.o)
2019-02-09 12:52:45 -06:00
CC = $(shell cat psinfo/$(PLAT)/cc.txt)
GDB = $(shell cat psinfo/$(PLAT)/gdb.txt)
2019-03-31 13:10:40 -05:00
CFLAGS = -Isysroot/usr/include -Wextra -Wall -Wno-unused-parameter -g -ffreestanding
2019-04-18 08:50:49 -05:00
QFLAGS = -hda image.vdi -m 2G -boot d -cdrom os.iso -serial stdio #-chardev socket,id=s1,port=3000,host=localhost -serial chardev:s1
2019-02-09 12:52:45 -06:00
2019-03-31 13:10:40 -05:00
.PHONY: sysroot
2019-02-09 12:52:45 -06:00
all: os.iso
run: os.iso
2019-04-13 11:17:46 -05:00
qemu-system-i386 $(QFLAGS) > drv_log # -monitor stdio
2019-02-09 12:52:45 -06:00
debug: os.iso kernel/kernel.elf
qemu-system-i386 -s $(QFLAGS) &
$(GDB) -ex "target remote localhost:1234" -ex "symbol-file kernel/kernel.elf"
2019-03-17 18:04:50 -05:00
os.iso: kernel/kernel.elf initrd/* initrd/prog.elf
2019-02-09 12:52:45 -06:00
cp kernel/kernel.elf iso/boot
ruby makeinitrd.rb initrd iso/boot/initrd
grub-mkrescue -o $@ iso
2019-03-17 18:04:50 -05:00
initrd/prog.elf: prog/*
cd prog && make
cp prog/prog.elf initrd
2019-03-30 11:44:01 -05:00
kernel/kernel.elf: $(OBJ) libc/libc.a
i386-elf-gcc -T linker.ld -o $@ $(CFLAGS) -nostdlib $^ -lgcc
2019-02-09 12:52:45 -06:00
2019-03-31 13:10:40 -05:00
sysroot: $(LIBC_HEADERS)
2019-04-06 09:07:19 -05:00
mkdir -p sysroot/usr/include
2019-03-31 13:10:40 -05:00
cp -r libc/* sysroot/usr/include
rm -f sysroot/usr/include/libc.a sysroot/usr/include/*.o sysroot/usr/include/*/*.o sysroot/usr/include/*.c sysroot/usr/include/*/*.c
2019-03-30 11:44:01 -05:00
libc/libc.a: $(LIBC_OBJ)
i386-elf-ar rcs $@ $^
2019-03-31 13:10:40 -05:00
%.o: %.c sysroot
2019-02-09 12:52:45 -06:00
$(CC) $(CFLAGS) -c $< -o $@
%.o: %.asm
nasm $< -f elf -o $@
%.o: %.s
i386-elf-as $< -o $@
clean:
2019-03-30 11:44:01 -05:00
rm -rf $(OBJ) libc/libc.a kernel/cstart.o cpu/memory.h os.iso */*.elf iso/boot/initrd.tar