35 lines
863 B
Makefile
35 lines
863 B
Makefile
CFLAGS= -fno-stack-protector -fno-builtin -ffreestanding -m32 -Wall -Wextra -Wfatal-errors -nostdlib -Wno-builtin-declaration-mismatch -g3
|
|
ASFLAGS= --32
|
|
LDFLAGS= -melf_i386 -nostdlib -e loader -T link.ld -z noexecstack
|
|
OBJS=loader.o kernel.o stdio.o
|
|
QEMUFLAGS= -enable-kvm -m 256m -vga none -device virtio-vga,xres=800,yres=600
|
|
|
|
all: kernel
|
|
|
|
run: kernel
|
|
qemu-system-i386 $(QEMUFLAGS) -kernel $^
|
|
|
|
run-debug: kernel
|
|
qemu-system-i386 -s -S $(QEMUFLAGS) -kernel $^ &
|
|
@# start qemu on tcp::1234, wait for gdb
|
|
|
|
run-gdb: run-debug
|
|
@#echo now type 'target remote localhost:1234'
|
|
@echo now type 'continue'
|
|
gdb ./kernel -ex 'target remote localhost:1234' -ex 'b kernelmain'
|
|
|
|
kernel: $(OBJS)
|
|
$(LD) $(LDFLAGS) $^ -o $@
|
|
|
|
install: $(OBJS)
|
|
cp ./kernel /boot/mykernel
|
|
|
|
%.o: %.c
|
|
$(CC) $(CFLAGS) -c $^
|
|
|
|
%.o: %.s
|
|
$(AS) $(ASFLAGS) -c $^ -o $@
|
|
|
|
clean:
|
|
$(RM) $(OBJS) kernel
|