all: main CXXFLAGS = $(shell llvm-config --cppflags) LDFLAGS = $(shell llvm-config --ldflags) LIBS = $(shell llvm-config --libs) CXX ?= g++ main: main.o lex.grammar.o grammar.o node.o codegen.o $(CXX) -o main main.o lex.grammar.o grammar.o node.o codegen.o $(LDFLAGS) $(LIBS) main.o: main.cpp node.hpp $(CXX) -g -c $(CXXFLAGS) -Wall -o main.o main.cpp node.o: node.cpp node.hpp $(CXX) -g -c $(CXXFLAGS) -Wall -o node.o node.cpp codegen.o: codegen.cpp codegen.hpp $(CXX) -g -c $(CXXFLAGS) -Wall -o codegen.o codegen.cpp lex.grammar.o: lex.grammar.c grammar.hpp $(CXX) -g -c $(CXXFLAGS) -Wall -o lex.grammar.o lex.grammar.c grammar.o: grammar.cpp $(CXX) -g -c $(CXXFLAGS) -Wall -o grammar.o grammar.cpp lex.grammar.c: grammar.l node.hpp flex -o lex.grammar.c -Pgrammar grammar.l grammar.cpp: grammar.y node.hpp bison -d -v --report-file=grammar.output -p grammar -d -o grammar.cpp grammar.y grammar.hpp: grammar.y node.hpp bison -d -v --report-file=grammar.output -p grammar -d -o grammar.cpp grammar.y clean: -rm grammar.cpp grammar.hpp -rm lex.grammar.c -rm -f *.o -rm -f main test: main ./main < test.c