Source Files Containing Type Information#
Whenever you add GTY
markers to a source file that previously
had none, or create a new source file containing GTY
markers,
there are three things you need to do:
You need to add the file to the list of source files the type machinery scans. There are four cases:
For a back-end file, this is usually done automatically; if not, you should add it to
target_gtfiles
in the appropriate port’s entries inconfig.gcc
.For files shared by all front ends, add the filename to the
GTFILES
variable inMakefile.in
.For files that are part of one front end, add the filename to the
gtfiles
variable defined in the appropriateconfig-lang.in
. Headers should appear before non-headers in this list.For files that are part of some but not all front ends, add the filename to the
gtfiles
variable of all the front ends that use it.
If the file was a header file, you’ll need to check that it’s included in the right place to be visible to the generated files. For a back-end header file, this should be done automatically. For a front-end header file, it needs to be included by the same file that includes
gtype-lang.h
. For other header files, it needs to be included ingtype-desc.cc
, which is a generated file, so add it toifiles
inopen_base_file
ingengtype.cc
.For source files that aren’t header files, the machinery will generate a header file that should be included in the source file you just changed. The file will be called
gt-path.h
wherepath
is the pathname relative to thegcc
directory with slashes replaced by -, so for example the header file to be included incp/parser.cc
is calledgt-cp-parser.h
. The generated header file should be included after everything else in the source file.
For language frontends, there is another file that needs to be included
somewhere. It will be called gtype-lang.h
, where
lang
is the name of the subdirectory the language is contained in.
Plugins can add additional root tables. Run the gengtype
utility in plugin mode as gengtype -P pluginout.h source-dirfile-listplugin*.c
with your plugin files
plugin*.c
using GTY
to generate the pluginout.h
file.
The GCC build tree is needed to be present in that mode.