-
Notifications
You must be signed in to change notification settings - Fork 1
/
Makefile
45 lines (32 loc) · 1.06 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
CC=gcc
CXX=g++
CXXFLAGS= -Wno-write-strings -std=c++11 -g
# CXXFLAGS =
LDFLAGS=-lfl -lm
BIN_DIR=bin
BUILD_DIR=build
FLEX ?= flex
BISON ?= bison
all: lexer parser
lexer: $(BUILD_DIR)/lexer_main.o $(BUILD_DIR)/lexer.o $(BUILD_DIR)/tokens.o
$(CC) -o $(BIN_DIR)/$@ $^ $(LDFLAGS)
$(BUILD_DIR)/lexer_main.o: lexer_main.c
$(CC) -c -o $@ $<
$(BUILD_DIR)/tokens.o: tokens.c
$(CC) -std=c99 -c -o $@ $<
lex.yy.c: tokens.l
$(FLEX) $<
$(BUILD_DIR)/lexer.o: lex.yy.c tokens.h
$(CC) -include tokens.h -c -o $@ $<
parser: $(BUILD_DIR)/parser.o $(BUILD_DIR)/parser_main.o $(BUILD_DIR)/lexer_p.o
$(CXX) -o $(BIN_DIR)/$@ $^ $(CXXFLAGS) $(LDFLAGS)
$(BUILD_DIR)/parser.o: parser.tab.cc
$(CXX) -c -o $@ $^ $(CXXFLAGS)
$(BUILD_DIR)/parser_main.o: parser_main.cc
$(CXX) -c -o $@ $< $(CXXFLAGS)
$(BUILD_DIR)/lexer_p.o: lex.yy.c parser.tab.hh
$(CXX) -include parser.tab.hh -c -o $@ $< $(CXXFLAGS)
parser.tab.cc parser.tab.hh: parser.y
$(BISON) -o $@ $< -d -p rs -v --report=all --warnings=error=all
clean:
rm -f $(BIN_DIR)/* $(BUILD_DIR)/* lex.yy.c parser.tab.cc parser.tab.hh parser.output