csrc = $(wildcard src/*.c) $(wildcard src/libc/*.c) asmsrc = $(wildcard src/*.asm) $(wildcard src/libc/*.asm) obj = $(csrc:.c=.o) $(asmsrc:.asm=-asm.o) dep = $(csrc:.c=.d) elf = kern1.elf warn = -pedantic -Wall dbg = -g inc = -Isrc -Isrc/libc CFLAGS = $(carch) -march=i386 $(warn) $(dbg) $(inc) -fno-pic -ffreestanding -nostdinc \ -fno-builtin -MMD LDFLAGS = $(ldarch) -nostdlib -T kern1.ld -Map kern1.map ifeq ($(shell uname -m), x86_64) carch = -m32 ldarch = -m elf_i386 endif $(elf): $(obj) $(LD) -o $@ $(obj) $(LDFLAGS) -include $(dep) %-asm.o: %.asm nasm -f elf32 -o $@ $< .PHONY: clean clean: rm -f $(obj) $(elf) link.map .PHONY: cleandep cleandep: rm -f $(dep) .PHONY: run run: $(elf) qemu-system-i386 -kernel $(elf) -serial file:serial.log .PHONY: debug debug: $(elf) qemu-system-i386 -kernel $(elf) -serial file:serial.log -s -S