-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
54 lines (41 loc) · 1.18 KB
/
Makefile
File metadata and controls
54 lines (41 loc) · 1.18 KB
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
46
47
48
49
50
51
52
53
54
CC=gcc
CFLAGS=-g -Wall
CXX=g++
CXXFLAGS=-std=c++14 $(CFLAGS)
YACC=bison
YACCFLAGS =-d
LEX=flex
LEXCPP=flex++
CPP=cpp
CPPFLAGS =-I$(HOME)/lib
LDFLAGS = -L$(HOME)/lib
LDLIBS = -lfl
TMP_OBJS = lex.yy.cc json-grammar.tab.hh json-grammar.tab.cc
OBJS = json-grammar.tab.o lex.yy.o json-array.o json-object.o json-value.o json.o
TMP_OBJS += $(OBJS)
.PHONY: all clean
all: json
test-json: test-json.o
$(CXX) $(LDFLAGS) -o $@ $<
json: json-token.o json-grammar.o
$(CC) $(LDFLAGS) -o $@ json-token.o json-grammar.o $(LDLIBS)
json-token.c: json-token.l json-grammar.c
$(LEX) -o $@ json-token.l
json-grammar.c: json-grammar.y
$(YACC) $(YACCFLAGS) -o $@ json-grammar.y
json2: lex.yy.o json-grammar.tab.o
$(CXX) -o $@ lex.yy.o json-grammar.tab.o -lfl
json3: $(OBJS)
$(CXX) -o $@ $(OBJS) $(LDLIBS)
lex.yy.o: lex.yy.cc
$(CXX) $(CXXFLAGS) -c lex.yy.cc
lex.yy.c: json-token.cpp.l json-grammar.tab.c
$(LEX) json-token.l
lex.yy.cc: json-grammar.tab.cc json-token.cpp.l
$(LEXCPP) json-token.cpp.l
json-grammar.tab.o: json-grammar.tab.cc
$(CXX) $(CXXFLAGS) -c -o $@ $<
json-grammar.tab.cc: json-object.h json-grammar.yy
$(YACC) $(YACCFLAGS) --defines -o $@ json-grammar.yy
clean:
$(RM) $(TMP_OBJS)