.PHONY: clean distclean default

ifneq (,$(findstring Windows,$(OS)))
  EXE=.exe
else
  EXE=
endif

CXX=c++
CXXFLAGS=-std=c++17 -Wall -Wextra

default: mbc$(EXE)

lexer.cpp lexer.hpp: lexer.l
	flex $<

lexer.o: lexer.cpp parser.hpp ast.hpp symbol.hpp

parser.hpp parser.cpp: parser.y
	bison $<

parser.o: parser.cpp lexer.hpp ast.hpp symbol.hpp

mbc$(EXE): lexer.o parser.o
	$(CXX) $(CXXFLAGS) -o $@ $^

clean:
	$(RM) lexer.cpp lexer.hpp parser.cpp parser.hpp parser.output *.o location.hpp

distclean: clean
	$(RM) mbc$(EXE)
