40 lines
940 B
Makefile
40 lines
940 B
Makefile
CXX = g++
|
|
ARGS = -std=c++17 -Ibuild -Isrc
|
|
#BISON = /opt/homebrew/opt/bison/bin/bison
|
|
BISON = bison
|
|
FLEX = flex
|
|
|
|
TARGET = build/py2rb
|
|
|
|
$(TARGET): build/parser.o build/lexer.o build/main.o
|
|
$(CXX) $^ -o $@
|
|
|
|
build/parser.cpp build/parser.hpp: src/parser.y | build
|
|
$(BISON) -d -o build/parser.cpp src/parser.y
|
|
|
|
build/lexer.cpp build/lexer.hpp: src/lexer.l build/parser.hpp src/scanner.hpp src/indent_stack.hpp build
|
|
$(FLEX) --header-file=build/lexer.hpp -o build/lexer.cpp src/lexer.l
|
|
|
|
build/%.o: build/%.cpp
|
|
$(CXX) -c $(ARGS) $< -o $@
|
|
|
|
build/main.o: src/main.cpp build src/codegen.hpp
|
|
$(CXX) -c $(ARGS) src/main.cpp -o build/main.o
|
|
|
|
src/ast.hpp: src/ast/base.hpp src/ast/expressions.hpp src/ast/literals.hpp src/ast/operators.hpp src/ast/statements.hpp src/ast/string_utils.hpp
|
|
|
|
src/codegen.hpp : src/ast.hpp
|
|
|
|
build:
|
|
mkdir -p build
|
|
|
|
clean:
|
|
rm -rf build
|
|
|
|
run: $(TARGET)
|
|
$(TARGET)
|
|
|
|
test: $(TARGET)
|
|
test/tester.sh
|
|
|
|
.PHONY: clean run test
|