]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[multiple changes]
authorArnaud Charlet <charlet@gcc.gnu.org>
Wed, 21 Dec 2011 11:50:02 +0000 (12:50 +0100)
committerArnaud Charlet <charlet@gcc.gnu.org>
Wed, 21 Dec 2011 11:50:02 +0000 (12:50 +0100)
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

14 files changed:
gcc/ada/ChangeLog
gcc/ada/clean.adb
gcc/ada/gnat_ugn.texi
gcc/ada/gnatcmd.adb
gcc/ada/gnatls.adb
gcc/ada/make.adb
gcc/ada/makeutl.adb
gcc/ada/mlib-prj.adb
gcc/ada/prj-attr.adb
gcc/ada/prj-conf.adb
gcc/ada/prj-nmsc.adb
gcc/ada/prj.ads
gcc/ada/projects.texi
gcc/ada/snames.ads-tmpl

index 40c6da216153e5bdbe77526c8a3f804fa0ecd057..50a0ba86d372cf1ba0a73be756012e3edae96462 100644 (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
index f20253391cdf476e0b4774a385299c78fb96b7d8..276fcc656a666d2fe16fc81b231ae4f3b7e77ced 100644 (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),
index 92aba09596df4711ec235637f138fd8711534ee4..02a577ccd72e39d1fe6a3d55fc8685320799801e 100644 (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
index 051082f640faf63781f717de765ba8fd153ea7f0..2e1b8dd818299d9e99688696984047abfa4cedcb 100644 (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;
index 9d371801589deab794724dec59198f5f68eb0682..a98aba56c6a3d698e7358292aa7b6b744a06609f 100644 (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);
index 0f79af3a8665f58b8ace6c755453e078d61861bd..dd211cb4857d3d22f7240102e54b2b4525bacf2d 100644 (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;
index cfca418595ed91360882884d83e1c580cb2db0a7..f09c0ad9d6bcca5b853e3a57656201dfa3703959 100644 (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
index 83c74b948429fae6f1f3fd62bb3c1fd116943e1d..3101354d14a8ff83202caaa7beedca80c077f504 100644 (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);
 
index 4dad66d02139b9230a173f92a11dfb54e25a0f7a..4682051f54eeed9a25bdcf545303a851b91fc093 100644 (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#" &
index db8dba4ae8891ddd3d5cf994526e00a1301cc95e..42afa1b5454f7df0a795a7770044f065e79d71d4 100644 (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
index 017db6b8b7ef9401d63eabf250daa39b09bda833..678b6e9f9914bdaf9bc46ee45a64a7cc6897746d 100644 (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);
-
-      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;
@@ -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
 
index e88455dec3c6c08d0cc047144bbb97f2f29470c6..7b9c0db7d943075d9c7eb5865e3a5a71b55bf4b0 100644 (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;
index 6970733bdaf600a471ed8442bf1c8a6b0a2c5299..8e37751b2dc72fed514ed6fd85d4a2c53229e772 100644 (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
index dd2e5948d3ccf33da3b4571423d46a533c6b689f..f29490f263272a00f1138a678b742999cc5eec8b 100644 (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
-
-   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