llvm-journey

LLVM Journey
git clone git://0xff.ir/g/llvm-journey.git
Log | Files | Refs | README | LICENSE

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)