blob: ec5a358383629ac6886d6d38633636f42b7dc750 (
plain) (
blame)
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
|
BINARY ?= obj/lprotoc
CXXFLAGS += -Isrc -I. $(shell pkg-config --cflags protobuf)
LDFLAGS += $(shell pkg-config --libs protobuf)
# Echo function
<< := @echo
ifneq ($(shell eval 'echo -e'),-e)
<< += -e
endif
<<sources>> := src/system.l src/system.proto src/system.yy
<<objects>> := obj/system.lex.o obj/system.tab.o obj/system.pb.o
all: $(BINARY)
%.lex.cc: %.l
$(<<) " LEX\t" $(<:src/%=%)
@flex -+ -o $(@) $(<)
%.tab.cc: %.yy
$(<<) "BISON\t" $(<:src/%=%) $(@:src/%=%)
@bison -o $(@) $(<)
%.tab.hh: %.yy
$(<<) "BISON\t" $(<:src/%=%) $(@:src/%=%)
@bison -o /dev/null --header=$(@) $(<)
%.pb.cc %.pb.h: %.proto
$(<<) "PROTOC" $(<)
@protoc --cpp_out=. $(<)
src/system.lex.cc: src/system.tab.hh src/system.tab.cc
src/system.tab.cc: src/system.pb.h
obj/%.o: src/%.cc
$(<<) " CXX\t" $(<:src/%=%)
@mkdir -p $(shell dirname $(@))
@$(CXX) -c $(<) -o $(@) $(CXXFLAGS)
$(BINARY): $(<<objects>>)
$(<<) "LINK\t" $(^:obj/%=%)
@$(CXX) $(^) -o $(@) $(LDFLAGS)
clean:
$(<<) " RM\t" $(<<objects>>:obj/%=%) $(BINARY)
@$(RM) -f $(<<objects>>) $(BINARY)
.PHONY: all clean install uninstall test
#.INTERMEDIATE: src/system.lex.cc src/system.pb.h src/system.tab.cc src/system.tab.hh
|