Makefile (2764B)
1 2 CXXFLAGS += -Wall -Wextra -std=c++14 3 4 ifndef DEBUG 5 CXXFLAGS += -O3 6 else 7 CXXFLAGS += -g -ggdb -fsanitize=address -fno-omit-frame-pointer 8 endif 9 10 LLVM_LIBS = $(shell llvm-config --ldflags --system-libs --libs core) 11 CXXFLAGS += $(shell llvm-config --cxxflags) 12 13 tflags += -I. -Itests # flags for tests 14 eflags += -I. # flags for examples 15 catch2 = tests/catch2/catch.hpp 16 17 # tests 18 tbin = kaleidoscope_lexer.test kaleidoscope_ast.test kaleidoscope_parser.test \ 19 kaleidoscope_codegen.test 20 21 # examples 22 ebin = kaleidoscope_lexer.ex 23 24 .PHONY: all 25 all: tests 26 27 .PHONY: tests 28 tests: $(tbin) 29 $(foreach t,$(tbin),./$(t) --use-colour no;) 30 31 .PHONY: examples 32 examples: $(ebin) 33 34 kaleidoscope_ast.o: kaleidoscope_ast.cpp kaleidoscope_ast.hpp 35 36 kaleidoscope_codegen.o: kaleidoscope_codegen.cpp kaleidoscope_codegen.hpp \ 37 kaleidoscope_ast.hpp 38 39 kaleidoscope_parser.hpp: kaleidoscope_lexer.hpp kaleidoscope_ast.o 40 41 #--- tests 42 43 kaleidoscope_lexer.test.o: CXXFLAGS += $(tflags) 44 kaleidoscope_lexer.test.o: kaleidoscope_lexer.hpp kaleidoscope_tokens.hpp 45 kaleidoscope_lexer.test.o: tests/kaleidoscope_lexer.test.cpp $(catch2) 46 $(CXX) $(CXXFLAGS) -c -o $@ $< 47 kaleidoscope_lexer.test: kaleidoscope_lexer.test.o 48 $(CXX) $(CXXFLAGS) -o $@ $< $(LDFLAGS) 49 50 kaleidoscope_ast.test.o: CXXFLAGS += $(tflags) 51 kaleidoscope_ast.test.o: kaleidoscope_ast.hpp $(catch2) 52 kaleidoscope_ast.test.o: tests/kaleidoscope_ast.test.cpp 53 $(CXX) $(CXXFLAGS) -c -o $@ $< 54 kaleidoscope_ast.test: kaleidoscope_ast.o 55 kaleidoscope_ast.test: kaleidoscope_ast.test.o 56 $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) 57 58 kaleidoscope_parser.test.o: CXXFLAGS += $(tflags) 59 kaleidoscope_parser.test.o: kaleidoscope_parser.hpp kaleidoscope_tokens.hpp 60 kaleidoscope_parser.test.o: tests/kaleidoscope_parser.test.cpp $(catch2) 61 $(CXX) $(CXXFLAGS) -c -o $@ $< 62 kaleidoscope_parser.test: kaleidoscope_ast.o 63 kaleidoscope_parser.test: kaleidoscope_parser.test.o 64 $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) 65 66 kaleidoscope_codegen.test.o: CXXFLAGS += $(tflags) 67 kaleidoscope_codegen.test.o: kaleidoscope_codegen.hpp kaleidoscope_parser.hpp 68 kaleidoscope_codegen.test.o: tests/kaleidoscope_codegen.test.cpp $(catch2) 69 $(CXX) $(CXXFLAGS) -c -o $@ $< 70 kaleidoscope_codegen.test: kaleidoscope_codegen.o kaleidoscope_ast.o 71 kaleidoscope_codegen.test: kaleidoscope_codegen.test.o 72 $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(LLVM_LIBS) 73 74 #--- examples 75 76 kaleidoscope_lexer.ex.o: CXXFLAGS += $(eflags) 77 kaleidoscope_lexer.ex.o: kaleidoscope_lexer.hpp 78 kaleidoscope_lexer.ex.o: examples/kaleidoscope_lexer.ex.cpp 79 $(CXX) $(CXXFLAGS) -c -o $@ $< 80 kaleidoscope_lexer.ex: kaleidoscope_lexer.ex.o 81 $(CXX) $(CXXFLAGS) -o $@ $< $(LDFLAGS) 82 83 #--- 84 85 .PHONY: fmt 86 fmt: 87 clang-format -i *.[ch]pp tests/*.[ch]pp examples/*.[ch]pp 88 89 .PHONY: clean 90 clean: 91 $(RM) *.o $(tbin) $(ebin)