From f77b022b82d2ff2a4859b2dab1f58c97ce0d1b51 Mon Sep 17 00:00:00 2001 From: Vincent Celier Date: Wed, 3 Aug 2011 12:36:13 +0000 Subject: [PATCH] make.adb (Gnatmake): Add to table Library_Projs only library projects that are not extended. 2011-08-03 Vincent Celier * make.adb (Gnatmake): Add to table Library_Projs only library projects that are not extended. Do not check if a library project that is extended should be regenerated. Do not add to table Library_Paths the libraries that are in extended projects. Link only with libraries that are in libray projects that are not extended. * prj-nmsc.adb (Check_Library_Attributes): Do not reset flag Library for a library project that is extended. From-SVN: r177269 --- gcc/ada/ChangeLog | 10 +++++ gcc/ada/make.adb | 104 +++++++++++++++++++++++-------------------- gcc/ada/prj-nmsc.adb | 2 - 3 files changed, 66 insertions(+), 50 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 43e546c96ba..6afbcd295c8 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,13 @@ +2011-08-03 Vincent Celier + + * make.adb (Gnatmake): Add to table Library_Projs only library projects + that are not extended. Do not check if a library project that is + extended should be regenerated. Do not add to table Library_Paths the + libraries that are in extended projects. Link only with libraries that + are in libray projects that are not extended. + * prj-nmsc.adb (Check_Library_Attributes): Do not reset flag Library + for a library project that is extended. + 2011-08-03 Gary Dismukes * sem_ch6.adb (Find_Corresponding_Spec): When in an instance, skip diff --git a/gcc/ada/make.adb b/gcc/ada/make.adb index 0eca00878ef..6be04b15699 100644 --- a/gcc/ada/make.adb +++ b/gcc/ada/make.adb @@ -5530,17 +5530,19 @@ package body Make is Proj1 := Project_Tree.Projects; while Proj1 /= null loop - if Proj1.Project.Standalone_Library then - Stand_Alone_Libraries := True; - end if; + if Proj1.Project.Extended_By = No_Project then + if Proj1.Project.Standalone_Library then + Stand_Alone_Libraries := True; + end if; - if Proj1.Project.Library then - MLib.Prj.Check_Library - (Proj1.Project, Project_Tree); - end if; + if Proj1.Project.Library then + MLib.Prj.Check_Library + (Proj1.Project, Project_Tree); + end if; - if Proj1.Project.Need_To_Build_Lib then - Add_To_Library_Projs (Proj1.Project); + if Proj1.Project.Need_To_Build_Lib then + Add_To_Library_Projs (Proj1.Project); + end if; end if; Proj1 := Proj1.Next; @@ -5553,6 +5555,7 @@ package body Make is Proj1 := Project_Tree.Projects; while Proj1 /= null loop if Proj1.Project.Library + and then Proj1.Project.Extended_By = No_Project and then Proj1.Project.Library_Kind /= Static and then not Proj1.Project.Need_To_Build_Lib and then not Proj1.Project.Externally_Built @@ -5898,11 +5901,10 @@ package body Make is -- except those of library projects. Prj.Env.Set_Ada_Paths - (Main_Project, Project_Tree, Use_Include_Path_File); - -- (Project => Main_Project, - -- In_Tree => Project_Tree, - -- Including_Libraries => True, - -- Include_Path => Use_Include_Path_File); + (Project => Main_Project, + In_Tree => Project_Tree, + Including_Libraries => False, + Include_Path => Use_Include_Path_File); -- If switch -C was specified, create a binder mapping file @@ -6000,6 +6002,7 @@ package body Make is -- is set, add it to the Library_Paths table. if Proj1.Project.Library_Kind /= Static + and then Proj1.Project.Extended_By = No_Project and then Path_Option /= null then Library_Paths.Increment_Last; @@ -6014,39 +6017,44 @@ package body Make is end loop; for Index in 1 .. Library_Projs.Last loop - if Library_Projs.Table (Index).Library_Kind = Static - and then not Targparm.OpenVMS_On_Target + if + Library_Projs.Table (Index).Extended_By = No_Project then - Linker_Switches.Increment_Last; - Linker_Switches.Table (Linker_Switches.Last) := - new String' - (Get_Name_String - (Library_Projs.Table - (Index).Library_Dir.Display_Name) & - "lib" & - Get_Name_String - (Library_Projs.Table (Index). Library_Name) & - "." & - MLib.Tgt.Archive_Ext); + if Library_Projs.Table (Index).Library_Kind = Static + and then not Targparm.OpenVMS_On_Target + then + Linker_Switches.Increment_Last; + Linker_Switches.Table (Linker_Switches.Last) := + new String' + (Get_Name_String + (Library_Projs.Table + (Index).Library_Dir.Display_Name) & + "lib" & + Get_Name_String + (Library_Projs.Table + (Index).Library_Name) & + "." & + MLib.Tgt.Archive_Ext); - else - -- Add the -L switch - - Linker_Switches.Increment_Last; - Linker_Switches.Table (Linker_Switches.Last) := - new String'("-L" & - Get_Name_String - (Library_Projs.Table (Index). - Library_Dir.Display_Name)); - - -- Add the -l switch - - Linker_Switches.Increment_Last; - Linker_Switches.Table (Linker_Switches.Last) := - new String'("-l" & - Get_Name_String - (Library_Projs.Table (Index). - Library_Name)); + else + -- Add the -L switch + + Linker_Switches.Increment_Last; + Linker_Switches.Table (Linker_Switches.Last) := + new String'("-L" & + Get_Name_String + (Library_Projs.Table (Index). + Library_Dir.Display_Name)); + + -- Add the -l switch + + Linker_Switches.Increment_Last; + Linker_Switches.Table (Linker_Switches.Last) := + new String'("-l" & + Get_Name_String + (Library_Projs.Table (Index). + Library_Name)); + end if; end if; end loop; end if; @@ -6080,9 +6088,9 @@ package body Make is Linker_Switches.Increment_Last; Linker_Switches.Table (Linker_Switches.Last) := - new String' - (Path_Option.all & - Library_Paths.Table (Index).all); + new String' + (Path_Option.all & + Library_Paths.Table (Index).all); end loop; -- One switch for the standard GNAT library dir diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb index 0362277df5c..6c79fdec8d1 100644 --- a/gcc/ada/prj-nmsc.adb +++ b/gcc/ada/prj-nmsc.adb @@ -4271,8 +4271,6 @@ package body Prj.Nmsc is exit; end if; end loop; - - Project.Extends.Library := False; end if; if Project.Library and then not Lib_Name.Default then -- 2.30.2