5.3.8 Anatomy of a Language Front End ¶
A front end for a language in GCC has the following parts:
- A directorylanguage undergcc containing sourcefiles for that front end. SeeThe Front Endlanguage Directory, for details.
- A mention of the language in the list of supported languages ingcc/doc/install.texi.
- A mention of the name under which the language’s runtime library isrecognized by--enable-shared=package in thedocumentation of that option ingcc/doc/install.texi.
- A mention of any special prerequisites for building the front end inthe documentation of prerequisites ingcc/doc/install.texi.
- Details of contributors to that front end ingcc/doc/contrib.texi. If the details are in that front end’sown manual then there should be a link to that manual’s list incontrib.texi.
- Information about support for that language ingcc/doc/frontends.texi.
- Information about standards for that language, and the front end’ssupport for them, ingcc/doc/standards.texi. This may be alink to such information in the front end’s own manual.
- Details of source file suffixes for that language and-xlang options supported, ingcc/doc/invoke.texi.
- Entries in
default_compilers ingcc.cc for source filesuffixes for that language. - Preferably testsuites, which may be undergcc/testsuite orruntime library directories. FIXME: document somewhere how to writetestsuite harnesses.
- Probably a runtime library for the language, outside thegccdirectory. FIXME: document this further.
- Details of the directories of any runtime libraries ingcc/doc/sourcebuild.texi.
- Check targets inMakefile.def for the top-levelMakefileto check just the compiler or the compiler and runtime library for thelanguage.
If the front end is added to the official GCC source repository, thefollowing are also necessary:
- At least one Bugzilla component for bugs in that front end and runtimelibraries. This category needs to be added to the Bugzilla database.
- Normally, one or more maintainers of that front end listed inMAINTAINERS.
- Mentions on the GCC web site inindex.html andfrontends.html, with any relevant links onreadings.html. (Front ends that are not an official part ofGCC may also be listed onfrontends.html, with relevant links.)
- A news item onindex.html, and possibly an announcement on thegcc-announce@gcc.gnu.org mailing list.
- The front end’s manuals should be mentioned inmaintainer-scripts/update_web_docs_git (seeTexinfo Manuals)and the online manuals should be linked to fromonlinedocs/index.html.
- If the front end has its own manual with its own index of options, thegeneratedOption-Index.html should be added to
PER_LANGUAGE_OPTION_INDEXES ingcc/regenerate-opt-urls.pyand toOPT_URLS_HTML_DEPS ingcc/Makefile.in. - Any old releases or CVS repositories of the front end, before itsinclusion in GCC, should be made available on the GCC web site athttps://gcc.gnu.org/pub/gcc/old-releases/.
- The release and snapshot scriptmaintainer-scripts/gcc_releaseshould be updated to generate appropriate tarballs for this front end.
- If this front end includes its own version files that include thecurrent date,maintainer-scripts/update_version should beupdated accordingly.