TARGET = kernel SRCS = $(wildcard *.c) ASMS = $(wildcard *.s) OBJS = $(SRCS:.c=.o) $(ASMS:.s=.o) usrbin/usrbin_blob.o CFLAGS = -m32 -I../include -ffreestanding -nostdinc -nostdlib -fno-stack-protector -fno-pie -gstabs+ LDFLAGS = -m elf_i386 -T link.ld ASMFLAGS = -f elf32 CC = gcc $(CFLAGS) LD = ld $(LDFLAGS) ASM = nasm $(ASMFLAGS) all: build build: $(TARGET) usrbin/usrbin_blob.o: $(wildcard usrbin/*.s) $(wildcard usrbin/*.c) $(MAKE) -C usrbin .s.o: $(ASM) -o $*.o $^ .c.o: $(CC) -c -o $*.o $^ $(TARGET): $(OBJS) $(LD) -o $(TARGET) $(OBJS) clean: rm -f $(OBJS) rm -f $(TARGET) $(MAKE) -C usrbin clean run: $(TARGET) qemu-system-x86_64 -s -kernel $(TARGET)