make.adb (Gnatmake): Add to table Library_Projs only library projects that are not extended.

2011-08-03  Vincent Celier  <celier@adacore.com>

	* 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
This commit is contained in:
Vincent Celier 2011-08-03 12:36:13 +00:00 committed by Arnaud Charlet
parent 276e02243a
commit f77b022b82
3 changed files with 63 additions and 47 deletions

View File

@ -1,3 +1,13 @@
2011-08-03 Vincent Celier <celier@adacore.com>
* 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 <dismukes@adacore.com> 2011-08-03 Gary Dismukes <dismukes@adacore.com>
* sem_ch6.adb (Find_Corresponding_Spec): When in an instance, skip * sem_ch6.adb (Find_Corresponding_Spec): When in an instance, skip

View File

@ -5530,17 +5530,19 @@ package body Make is
Proj1 := Project_Tree.Projects; Proj1 := Project_Tree.Projects;
while Proj1 /= null loop while Proj1 /= null loop
if Proj1.Project.Standalone_Library then if Proj1.Project.Extended_By = No_Project then
Stand_Alone_Libraries := True; if Proj1.Project.Standalone_Library then
end if; Stand_Alone_Libraries := True;
end if;
if Proj1.Project.Library then if Proj1.Project.Library then
MLib.Prj.Check_Library MLib.Prj.Check_Library
(Proj1.Project, Project_Tree); (Proj1.Project, Project_Tree);
end if; end if;
if Proj1.Project.Need_To_Build_Lib then if Proj1.Project.Need_To_Build_Lib then
Add_To_Library_Projs (Proj1.Project); Add_To_Library_Projs (Proj1.Project);
end if;
end if; end if;
Proj1 := Proj1.Next; Proj1 := Proj1.Next;
@ -5553,6 +5555,7 @@ package body Make is
Proj1 := Project_Tree.Projects; Proj1 := Project_Tree.Projects;
while Proj1 /= null loop while Proj1 /= null loop
if Proj1.Project.Library if Proj1.Project.Library
and then Proj1.Project.Extended_By = No_Project
and then Proj1.Project.Library_Kind /= Static and then Proj1.Project.Library_Kind /= Static
and then not Proj1.Project.Need_To_Build_Lib and then not Proj1.Project.Need_To_Build_Lib
and then not Proj1.Project.Externally_Built and then not Proj1.Project.Externally_Built
@ -5898,11 +5901,10 @@ package body Make is
-- except those of library projects. -- except those of library projects.
Prj.Env.Set_Ada_Paths Prj.Env.Set_Ada_Paths
(Main_Project, Project_Tree, Use_Include_Path_File); (Project => Main_Project,
-- (Project => Main_Project, In_Tree => Project_Tree,
-- In_Tree => Project_Tree, Including_Libraries => False,
-- Including_Libraries => True, Include_Path => Use_Include_Path_File);
-- Include_Path => Use_Include_Path_File);
-- If switch -C was specified, create a binder mapping 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. -- is set, add it to the Library_Paths table.
if Proj1.Project.Library_Kind /= Static if Proj1.Project.Library_Kind /= Static
and then Proj1.Project.Extended_By = No_Project
and then Path_Option /= null and then Path_Option /= null
then then
Library_Paths.Increment_Last; Library_Paths.Increment_Last;
@ -6014,39 +6017,44 @@ package body Make is
end loop; end loop;
for Index in 1 .. Library_Projs.Last loop for Index in 1 .. Library_Projs.Last loop
if Library_Projs.Table (Index).Library_Kind = Static if
and then not Targparm.OpenVMS_On_Target Library_Projs.Table (Index).Extended_By = No_Project
then then
Linker_Switches.Increment_Last; if Library_Projs.Table (Index).Library_Kind = Static
Linker_Switches.Table (Linker_Switches.Last) := and then not Targparm.OpenVMS_On_Target
new String' then
(Get_Name_String Linker_Switches.Increment_Last;
(Library_Projs.Table Linker_Switches.Table (Linker_Switches.Last) :=
(Index).Library_Dir.Display_Name) & new String'
"lib" & (Get_Name_String
Get_Name_String (Library_Projs.Table
(Library_Projs.Table (Index). Library_Name) & (Index).Library_Dir.Display_Name) &
"." & "lib" &
MLib.Tgt.Archive_Ext); Get_Name_String
(Library_Projs.Table
(Index).Library_Name) &
"." &
MLib.Tgt.Archive_Ext);
else else
-- Add the -L switch -- Add the -L switch
Linker_Switches.Increment_Last; Linker_Switches.Increment_Last;
Linker_Switches.Table (Linker_Switches.Last) := Linker_Switches.Table (Linker_Switches.Last) :=
new String'("-L" & new String'("-L" &
Get_Name_String Get_Name_String
(Library_Projs.Table (Index). (Library_Projs.Table (Index).
Library_Dir.Display_Name)); Library_Dir.Display_Name));
-- Add the -l switch -- Add the -l switch
Linker_Switches.Increment_Last; Linker_Switches.Increment_Last;
Linker_Switches.Table (Linker_Switches.Last) := Linker_Switches.Table (Linker_Switches.Last) :=
new String'("-l" & new String'("-l" &
Get_Name_String Get_Name_String
(Library_Projs.Table (Index). (Library_Projs.Table (Index).
Library_Name)); Library_Name));
end if;
end if; end if;
end loop; end loop;
end if; end if;
@ -6080,9 +6088,9 @@ package body Make is
Linker_Switches.Increment_Last; Linker_Switches.Increment_Last;
Linker_Switches.Table Linker_Switches.Table
(Linker_Switches.Last) := (Linker_Switches.Last) :=
new String' new String'
(Path_Option.all & (Path_Option.all &
Library_Paths.Table (Index).all); Library_Paths.Table (Index).all);
end loop; end loop;
-- One switch for the standard GNAT library dir -- One switch for the standard GNAT library dir

View File

@ -4271,8 +4271,6 @@ package body Prj.Nmsc is
exit; exit;
end if; end if;
end loop; end loop;
Project.Extends.Library := False;
end if; end if;
if Project.Library and then not Lib_Name.Default then if Project.Library and then not Lib_Name.Default then