Subject: Re: bug#31744: 26.1; Improvements to make tags and make -C test

From: Eli Zaretskii <[email-masked]>
Date: Sat, 09 Jun 2018 09:20:53 +0300

> From: Noam Postavsky <[email-masked]>
> Cc: [email-masked]
> Date: Fri, 08 Jun 2018 21:12:04 -0400
> 
> >>> * src/Makefile.in: Create TAGS files in ${srcdir}, not build dir.
> >>
> >> I'm not sure I agree with this.  Other projects I looked at produce
> >> TAGS in the build directory (but reference source files in srcdir, of
> >> course).  Why do you think TAGS should go to the source directory?
> 
> Oh, hmm.  The original reason, is that when looking at a source file in
> Emacs, and then hitting M-. I get a prompt to visit the TAGS table,
> which starts from the source directory.  Then I have to go looking for
> the TAGS file in the corresponding build directory.

I have grown a habit a long time ago to "M-x visit-tags-table" before
I issue the first "M-." command.

The default prompt is fine, because what else would you expect Emacs
to do in that case?  But no one said that default is correct in every
single use case.  E.g., a project could have one TAGS file in a
top-level directory, and you may be visiting a file in a subdirectory.

> especially since every build directory will have identical TAGS
> files anyway

That's what happens currently, but it isn't carved in stone.  We
could, for example, have TAGS reflect only the files that are compiled
in on the current platform; other projects (like GDB, for example) do
just that.  Then each build will have a different TAGS file.

> > They should not. Source should be able to be mounted read-only, and
> > all build products should be stored elsewhere.
> 
> Emacs puts .elc files in the source directory.

*.elc files are generated at bootstrap time; when you build a tarball,
they are already there.  By contrast, TAGS is built at build time and
doesn't come with the release tarball.

> I was under the impression that the general principal is that arch &
> config dependent files go in the build directory, and arch & config
> independent ones go in the source directory.

No, I think the principle is that the source tree holds everything
that comes with a release tarball.