Front End (GNU Compiler Collection (GCC) Internals)

#### 5.3.8 Anatomy of a Language Front End ¶

A front end for a language in GCC has the following parts:

- A directory `language` under `gcc` containing source files for that front end. See The Front End `language` Directory, for details.
- A mention of the language in the list of supported languages in `gcc/doc/install.texi`.
- A mention of the name under which the language’s runtime library is recognized by `--enable-shared=package` in the documentation of that option in `gcc/doc/install.texi`.
- A mention of any special prerequisites for building the front end in the documentation of prerequisites in `gcc/doc/install.texi`.
- Details of contributors to that front end in `gcc/doc/contrib.texi`. If the details are in that front end’s own manual then there should be a link to that manual’s list in `contrib.texi`.
- Information about support for that language in `gcc/doc/frontends.texi`.
- Information about standards for that language, and the front end’s support for them, in `gcc/doc/standards.texi`. This may be a link to such information in the front end’s own manual.
- Details of source file suffixes for that language and `-x lang` options supported, in `gcc/doc/invoke.texi`.
- Entries in `default_compilers` in `gcc.cc` for source file suffixes for that language.
- Preferably testsuites, which may be under `gcc/testsuite` or runtime library directories. FIXME: document somewhere how to write testsuite harnesses.
- Probably a runtime library for the language, outside the `gcc` directory. FIXME: document this further.
- Details of the directories of any runtime libraries in `gcc/doc/sourcebuild.texi`.
- Check targets in `Makefile.def` for the top-level `Makefile` to check just the compiler or the compiler and runtime library for the language.

If the front end is added to the official GCC source repository, the following are also necessary:

- At least one Bugzilla component for bugs in that front end and runtime libraries. This category needs to be added to the Bugzilla database.
- Normally, one or more maintainers of that front end listed in `MAINTAINERS`.
- Mentions on the GCC web site in `index.html` and `frontends.html`, with any relevant links on `readings.html`. (Front ends that are not an official part of GCC may also be listed on `frontends.html`, with relevant links.)
- A news item on `index.html`, and possibly an announcement on the gcc-announce@gcc.gnu.org mailing list.
- The front end’s manuals should be mentioned in `maintainer-scripts/update_web_docs_git` (see Texinfo Manuals) and the online manuals should be linked to from `onlinedocs/index.html`.
- If the front end has its own manual with its own index of options, the generated `Option-Index.html` should be added to `PER_LANGUAGE_OPTION_INDEXES` in `gcc/regenerate-opt-urls.py` and to `OPT_URLS_HTML_DEPS` in `gcc/Makefile.in`.
- Any old releases or CVS repositories of the front end, before its inclusion in GCC, should be made available on the GCC web site at https://gcc.gnu.org/pub/gcc/old-releases/.
- The release and snapshot script `maintainer-scripts/gcc_release` should be updated to generate appropriate tarballs for this front end.
- If this front end includes its own version files that include the current date, `maintainer-scripts/update_version` should be updated accordingly.