Sometimes an Ada software system is ported from one compilation environment to another (say GNAT), and the file are not named using the default GNAT conventions. Instead of changing all the file names, which for a variety of reasons might not be possible, you can define the relevant file naming scheme in the Naming package of your project file.
The naming scheme has two distinct goals for the project manager: it allows finding of source files when searching in the source directories, and given a source file name it makes it possible to guess the associated language, and thus the compiler to use.
Note that the use by the Ada compiler of pragmas Source_File_Name is not supported when using project files. You must use the features described in this paragraph. You can however specify other configuration pragmas (see Specifying Configuration Pragmas).
The following attributes can be defined in package
"lowercase"(the default if unspecified),
"mixedcase". It describes the casing of file names with regards to the Ada unit name. Given an Ada unit My_Unit, the file name will respectively be my_unit.adb (lowercase), MY_UNIT.ADB (uppercase) or My_Unit.adb (mixedcase). On Windows, file names are case insensitive, so this attribute is irrelevant.
"-"so that a unit
Parent.Childis expected to be found in the file parent-child.adb. The replacement string must satisfy the following requirements to avoid ambiguities in the naming scheme:
'.'except if the entire string is
Spec_Suffix ("Ada")is not specified, then the default is
"^.ads^.ADS^". The value must satisfy the following requirements:
These attributes must satisfy the same requirements as
In addition, they must be different from any of the values in
Body_Suffix ("Ada") is not specified, then the default is
Body_Suffix ("Ada") and
Spec_Suffix ("Ada") end with the
same string, then a file name that ends with the longest of these two
suffixes will be a body if the longest suffix is
or a spec if the longest suffix is
If the suffix does not start with a '.', a file with a name exactly equal
to the suffix will also be part of the project (for instance if you define
the suffix as
Makefile, a file called Makefile will be part
of the project. This capability is usually not interesting when building.
However, it might become useful when a project is also used to
find the list of source files in an editor, like the GNAT Programming System
Body_Suffix ("Ada"). The same rules apply as for the
Body_Suffixattribute. The only accepted index is "Ada".
Speccan be used to define the source file name for a given Ada compilation unit's spec. The index is the literal name of the Ada unit (case insensitive). The value is the literal base name of the file that contains this unit's spec (case sensitive or insensitive depending on the operating system). This attribute allows the definition of exceptions to the general naming scheme, in case some files do not follow the usual convention.
When a source file contains several units, the relative position of the unit can be indicated. The first unit in the file is at position 1
for Spec ("MyPack.MyChild") use "mypack.mychild.spec"; for Spec ("top") use "foo.a" at 1; for Spec ("foo") use "foo.a" at 2;
For example, the following package models the Apex file naming rules:
package Naming is for Casing use "lowercase"; for Dot_Replacement use "."; for Spec_Suffix ("Ada") use ".1.ada"; for Body_Suffix ("Ada") use ".2.ada"; end Naming;