MAKE := make MAKEFLAGS += -j 8 ARCH := aarch64 GNU := $(ARCH)-linux-gnu CC := $(GNU)-gcc CCFLAGS += -Wall -Wextra -O0 \ -nostdinc -nostdlib -nostartfiles -nodefaultlibs \ -Wno-unused-parameter -Wno-unused-value -Wno-main -g LD := $(GNU)-ld LDFLAGS += -g -nostdlib -no-pie OBJCOPY := $(GNU)-objcopy LD_SCRIPT := linker.ld SRCS := $(shell find . -name '*.[cS]') OBJS := $(SRCS:%=%.o) .PHONY: all all: userprog userprog: userprog.elf $(OBJCOPY) -O binary $< $@ userprog.elf: $(LD_SCRIPT) $(OBJS) $(LD) -o $@ -T $(LD_SCRIPT) $(OBJS) $(LDFLAGS) %.S.o: %.S mkdir -p $(dir $@) $(CC) -c $< -o $@ $(CCFLAGS) %.c.o: %.c mkdir -p $(dir $@) $(CC) -c $< -o $@ $(CCFLAGS) clean: -rm $(OBJS) userprog userprog.elf