summaryrefslogtreecommitdiff
path: root/gcc/ada/makeutl.adb
diff options
context:
space:
mode:
authorcharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-30 15:04:20 +0000
committercharlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4>2014-07-30 15:04:20 +0000
commita95036b63d20fadb3eec448cce8aa21b2926983d (patch)
tree4560aa9d82c0431860eaac87d1813336b4077893 /gcc/ada/makeutl.adb
parent74691f46971400d25d7fa01c065dd5a38511a36c (diff)
downloadgcc-a95036b63d20fadb3eec448cce8aa21b2926983d.tar.gz
2014-07-30 Vincent Celier <celier@adacore.com>
* makeutl.adb (Insert_Project_Sources): When the library project is an aggregate Stand-Alone Library, insert in the queue the Ada interface units, with Closure set to True; 2014-07-30 Eric Botcazou <ebotcazou@adacore.com> * sem_util.adb: Fix minor typo. * makeutl.adb: Minor reformatting. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@213294 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/makeutl.adb')
-rw-r--r--gcc/ada/makeutl.adb72
1 files changed, 46 insertions, 26 deletions
diff --git a/gcc/ada/makeutl.adb b/gcc/ada/makeutl.adb
index 88826c73af8..a53ab590b5b 100644
--- a/gcc/ada/makeutl.adb
+++ b/gcc/ada/makeutl.adb
@@ -2969,41 +2969,61 @@ package body Makeutl is
then
if (Unit_Based
or else Source.Unit = No_Unit_Index
- or else Source.Project.Library)
+ or else Source.Project.Library
+ or else Project.Qualifier = Aggregate_Library)
and then not Is_Subunit (Source)
then
OK := True;
Closure := False;
- if Source.Unit /= No_Unit_Index
- and then Source.Project.Library
- and then Source.Project.Standalone_Library /= No
- then
- -- Check if the unit is in the interface
- OK := False;
+ declare
+ SAL_Project : Project_Id := No_Project;
- declare
- List : String_List_Id :=
- Source.Project.Lib_Interface_ALIs;
- Element : String_Element;
+ begin
+ if Project.Qualifier = Aggregate_Library
+ and then Project.Standalone_Library /= No
+ then
+ if Source.Unit /= No_Unit_Index then
+ SAL_Project := Project;
+ end if;
- begin
- while List /= Nil_String loop
- Element :=
- Project_Tree.Shared.String_Elements.Table
- (List);
+ elsif Source.Unit /= No_Unit_Index
+ and then Source.Project.Library
+ and then Source.Project.Standalone_Library /= No
+ then
+ SAL_Project := Source.Project;
+ end if;
- if Element.Value = Name_Id (Source.Dep_Name)
- then
- OK := True;
- Closure := True;
- exit;
- end if;
+ if SAL_Project /= No_Project then
- List := Element.Next;
- end loop;
- end;
- end if;
+ -- Check if the unit is in the interface
+
+ OK := False;
+
+ declare
+ List : String_List_Id :=
+ SAL_Project.Lib_Interface_ALIs;
+ Element : String_Element;
+
+ begin
+ while List /= Nil_String loop
+ Element :=
+ Project_Tree.Shared.String_Elements.Table
+ (List);
+
+ if Element.Value =
+ Name_Id (Source.Dep_Name)
+ then
+ OK := True;
+ Closure := True;
+ exit;
+ end if;
+
+ List := Element.Next;
+ end loop;
+ end;
+ end if;
+ end;
if OK then
Queue.Insert