# tashaboot # # build: make CROSS=aarch64-linux-gnu- # run: make run (qemu virt, semihosting, Image on the host) # # the dtb is the board config, no board.h exists anywhere. CROSS ?= aarch64-linux-gnu- CC := $(CROSS)gcc LD := $(CROSS)ld OBJCOPY := $(CROSS)objcopy DTC ?= dtc CFLAGS := -nostdlib -ffreestanding -mgeneral-regs-only \ -fno-builtin -fno-stack-protector -fno-pie -no-pie \ -Wall -Werror -O2 \ -Iinclude -Iarch/arm64/include -Ilib/libfdt LDFLAGS := -T arch/arm64/kernel/tashaboot.lds OBJS := arch/arm64/kernel/start.o \ arch/arm64/kernel/boot.o \ arch/arm64/lib/cache.o \ arch/arm64/lib/semihosting.o \ common/main.o common/console.o common/image.o common/load.o \ drivers/serial/pl011.o \ lib/printf.o lib/itoa.o lib/semihosting.o \ $(patsubst %.c,%.o,$(wildcard lib/string/*.c)) \ $(patsubst %.c,%.o,$(filter-out lib/libfdt/libfdt_env.h,$(wildcard lib/libfdt/*.c))) all: build/tashaboot.bin build/qemu-virt.dtb build/tashaboot.elf: $(OBJS) arch/arm64/kernel/tashaboot.lds mkdir -p build $(LD) $(LDFLAGS) -o $@ $(OBJS) build/tashaboot.bin: build/tashaboot.elf $(OBJCOPY) -O binary $< $@ build/qemu-virt.dtb: dts/qemu-virt.dts mkdir -p build $(DTC) -o $@ $< %.o: %.c $(CC) $(CFLAGS) -c -o $@ $< %.o: %.S $(CC) $(CFLAGS) -c -o $@ $< run: all qemu-system-aarch64 -M virt -cpu cortex-a57 -nographic -no-reboot \ -semihosting config=all,enable=on -dtb build/qemu-virt.dtb \ -kernel build/tashaboot.bin clean: rm -rf build $(OBJS) .PHONY: all run clean