diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2014-02-19 15:48:32 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2014-02-19 15:48:32 +0100 |
commit | 13f39091ea608a390dd56aabdec1ac6bb56846dd (patch) | |
tree | 2939b36369ceec25e8c911a56f5d25dd754b077d /gcc/ada/prj-part.adb | |
parent | 110e2969e057932e42f7a97332b1a840959ab685 (diff) | |
download | gcc-13f39091ea608a390dd56aabdec1ac6bb56846dd.zip gcc-13f39091ea608a390dd56aabdec1ac6bb56846dd.tar.gz gcc-13f39091ea608a390dd56aabdec1ac6bb56846dd.tar.bz2 |
[multiple changes]
2014-02-19 Robert Dewar <dewar@adacore.com>
* sem_util.adb, sem_util.ads, prj-conf.adb, s-os_lib.adb: Minor
reformatting.
2014-02-19 Vincent Celier <celier@adacore.com>
* prj-part.adb (Parse_Single_Project): Use the fully resolved
project path, with all symbolic links resolved, to check if the
same project is imported with a different unresolved path.
* prj-tree.ads (Project_Name_And_Node): Component Canonical_Path
changed to Resolved_Path to reflect that all symbolic links
are resolved.
From-SVN: r207904
Diffstat (limited to 'gcc/ada/prj-part.adb')
-rw-r--r-- | gcc/ada/prj-part.adb | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb index 771f83a..48b57aa 100644 --- a/gcc/ada/prj-part.adb +++ b/gcc/ada/prj-part.adb @@ -1126,8 +1126,8 @@ package body Prj.Part is if Project_Qualifier_Of (Imported, In_Tree) = Aggregate then Error_Msg_Name_1 := Name_Id (Path_Name_Of (Imported, In_Tree)); - Error_Msg - (Flags, "cannot import aggregate project %%", Token_Ptr); + Error_Msg + (Flags, "cannot import aggregate project %%", Token_Ptr); exit; end if; @@ -1280,6 +1280,7 @@ package body Prj.Part is Normed_Path_Name : Path_Name_Type; Canonical_Path_Name : Path_Name_Type; + Resolved_Path_Name : Path_Name_Type; Project_Directory : Path_Name_Type; Project_Scan_State : Saved_Project_Scan_State; Source_Index : Source_File_Index; @@ -1329,6 +1330,20 @@ package body Prj.Part is Name_Len := Canonical_Path'Length; Name_Buffer (1 .. Name_Len) := Canonical_Path; Canonical_Path_Name := Name_Find; + + if Opt.Follow_Links_For_Files then + Resolved_Path_Name := Canonical_Path_Name; + + else + Name_Len := 0; + Add_Str_To_Name_Buffer + (Normalize_Pathname + (Canonical_Path, + Resolve_Links => True, + Case_Sensitive => False)); + Resolved_Path_Name := Name_Find; + end if; + end; if Has_Circular_Dependencies @@ -1351,7 +1366,7 @@ package body Prj.Part is while A_Project_Name_And_Node /= Tree_Private_Part.No_Project_Name_And_Node loop - if A_Project_Name_And_Node.Canonical_Path = Canonical_Path_Name then + if A_Project_Name_And_Node.Resolved_Path = Resolved_Path_Name then if Extended then if A_Project_Name_And_Node.Extended then @@ -1773,6 +1788,17 @@ package body Prj.Part is if Present (Extended_Project) then + if Project_Qualifier_Of (Extended_Project, In_Tree) = + Aggregate + then + Error_Msg_Name_1 := + Name_Id (Path_Name_Of (Extended_Project, In_Tree)); + Error_Msg + (Env.Flags, + "cannot extend aggregate project %%", + Location_Of (Project, In_Tree)); + end if; + -- A project that extends an extending-all project is -- also an extending-all project. @@ -1987,7 +2013,7 @@ package body Prj.Part is E => (Name => Name_Of_Project, Display_Name => Display_Name_Of_Project, Node => Project, - Canonical_Path => Canonical_Path_Name, + Resolved_Path => Resolved_Path_Name, Extended => Extended, From_Extended => From_Extended /= None, Proj_Qualifier => Project_Qualifier_Of (Project, In_Tree))); |