[multiple changes]

2011-12-21  Pascal Obry  <obry@adacore.com>

	* prj-attr.adb, snames.ads-tmpl: Add Library_Standalone,
	Library_Fully_Standalone_Options and
	Library_Fully_Standalone_Supported attributes.
	* prj-nmsc.adb (Check_Library): Update check to take into
	account fully standalone libraries. Such shared libraries can
	only depend on static libraries.
	(Check_Stand_Alone_Library): Add support for fully standalone libraries.
	(Process_Project_Level_Simple_Attributes): Store value for
	configuration attribute Library_Fully_Standalone_Supported.
	* prj.ads, makeutl.adb (Standalone): New enumeration type.
	(Project_Data): Standalone_Library now of type Standlone.
	(Project_Configuration): Add Lib_Fully_Standalone_Supported
	field.
	(Default_Project_Config): Initialize new Lib_Fully_Standalone_Supported
	field.
	* clean.adb (Clean_Project): Adjust to new type for Standalone.
	* make.adb (Library_Phase): Adjust to new type for Standalone.
	(Gnatmake): Likewise.
	* mlib-prj.adb (Build_Library): Adjust to new type for
	Standalone.

2011-12-21  Thomas Quinot  <quinot@adacore.com>

	* gnatls.adb (Gnatls): Call Set_Standard_Error at startup, and then
	Set_Standard_Output just before producing normal (non-diagnostic)
	output.
	* gnatcmd.adb (Gnatcmd): Call Set_Standard_Error at initialization
	(and again after parsing project files).

2011-12-21  Vincent Celier  <celier@adacore.com>

	* prj-conf.adb (Do_Autoconf): When the object directory does
	not exist, create auto.cgpr in the directory where temporary
	files are created.

From-SVN: r182573
This commit is contained in:
Arnaud Charlet 2011-12-21 12:50:02 +01:00
parent 916e8d2794
commit 76f734d8f5
14 changed files with 404 additions and 204 deletions

View file

@ -1,3 +1,40 @@
2011-12-21 Pascal Obry <obry@adacore.com>
* prj-attr.adb, snames.ads-tmpl: Add Library_Standalone,
Library_Fully_Standalone_Options and
Library_Fully_Standalone_Supported attributes.
* prj-nmsc.adb (Check_Library): Update check to take into
account fully standalone libraries. Such shared libraries can
only depend on static libraries.
(Check_Stand_Alone_Library): Add support for fully standalone libraries.
(Process_Project_Level_Simple_Attributes): Store value for
configuration attribute Library_Fully_Standalone_Supported.
* prj.ads, makeutl.adb (Standalone): New enumeration type.
(Project_Data): Standalone_Library now of type Standlone.
(Project_Configuration): Add Lib_Fully_Standalone_Supported
field.
(Default_Project_Config): Initialize new Lib_Fully_Standalone_Supported
field.
* clean.adb (Clean_Project): Adjust to new type for Standalone.
* make.adb (Library_Phase): Adjust to new type for Standalone.
(Gnatmake): Likewise.
* mlib-prj.adb (Build_Library): Adjust to new type for
Standalone.
2011-12-21 Thomas Quinot <quinot@adacore.com>
* gnatls.adb (Gnatls): Call Set_Standard_Error at startup, and then
Set_Standard_Output just before producing normal (non-diagnostic)
output.
* gnatcmd.adb (Gnatcmd): Call Set_Standard_Error at initialization
(and again after parsing project files).
2011-12-21 Vincent Celier <celier@adacore.com>
* prj-conf.adb (Do_Autoconf): When the object directory does
not exist, create auto.cgpr in the directory where temporary
files are created.
2011-12-20 Ed Schonberg <schonberg@adacore.com>
* sem_ch12.adb (Insert_Freeze_Node_For_Instance): Further

View file

@ -1088,8 +1088,8 @@ package body Clean is
end if;
end if;
if Project.Standalone_Library and then
Project.Object_Directory /= No_Path_Information
if Project.Standalone_Library /= No
and then Project.Object_Directory /= No_Path_Information
then
Delete_Binder_Generated_Files
(Get_Name_String (Project.Object_Directory.Display_Name),

View file

@ -16359,6 +16359,28 @@ the Library Directory. As a consequence, only the Interface Units may be
imported from Ada units outside of the library. If other units are imported,
the binding phase will fail.
@noindent
It is also possible to build a fully standalone library where not only
the code to elaborate and finalize the library is embedded but also
ensuring that the library is linked only against static
libraries. So a fully standalone library only depends on system
libraries, all other code, including the GNAT runtime, is embedded. To
build a fully standalone library the attribute
@code{Library_Standalone} must be set to @code{full}:
@smallexample @c projectfile
@group
for Library_Dir use "lib_dir";
for Library_Name use "dummy";
for Library_Interface use ("int1", "int1.child");
for Library_Standalone use "full";
@end group
@end smallexample
@noindent
The default value for this attribute is @code{standard} in which case
a not fully standalone library is built.
The attribute @code{Library_Src_Dir} may be specified for a
Stand-Alone Library. @code{Library_Src_Dir} is a simple attribute that has a
single string value. Its value must be the path (absolute or relative to the

View file

@ -34,7 +34,7 @@ with MLib.Fil;
with Namet; use Namet;
with Opt; use Opt;
with Osint; use Osint;
with Output;
with Output; use Output;
with Prj; use Prj;
with Prj.Env;
with Prj.Ext; use Prj.Ext;
@ -1375,6 +1375,10 @@ procedure GNATCmd is
-- Start of processing for GNATCmd
begin
-- All output from GNATCmd is debugging or error output: send to stderr
Set_Standard_Error;
-- Initializations
Csets.Initialize;
@ -1901,6 +1905,10 @@ begin
Env => Root_Environment,
Packages_To_Check => Packages_To_Check);
-- Prj.Pars.Parse calls Set_Standard_Output, reset to stderr
Set_Standard_Error;
if Project = Prj.No_Project then
Fail ("""" & Project_File.all & """ processing failed");
end if;

View file

@ -1553,6 +1553,7 @@ begin
-- If -l (output license information) is given, it must be the only switch
if License and then Arg_Count /= 2 then
Set_Standard_Error;
Write_Str ("Can't use -l with another switch");
Write_Eol;
Usage;
@ -1713,6 +1714,7 @@ begin
GNATDIST.Output_No_ALI (Lib_File_Name (Main_File));
else
Set_Standard_Error;
Write_Str ("Can't find library info for ");
Get_Name_String (Main_File);
Write_Char ('"'); -- "
@ -1745,6 +1747,10 @@ begin
end if;
end loop;
-- Reset default output file descriptor, if needed
Set_Standard_Output;
if Very_Verbose_Mode then
for A in ALIs.First .. ALIs.Last loop
GNATDIST.Output_ALI (A);

View file

@ -4647,7 +4647,7 @@ package body Make is
Proj1 := Project_Tree.Projects;
while Proj1 /= null loop
if Proj1.Project.Extended_By = No_Project then
if Proj1.Project.Standalone_Library then
if Proj1.Project.Standalone_Library /= No then
Stand_Alone_Libraries := True;
end if;
@ -5791,7 +5791,7 @@ package body Make is
if Osint.Number_Of_Files = 0 then
if Main_Project /= No_Project and then Main_Project.Library then
if Do_Bind_Step
and then not Main_Project.Standalone_Library
and then Main_Project.Standalone_Library = No
then
Make_Failed ("only stand-alone libraries may be bound");
end if;

View file

@ -2896,7 +2896,7 @@ package body Makeutl is
if Src_Id /= No_Source
and then (not Excluding_Shared_SALs
or else not Src_Id.Project.Standalone_Library
or else Src_Id.Project.Standalone_Library = No
or else Src_Id.Project.Library_Kind = Static)
then
Queue.Insert

View file

@ -317,7 +317,7 @@ package body MLib.Prj is
Get_Name_String
(For_Project.Object_Directory.Display_Name);
Standalone : constant Boolean := For_Project.Standalone_Library;
Standalone : constant Boolean := For_Project.Standalone_Library /= No;
Project_Name : constant String := Get_Name_String (For_Project.Name);

View file

@ -105,6 +105,9 @@ package body Prj.Attr is
"SVlibrary_kind#" &
"SVlibrary_version#" &
"LVlibrary_interface#" &
"SVlibrary_standalone#" &
"LVlibrary_fully_standalone_options#" &
"SVlibrary_fully_standalone_supported#" &
"SVlibrary_auto_init#" &
"LVleading_library_options#" &
"LVlibrary_options#" &

View file

@ -1155,8 +1155,18 @@ package body Prj.Conf is
File_Use => "configuration file");
if Path_FD /= Invalid_FD then
Args (3) := new String'(Get_Name_String (Path_Name));
GNAT.OS_Lib.Close (Path_FD);
declare
Temp_Dir : constant String :=
Containing_Directory
(Get_Name_String (Path_Name));
begin
GNAT.OS_Lib.Close (Path_FD);
Args (3) :=
new String'(Temp_Dir &
Directory_Separator &
Auto_Cgpr);
Delete_File (Get_Name_String (Path_Name));
end;
else
-- We'll have an error message later on

View file

@ -2155,6 +2155,24 @@ package body Prj.Nmsc is
Attribute.Value.Location, Project);
end;
elsif
Attribute.Name = Name_Library_Fully_Standalone_Supported
then
declare
pragma Unsuppress (All_Checks);
begin
Project.Config.Lib_Fully_Standalone_Supported :=
Boolean'Value (Get_Name_String (Attribute.Value.Value));
exception
when Constraint_Error =>
Error_Msg
(Data.Flags,
"invalid value """
& Get_Name_String (Attribute.Value.Value)
& """ for Library_Fully_Standalone_Supported",
Attribute.Value.Location, Project);
end;
elsif Attribute.Name = Name_Shared_Library_Prefix then
Project.Config.Shared_Lib_Prefix :=
File_Name_Type (Attribute.Value.Value);
@ -2778,36 +2796,39 @@ package body Prj.Nmsc is
is
Shared : constant Shared_Project_Tree_Data_Access := Data.Tree.Shared;
Attributes : constant Prj.Variable_Id := Project.Decl.Attributes;
Attributes : constant Prj.Variable_Id := Project.Decl.Attributes;
Lib_Dir : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Dir, Attributes, Shared);
Lib_Dir : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Dir, Attributes, Shared);
Lib_Name : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Name, Attributes, Shared);
Lib_Name : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Name, Attributes, Shared);
Lib_Version : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Version, Attributes, Shared);
Lib_Standalone : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Standalone,
Attributes, Shared);
Lib_ALI_Dir : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Ali_Dir, Attributes, Shared);
Lib_Version : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Version, Attributes, Shared);
Lib_GCC : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_GCC, Attributes, Shared);
Lib_ALI_Dir : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Ali_Dir, Attributes, Shared);
The_Lib_Kind : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Kind, Attributes, Shared);
Lib_GCC : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_GCC, Attributes, Shared);
The_Lib_Kind : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Kind, Attributes, Shared);
Imported_Project_List : Project_List;
Continuation : String_Access := No_Continuation_String'Access;
Continuation : String_Access := No_Continuation_String'Access;
Support_For_Libraries : Library_Support;
Library_Directory_Present : Boolean;
@ -2868,8 +2889,30 @@ package body Prj.Nmsc is
end if;
end if;
elsif Project.Library_Kind /= Static
and then not Lib_Standalone.Default
and then Get_Name_String (Lib_Standalone.Value) = "full"
and then Proj.Library_Kind /= Static
then
-- A fully standalone library must depend only on static
-- libraries.
Error_Msg_Name_1 := Project.Name;
Error_Msg_Name_2 := Proj.Name;
Error_Msg
(Data.Flags,
Continuation.all &
"standalone library project %% cannot import shared " &
"library project %%",
Project.Location, Project);
Continuation := Continuation_String'Access;
elsif Project.Library_Kind /= Static
and then Proj.Library_Kind = Static
and then (Lib_Standalone.Default
or else
Get_Name_String (Lib_Standalone.Value) /= "full")
then
Error_Msg_Name_1 := Project.Name;
Error_Msg_Name_2 := Proj.Name;
@ -4309,6 +4352,12 @@ package body Prj.Nmsc is
Project.Decl.Attributes,
Shared);
Lib_Standalone : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Standalone,
Project.Decl.Attributes,
Shared);
Lib_Auto_Init : constant Prj.Variable_Value :=
Prj.Util.Value_Of
(Snames.Name_Library_Auto_Init,
@ -4353,8 +4402,17 @@ package body Prj.Nmsc is
-- It is a stand-alone library project file if attribute
-- Library_Interface is defined.
if not Lib_Interfaces.Default then
if Lib_Interfaces.Default then
if not Lib_Standalone.Default
and then Get_Name_String (Lib_Standalone.Value) /= "no"
then
Error_Msg
(Data.Flags,
"Library_Standalone valid only if Library_Interface is set",
Lib_Standalone.Location, Project);
end if;
else
-- The name of a stand-alone library needs to have the syntax of an
-- Ada identifier.
@ -4400,7 +4458,34 @@ package body Prj.Nmsc is
Unit : Name_Id;
begin
Project.Standalone_Library := True;
if Lib_Standalone.Default then
Project.Standalone_Library := Standard;
else
Get_Name_String (Lib_Standalone.Value);
To_Lower (Name_Buffer (1 .. Name_Len));
if Name_Buffer (1 .. Name_Len) = "standard" then
Project.Standalone_Library := Standard;
elsif Name_Buffer (1 .. Name_Len) = "full" then
Project.Standalone_Library := Full;
elsif Name_Buffer (1 .. Name_Len) = "no" then
Project.Standalone_Library := No;
Error_Msg
(Data.Flags,
"wrong value for Library_Standalone "
& "when Library_Interface defined",
Lib_Standalone.Location, Project);
else
Error_Msg
(Data.Flags,
"invalid value for attribute Library_Standalone",
Lib_Standalone.Location, Project);
end if;
end if;
-- Library_Interface cannot be an empty list

View file

@ -1025,6 +1025,9 @@ package Prj is
-- The level of library support. Specified in the configuration. Support
-- is none, static libraries only or both static and shared libraries.
Lib_Fully_Standalone_Supported : Boolean := False;
-- True when building fully standalone libraries supported on the target
Archive_Builder : Name_List_Index := No_Name_List;
-- The name of the executable to build archives, with the minimum
-- switches. Specified in the configuration.
@ -1077,37 +1080,38 @@ package Prj is
end record;
Default_Project_Config : constant Project_Configuration :=
(Target => No_Name,
Run_Path_Option => No_Name_List,
Run_Path_Origin => No_Name,
Library_Install_Name_Option => No_Name,
Separate_Run_Path_Options => False,
Executable_Suffix => No_Name,
Linker => No_Path,
Map_File_Option => No_Name,
(Target => No_Name,
Run_Path_Option => No_Name_List,
Run_Path_Origin => No_Name,
Library_Install_Name_Option => No_Name,
Separate_Run_Path_Options => False,
Executable_Suffix => No_Name,
Linker => No_Path,
Map_File_Option => No_Name,
Trailing_Linker_Required_Switches =>
No_Name_List,
Linker_Executable_Option => No_Name_List,
Linker_Lib_Dir_Option => No_Name,
Linker_Lib_Name_Option => No_Name,
Library_Builder => No_Path,
Max_Command_Line_Length => 0,
Resp_File_Format => None,
Resp_File_Options => No_Name_List,
Lib_Support => None,
Archive_Builder => No_Name_List,
Archive_Builder_Append_Option => No_Name_List,
Archive_Indexer => No_Name_List,
Archive_Suffix => No_File,
Lib_Partial_Linker => No_Name_List,
Shared_Lib_Driver => No_File,
Shared_Lib_Prefix => No_File,
Shared_Lib_Suffix => No_File,
Shared_Lib_Min_Options => No_Name_List,
Lib_Version_Options => No_Name_List,
Symbolic_Link_Supported => False,
Lib_Maj_Min_Id_Supported => False,
Auto_Init_Supported => False);
Linker_Executable_Option => No_Name_List,
Linker_Lib_Dir_Option => No_Name,
Linker_Lib_Name_Option => No_Name,
Library_Builder => No_Path,
Max_Command_Line_Length => 0,
Resp_File_Format => None,
Resp_File_Options => No_Name_List,
Lib_Support => None,
Lib_Fully_Standalone_Supported => False,
Archive_Builder => No_Name_List,
Archive_Builder_Append_Option => No_Name_List,
Archive_Indexer => No_Name_List,
Archive_Suffix => No_File,
Lib_Partial_Linker => No_Name_List,
Shared_Lib_Driver => No_File,
Shared_Lib_Prefix => No_File,
Shared_Lib_Suffix => No_File,
Shared_Lib_Min_Options => No_Name_List,
Lib_Version_Options => No_Name_List,
Symbolic_Link_Supported => False,
Lib_Maj_Min_Id_Supported => False,
Auto_Init_Supported => False);
-------------------------
-- Aggregated projects --
@ -1139,6 +1143,8 @@ package Prj is
-- The following record describes a project file representation
type Standalone is (No, Standard, Full);
type Project_Data (Qualifier : Project_Qualifier := Unspecified) is record
-------------
@ -1251,7 +1257,7 @@ package Prj is
Lib_Internal_Name : Name_Id := No_Name;
-- If a library project, internal name store inside the library
Standalone_Library : Boolean := False;
Standalone_Library : Standalone := No;
-- Indicate that this is a Standalone Library Project File
Lib_Interface_ALIs : String_List_Id := Nil_String;

View file

@ -1777,6 +1777,26 @@ two attributes that make a project a Library Project (@code{Library_Name} and
@end group
@end smallexample
@item @b{Library_Standalone}:
@cindex @code{Library_Standalone}
This attribute defines the kind of standalone library to
build. Values are either @code{standard} (the default), @code{no} or
@code{full}. When @code{standard} is used the code to elaborate and
finalize the library is embedded, when @code{full} is used the
library can furthermore only depends on static libraries (including
the GNAT runtime). This attribute can be set to @code{no} to make it clear
that the library should not be standalone in which case the
@code{Library_Interface} should not defined.
@smallexample @c projectfile
@group
for Library_Dir use "lib";
for Library_Name use "loggin";
for Library_Interface use ("lib1", "lib2"); -- unit names
for Library_Standalone use "full";
@end group
@end smallexample
@end table
In order to include the elaboration code in the stand-alone library, the binder

View file

@ -1089,148 +1089,151 @@ package Snames is
-- Additional reserved words and identifiers used in GNAT Project Files
-- Note that Name_External is already previously declared
-- The names with the -- GPR annotation are only used in gprbuild
-- The names with the -- GB annotation are only used in gprbuild
Name_Aggregate : constant Name_Id := N + $;
Name_Archive_Builder : constant Name_Id := N + $;
Name_Archive_Builder_Append_Option : constant Name_Id := N + $;
Name_Archive_Indexer : constant Name_Id := N + $;
Name_Archive_Suffix : constant Name_Id := N + $;
Name_Binder : constant Name_Id := N + $;
Name_Body_Suffix : constant Name_Id := N + $;
Name_Builder : constant Name_Id := N + $;
Name_Compiler : constant Name_Id := N + $;
Name_Compiler_Command : constant Name_Id := N + $; -- GPR
Name_Config_Body_File_Name : constant Name_Id := N + $;
Name_Config_Body_File_Name_Index : constant Name_Id := N + $;
Name_Config_Body_File_Name_Pattern : constant Name_Id := N + $;
Name_Config_File_Switches : constant Name_Id := N + $;
Name_Config_File_Unique : constant Name_Id := N + $;
Name_Config_Spec_File_Name : constant Name_Id := N + $;
Name_Config_Spec_File_Name_Index : constant Name_Id := N + $;
Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + $;
Name_Configuration : constant Name_Id := N + $;
Name_Cross_Reference : constant Name_Id := N + $;
Name_Default_Language : constant Name_Id := N + $;
Name_Default_Switches : constant Name_Id := N + $;
Name_Dependency_Driver : constant Name_Id := N + $;
Name_Dependency_Kind : constant Name_Id := N + $;
Name_Dependency_Switches : constant Name_Id := N + $;
Name_Driver : constant Name_Id := N + $;
Name_Excluded_Source_Dirs : constant Name_Id := N + $;
Name_Excluded_Source_Files : constant Name_Id := N + $;
Name_Excluded_Source_List_File : constant Name_Id := N + $;
Name_Exec_Dir : constant Name_Id := N + $;
Name_Executable : constant Name_Id := N + $;
Name_Executable_Suffix : constant Name_Id := N + $;
Name_Extends : constant Name_Id := N + $;
Name_External_As_List : constant Name_Id := N + $;
Name_Externally_Built : constant Name_Id := N + $;
Name_Finder : constant Name_Id := N + $;
Name_Global_Compilation_Switches : constant Name_Id := N + $;
Name_Global_Configuration_Pragmas : constant Name_Id := N + $;
Name_Global_Config_File : constant Name_Id := N + $; -- GPR
Name_Gnatls : constant Name_Id := N + $;
Name_Gnatstub : constant Name_Id := N + $;
Name_Gnu : constant Name_Id := N + $;
Name_Ide : constant Name_Id := N + $;
Name_Ignore_Source_Sub_Dirs : constant Name_Id := N + $;
Name_Implementation : constant Name_Id := N + $;
Name_Implementation_Exceptions : constant Name_Id := N + $;
Name_Implementation_Suffix : constant Name_Id := N + $;
Name_Include_Switches : constant Name_Id := N + $;
Name_Include_Path : constant Name_Id := N + $;
Name_Include_Path_File : constant Name_Id := N + $;
Name_Inherit_Source_Path : constant Name_Id := N + $;
Name_Languages : constant Name_Id := N + $;
Name_Language_Kind : constant Name_Id := N + $;
Name_Leading_Library_Options : constant Name_Id := N + $;
Name_Leading_Required_Switches : constant Name_Id := N + $;
Name_Leading_Switches : constant Name_Id := N + $;
Name_Library : constant Name_Id := N + $;
Name_Library_Ali_Dir : constant Name_Id := N + $;
Name_Library_Auto_Init : constant Name_Id := N + $;
Name_Library_Auto_Init_Supported : constant Name_Id := N + $;
Name_Library_Builder : constant Name_Id := N + $;
Name_Library_Dir : constant Name_Id := N + $;
Name_Library_GCC : constant Name_Id := N + $;
Name_Library_Install_Name_Option : constant Name_Id := N + $;
Name_Library_Interface : constant Name_Id := N + $;
Name_Library_Kind : constant Name_Id := N + $;
Name_Library_Name : constant Name_Id := N + $;
Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + $;
Name_Library_Options : constant Name_Id := N + $;
Name_Library_Partial_Linker : constant Name_Id := N + $;
Name_Library_Reference_Symbol_File : constant Name_Id := N + $;
Name_Library_Src_Dir : constant Name_Id := N + $;
Name_Library_Support : constant Name_Id := N + $;
Name_Library_Symbol_File : constant Name_Id := N + $;
Name_Library_Symbol_Policy : constant Name_Id := N + $;
Name_Library_Version : constant Name_Id := N + $;
Name_Library_Version_Switches : constant Name_Id := N + $;
Name_Linker : constant Name_Id := N + $;
Name_Linker_Executable_Option : constant Name_Id := N + $;
Name_Linker_Lib_Dir_Option : constant Name_Id := N + $;
Name_Linker_Lib_Name_Option : constant Name_Id := N + $;
Name_Local_Config_File : constant Name_Id := N + $; -- GPR
Name_Local_Configuration_Pragmas : constant Name_Id := N + $;
Name_Locally_Removed_Files : constant Name_Id := N + $;
Name_Map_File_Option : constant Name_Id := N + $;
Name_Mapping_File_Switches : constant Name_Id := N + $;
Name_Mapping_Spec_Suffix : constant Name_Id := N + $;
Name_Mapping_Body_Suffix : constant Name_Id := N + $;
Name_Max_Command_Line_Length : constant Name_Id := N + $;
Name_Metrics : constant Name_Id := N + $;
Name_Multi_Unit_Object_Separator : constant Name_Id := N + $;
Name_Multi_Unit_Switches : constant Name_Id := N + $;
Name_Naming : constant Name_Id := N + $;
Name_None : constant Name_Id := N + $;
Name_Object_File_Suffix : constant Name_Id := N + $;
Name_Object_File_Switches : constant Name_Id := N + $;
Name_Object_Generated : constant Name_Id := N + $;
Name_Object_List : constant Name_Id := N + $;
Name_Objects_Linked : constant Name_Id := N + $;
Name_Objects_Path : constant Name_Id := N + $;
Name_Objects_Path_File : constant Name_Id := N + $;
Name_Object_Dir : constant Name_Id := N + $;
Name_Option_List : constant Name_Id := N + $;
Name_Path_Syntax : constant Name_Id := N + $;
Name_Pic_Option : constant Name_Id := N + $;
Name_Pretty_Printer : constant Name_Id := N + $;
Name_Prefix : constant Name_Id := N + $;
Name_Project : constant Name_Id := N + $;
Name_Project_Dir : constant Name_Id := N + $;
Name_Project_Files : constant Name_Id := N + $;
Name_Project_Path : constant Name_Id := N + $;
Name_Response_File_Format : constant Name_Id := N + $;
Name_Response_File_Switches : constant Name_Id := N + $;
Name_Roots : constant Name_Id := N + $; -- GPR
Name_Required_Switches : constant Name_Id := N + $;
Name_Run_Path_Option : constant Name_Id := N + $;
Name_Run_Path_Origin : constant Name_Id := N + $;
Name_Separate_Run_Path_Options : constant Name_Id := N + $;
Name_Shared_Library_Minimum_Switches : constant Name_Id := N + $;
Name_Shared_Library_Prefix : constant Name_Id := N + $;
Name_Shared_Library_Suffix : constant Name_Id := N + $;
Name_Separate_Suffix : constant Name_Id := N + $;
Name_Source_Dirs : constant Name_Id := N + $;
Name_Source_File_Switches : constant Name_Id := N + $;
Name_Source_Files : constant Name_Id := N + $;
Name_Source_List_File : constant Name_Id := N + $;
Name_Spec : constant Name_Id := N + $;
Name_Spec_Suffix : constant Name_Id := N + $;
Name_Specification : constant Name_Id := N + $;
Name_Specification_Exceptions : constant Name_Id := N + $;
Name_Specification_Suffix : constant Name_Id := N + $;
Name_Stack : constant Name_Id := N + $;
Name_Switches : constant Name_Id := N + $;
Name_Symbolic_Link_Supported : constant Name_Id := N + $;
Name_Synchronize : constant Name_Id := N + $;
Name_Toolchain_Description : constant Name_Id := N + $;
Name_Toolchain_Version : constant Name_Id := N + $;
Name_Trailing_Required_Switches : constant Name_Id := N + $;
Name_Runtime_Library_Dir : constant Name_Id := N + $;
Name_Runtime_Source_Dir : constant Name_Id := N + $;
Name_Aggregate : constant Name_Id := N + $;
Name_Archive_Builder : constant Name_Id := N + $;
Name_Archive_Builder_Append_Option : constant Name_Id := N + $;
Name_Archive_Indexer : constant Name_Id := N + $;
Name_Archive_Suffix : constant Name_Id := N + $;
Name_Binder : constant Name_Id := N + $;
Name_Body_Suffix : constant Name_Id := N + $;
Name_Builder : constant Name_Id := N + $;
Name_Compiler : constant Name_Id := N + $;
Name_Compiler_Command : constant Name_Id := N + $; -- GB
Name_Config_Body_File_Name : constant Name_Id := N + $;
Name_Config_Body_File_Name_Index : constant Name_Id := N + $;
Name_Config_Body_File_Name_Pattern : constant Name_Id := N + $;
Name_Config_File_Switches : constant Name_Id := N + $;
Name_Config_File_Unique : constant Name_Id := N + $;
Name_Config_Spec_File_Name : constant Name_Id := N + $;
Name_Config_Spec_File_Name_Index : constant Name_Id := N + $;
Name_Config_Spec_File_Name_Pattern : constant Name_Id := N + $;
Name_Configuration : constant Name_Id := N + $;
Name_Cross_Reference : constant Name_Id := N + $;
Name_Default_Language : constant Name_Id := N + $;
Name_Default_Switches : constant Name_Id := N + $;
Name_Dependency_Driver : constant Name_Id := N + $;
Name_Dependency_Kind : constant Name_Id := N + $;
Name_Dependency_Switches : constant Name_Id := N + $;
Name_Driver : constant Name_Id := N + $;
Name_Excluded_Source_Dirs : constant Name_Id := N + $;
Name_Excluded_Source_Files : constant Name_Id := N + $;
Name_Excluded_Source_List_File : constant Name_Id := N + $;
Name_Exec_Dir : constant Name_Id := N + $;
Name_Executable : constant Name_Id := N + $;
Name_Executable_Suffix : constant Name_Id := N + $;
Name_Extends : constant Name_Id := N + $;
Name_External_As_List : constant Name_Id := N + $;
Name_Externally_Built : constant Name_Id := N + $;
Name_Finder : constant Name_Id := N + $;
Name_Global_Compilation_Switches : constant Name_Id := N + $;
Name_Global_Configuration_Pragmas : constant Name_Id := N + $;
Name_Global_Config_File : constant Name_Id := N + $; -- GB
Name_Gnatls : constant Name_Id := N + $;
Name_Gnatstub : constant Name_Id := N + $;
Name_Gnu : constant Name_Id := N + $;
Name_Ide : constant Name_Id := N + $;
Name_Ignore_Source_Sub_Dirs : constant Name_Id := N + $;
Name_Implementation : constant Name_Id := N + $;
Name_Implementation_Exceptions : constant Name_Id := N + $;
Name_Implementation_Suffix : constant Name_Id := N + $;
Name_Include_Switches : constant Name_Id := N + $;
Name_Include_Path : constant Name_Id := N + $;
Name_Include_Path_File : constant Name_Id := N + $;
Name_Inherit_Source_Path : constant Name_Id := N + $;
Name_Languages : constant Name_Id := N + $;
Name_Language_Kind : constant Name_Id := N + $;
Name_Leading_Library_Options : constant Name_Id := N + $;
Name_Leading_Required_Switches : constant Name_Id := N + $;
Name_Leading_Switches : constant Name_Id := N + $;
Name_Library : constant Name_Id := N + $;
Name_Library_Ali_Dir : constant Name_Id := N + $;
Name_Library_Auto_Init : constant Name_Id := N + $;
Name_Library_Auto_Init_Supported : constant Name_Id := N + $;
Name_Library_Builder : constant Name_Id := N + $;
Name_Library_Dir : constant Name_Id := N + $;
Name_Library_GCC : constant Name_Id := N + $;
Name_Library_Install_Name_Option : constant Name_Id := N + $;
Name_Library_Interface : constant Name_Id := N + $;
Name_Library_Kind : constant Name_Id := N + $;
Name_Library_Name : constant Name_Id := N + $;
Name_Library_Major_Minor_Id_Supported : constant Name_Id := N + $;
Name_Library_Options : constant Name_Id := N + $;
Name_Library_Partial_Linker : constant Name_Id := N + $;
Name_Library_Reference_Symbol_File : constant Name_Id := N + $;
Name_Library_Standalone : constant Name_Id := N + $;
Name_Library_Fully_Standalone_Options : constant Name_Id := N + $;
Name_Library_Fully_Standalone_Supported : constant Name_Id := N + $; -- GB
Name_Library_Src_Dir : constant Name_Id := N + $;
Name_Library_Support : constant Name_Id := N + $;
Name_Library_Symbol_File : constant Name_Id := N + $;
Name_Library_Symbol_Policy : constant Name_Id := N + $;
Name_Library_Version : constant Name_Id := N + $;
Name_Library_Version_Switches : constant Name_Id := N + $;
Name_Linker : constant Name_Id := N + $;
Name_Linker_Executable_Option : constant Name_Id := N + $;
Name_Linker_Lib_Dir_Option : constant Name_Id := N + $;
Name_Linker_Lib_Name_Option : constant Name_Id := N + $;
Name_Local_Config_File : constant Name_Id := N + $; -- GB
Name_Local_Configuration_Pragmas : constant Name_Id := N + $;
Name_Locally_Removed_Files : constant Name_Id := N + $;
Name_Map_File_Option : constant Name_Id := N + $;
Name_Mapping_File_Switches : constant Name_Id := N + $;
Name_Mapping_Spec_Suffix : constant Name_Id := N + $;
Name_Mapping_Body_Suffix : constant Name_Id := N + $;
Name_Max_Command_Line_Length : constant Name_Id := N + $;
Name_Metrics : constant Name_Id := N + $;
Name_Multi_Unit_Object_Separator : constant Name_Id := N + $;
Name_Multi_Unit_Switches : constant Name_Id := N + $;
Name_Naming : constant Name_Id := N + $;
Name_None : constant Name_Id := N + $;
Name_Object_File_Suffix : constant Name_Id := N + $;
Name_Object_File_Switches : constant Name_Id := N + $;
Name_Object_Generated : constant Name_Id := N + $;
Name_Object_List : constant Name_Id := N + $;
Name_Objects_Linked : constant Name_Id := N + $;
Name_Objects_Path : constant Name_Id := N + $;
Name_Objects_Path_File : constant Name_Id := N + $;
Name_Object_Dir : constant Name_Id := N + $;
Name_Option_List : constant Name_Id := N + $;
Name_Path_Syntax : constant Name_Id := N + $;
Name_Pic_Option : constant Name_Id := N + $;
Name_Pretty_Printer : constant Name_Id := N + $;
Name_Prefix : constant Name_Id := N + $;
Name_Project : constant Name_Id := N + $;
Name_Project_Dir : constant Name_Id := N + $;
Name_Project_Files : constant Name_Id := N + $;
Name_Project_Path : constant Name_Id := N + $;
Name_Response_File_Format : constant Name_Id := N + $;
Name_Response_File_Switches : constant Name_Id := N + $;
Name_Roots : constant Name_Id := N + $; -- GB
Name_Required_Switches : constant Name_Id := N + $;
Name_Run_Path_Option : constant Name_Id := N + $;
Name_Run_Path_Origin : constant Name_Id := N + $;
Name_Separate_Run_Path_Options : constant Name_Id := N + $;
Name_Shared_Library_Minimum_Switches : constant Name_Id := N + $;
Name_Shared_Library_Prefix : constant Name_Id := N + $;
Name_Shared_Library_Suffix : constant Name_Id := N + $;
Name_Separate_Suffix : constant Name_Id := N + $;
Name_Source_Dirs : constant Name_Id := N + $;
Name_Source_File_Switches : constant Name_Id := N + $;
Name_Source_Files : constant Name_Id := N + $;
Name_Source_List_File : constant Name_Id := N + $;
Name_Spec : constant Name_Id := N + $;
Name_Spec_Suffix : constant Name_Id := N + $;
Name_Specification : constant Name_Id := N + $;
Name_Specification_Exceptions : constant Name_Id := N + $;
Name_Specification_Suffix : constant Name_Id := N + $;
Name_Stack : constant Name_Id := N + $;
Name_Switches : constant Name_Id := N + $;
Name_Symbolic_Link_Supported : constant Name_Id := N + $;
Name_Synchronize : constant Name_Id := N + $;
Name_Toolchain_Description : constant Name_Id := N + $;
Name_Toolchain_Version : constant Name_Id := N + $;
Name_Trailing_Required_Switches : constant Name_Id := N + $;
Name_Runtime_Library_Dir : constant Name_Id := N + $;
Name_Runtime_Source_Dir : constant Name_Id := N + $;
-- Other miscellaneous names used in front end