From d8fe6ba3c6eff80a87335ece23c6111d4996c23c Mon Sep 17 00:00:00 2001 From: Mubashshir Date: Fri, 15 Nov 2024 17:26:17 +0600 Subject: Generate docs on build Signed-off-by: Mubashshir --- Makefile | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index ec5a358..a4e7544 100644 --- a/Makefile +++ b/Makefile @@ -9,28 +9,29 @@ ifneq ($(shell eval 'echo -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 +all: $(BINARY) doc + +%.lex.cc: %.flex $(<<) " LEX\t" $(<:src/%=%) @flex -+ -o $(@) $(<) %.tab.cc: %.yy $(<<) "BISON\t" $(<:src/%=%) $(@:src/%=%) - @bison -o $(@) $(<) + @bison -r -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.lex.cc: src/system.tab.hh src/system.tab.cc: src/system.pb.h obj/%.o: src/%.cc @@ -38,14 +39,33 @@ obj/%.o: src/%.cc @mkdir -p $(shell dirname $(@)) @$(CXX) -c $(<) -o $(@) $(CXXFLAGS) +doc/%.tab.gv: src/%.yy + $(<<) "BISON\t" $(<:src/%=%) $(@:doc/%=%) + @mkdir -p $(shell dirname $(@)) + @bison -o $(<:src/%.yy=.%.gv.tab) --graph=$(@) $(<) + @$(RM) $(<:src/%.yy=.%.gv.tab) + +doc/%.tab.html: src/%.yy + $(<<) "BISON\t" $(<:src/%=%) $(@:doc/%=%) + @mkdir -p $(shell dirname $(@)) + @bison -o $(<:src/%.yy=.%.html.tab) --html=$(@) $(<) + @$(RM) $(<:src/%.yy=.%.html.tab) $(<:src/%.yy=.%.html.xml) + +doc/%.tab.xml: src/%.yy + $(<<) "BISON\t" $(<:src/%=%) $(@:doc/%=%) + @mkdir -p $(shell dirname $(@)) + @bison -o $(<:src/%.yy=.%.xml.tab) --xml=$(@) $(<) + @$(RM) $(<:src/%.yy=.%.xml.tab) $(BINARY): $(<>) $(<<) "LINK\t" $(^:obj/%=%) @$(CXX) $(^) -o $(@) $(LDFLAGS) clean: - $(<<) " RM\t" $(<>:obj/%=%) $(BINARY) - @$(RM) -f $(<>) $(BINARY) + $(<<) " RM\t" obj doc + @$(RM) -vf obj doc + +doc: doc/system.tab.gv doc/system.tab.html doc/system.tab.xml -.PHONY: all clean install uninstall test -#.INTERMEDIATE: src/system.lex.cc src/system.pb.h src/system.tab.cc src/system.tab.hh +.PHONY: all clean install uninstall test doc +.INTERMEDIATE: src/system.lex.cc src/system.pb.h src/system.tab.cc src/system.tab.hh -- cgit v1.2.3