SOURCES = $(wildcard *.c) OBJECTS = $(patsubst %.c,obj/%.o,$(SOURCES)) TARGETS = $(patsubst %.c,bin/%,$(SOURCES)) CC = riscv64-unknown-elf-gcc COMMONFLAGS += -Wall # COMMONFLAGS += -Werror COMMONFLAGS += -O3 COMMONFLAGS += -static # Use the 32-bit variant of RISC-V, with no floating-point support. COMMONFLAGS += -m32 -msoft-float -march=RV32I # Add debugging symbols COMMONFLAGS += -g3 # Use C11. COMMONFLAGS += -std=c11 # Link options: disable system libraries, and use the program # layout in test.x. LINKFLAGS = $(FLAGS) -nostartfiles -nodefaultlibs LINKFLAGS += -Wl,-T,cacheracer.x # Merge the common flags and the per-file FLAGS_xxx settings. FLAGS = $(COMMONFLAGS) $(FLAGS_$(basename $(notdir $@))) all: $(TARGETS) $(TARGETS): bin/%: obj/%.o cacheracer.h $(CC) $(LINKFLAGS) $< -o $@ $(OBJECTS): obj/%.o: %.c $(CC) $(FLAGS) -c $< -o $@ clean: rm -f obj/*.o bin/*