diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-30 15:04:20 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-30 15:04:20 +0000 |
commit | a95036b63d20fadb3eec448cce8aa21b2926983d (patch) | |
tree | 4560aa9d82c0431860eaac87d1813336b4077893 /gcc/ada/makeutl.adb | |
parent | 74691f46971400d25d7fa01c065dd5a38511a36c (diff) | |
download | gcc-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.adb | 72 |
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 |