Ben Widawsky <b...@bwidawsk.net> writes:
> On 21-01-12 09:27:39, Alex Bennée wrote: >> >> Ben Widawsky <b...@bwidawsk.net> writes: >> >> > On 21-01-08 22:30:59, Alex Bennée wrote: >> >> >> >> Ben Widawsky <b...@bwidawsk.net> writes: >> >> >> >> > On 21-01-08 12:19:35, Alex Bennée wrote: >> >> >> GNU Global is another tags engine which is more like cscope in being >> >> >> able to support finding both references and definitions. You will be >> >> >> un-surprised to know it also integrates well with Emacs. >> >> >> >> >> >> The main benefit of integrating it into find-src-path is it takes less >> >> >> time to rebuild the database from scratch when you have a lot of build >> >> >> directories under your source tree. >> >> >> >> >> >> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> >> >> > >> >> > It might be worth mentioning that the Linux kernel has supported this >> >> > for a long >> >> > time now (10+ years). >> >> > >> >> > Having switched to gtags about 3 years ago, I think it's summarily >> >> > better and >> >> > would really like this to get merged. >> >> >> >> So I take it that's a reviewed-by and a tested-by tag from you? >> >> >> > >> > It doesn't actually work correctly for me, I just like the idea :-) >> > >> > make gtags 2>&1 | grep ignored | wc -l >> > 6266 >> > >> > Warning: '/home/bwidawsk/work/clk/qemu/accel/qtest/qtest.c' is out of >> > source tree. ignored. >> >> Did you run this in the build directory by any chance? I tested in the >> source directory because that's generally where you want the tags. >> >> I wonder what the best solution is to this? Always force ourselves to be >> in the source dir? Or error out when we are not in the source tree? > > I was in the build directory. With ctags, that works for me in both source and > build directory. > > It does indeed work from the source directory. > > I'm wondering how gtags can't seem to do this (I wasn't able to figure it out, > at least). The start of the manual states: Gtags recursively collects source files under the current directory, picks up symbols and writes the cross-reference data into the tag files (´GTAGS´, ´GRTAGS´ and ´GPATH´). so I guess when it finds files outside of CWD it gets confused. While all of my build trees are inside the source tree ("builds/foo|bar|baz") they don't have to be. > I'd be in favor of error. The other tags targets always generate to source root so I'm going to go for: .PHONY: gtags gtags: $(call quiet-command, \ rm -f "$(SRC_PATH)/"GTAGS \ rm -f "$(SRC_PATH)/"GRTAGS \ rm -f "$(SRC_PATH)/"GPATH, \ "GTAGS", "Remove old") $(call quiet-command, \ (cd $(SRC_PATH) && $(find-src-path) | gtags -f -), \ "GTAGS", "Re-index $(SRC_PATH)") which also makes the output a bit nicer. > > >> >> >> > >> >> > >> >> >> --- >> >> >> Makefile | 9 ++++++++- >> >> >> .gitignore | 3 +++ >> >> >> 2 files changed, 11 insertions(+), 1 deletion(-) >> >> >> >> >> >> diff --git a/Makefile b/Makefile >> >> >> index fb9923ff22..66eec99685 100644 >> >> >> --- a/Makefile >> >> >> +++ b/Makefile >> >> >> @@ -253,6 +253,13 @@ ctags: >> >> >> rm -f "$(SRC_PATH)/"tags >> >> >> $(find-src-path) -exec ctags -f "$(SRC_PATH)/"tags --append {} + >> >> >> >> >> >> +.PHONY: gtags >> >> >> +gtags: >> >> >> + rm -f "$(SRC_PATH)/"GTAGS >> >> >> + rm -f "$(SRC_PATH)/"GRTAGS >> >> >> + rm -f "$(SRC_PATH)/"GPATH >> >> >> + $(find-src-path) | gtags -f - >> >> >> + >> >> >> .PHONY: TAGS >> >> >> TAGS: >> >> >> rm -f "$(SRC_PATH)/"TAGS >> >> >> @@ -279,7 +286,7 @@ help: >> >> >> $(call print-help,all,Build all) >> >> >> $(call print-help,dir/file.o,Build specified target only) >> >> >> $(call print-help,install,Install QEMU, documentation and tools) >> >> >> - $(call print-help,ctags/TAGS,Generate tags file for editors) >> >> >> + $(call print-help,ctags/gtags/TAGS,Generate tags file for >> >> >> editors) >> >> >> $(call print-help,cscope,Generate cscope index) >> >> >> $(call print-help,sparse,Run sparse on the QEMU source) >> >> >> @echo '' >> >> >> diff --git a/.gitignore b/.gitignore >> >> >> index b32bca1315..75a4be0724 100644 >> >> >> --- a/.gitignore >> >> >> +++ b/.gitignore >> >> >> @@ -7,6 +7,9 @@ >> >> >> cscope.* >> >> >> tags >> >> >> TAGS >> >> >> +GPATH >> >> >> +GRTAGS >> >> >> +GTAGS >> >> >> *~ >> >> >> *.ast_raw >> >> >> *.depend_raw >> >> >> -- >> >> >> 2.20.1 >> >> >> >> >> >> >> >> >> >> >> >> -- >> >> Alex Bennée >> >> >> -- >> Alex Bennée -- Alex Bennée