CFLAGS = -std=c11 -Wall -Wextra -Wpedantic -Werror -O3 sources = $(wildcard *.c) default: bytecode bytecode: $(sources:.c=.o) %.d: %.c $(CC) -MM $< > $@.$$$$ && \ sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@ && \ rm $@.$$$$ include $(sources:.c=.d) clean: rm *.o *.d bytecode