automake-1.16: Tags

 
 18.1 Interfacing to ‘etags’
 ===========================
 
 Automake will generate rules to generate ‘TAGS’ files for use with GNU
 Emacs under some circumstances.
 
    If any C, C++ or Fortran 77 source code or headers are present, then
 ‘tags’ and ‘TAGS’ rules will be generated for the directory.  All files
 listed using the ‘_SOURCES’, ‘_HEADERS’, and ‘_LISP’ primaries will be
 used to generate tags.  Generated source files that are not distributed
 must be declared in variables like ‘nodist_noinst_HEADERS’ or
 ‘nodist_PROG_SOURCES’ or they will be ignored.
 
    A ‘tags’ rule will be output at the topmost directory of a
 multi-directory package.  When run from this topmost directory, ‘make
 tags’ will generate a ‘TAGS’ file that includes by reference all ‘TAGS’
 files from subdirectories.
 
    The ‘tags’ rule will also be generated if the variable ‘ETAGS_ARGS’
 is defined.  This variable is intended for use in directories that
 contain taggable source that ‘etags’ does not understand.  The user can
 use the ‘ETAGSFLAGS’ to pass additional flags to ‘etags’;
 ‘AM_ETAGSFLAGS’ is also available for use in ‘Makefile.am’.  The
 variable ‘ETAGS’ is the name of the program to invoke (by default
 ‘etags’).
 
    Here is how Automake generates tags for its source, and for nodes in
 its Texinfo file:
 
      ETAGS_ARGS = automake.in --lang=none \
       --regex='/^@node[ \t]+\([^,]+\)/\1/' automake.texi
 
    If you add file names to ‘ETAGS_ARGS’, you will probably also want to
 define ‘TAGS_DEPENDENCIES’.  The contents of this variable are added
 directly to the dependencies for the ‘tags’ rule.
 
    Automake also generates a ‘ctags’ rule that can be used to build
 ‘vi’-style ‘tags’ files.  The variable ‘CTAGS’ is the name of the
 program to invoke (by default ‘ctags’); ‘CTAGSFLAGS’ can be used by the
 user to pass additional flags, and ‘AM_CTAGSFLAGS’ can be used by the
 ‘Makefile.am’.
 
    Automake will also generate an ‘ID’ rule that will run ‘mkid’ on the
 source.  This is only supported on a directory-by-directory basis.
 
    Similarly, the ‘cscope’ rule will create a list of all the source
 files in the tree and run ‘cscope’ to build an inverted index database.
 The variable ‘CSCOPE’ is the name of the program to invoke (by default
 ‘cscope’); ‘CSCOPEFLAGS’ and ‘CSCOPE_ARGS’ can be used by the user to
 pass additional flags and file names respectively, while
 ‘AM_CSCOPEFLAGS’ can be used by the ‘Makefile.am’.  Note that,
 currently, the Automake-provided ‘cscope’ support, when used in a VPATH
 build, might not work well with non-GNU make implementations (especially
 with make implementations performing ⇒VPATH rewrites
 (autoconf)Automatic Rule Rewriting.).
 
    Finally, Automake also emits rules to support the GNU Global Tags
 program (https://www.gnu.org/software/global/).  The ‘GTAGS’ rule runs
 Global Tags and puts the result in the top build directory.  The
 variable ‘GTAGS_ARGS’ holds arguments that are passed to ‘gtags’.