CROSS_COMPILE = arm-none-eabi- AS = $(CROSS_COMPILE)as CC = $(CROSS_COMPILE)gcc LD = $(CROSS_COMPILE)ld OBJCOPY = $(CROSS_COMPILE)objcopy CFLAGS = -Wall -mcpu=arm926ej-s -nostdlib -ffreestanding -I. .SUFFIXES: .s .o .c %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ %.o: %.s $(AS) -mcpu=arm926ej-s $< -o $@ ASM_S_FILES = $(wildcard system/asm/*.s) ASM_O_FILES = $(ASM_S_FILES:.s=.o) CFILES = $(wildcard devices/*.c) $(wildcard devices/*/*.c) $(wildcard system/*.c) $(wildcard system/*/*.c) COFILES = $(CFILES:.c=.o) OFILES = $(ASM_O_FILES) $(COFILES) all: kernel.bin kernel.elf: ${OFILES} $(LD) -T boot.ld -o $@ $^ kernel.bin: kernel.elf $(OBJCOPY) -O binary $< $@ clean: rm -f *.o */*.o */*/*.o *.elf *.bin run: kernel.bin qemu-system-arm -M versatilepb -m 128M -nographic -kernel kernel.bin