No change in behavior. This is for gprbuild.

Tested on x86_64-pc-linux-gnu, committed on trunk

2012-02-08  Pascal Obry  <o...@adacore.com>

        * prj.adb (Compute_All_Imported_Projects): Use new
        For_Project_And_Aggregated_Context to ensure proper context is
        used for encapsulated aggregate libraries.
        * prj-proc.adb (Recursive_Process): Call
        Process_Aggregated_Projects earlier to ensure that all dependent
        projects are set with the proper encapsulated status.

Index: prj.adb
===================================================================
--- prj.adb     (revision 183998)
+++ prj.adb     (working copy)
@@ -1476,7 +1476,8 @@
    is
       procedure Analyze_Tree
         (Local_Root : Project_Id;
-         Local_Tree : Project_Tree_Ref);
+         Local_Tree : Project_Tree_Ref;
+         Context    : Project_Context);
       --  Process Project and all its aggregated project to analyze their own
       --  imported projects.
 
@@ -1486,7 +1487,8 @@
 
       procedure Analyze_Tree
         (Local_Root : Project_Id;
-         Local_Tree : Project_Tree_Ref)
+         Local_Tree : Project_Tree_Ref;
+         Context    : Project_Context)
       is
          pragma Unreferenced (Local_Root);
 
@@ -1540,7 +1542,9 @@
                Project.All_Imported_Projects :=
                  new Project_List_Element'
                    (Project               => Prj2,
-                    From_Encapsulated_Lib => Context.From_Encapsulated_Lib,
+                    From_Encapsulated_Lib =>
+                      Context.From_Encapsulated_Lib
+                        or else Analyze_Tree.Context.From_Encapsulated_Lib,
                     Next                  => Project.All_Imported_Projects);
             end if;
          end Recursive_Add;
@@ -1564,7 +1568,7 @@
       end Analyze_Tree;
 
       procedure For_Aggregates is
-        new For_Project_And_Aggregated (Analyze_Tree);
+        new For_Project_And_Aggregated_Context (Analyze_Tree);
 
    --  Start of processing for Compute_All_Imported_Projects
 
Index: prj-proc.adb
===================================================================
--- prj-proc.adb        (revision 183996)
+++ prj-proc.adb        (working copy)
@@ -2908,6 +2908,10 @@
 
             Process_Imported_Projects (Imported, Limited_With => True);
 
+            if Err_Vars.Total_Errors_Detected = 0 then
+               Process_Aggregated_Projects;
+            end if;
+
             --  At this point (after Process_Declarative_Items) we have the
             --  attribute values set, we can backtrace In_Tree.Project and
             --  set the From_Encapsulated_Library status.
@@ -2935,7 +2939,6 @@
                end if;
 
                if Err_Vars.Total_Errors_Detected = 0 then
-                  Process_Aggregated_Projects;
 
                   --  For an aggregate library we add the aggregated projects
                   --  as imported ones. This is necessary to give visibility

Reply via email to