diff options
Diffstat (limited to 'gcc/ada/clean.adb')
-rw-r--r-- | gcc/ada/clean.adb | 65 |
1 files changed, 37 insertions, 28 deletions
diff --git a/gcc/ada/clean.adb b/gcc/ada/clean.adb index c0f6e16..6a53dba 100644 --- a/gcc/ada/clean.adb +++ b/gcc/ada/clean.adb @@ -37,7 +37,6 @@ with Opt; use Opt; with Osint; use Osint; with Osint.M; use Osint.M; with Prj; use Prj; -with Prj.Com; with Prj.Env; with Prj.Ext; with Prj.Pars; @@ -92,6 +91,8 @@ package body Clean is Project_File_Name : String_Access := null; + Project_Tree : constant Prj.Project_Tree_Ref := new Prj.Project_Tree_Data; + Main_Project : Prj.Project_Id := Prj.No_Project; All_Projects : Boolean := False; @@ -328,7 +329,8 @@ package body Clean is procedure Clean_Archive (Project : Project_Id) is Current_Dir : constant Dir_Name_Str := Get_Current_Dir; - Data : constant Project_Data := Projects.Table (Project); + Data : constant Project_Data := + Project_Tree.Projects.Table (Project); Archive_Name : constant String := "lib" & Get_Name_String (Data.Name) & '.' & Archive_Ext; @@ -560,8 +562,9 @@ package body Clean is -- Name of the executable file Current_Dir : constant Dir_Name_Str := Get_Current_Dir; - Data : constant Project_Data := Projects.Table (Project); - U_Data : Prj.Com.Unit_Data; + Data : constant Project_Data := + Project_Tree.Projects.Table (Project); + U_Data : Unit_Data; File_Name1 : Name_Id; Index1 : Int; File_Name2 : Name_Id; @@ -573,8 +576,6 @@ package body Clean is Global_Archive : Boolean := False; - use Prj.Com; - begin -- Check that we don't specify executable on the command line for -- a main library project. @@ -612,8 +613,10 @@ package body Clean is -- sources or inherited sources of the project. if Data.Languages (Ada_Language_Index) then - for Unit in 1 .. Prj.Com.Units.Last loop - U_Data := Prj.Com.Units.Table (Unit); + for Unit in Unit_Table.First .. + Unit_Table.Last (Project_Tree.Units) + loop + U_Data := Project_Tree.Units.Table (Unit); File_Name1 := No_Name; File_Name2 := No_Name; @@ -749,8 +752,12 @@ package body Clean is if Project = Main_Project and then not Data.Library then Global_Archive := False; - for Proj in 1 .. Projects.Last loop - if Projects.Table (Proj).Other_Sources_Present then + for Proj in Project_Table.First .. + Project_Table.Last (Project_Tree.Projects) + loop + if Project_Tree.Projects.Table + (Proj).Other_Sources_Present + then Global_Archive := True; exit; end if; @@ -769,7 +776,8 @@ package body Clean is Source_Id := Data.First_Other_Source; while Source_Id /= No_Other_Source loop - Source := Other_Sources.Table (Source_Id); + Source := + Project_Tree.Other_Sources.Table (Source_Id); if Is_Regular_File (Get_Name_String (Source.Object_Name)) @@ -839,7 +847,7 @@ package body Clean is -- has not been processed already. while Imported /= Empty_Project_List loop - Element := Project_Lists.Table (Imported); + Element := Project_Tree.Project_Lists.Table (Imported); Imported := Element.Next; Process := True; @@ -887,6 +895,7 @@ package body Clean is Executable := Executable_Of (Main_Project, + Project_Tree, Main_Source_File, Current_File_Index); @@ -1099,13 +1108,14 @@ package body Clean is -- Set the project parsing verbosity to whatever was specified -- by a possible -vP switch. - Prj.Pars.Set_Verbosity (To => Prj.Com.Current_Verbosity); + Prj.Pars.Set_Verbosity (To => Current_Verbosity); -- Parse the project file. If there is an error, Main_Project -- will still be No_Project. 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); @@ -1121,12 +1131,10 @@ package body Clean is New_Line; end if; - -- 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 and object directories to the search paths + Add_Source_Directories (Main_Project, Project_Tree); + Add_Object_Directories (Main_Project, Project_Tree); end if; Osint.Add_Default_Search_Dirs; @@ -1137,11 +1145,12 @@ package body Clean is if Main_Project /= No_Project and then Osint.Number_Of_Files = 0 then declare - Value : String_List_Id := Projects.Table (Main_Project).Mains; + Value : String_List_Id := + Project_Tree.Projects.Table (Main_Project).Mains; Main : String_Element; begin while Value /= Prj.Nil_String loop - Main := String_Elements.Table (Value); + Main := Project_Tree.String_Elements.Table (Value); Osint.Add_File (File_Name => Get_Name_String (Main.Value), Index => Main.Index); @@ -1211,24 +1220,24 @@ package body Clean is return True; end if; - Data := Projects.Table (Of_Project); + Data := Project_Tree.Projects.Table (Of_Project); while Data.Extends /= No_Project loop if Data.Extends = Prj then return True; end if; - Data := Projects.Table (Data.Extends); + Data := Project_Tree.Projects.Table (Data.Extends); end loop; - Data := Projects.Table (Prj); + Data := Project_Tree.Projects.Table (Prj); while Data.Extends /= No_Project loop if Data.Extends = Of_Project then return True; end if; - Data := Projects.Table (Data.Extends); + Data := Project_Tree.Projects.Table (Data.Extends); end loop; return False; @@ -1258,7 +1267,7 @@ package body Clean is Csets.Initialize; Namet.Initialize; Snames.Initialize; - Prj.Initialize; + Prj.Initialize (Project_Tree); end if; -- Reset global variables @@ -1480,13 +1489,13 @@ package body Clean is Verbose_Mode := True; elsif Arg = "-vP0" then - Prj.Com.Current_Verbosity := Prj.Default; + Current_Verbosity := Prj.Default; elsif Arg = "-vP1" then - Prj.Com.Current_Verbosity := Prj.Medium; + Current_Verbosity := Prj.Medium; elsif Arg = "-vP2" then - Prj.Com.Current_Verbosity := Prj.High; + Current_Verbosity := Prj.High; else Bad_Argument; |