milly/Makefile

34 lines
794 B
Makefile

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