aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog37
-rw-r--r--gcc/ada/clean.adb4
-rw-r--r--gcc/ada/gnat_ugn.texi22
-rw-r--r--gcc/ada/gnatcmd.adb10
-rw-r--r--gcc/ada/gnatls.adb6
-rw-r--r--gcc/ada/make.adb4
-rw-r--r--gcc/ada/makeutl.adb2
-rw-r--r--gcc/ada/mlib-prj.adb2
-rw-r--r--gcc/ada/prj-attr.adb3
-rw-r--r--gcc/ada/prj-conf.adb14
-rw-r--r--gcc/ada/prj-nmsc.adb133
-rw-r--r--gcc/ada/prj.ads66
-rw-r--r--gcc/ada/projects.texi20
-rw-r--r--gcc/ada/snames.ads-tmpl287
14 files changed, 405 insertions, 205 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 40c6da2..50a0ba8 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -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
diff --git a/gcc/ada/clean.adb b/gcc/ada/clean.adb
index f202533..276fcc6 100644
--- a/gcc/ada/clean.adb
+++ b/gcc/ada/clean.adb
@@ -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),
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 92aba09..02a577c 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -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
diff --git a/gcc/ada/gnatcmd.adb b/gcc/ada/gnatcmd.adb
index 051082f..2e1b8dd8 100644
--- a/gcc/ada/gnatcmd.adb
+++ b/gcc/ada/gnatcmd.adb
@@ -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;
diff --git a/gcc/ada/gnatls.adb b/gcc/ada/gnatls.adb
index 9d37180..a98aba5 100644
--- a/gcc/ada/gnatls.adb
+++ b/gcc/ada/gnatls.adb
@@ -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);
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index 0f79af3..dd211cb 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -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;
diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb
index cfca418..f09c0ad 100644
--- a/gcc/ada/makeutl.adb
+++ b/gcc/ada/makeutl.adb
@@ -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
diff --git a/gcc/ada/mlib-prj.adb b/gcc/ada/mlib-prj.adb
index 83c74b9..3101354 100644
--- a/gcc/ada/mlib-prj.adb
+++ b/gcc/ada/mlib-prj.adb
@@ -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);
diff --git a/gcc/ada/prj-attr.adb b/gcc/ada/prj-attr.adb
index 4dad66d..4682051 100644
--- a/gcc/ada/prj-attr.adb
+++ b/gcc/ada/prj-attr.adb
@@ -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#" &
diff --git a/gcc/ada/prj-conf.adb b/gcc/ada/prj-conf.adb
index db8dba4..42afa1b 100644
--- a/gcc/ada/prj-conf.adb
+++ b/gcc/ada/prj-conf.adb
@@ -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
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb
index 017db6b..678b6e9 100644
--- a/gcc/ada/prj-nmsc.adb
+++ b/gcc/ada/prj-nmsc.adb
@@ -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);
-
- Imported_Project_List : Project_List;
+ Lib_GCC : constant Prj.Variable_Value :=
+ Prj.Util.Value_Of
+ (Snames.Name_Library_GCC, Attributes, Shared);
- Continuation : String_Access := No_Continuation_String'Access;
+ 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;
Support_For_Libraries : Library_Support;
Library_Directory_Present : Boolean;
@@ -2869,7 +2890,29 @@ package body Prj.Nmsc is
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
diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads
index e88455d..7b9c0db 100644
--- a/gcc/ada/prj.ads
+++ b/gcc/ada/prj.ads
@@ -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;
diff --git a/gcc/ada/projects.texi b/gcc/ada/projects.texi
index 6970733..8e37751 100644
--- a/gcc/ada/projects.texi
+++ b/gcc/ada/projects.texi
@@ -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
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index dd2e594..f29490f 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -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
-
- 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 + $;
+ -- 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 + $; -- 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