kernel/Makefile

76 lines
1.3 KiB
Makefile
Raw Normal View History

2017-11-09 15:54:13 +00:00
CCPREFIX = i686-elf-
2017-11-04 06:09:14 +00:00
2017-11-09 15:54:13 +00:00
AR = $(CCPREFIX)ar
AS = $(CCPREFIX)as
CC = $(CCPREFIX)gcc
2017-11-08 09:38:55 +00:00
2017-11-09 16:00:36 +00:00
KERNEL = rootfs/boot/kernelmq.multiboot2
2017-11-09 16:00:36 +00:00
CFLAGS = -std=gnu99 -ffreestanding -nostdinc -fno-builtin -fno-stack-protector -Wall -Wextra
2017-11-09 15:54:13 +00:00
IMAGE = image.iso
2017-11-09 09:58:39 +00:00
2017-11-09 15:52:58 +00:00
# Architecture-dependent
OBJS = start.s.o
OBJS += main.c.o
OBJS += init.c.o
OBJS += multiboot.c.o
OBJS += panic.c.o panic.asm.cpp.o
OBJS += pfa.c.o
OBJS += paging.c.o paging.asm.cpp.o
OBJS += pagedir.c.o
# Architecture-independent
OBJS += info.c.o
OBJS += memset.c.o
OBJS += strlen.c.o
OBJS += itoa.c.o
OBJS += strncpy.c.o
# Built-in drivers
OBJS += console.c.o
OBJS += pic.c.o
OBJS += timer.c.o
OBJS += keyboard.c.o
# For debugging
OBJS += logger.c.o
OBJS += protected.c.o protected.asm.cpp.o
OBJS += tss.c.o tss.asm.cpp.o
OBJS += tasks.asm.cpp.o
OBJS += interrupt.asm.cpp.o
OBJS += exception.c.o
OBJS += hwint.c.o
OBJS += syscall.c.o
run: $(KERNEL)
2017-11-09 09:58:39 +00:00
grub-mkrescue rootfs -o $(IMAGE)
qemu-system-i386 -cdrom $(IMAGE)
2017-11-01 05:03:52 +00:00
2017-11-09 15:52:58 +00:00
all: $(KERNEL)
2017-11-08 11:06:18 +00:00
2017-11-09 15:52:58 +00:00
clean:
rm -f $(OBJS)
2017-11-09 09:58:39 +00:00
rm -f $(IMAGE)
2017-11-08 09:38:55 +00:00
rm -f $(KERNEL)
2017-11-09 15:52:58 +00:00
$(KERNEL): $(OBJS)
2017-11-09 16:03:02 +00:00
$(CC) -T linker.ld -o $@ -ffreestanding -nostdlib -lgcc $^
grub-file --is-x86-multiboot2 $@
2017-11-09 15:52:58 +00:00
%.c.o: %.c
$(CC) -c $< -o $@ $(CFLAGS)
%.s.o: %.s
$(AS) $< -o $@
2017-11-08 09:38:55 +00:00
2017-11-09 15:52:58 +00:00
%.asm.cpp.o: %.asm.cpp
nasm -felf32 -o $@ $<
2017-11-08 09:38:55 +00:00
2017-11-09 15:52:58 +00:00
%.asm.cpp: %.asm
cpp -P $< $@