93 lines
2.5 KiB
Makefile
93 lines
2.5 KiB
Makefile
CROSS_PATH=$(HOME)/opt/cross/bin
|
|
|
|
LD=$(CROSS_PATH)/i686-elf-ld
|
|
CC=$(CROSS_PATH)/i686-elf-gcc
|
|
|
|
ASM=nasm
|
|
ECHO=echo -e
|
|
QEMU=qemu-system-i386
|
|
GDB=gdb
|
|
|
|
CFLAGS=-g -ffreestanding -falign-jumps -falign-functions -falign-labels \
|
|
-falign-loops -fstrength-reduce -fomit-frame-pointer \
|
|
-finline-functions -Wno-unused-function -fno-builtin -Werror \
|
|
-Wno-unused-label -Wno-cpp -Wno-unused-parameter -nostdlib \
|
|
-nostartfiles -nodefaultlibs -Wall -O0
|
|
INCLUDES=-I.
|
|
|
|
NO_SECTORS=100
|
|
|
|
OBJS=build/kernel.asm.o build/kernel.o build/idt/idt.asm.o build/idt/idt.o \
|
|
build/mm/mem.o build/io/io.asm.o build/string/string.o
|
|
|
|
# VESA Driver
|
|
OBJS+=build/drivers/vesa/vesa.o build/drivers/vesa/terminal.o \
|
|
build/drivers/vesa/fonts/vga.o
|
|
|
|
all: build/boot/boot.bin build/kernel.out
|
|
@dd if=build/boot/boot.bin > kinl.bin
|
|
@dd if=build/kernel.out >> kinl.bin
|
|
@dd if=/dev/zero bs=512 count=$(NO_SECTORS) >> kinl.bin
|
|
|
|
build/kernel.out: $(OBJS)
|
|
@$(LD) -g -relocatable $(OBJS) -o build/kernelfull.o
|
|
@$(CC) $(CFLAGS) -T linker.ld -o $@ -ffreestanding -O0 -nostdlib \
|
|
build/kernelfull.o
|
|
|
|
build/boot/boot.bin: boot/bios.asm
|
|
@$(ECHO) "ASM\t\t"$<
|
|
@$(ASM) -f bin $< -o $@
|
|
|
|
build/kernel.asm.o: sys/kernel.asm
|
|
@$(ECHO) "ASM\t\t"$<
|
|
@$(ASM) -f elf -g $< -o $@
|
|
|
|
build/kernel.o: sys/kernel.c
|
|
@$(ECHO) "CC\t\t"$<
|
|
@$(CC) $(CFLAGS) $(INCLUDES) -std=gnu99 -c $< -o $@
|
|
|
|
build/idt/idt.asm.o: sys/idt/idt.asm
|
|
@$(ECHO) "ASM\t\t"$<
|
|
@$(ASM) -f elf -g $< -o $@
|
|
|
|
build/idt/idt.o: sys/idt/idt.c
|
|
@$(ECHO) "CC\t\t"$<
|
|
@$(CC) $(CFLAGS) $(INCLUDES) -std=gnu99 -c $< -o $@
|
|
|
|
build/mm/mem.o: sys/mm/mem.c
|
|
@$(ECHO) "CC\t\t"$<
|
|
@$(CC) $(CFLAGS) $(INCLUDES) -std=gnu99 -c $< -o $@
|
|
|
|
build/io/io.asm.o: sys/io/io.asm
|
|
@$(ECHO) "ASM\t\t"$<
|
|
@$(ASM) -f elf -g $< -o $@
|
|
|
|
build/string/string.o: sys/string/string.c
|
|
@$(ECHO) "CC\t\t"$<
|
|
@$(CC) $(CFLAGS) $(INCLUDES) -std=gnu99 -c $< -o $@
|
|
|
|
# VESA Driver
|
|
build/drivers/vesa/vesa.o: drivers/vesa/vesa.c
|
|
@$(ECHO) "CC\t\t"$<
|
|
@$(CC) $(CFLAGS) $(INCLUDES) -std=gnu99 -c $< -o $@
|
|
|
|
build/drivers/vesa/terminal.o: drivers/vesa/terminal.c
|
|
@$(ECHO) "CC\t\t"$<
|
|
@$(CC) $(CFLAGS) $(INCLUDES) -std=gnu99 -c $< -o $@
|
|
|
|
build/drivers/vesa/fonts/vga.o: drivers/vesa/fonts/vga.c
|
|
@$(ECHO) "CC\t\t"$<
|
|
@$(CC) $(CFLAGS) $(INCLUDES) -std=gnu99 -c $< -o $@
|
|
|
|
gdb: all
|
|
@$(GDB) -ex "set confirm off" \
|
|
-ex "add-symbol-file build/kernelfull.o 0x0100000" \
|
|
-ex "target remote | qemu-system-i386 -hda kinl.bin -S -gdb stdio"
|
|
|
|
run: all
|
|
@$(QEMU) -hda kinl.bin
|
|
|
|
clean:
|
|
@rm -Rf build/boot/boot.bin build/kernel.out \
|
|
build/kernelfull.o $(OBJS)
|