CFLAGS=-std=c11 -Wall -Wpedantic -Iinclude/ objects = main.o lexer.o memory.o parser.o decl.o expr.o type.o pattern.o obj_dir = build object_paths = $(addprefix $(obj_dir)/, $(objects)) milly: $(object_paths) $(CC) -o $@ $(CFLAGS) $(object_paths) $(obj_dir)/%.o: src/%.c include/*.h | $(obj_dir) $(CC) $(CFLAGS) -o $@ -c $< reference_parser: $(obj_dir)/parser.tab.c $(obj_dir)/lex.yy.c ref_parser/main.c $(CC) -o $@ -I$(obj_dir)/ $(obj_dir)/parser.tab.c $(obj_dir)/lex.yy.c ref_parser/main.c $(obj_dir)/parser.tab.c: ref_parser/parser.y | $(obj_dir) bison -d -o $@ ref_parser/parser.y $(obj_dir)/lex.yy.c: ref_parser/lexer.x | $(obj_dir) flex -o $@ ref_parser/lexer.x $(obj_dir): mkdir -p $(obj_dir) clean: rm -f milly rm -f reference_parser rm -r $(obj_dir) .PHONY: clean