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 <> := src/system.l src/system.proto src/system.yy <> := 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): $(<>) $(<<) "LINK\t" $(^:obj/%=%) @$(CXX) $(^) -o $(@) $(LDFLAGS) clean: $(<<) " RM\t" $(<>:obj/%=%) $(BINARY) @$(RM) -f $(<>) $(BINARY) .PHONY: all clean install uninstall test #.INTERMEDIATE: src/system.lex.cc src/system.pb.h src/system.tab.cc src/system.tab.hh