aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/make.adb
diff options
context:
space:
mode:
authorVincent Celier <celier@adacore.com>2005-03-15 16:46:57 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2005-03-15 16:46:57 +0100
commit7e98a4c668eac2b10f06ff207a24d2ca4e867128 (patch)
treecf1142dd403f99e75300ca6822d5c4d182a98b74 /gcc/ada/make.adb
parent0ca89db7aa51322aa15f6d89b692b20ad5898c89 (diff)
downloadgcc-7e98a4c668eac2b10f06ff207a24d2ca4e867128.zip
gcc-7e98a4c668eac2b10f06ff207a24d2ca4e867128.tar.gz
gcc-7e98a4c668eac2b10f06ff207a24d2ca4e867128.tar.bz2
mlib-tgt-tru64.adb, [...] (Library_Exist_For, [...]): Add new parameter In_Tree to specify the project tree...
2005-03-08 Vincent Celier <celier@adacore.com> * mlib-tgt-tru64.adb, mlib-tgt-aix.adb, mlib-tgt-irix.adb, mlib-tgt-hpux.adb, mlib-tgt-linux.adb, mlib-tgt-solaris.adb, mlib-tgt-vms-alpha.adb, mlib-tgt-vms-ia64.adb, mlib-tgt-mingw.adb, mlib-tgt-vxworks.adb, mlib-tgt-lynxos.adb (Library_Exist_For, Library_File_Name_For): Add new parameter In_Tree to specify the project tree: needed by the project manager. Adapt to changes in project manager using new parameter In_Tree. Remove local imports, use functions in System.CRTL. * make.adb, clean.adb, gnatcmd.adb (Project_Tree): New constant needed to use the project manager. * makeutl.ads, makeutl.adb (Linker_Options_Switches): New parameter In_Tree to designate the project tree. Adapt to changes in the project manager, using In_Tree. * mlib-prj.ads, mlib-prj.adb (Build_Library, Check_Library, Copy_Interface_Sources): Add new parameter In_Tree to specify the project tree: needed by the project manager. (Build_Library): Check that Arg'Length >= 6 before checking if it contains "--RTS=...". * mlib-tgt.ads, mlib-tgt.adb (Library_Exist_For, Library_File_Name_For): Add new parameter In_Tree to specify the project tree: needed by the project manager. * prj.ads, prj.adb: Major modifications to allow several project trees in memory at the same time. Change tables to dynamic tables and hash tables to dynamic hash tables. Move tables and hash tables from Prj.Com (in the visible part) and Prj.Env (in the private part). Move some constants from the visible part to the private part. Make other constants deferred. (Project_Empty): Make it a variable, not a function (Empty_Project): Add parameter Tree. Returns the data with the default naming data of the project tree Tree. (Initialize): After updating Std_Naming_Data, copy its value to the component Naming of Project Empty. (Register_Default_Naming_Scheme): Use and update the default naming component of the project tree, instead of the global variable Std_Naming_Data. (Standard_Naming_Data): Add defaulted parameter Tree. If project tree Tree is not defaulted, return the default naming data of the Tree. (Initial_Buffer_Size): Constant moved from private part (Default_Ada_Spec_Suffix_Id, Default_Ada_Body_Suffix_Id, Slash_Id); new variables initialized in procedure Initialize. (Add_To_Buffer): Add two in out parameters to replace global variables Buffer and Buffer_Last. (Default_Ada_Spec_Suffix, Default_Body_Spec_Suffix, Slash): New functions. Adapt to changes to use new type Project_Tree_Ref and dynamic tables and hash tables. (Initialize, Reset, register-Default_Namng-Scheme): Add a new parameter for the project tree. (Project_Tree_Data, Project_Tree_Ref, No_Project): Declare types and constant at the beginning of the package spec, so that they cane be used in subprograms before their full declarations. (Standard_Naming_Data): Add defaulted parameter of type Project_Node_Ref (Empty_Project): Add parameter of type Project_Node_Ref (Private_Project_Tree_Data): Add component Default_Naming of type Naming_Data. (Buffer, Buffer_Last): remove global variables (Add_To_Buffer): Add two in out parameters to replace global variables Buffer and Buffer_Last. (Current_Packages_To_Check): Remove global variable (Empty_Name): Move to private part (No-Symbols): Make it a constant (Private_Project_Tree_Data): New type for the private part of the project tree data. (Project_Tree_Data): New type for the data of a project tree (Project_Tree_Ref): New type to designate a project tree (Initialize, Reset, register-Default_Namng-Scheme): Add a new parameter for the project tree. * prj-attr.ads: Add with Table; needed, as package Prj no longer imports package Table. * prj-com.adb: Remove empty, no longer needed body * prj-com.ads: Move most of the content of this package to package Prj. * prj-dect.ads, prj-dect.adb (Parse): New parameters In_Tree to designate the project node tree and Packages_To_Check to replace global variable Current_Packages_To_Check. Add new parameters In_Tree and Packages_To_Check to local subprograms, when needed. Adapt to changes in project manager with project node tree In_Tree. * prj-env.ads, prj-env.adb: Add new parameter In_Tree to designate the project tree to most subprograms. Move tables and hash tables to private part of package Prj. Adapt to changes in project manager using project tree In_Tree. * prj-makr.adb (Tree): New constant to designate the project node tree Adapt to change in project manager using project node tree Tree * prj-nmsc.ads, prj-nmsc.adb (Check_Stand_Alone_Library): Correctly display the Library_Src_Dir and the Library_Dir. Add new parameter In_Tree to designate the project node tree to most subprograms. Adapt to changes in the project manager, using project tree In_Tree. (Check_Naming_Scheme): Do not alter the casing on platforms where the casing of file names is not significant. (Check): Add new parameter In_Tree to designate the * prj-pars.ads, prj-pars.adb (Parse): Add new parameter In_Tree to designate the project tree. Declare a project node tree to call Prj.Part.Parse and Prj.Proc.Process * prj-part.ads, prj-part.adb (Buffer, Buffer_Last): Global variables, to replace those that were in the private part of package Prj. Add new parameter In__Tree to designate the project node tree to most subprograms. Adapt to change in Prj.Tree with project node tree In_Tree. (Post_Parse_Context_Clause): When specifying the project node of a with clause, indicate that it is a limited with only if there is "limited" in the with clause, not necessarily when In_Limited is True. (Parse): Add new parameter In_Tree to designate the project node tree * prj-pp.ads, prj-pp.adb (Pretty_Print): Add new parameter In_Tree to designate the project node tree. Adapt to change in Prj.Tree with project node tree In_Tree. * prj-proc.ads, prj-proc.adb (Recursive_Process): Specify the project tree In_Tree in the call to function Empty_Process to give its initial value to the project data Processed_Data. Add new parameters In_Tree to designate the project tree and From_Project_Node_Tree to designate the project node tree to several subprograms. Adapt to change in project manager with project tree In_Tree and project node tree From_Project_Node_Tree. * prj-strt.ads, prj-strt.adb (Buffer, Buffer_Last): Global variables, to replace those that were in the private part of package Prj. Add new parameter In_Tree to designate the project node tree to most subprograms. Adapt to change in Prj.Tree with project node tree In_Tree. * prj-tree.ads, prj-tree.adb: Add new parameter of type Project_Node_Tree_Ref to most subprograms. Use this new parameter to store project nodes in the designated project node tree. (Project_Node_Tree_Ref): New type to designate a project node tree (Tree_Private_Part): Change table to dynamic table and hash tables to dynamic hash tables. * prj-util.ads, prj-util.adb: Add new parameter In_Tree to designate the project tree to most subprograms. Adapt to changes in project manager using project tree In_Tree. * makegpr.adb (Project_Tree): New constant needed to use project manager. From-SVN: r96481
Diffstat (limited to 'gcc/ada/make.adb')
-rw-r--r--gcc/ada/make.adb491
1 files changed, 311 insertions, 180 deletions
diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb
index e799e05..71f95c4 100644
--- a/gcc/ada/make.adb
+++ b/gcc/ada/make.adb
@@ -275,6 +275,8 @@ package body Make is
Current_Verbosity : Prj.Verbosity := Prj.Default;
-- Verbosity to parse the project files
+ Project_Tree : constant Project_Tree_Ref := new Project_Tree_Data;
+
Main_Project : Prj.Project_Id := No_Project;
-- The project id of the main project file, if any
@@ -943,7 +945,8 @@ package body Make is
(Source_File => Name_Find,
Source_File_Name => File_Name,
Source_Index => Index,
- Naming => Projects.Table (Main_Project).Naming,
+ Naming => Project_Tree.Projects.Table
+ (Main_Project).Naming,
In_Package => The_Package,
Allow_ALI =>
Program = Binder or else Program = Linker);
@@ -958,7 +961,8 @@ package body Make is
Switch_List := Switches.Values;
while Switch_List /= Nil_String loop
- Element := String_Elements.Table (Switch_List);
+ Element :=
+ Project_Tree.String_Elements.Table (Switch_List);
Get_Name_String (Element.Value);
if Name_Len > 0 then
@@ -1073,7 +1077,9 @@ package body Make is
if Project /= No_Project then
Change_Dir
- (Get_Name_String (Projects.Table (Project).Object_Directory));
+ (Get_Name_String
+ (Project_Tree.Projects.Table
+ (Project).Object_Directory));
-- Otherwise, for sources outside of any project, set the working
-- directory to the object directory of the main project.
@@ -1081,7 +1087,8 @@ package body Make is
elsif Main_Project /= No_Project then
Change_Dir
(Get_Name_String
- (Projects.Table (Main_Project).Object_Directory));
+ (Project_Tree.Projects.Table
+ (Main_Project).Object_Directory));
end if;
end if;
end Change_To_Object_Directory;
@@ -1716,7 +1723,8 @@ package body Make is
Get_Reference
(Source_File_Name => Source_File_Name,
Project => Arguments_Project,
- Path => Arguments_Path_Name);
+ Path => Arguments_Path_Name,
+ In_Tree => Project_Tree);
-- If the source is not a source of a project file, check if
-- this is allowed.
@@ -1736,14 +1744,15 @@ package body Make is
-- We get the project directory for the relative path
-- switches and arguments.
- Data := Projects.Table (Arguments_Project);
+ Data := Project_Tree.Projects.Table (Arguments_Project);
-- If the source is in an extended project, we go to
-- the ultimate extending project.
while Data.Extended_By /= No_Project loop
Arguments_Project := Data.Extended_By;
- Data := Projects.Table (Arguments_Project);
+ Data :=
+ Project_Tree.Projects.Table (Arguments_Project);
end loop;
-- If building a dynamic or relocatable library, compile with
@@ -1763,7 +1772,8 @@ package body Make is
if Data.Dir_Path = null then
Data.Dir_Path :=
new String'(Get_Name_String (Data.Display_Directory));
- Projects.Table (Arguments_Project) := Data;
+ Project_Tree.Projects.Table (Arguments_Project) :=
+ Data;
end if;
-- We now look for package Compiler
@@ -1772,7 +1782,8 @@ package body Make is
Compiler_Package :=
Prj.Util.Value_Of
(Name => Name_Compiler,
- In_Packages => Data.Decl.Packages);
+ In_Packages => Data.Decl.Packages,
+ In_Tree => Project_Tree);
if Compiler_Package /= No_Package then
@@ -1804,7 +1815,8 @@ package body Make is
begin
while Current /= Nil_String loop
- Element := String_Elements.Table (Current);
+ Element := Project_Tree.String_Elements.
+ Table (Current);
Number := Number + 1;
Current := Element.Next;
end loop;
@@ -1816,7 +1828,8 @@ package body Make is
Current := Switches.Values;
for Index in New_Args'Range loop
- Element := String_Elements.Table (Current);
+ Element := Project_Tree.String_Elements.
+ Table (Current);
Get_Name_String (Element.Value);
New_Args (Index) :=
new String'(Name_Buffer (1 .. Name_Len));
@@ -2221,22 +2234,26 @@ package body Make is
-- check for an eventual library project, and use the full path.
if Arguments_Project /= No_Project then
- if not Projects.Table (Arguments_Project).Externally_Built then
- Prj.Env.Set_Ada_Paths (Arguments_Project, True);
+ if not Project_Tree.Projects.Table
+ (Arguments_Project).Externally_Built
+ then
+ Prj.Env.Set_Ada_Paths
+ (Arguments_Project, Project_Tree, True);
if not Unique_Compile
and then MLib.Tgt.Support_For_Libraries /= MLib.Tgt.None
then
declare
The_Data : Project_Data :=
- Projects.Table (Arguments_Project);
+ Project_Tree.Projects.Table
+ (Arguments_Project);
Prj : Project_Id := Arguments_Project;
begin
while The_Data.Extended_By /= No_Project loop
Prj := The_Data.Extended_By;
- The_Data := Projects.Table (Prj);
+ The_Data := Project_Tree.Projects.Table (Prj);
end loop;
if The_Data.Library
@@ -2252,7 +2269,8 @@ package body Make is
-- Now mark the project as processed
- Projects.Table (Prj).Need_To_Build_Lib := True;
+ Project_Tree.Projects.Table
+ (Prj).Need_To_Build_Lib := True;
end if;
end;
end if;
@@ -3006,7 +3024,9 @@ package body Make is
else
declare
Parent_Directory : constant String :=
- Get_Name_String (Projects.Table (Project).Directory);
+ Get_Name_String
+ (Project_Tree.Projects.Table
+ (Project).Directory);
begin
if Parent_Directory (Parent_Directory'Last) =
@@ -3025,17 +3045,21 @@ package body Make is
-- Start of processing for Configuration_Pragmas_Switch
begin
- Prj.Env.Create_Config_Pragmas_File (For_Project, Main_Project);
+ Prj.Env.Create_Config_Pragmas_File
+ (For_Project, Main_Project, Project_Tree);
- if Projects.Table (For_Project).Config_File_Name /= No_Name then
+ if Project_Tree.Projects.Table
+ (For_Project).Config_File_Name /= No_Name
+ then
Temporary_Config_File :=
- Projects.Table (For_Project).Config_File_Temp;
+ Project_Tree.Projects.Table (For_Project).Config_File_Temp;
Last := 1;
Result (1) :=
new String'
("-gnatec=" &
Get_Name_String
- (Projects.Table (For_Project).Config_File_Name));
+ (Project_Tree.Projects.Table
+ (For_Project).Config_File_Name));
else
Temporary_Config_File := False;
@@ -3043,16 +3067,20 @@ package body Make is
-- Check for attribute Builder'Global_Configuration_Pragmas
- The_Packages := Projects.Table (Main_Project).Decl.Packages;
+ The_Packages := Project_Tree.Projects.Table
+ (Main_Project).Decl.Packages;
Gnatmake :=
Prj.Util.Value_Of
(Name => Name_Builder,
- In_Packages => The_Packages);
+ In_Packages => The_Packages,
+ In_Tree => Project_Tree);
if Gnatmake /= No_Package then
Global_Attribute := Prj.Util.Value_Of
(Variable_Name => Name_Global_Configuration_Pragmas,
- In_Variables => Packages.Table (Gnatmake).Decl.Attributes);
+ In_Variables => Project_Tree.Packages.Table
+ (Gnatmake).Decl.Attributes,
+ In_Tree => Project_Tree);
Global_Attribute_Present :=
Global_Attribute /= Nil_Variable_Value
and then Get_Name_String (Global_Attribute.Value) /= "";
@@ -3076,16 +3104,20 @@ package body Make is
-- Check for attribute Compiler'Local_Configuration_Pragmas
- The_Packages := Projects.Table (For_Project).Decl.Packages;
+ The_Packages :=
+ Project_Tree.Projects.Table (For_Project).Decl.Packages;
Compiler :=
Prj.Util.Value_Of
(Name => Name_Compiler,
- In_Packages => The_Packages);
+ In_Packages => The_Packages,
+ In_Tree => Project_Tree);
if Compiler /= No_Package then
Local_Attribute := Prj.Util.Value_Of
(Variable_Name => Name_Local_Configuration_Pragmas,
- In_Variables => Packages.Table (Compiler).Decl.Attributes);
+ In_Variables => Project_Tree.Packages.Table
+ (Compiler).Decl.Attributes,
+ In_Tree => Project_Tree);
Local_Attribute_Present :=
Local_Attribute /= Nil_Variable_Value
and then Get_Name_String (Local_Attribute.Value) /= "";
@@ -3134,7 +3166,7 @@ package body Make is
if Gnatmake_Called and not Debug.Debug_Flag_N then
Delete_Mapping_Files;
Delete_Temp_Config_Files;
- Prj.Env.Delete_All_Path_Files;
+ Prj.Env.Delete_All_Path_Files (Project_Tree);
end if;
end Delete_All_Temp_Files;
@@ -3167,18 +3199,24 @@ package body Make is
Success : Boolean;
begin
if (not Debug.Debug_Flag_N) and Main_Project /= No_Project then
- for Project in 1 .. Projects.Last loop
- if Projects.Table (Project).Config_File_Temp then
+ for Project in Project_Table.First ..
+ Project_Table.Last (Project_Tree.Projects)
+ loop
+ if
+ Project_Tree.Projects.Table (Project).Config_File_Temp
+ then
if Verbose_Mode then
Write_Str ("Deleting temp configuration file """);
Write_Str (Get_Name_String
- (Projects.Table (Project).Config_File_Name));
+ (Project_Tree.Projects.Table
+ (Project).Config_File_Name));
Write_Line ("""");
end if;
Delete_File
(Name => Get_Name_String
- (Projects.Table (Project).Config_File_Name),
+ (Project_Tree.Projects.Table
+ (Project).Config_File_Name),
Success => Success);
-- Make sure that we don't have a config file for this
@@ -3186,9 +3224,12 @@ package body Make is
-- In this case, we will recreate another config file:
-- we cannot reuse the one that we just deleted!
- Projects.Table (Project).Config_Checked := False;
- Projects.Table (Project).Config_File_Name := No_Name;
- Projects.Table (Project).Config_File_Temp := False;
+ Project_Tree.Projects.Table (Project).
+ Config_Checked := False;
+ Project_Tree.Projects.Table (Project).
+ Config_File_Name := No_Name;
+ Project_Tree.Projects.Table (Project).
+ Config_File_Temp := False;
end if;
end loop;
end if;
@@ -3446,7 +3487,8 @@ package body Make is
-- Get the project of the current main
- Proj := Prj.Env.Project_Of (File_Name, Main_Project);
+ Proj := Prj.Env.Project_Of
+ (File_Name, Main_Project, Project_Tree);
-- Fail if the current main is not a source of a
-- project.
@@ -3462,7 +3504,8 @@ package body Make is
-- is the actual path of a source of a project.
if Main /= File_Name then
- Data := Projects.Table (Main_Project);
+ Data :=
+ Project_Tree.Projects.Table (Main_Project);
Real_Path :=
Locate_Regular_File
@@ -3496,6 +3539,7 @@ package body Make is
Prj.Env.File_Name_Of_Library_Unit_Body
(Name => File_Name,
Project => Main_Project,
+ In_Tree => Project_Tree,
Main_Project_Only => False,
Full_Path => True);
Normed_Path : constant String :=
@@ -3542,7 +3586,7 @@ package body Make is
("""" & Main &
""" is not a source of project " &
Get_Name_String
- (Projects.Table
+ (Project_Tree.Projects.Table
(Real_Main_Project).Name));
end if;
end if;
@@ -3591,12 +3635,12 @@ package body Make is
-- Traverse all units
- for J in Prj.Com.Units.First .. Prj.Com.Units.Last loop
+ for J in Unit_Table.First ..
+ Unit_Table.Last (Project_Tree.Units)
+ loop
declare
- Unit : constant Prj.Com.Unit_Data :=
- Prj.Com.Units.Table (J);
- use Prj.Com;
-
+ Unit : constant Unit_Data :=
+ Project_Tree.Units.Table (J);
begin
if Unit.Name /= No_Name then
@@ -3650,9 +3694,11 @@ package body Make is
if ALI_Name /= No_Name
and then
- Projects.Table (ALI_Project).Extended_By = No_Project
+ Project_Tree.Projects.Table
+ (ALI_Project).Extended_By = No_Project
and then
- Projects.Table (ALI_Project).Extends = No_Project
+ Project_Tree.Projects.Table
+ (ALI_Project).Extends = No_Project
then
-- First line is the unit name
@@ -3691,8 +3737,8 @@ package body Make is
Get_Name_String (ALI_Name);
begin
Get_Name_String
- (Projects.Table (ALI_Project).
- Object_Directory);
+ (Project_Tree.Projects.Table
+ (ALI_Project).Object_Directory);
if Name_Buffer (Name_Len) /=
Directory_Separator
@@ -3792,7 +3838,7 @@ package body Make is
-- And the project file cannot be a library project file
- elsif Projects.Table (Main_Project).Library then
+ elsif Project_Tree.Projects.Table (Main_Project).Library then
Make_Failed ("-B cannot be used for a library project file");
else
@@ -3832,7 +3878,7 @@ package body Make is
-- cannot be specified on the command line.
if Osint.Number_Of_Files /= 0 then
- if Projects.Table (Main_Project).Library
+ if Project_Tree.Projects.Table (Main_Project).Library
and then not Unique_Compile
and then ((not Make_Steps) or else Bind_Only or else Link_Only)
then
@@ -3859,7 +3905,8 @@ package body Make is
end if;
declare
- Value : String_List_Id := Projects.Table (Main_Project).Mains;
+ Value : String_List_Id :=
+ Project_Tree.Projects.Table (Main_Project).Mains;
begin
-- The attribute Main is an empty list or not specified,
@@ -3868,7 +3915,8 @@ package body Make is
if Value = Prj.Nil_String or else Unique_Compile then
if (not Make_Steps) or else Compile_Only
- or else not Projects.Table (Main_Project).Library
+ or else not Project_Tree.Projects.Table
+ (Main_Project).Library
then
-- First make sure that the binder and the linker
-- will not be invoked.
@@ -3900,11 +3948,13 @@ package body Make is
declare
Data : constant Project_Data :=
- Projects.Table (Main_Project);
+ Project_Tree.Projects.Table (Main_Project);
Languages : constant Variable_Value :=
Prj.Util.Value_Of
- (Name_Languages, Data.Decl.Attributes);
+ (Name_Languages,
+ Data.Decl.Attributes,
+ Project_Tree);
Current : String_List_Id;
Element : String_Element;
@@ -3921,7 +3971,8 @@ package body Make is
Look_For_Foreign :
while Current /= Nil_String loop
- Element := String_Elements.Table (Current);
+ Element := Project_Tree.String_Elements.
+ Table (Current);
Get_Name_String (Element.Value);
To_Lower (Name_Buffer (1 .. Name_Len));
@@ -3938,7 +3989,9 @@ package body Make is
-- language, all the Ada mains.
while Value /= Prj.Nil_String loop
- Get_Name_String (String_Elements.Table (Value).Value);
+ Get_Name_String
+ (Project_Tree.String_Elements.Table
+ (Value).Value);
-- To know if a main is an Ada main, get its project.
-- It should be the project specified on the command
@@ -3946,17 +3999,23 @@ package body Make is
if (not Foreign_Language) or else
Prj.Env.Project_Of
- (Name_Buffer (1 .. Name_Len), Main_Project) =
+ (Name_Buffer (1 .. Name_Len),
+ Main_Project,
+ Project_Tree) =
Main_Project
then
At_Least_One_Main := True;
Osint.Add_File
(Get_Name_String
- (String_Elements.Table (Value).Value),
- Index => String_Elements.Table (Value).Index);
+ (Project_Tree.String_Elements.Table
+ (Value).Value),
+ Index =>
+ Project_Tree.String_Elements.Table
+ (Value).Index);
end if;
- Value := String_Elements.Table (Value).Next;
+ Value := Project_Tree.String_Elements.Table
+ (Value).Next;
end loop;
-- If we did not get any main, it means that all mains
@@ -3984,7 +4043,8 @@ package body Make is
end if;
if Main_Project /= No_Project
- and then Projects.Table (Main_Project).Externally_Built
+ and then Project_Tree.Projects.Table
+ (Main_Project).Externally_Built
then
Make_Failed
("nothing to do for a main project that is externally built");
@@ -3992,10 +4052,11 @@ package body Make is
if Osint.Number_Of_Files = 0 then
if Main_Project /= No_Project
- and then Projects.Table (Main_Project).Library
+ and then Project_Tree.Projects.Table (Main_Project).Library
then
if Do_Bind_Step
- and then not Projects.Table (Main_Project).Standalone_Library
+ and then not Project_Tree.Projects.Table
+ (Main_Project).Standalone_Library
then
Make_Failed ("only stand-alone libraries may be bound");
end if;
@@ -4008,6 +4069,7 @@ package body Make is
MLib.Prj.Build_Library
(For_Project => Main_Project,
+ In_Tree => Project_Tree,
Gnatbind => Gnatbind.all,
Gnatbind_Path => Gnatbind_Path,
Gcc => Gcc.all,
@@ -4079,10 +4141,10 @@ package body Make is
if Main_Project /= No_Project then
- if Projects.Table (Main_Project).Object_Directory /= No_Name then
-
- -- Change the current directory to the object directory of
- -- the main project.
+ if Project_Tree.Projects.Table
+ (Main_Project).Object_Directory /= No_Name
+ then
+ -- Change current directory to object directory of main project
begin
Project_Object_Directory := No_Project;
@@ -4098,7 +4160,7 @@ package body Make is
Parent : constant Dir_Name_Str :=
Dir_Name
(Get_Name_String
- (Projects.Table
+ (Project_Tree.Projects.Table
(Main_Project).Object_Directory));
Dir : Dir_Type;
@@ -4134,7 +4196,8 @@ package body Make is
Make_Failed
("unable to change working directory to """,
Get_Name_String
- (Projects.Table (Main_Project).Object_Directory),
+ (Project_Tree.Projects.Table
+ (Main_Project).Object_Directory),
"""");
end;
end if;
@@ -4153,26 +4216,30 @@ package body Make is
Prj.Env.File_Name_Of_Library_Unit_Body
(Name => Main_Source_File_Name,
Project => Main_Project,
+ In_Tree => Project_Tree,
Main_Project_Only =>
not Unique_Compile);
The_Packages : constant Package_Id :=
- Projects.Table (Main_Project).Decl.Packages;
+ Project_Tree.Projects.Table (Main_Project).Decl.Packages;
Builder_Package : constant Prj.Package_Id :=
Prj.Util.Value_Of
(Name => Name_Builder,
- In_Packages => The_Packages);
+ In_Packages => The_Packages,
+ In_Tree => Project_Tree);
Binder_Package : constant Prj.Package_Id :=
Prj.Util.Value_Of
(Name => Name_Binder,
- In_Packages => The_Packages);
+ In_Packages => The_Packages,
+ In_Tree => Project_Tree);
Linker_Package : constant Prj.Package_Id :=
Prj.Util.Value_Of
- (Name => Name_Linker,
- In_Packages => The_Packages);
+ (Name => Name_Linker,
+ In_Packages => The_Packages,
+ In_Tree => Project_Tree);
begin
-- We fail if we cannot find the main source file
@@ -4250,13 +4317,16 @@ package body Make is
(Name => Name_Ada,
Index => 0,
Attribute_Or_Array_Name => Name_Default_Switches,
- In_Package => Builder_Package);
+ In_Package => Builder_Package,
+ In_Tree => Project_Tree);
Switches : constant Array_Element_Id :=
Prj.Util.Value_Of
(Name => Name_Switches,
In_Arrays =>
- Packages.Table (Builder_Package).Decl.Arrays);
+ Project_Tree.Packages.Table
+ (Builder_Package).Decl.Arrays,
+ In_Tree => Project_Tree);
begin
if Defaults /= Nil_Variable_Value then
@@ -4359,30 +4429,41 @@ package body Make is
if not Unique_Compile
and then MLib.Tgt.Support_For_Libraries /= MLib.Tgt.None
then
- for Proj in Projects.First .. Projects.Last loop
- if Projects.Table (Proj).Library then
- Projects.Table (Proj).Need_To_Build_Lib :=
- (not MLib.Tgt.Library_Exists_For (Proj))
- and then (not Projects.Table (Proj).Externally_Built);
-
- if Projects.Table (Proj).Need_To_Build_Lib then
-
+ for Proj in Project_Table.First ..
+ Project_Table.Last (Project_Tree.Projects)
+ loop
+ if Project_Tree.Projects.Table (Proj).Library then
+ Project_Tree.Projects.Table
+ (Proj).Need_To_Build_Lib :=
+ (not MLib.Tgt.Library_Exists_For (Proj, Project_Tree))
+ and then (not Project_Tree.Projects.Table
+ (Proj).Externally_Built);
+
+ if Project_Tree.Projects.Table
+ (Proj).Need_To_Build_Lib
+ then
-- If there is no object directory, then it will be
-- impossible to build the library. So fail immediately.
- if Projects.Table (Proj).Object_Directory = No_Name then
+ if Project_Tree.Projects.Table
+ (Proj).Object_Directory = No_Name
+ then
Make_Failed
("no object files to build library for project """,
- Get_Name_String (Projects.Table (Proj).Name),
+ Get_Name_String
+ (Project_Tree.Projects.Table (Proj).Name),
"""");
- Projects.Table (Proj).Need_To_Build_Lib := False;
+ Project_Tree.Projects.Table
+ (Proj).Need_To_Build_Lib := False;
else
if Verbose_Mode then
Write_Str
("Library file does not exist for project """);
Write_Str
- (Get_Name_String (Projects.Table (Proj).Name));
+ (Get_Name_String
+ (Project_Tree.Projects.Table
+ (Proj).Name));
Write_Line ("""");
end if;
@@ -4416,8 +4497,9 @@ package body Make is
end if;
end loop;
- Get_Name_String (Projects.Table
- (Main_Project).Exec_Directory);
+ Get_Name_String
+ (Project_Tree.Projects.Table
+ (Main_Project).Exec_Directory);
if Name_Buffer (Name_Len) /= Directory_Separator then
Name_Len := Name_Len + 1;
@@ -4445,7 +4527,8 @@ package body Make is
declare
Dir_Path : constant String_Access :=
new String'(Get_Name_String
- (Projects.Table (Main_Project).Directory));
+ (Project_Tree.Projects.Table
+ (Main_Project).Directory));
begin
for J in 1 .. Binder_Switches.Last loop
Test_If_Relative_Path
@@ -4481,10 +4564,10 @@ package body Make is
end;
end if;
- -- We now put in the Binder_Switches and Linker_Switches tables,
- -- the binder and linker switches of the command line that have been
- -- put in the Saved_ tables. If a project file was used, then the
- -- command line switches will follow the project file switches.
+ -- We now put in the Binder_Switches and Linker_Switches tables, the
+ -- binder and linker switches of the command line that have been put in
+ -- the Saved_ tables. If a project file was used, then the command line
+ -- switches will follow the project file switches.
for J in 1 .. Saved_Binder_Switches.Last loop
Add_Switch
@@ -4563,15 +4646,20 @@ package body Make is
The_Mapping_File_Names :=
new Temp_File_Names
- (No_Project .. Projects.Last, 1 .. Saved_Maximum_Processes);
+ (No_Project .. Project_Table.Last (Project_Tree.Projects),
+ 1 .. Saved_Maximum_Processes);
Last_Mapping_File_Names :=
- new Indices'(No_Project .. Projects.Last => 0);
+ new Indices'
+ (No_Project .. Project_Table.Last (Project_Tree.Projects)
+ => 0);
The_Free_Mapping_File_Indices :=
new Free_File_Indices
- (No_Project .. Projects.Last, 1 .. Saved_Maximum_Processes);
+ (No_Project .. Project_Table.Last (Project_Tree.Projects),
+ 1 .. Saved_Maximum_Processes);
Last_Free_Indices :=
- new Indices'(No_Project .. Projects.Last => 0);
+ new Indices'(No_Project .. Project_Table.Last
+ (Project_Tree.Projects) => 0);
Bad_Compilation.Init;
@@ -4632,8 +4720,9 @@ package body Make is
-- executable "main.2" for a main subprogram
-- "main.2.ada", when the body termination is ".2.ada".
- Executable := Prj.Util.Executable_Of
- (Main_Project, Main_Source_File, Main_Index);
+ Executable :=
+ Prj.Util.Executable_Of
+ (Main_Project, Project_Tree, Main_Source_File, Main_Index);
end if;
end if;
@@ -4653,7 +4742,7 @@ package body Make is
end if;
end loop;
- Get_Name_String (Projects.Table
+ Get_Name_String (Project_Tree.Projects.Table
(Main_Project).Exec_Directory);
if
@@ -4752,23 +4841,31 @@ package body Make is
-- Put in Library_Projs table all library project
-- file ids when the library need to be rebuilt.
- for Proj1 in Projects.First .. Projects.Last loop
-
- if Projects.Table (Proj1).Standalone_Library then
+ for Proj1 in Project_Table.First ..
+ Project_Table.Last (Project_Tree.Projects)
+ loop
+ if Project_Tree.Projects.Table
+ (Proj1).Standalone_Library
+ then
There_Are_Stand_Alone_Libraries := True;
end if;
- if Projects.Table (Proj1).Library
- and then not Projects.Table (Proj1).Need_To_Build_Lib
- and then not Projects.Table (Proj1).Externally_Built
+ if Project_Tree.Projects.Table (Proj1).Library
+ and then not Project_Tree.Projects.Table
+ (Proj1).Need_To_Build_Lib
+ and then not Project_Tree.Projects.Table
+ (Proj1).Externally_Built
then
- MLib.Prj.Check_Library (Proj1);
+ MLib.Prj.Check_Library (Proj1, Project_Tree);
end if;
- if Projects.Table (Proj1).Need_To_Build_Lib then
+ if Project_Tree.Projects.Table
+ (Proj1).Need_To_Build_Lib
+ then
Library_Projs.Increment_Last;
Current := Library_Projs.Last;
- Depth := Projects.Table (Proj1).Depth;
+ Depth := Project_Tree.Projects.Table
+ (Proj1).Depth;
-- Put the projects in decreasing depth order,
-- so that if libA depends on libB, libB is first
@@ -4776,13 +4873,15 @@ package body Make is
while Current > 1 loop
Proj2 := Library_Projs.Table (Current - 1);
- exit when Projects.Table (Proj2).Depth >= Depth;
+ exit when Project_Tree.Projects.Table
+ (Proj2).Depth >= Depth;
Library_Projs.Table (Current) := Proj2;
Current := Current - 1;
end loop;
Library_Projs.Table (Current) := Proj1;
- Projects.Table (Proj1).Need_To_Build_Lib := False;
+ Project_Tree.Projects.Table
+ (Proj1).Need_To_Build_Lib := False;
end if;
end loop;
end;
@@ -4793,6 +4892,7 @@ package body Make is
Library_Rebuilt := True;
MLib.Prj.Build_Library
(For_Project => Library_Projs.Table (J),
+ In_Tree => Project_Tree,
Gnatbind => Gnatbind.all,
Gnatbind_Path => Gnatbind_Path,
Gcc => Gcc.all,
@@ -4994,9 +5094,12 @@ package body Make is
if Main_Project /= No_Project
and then MLib.Tgt.Support_For_Libraries /= MLib.Tgt.None
then
- for Proj in Projects.First .. Projects.Last loop
- if Projects.Table (Proj).Library and then
- Projects.Table (Proj).Library_Kind /= Static
+ for Proj in Project_Table.First ..
+ Project_Table.Last (Project_Tree.Projects)
+ loop
+ if Project_Tree.Projects.Table (Proj).Library
+ and then Project_Tree.Projects.Table
+ (Proj).Library_Kind /= Static
then
Shared_Libs := True;
Bind_Shared := Shared_Switch'Access;
@@ -5039,7 +5142,7 @@ package body Make is
-- Put all the source directories in ADA_INCLUDE_PATH,
-- and all the object directories in ADA_OBJECTS_PATH
- Prj.Env.Set_Ada_Paths (Main_Project, False);
+ Prj.Env.Set_Ada_Paths (Main_Project, Project_Tree, False);
-- If switch -C was specified, create a binder mapping file
@@ -5103,14 +5206,18 @@ package body Make is
if MLib.Tgt.Support_For_Libraries /= MLib.Tgt.None then
-- Check for library projects
- for Proj1 in 1 .. Projects.Last loop
+ for Proj1 in Project_Table.First ..
+ Project_Table.Last (Project_Tree.Projects)
+ loop
if Proj1 /= Main_Project
- and then Projects.Table (Proj1).Library
+ and then
+ Project_Tree.Projects.Table (Proj1).Library
then
-- Add this project to table Library_Projs
There_Are_Libraries := True;
- Depth := Projects.Table (Proj1).Depth;
+ Depth :=
+ Project_Tree.Projects.Table (Proj1).Depth;
Library_Projs.Increment_Last;
Current := Library_Projs.Last;
@@ -5119,7 +5226,8 @@ package body Make is
while Current > 1 loop
Proj2 := Library_Projs.Table (Current - 1);
- exit when Projects.Table (Proj2).Depth <= Depth;
+ exit when Project_Tree.Projects.Table
+ (Proj2).Depth <= Depth;
Library_Projs.Table (Current) := Proj2;
Current := Current - 1;
end loop;
@@ -5129,14 +5237,16 @@ package body Make is
-- If it is not a static library and path option
-- is set, add it to the Library_Paths table.
- if Projects.Table (Proj1).Library_Kind /= Static
+ if Project_Tree.Projects.Table
+ (Proj1).Library_Kind /= Static
and then Path_Option /= null
then
Library_Paths.Increment_Last;
Library_Paths.Table (Library_Paths.Last) :=
new String'
(Get_Name_String
- (Projects.Table (Proj1).Library_Dir));
+ (Project_Tree.Projects.Table
+ (Proj1).Library_Dir));
end if;
end if;
end loop;
@@ -5148,7 +5258,7 @@ package body Make is
Linker_Switches.Table (Linker_Switches.Last) :=
new String'("-L" &
Get_Name_String
- (Projects.Table
+ (Project_Tree.Projects.Table
(Library_Projs.Table (Index)).
Library_Dir));
@@ -5158,7 +5268,7 @@ package body Make is
Linker_Switches.Table (Linker_Switches.Last) :=
new String'("-l" &
Get_Name_String
- (Projects.Table
+ (Project_Tree.Projects.Table
(Library_Projs.Table (Index)).
Library_Name));
end loop;
@@ -5233,15 +5343,15 @@ package body Make is
-- Put the object directories in ADA_OBJECTS_PATH
- Prj.Env.Set_Ada_Paths (Main_Project, False);
+ Prj.Env.Set_Ada_Paths (Main_Project, Project_Tree, False);
-- Check for attributes Linker'Linker_Options in projects
-- other than the main project
declare
Linker_Options : constant String_List :=
- Linker_Options_Switches (Main_Project);
-
+ Linker_Options_Switches
+ (Main_Project, Project_Tree);
begin
for Option in Linker_Options'Range loop
Linker_Switches.Increment_Last;
@@ -5340,21 +5450,25 @@ package body Make is
File_Name_Of_Library_Unit_Body
(Name => Main_Source_File_Name,
Project => Main_Project,
+ In_Tree => Project_Tree,
Main_Project_Only =>
not Unique_Compile);
The_Packages : constant Package_Id :=
- Projects.Table (Main_Project).Decl.Packages;
+ Project_Tree.Projects.Table
+ (Main_Project).Decl.Packages;
Binder_Package : constant Prj.Package_Id :=
Prj.Util.Value_Of
(Name => Name_Binder,
- In_Packages => The_Packages);
+ In_Packages => The_Packages,
+ In_Tree => Project_Tree);
Linker_Package : constant Prj.Package_Id :=
Prj.Util.Value_Of
- (Name => Name_Linker,
- In_Packages => The_Packages);
+ (Name => Name_Linker,
+ In_Packages => The_Packages,
+ In_Tree => Project_Tree);
begin
-- We fail if we cannot find the main source file
@@ -5442,7 +5556,8 @@ package body Make is
declare
Dir_Path : constant String_Access :=
new String'(Get_Name_String
- (Projects.Table (Main_Project).Directory));
+ (Project_Tree.Projects.Table
+ (Main_Project).Directory));
begin
for
J in Last_Binder_Switch + 1 .. Binder_Switches.Last
@@ -5516,7 +5631,7 @@ package body Make is
if not Debug.Debug_Flag_N then
Delete_Mapping_Files;
- Prj.Env.Delete_All_Path_Files;
+ Prj.Env.Delete_All_Path_Files (Project_Tree);
end if;
Exit_Program (E_Success);
@@ -5528,7 +5643,7 @@ package body Make is
when Compilation_Failed =>
if not Debug.Debug_Flag_N then
Delete_Mapping_Files;
- Prj.Env.Delete_All_Path_Files;
+ Prj.Env.Delete_All_Path_Files (Project_Tree);
end if;
Exit_Program (E_Fatal);
@@ -5605,7 +5720,7 @@ package body Make is
if Project /= No_Project then
Prj.Env.Create_Mapping_File
- (Project,
+ (Project, Project_Tree,
The_Mapping_File_Names
(Project, Last_Mapping_File_Names (Project)));
@@ -5669,7 +5784,7 @@ package body Make is
Snames.Initialize;
- Prj.Initialize;
+ Prj.Initialize (Project_Tree);
Dependencies.Init;
@@ -5789,6 +5904,7 @@ package body Make is
Prj.Pars.Parse
(Project => Main_Project,
+ In_Tree => Project_Tree,
Project_File_Name => Project_File_Name.all,
Packages_To_Check => Packages_To_Check_By_Gnatmake);
@@ -5807,14 +5923,16 @@ package body Make is
-- We add the source directories and the object directories
-- to the search paths.
- Add_Source_Directories (Main_Project);
- Add_Object_Directories (Main_Project);
+ Add_Source_Directories (Main_Project, Project_Tree);
+ Add_Object_Directories (Main_Project, Project_Tree);
-- Compute depth of each project
- for Proj in 1 .. Projects.Last loop
- Projects.Table (Proj).Seen := False;
- Projects.Table (Proj).Depth := 0;
+ for Proj in Project_Table.First ..
+ Project_Table.Last (Project_Tree.Projects)
+ loop
+ Project_Tree.Projects.Table (Proj).Seen := False;
+ Project_Tree.Projects.Table (Proj).Depth := 0;
end loop;
Recursive_Compute_Depth
@@ -5860,11 +5978,12 @@ package body Make is
Into_Q : Boolean)
is
Put_In_Q : Boolean := Into_Q;
- Unit : Com.Unit_Data;
+ Unit : Unit_Data;
Sfile : Name_Id;
Extending : constant Boolean :=
- Projects.Table (The_Project).Extends /= No_Project;
+ Project_Tree.Projects.Table
+ (The_Project).Extends /= No_Project;
function Check_Project (P : Project_Id) return Boolean;
-- Returns True if P is The_Project or a project extended by
@@ -5880,7 +5999,8 @@ package body Make is
return True;
elsif Extending then
declare
- Data : Project_Data := Projects.Table (The_Project);
+ Data : Project_Data :=
+ Project_Tree.Projects.Table (The_Project);
begin
loop
@@ -5888,7 +6008,7 @@ package body Make is
return True;
end if;
- Data := Projects.Table (Data.Extends);
+ Data := Project_Tree.Projects.Table (Data.Extends);
exit when Data.Extends = No_Project;
end loop;
end;
@@ -5897,30 +6017,31 @@ package body Make is
return False;
end Check_Project;
- -- Start of processing of Insert_Project_Sources
+ -- Start of processing for Insert_Project_Sources
begin
-- For all the sources in the project files,
- for Id in Com.Units.First .. Com.Units.Last loop
- Unit := Com.Units.Table (Id);
+ for Id in Unit_Table.First ..
+ Unit_Table.Last (Project_Tree.Units)
+ loop
+ Unit := Project_Tree.Units.Table (Id);
Sfile := No_Name;
-- If there is a source for the body, and the body has not been
-- locally removed,
- if Unit.File_Names (Com.Body_Part).Name /= No_Name
- and then Unit.File_Names (Com.Body_Part).Path /= Slash
+ if Unit.File_Names (Body_Part).Name /= No_Name
+ and then Unit.File_Names (Body_Part).Path /= Slash
then
-
-- And it is a source for the specified project
- if Check_Project (Unit.File_Names (Com.Body_Part).Project) then
+ if Check_Project (Unit.File_Names (Body_Part).Project) then
-- If we don't have a spec, we cannot consider the source
-- if it is a subunit
- if Unit.File_Names (Com.Specification).Name = No_Name then
+ if Unit.File_Names (Specification).Name = No_Name then
declare
Src_Ind : Source_File_Index;
@@ -5937,7 +6058,7 @@ package body Make is
begin
Src_Ind := Sinput.P.Load_Project_File
(Get_Name_String
- (Unit.File_Names (Com.Body_Part).Path));
+ (Unit.File_Names (Body_Part).Path));
-- If it is a subunit, discard it
@@ -5945,24 +6066,24 @@ package body Make is
Sfile := No_Name;
else
- Sfile := Unit.File_Names (Com.Body_Part).Name;
+ Sfile := Unit.File_Names (Body_Part).Name;
end if;
end;
else
- Sfile := Unit.File_Names (Com.Body_Part).Name;
+ Sfile := Unit.File_Names (Body_Part).Name;
end if;
end if;
- elsif Unit.File_Names (Com.Specification).Name /= No_Name
- and then Unit.File_Names (Com.Specification).Path /= Slash
- and then Check_Project (Unit.File_Names (Com.Specification).Project)
+ elsif Unit.File_Names (Specification).Name /= No_Name
+ and then Unit.File_Names (Specification).Path /= Slash
+ and then Check_Project (Unit.File_Names (Specification).Project)
then
-- If there is no source for the body, but there is a source
-- for the spec which has not been locally removed, then we take
-- this one.
- Sfile := Unit.File_Names (Com.Specification).Name;
+ Sfile := Unit.File_Names (Specification).Name;
end if;
-- If Put_In_Q is True, we insert into the Q
@@ -6090,7 +6211,7 @@ package body Make is
declare
Source_File_Name : constant String :=
Get_Name_String (Source_File);
- Saved_Verbosity : constant Verbosity := Prj.Com.Current_Verbosity;
+ Saved_Verbosity : constant Verbosity := Current_Verbosity;
Project : Project_Id := No_Project;
Path_Name : Name_Id := No_Name;
Data : Project_Data;
@@ -6100,13 +6221,14 @@ package body Make is
-- the source. Call it with verbosity default to avoid verbose
-- messages.
- Prj.Com.Current_Verbosity := Default;
+ Current_Verbosity := Default;
Prj.Env.
Get_Reference
(Source_File_Name => Source_File_Name,
Project => Project,
+ In_Tree => Project_Tree,
Path => Path_Name);
- Prj.Com.Current_Verbosity := Saved_Verbosity;
+ Current_Verbosity := Saved_Verbosity;
-- If this source is in a project, check that the ALI file is
-- in its object directory. If it is not, return False, so that
@@ -6116,9 +6238,10 @@ package body Make is
-- the general case and return True at the end of the function.
if Project /= No_Project
- and then Projects.Table (Project).Extends /= No_Project
+ and then Project_Tree.Projects.Table
+ (Project).Extends /= No_Project
then
- Data := Projects.Table (Project);
+ Data := Project_Tree.Projects.Table (Project);
declare
Object_Directory : constant String :=
@@ -6328,26 +6451,26 @@ package body Make is
-- been seen or if the depth is large enough.
if Project = No_Project
- or else Projects.Table (Project).Seen
- or else Projects.Table (Project).Depth >= Depth
+ or else Project_Tree.Projects.Table (Project).Seen
+ or else Project_Tree.Projects.Table (Project).Depth >= Depth
then
return;
end if;
- Projects.Table (Project).Depth := Depth;
+ Project_Tree.Projects.Table (Project).Depth := Depth;
-- Mark the project as Seen to avoid endless loop caused by limited
-- withs.
- Projects.Table (Project).Seen := True;
+ Project_Tree.Projects.Table (Project).Seen := True;
- List := Projects.Table (Project).Imported_Projects;
+ List := Project_Tree.Projects.Table (Project).Imported_Projects;
-- Visit each imported project
while List /= Empty_Project_List loop
- Proj := Project_Lists.Table (List).Project;
- List := Project_Lists.Table (List).Next;
+ Proj := Project_Tree.Project_Lists.Table (List).Project;
+ List := Project_Tree.Project_Lists.Table (List).Next;
Recursive_Compute_Depth
(Project => Proj,
Depth => Depth + 1);
@@ -6356,12 +6479,12 @@ package body Make is
-- Visit a project being extended, if any
Recursive_Compute_Depth
- (Project => Projects.Table (Project).Extends,
+ (Project => Project_Tree.Projects.Table (Project).Extends,
Depth => Depth + 1);
-- Reset the Seen flag, as we leave this project
- Projects.Table (Project).Seen := False;
+ Project_Tree.Projects.Table (Project).Seen := False;
end Recursive_Compute_Depth;
-----------------------
@@ -6976,20 +7099,25 @@ package body Make is
Prj.Util.Value_Of
(Name => Name_Default_Switches,
In_Arrays =>
- Packages.Table (In_Package).Decl.Arrays);
+ Project_Tree.Packages.Table
+ (In_Package).Decl.Arrays,
+ In_Tree => Project_Tree);
Switches_Array : constant Array_Element_Id :=
Prj.Util.Value_Of
(Name => Name_Switches,
In_Arrays =>
- Packages.Table (In_Package).Decl.Arrays);
+ Project_Tree.Packages.Table
+ (In_Package).Decl.Arrays,
+ In_Tree => Project_Tree);
begin
Switches :=
Prj.Util.Value_Of
(Index => Source_File,
Src_Index => Source_Index,
- In_Array => Switches_Array);
+ In_Array => Switches_Array,
+ In_Tree => Project_Tree);
if Switches = Nil_Variable_Value then
declare
@@ -7028,7 +7156,8 @@ package body Make is
Prj.Util.Value_Of
(Index => Name_Find,
Src_Index => 0,
- In_Array => Switches_Array);
+ In_Array => Switches_Array,
+ In_Tree => Project_Tree);
if Switches = Nil_Variable_Value
and then Allow_ALI
@@ -7046,7 +7175,8 @@ package body Make is
Prj.Util.Value_Of
(Index => Name_Find,
Src_Index => 0,
- In_Array => Switches_Array);
+ In_Array => Switches_Array,
+ In_Tree => Project_Tree);
end if;
end if;
end;
@@ -7057,7 +7187,8 @@ package body Make is
Prj.Util.Value_Of
(Index => Name_Ada,
Src_Index => 0,
- In_Array => Defaults);
+ In_Array => Defaults,
+ In_Tree => Project_Tree);
end if;
return Switches;