34 lines
794 B
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
|