[multiple changes]
2010-06-17 Ed Schonberg <schonberg@adacore.com> * exp_ch6.adb (Expand_Call): Do not expand a call to an internal protected operation if the subprogram has been eliminated. 2010-06-17 Vincent Celier <celier@adacore.com> * prj-nmsc.adb (Check_Library_Attributes): Allow the different directories associated with a library to be any directory when the library project is externally built. 2010-06-17 Vincent Celier <celier@adacore.com> * make.adb (Check): If switch -m is used, deallocate the memory that may be allocated when computing the checksum. From-SVN: r160907
This commit is contained in:
parent
cfab0c49a4
commit
6f76a2575b
@ -1,3 +1,19 @@
|
||||
2010-06-17 Ed Schonberg <schonberg@adacore.com>
|
||||
|
||||
* exp_ch6.adb (Expand_Call): Do not expand a call to an internal
|
||||
protected operation if the subprogram has been eliminated.
|
||||
|
||||
2010-06-17 Vincent Celier <celier@adacore.com>
|
||||
|
||||
* prj-nmsc.adb (Check_Library_Attributes): Allow the different
|
||||
directories associated with a library to be any directory when the
|
||||
library project is externally built.
|
||||
|
||||
2010-06-17 Vincent Celier <celier@adacore.com>
|
||||
|
||||
* make.adb (Check): If switch -m is used, deallocate the memory that
|
||||
may be allocated when computing the checksum.
|
||||
|
||||
2010-06-17 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* g-socthi-mingw.adb (C_Recvmsg): Add 'use type' clause for C.size_t;
|
||||
|
@ -3095,12 +3095,14 @@ package body Exp_Ch6 is
|
||||
-- In Ada 2005, this may be an indirect call to an access parameter that
|
||||
-- is an access_to_subprogram. In that case the anonymous type has a
|
||||
-- scope that is a protected operation, but the call is a regular one.
|
||||
-- In either case do not expand call if subprogram is eliminated.
|
||||
|
||||
Scop := Scope (Subp);
|
||||
|
||||
if Nkind (N) /= N_Entry_Call_Statement
|
||||
and then Is_Protected_Type (Scop)
|
||||
and then Ekind (Subp) /= E_Subprogram_Type
|
||||
and then not Is_Eliminated (Subp)
|
||||
then
|
||||
-- If the call is an internal one, it is rewritten as a call to the
|
||||
-- corresponding unprotected subprogram.
|
||||
|
@ -1785,6 +1785,13 @@ package body Make is
|
||||
|
||||
Modified_Source := Time_Stamp_Mismatch (ALI, Read_Only);
|
||||
|
||||
-- To avoid using too much memory when switch -m is used, free the
|
||||
-- memory allocated for the source file when computing the checksum.
|
||||
|
||||
if Minimal_Recompilation then
|
||||
Sinput.P.Clear_Source_File_Table;
|
||||
end if;
|
||||
|
||||
if Modified_Source /= No_File then
|
||||
ALI := No_ALI_Id;
|
||||
|
||||
|
@ -3631,99 +3631,103 @@ package body Prj.Nmsc is
|
||||
"library directory { does not exist",
|
||||
Lib_Dir.Location, Project);
|
||||
|
||||
elsif not Project.Externally_Built then
|
||||
|
||||
-- The library directory cannot be the same as the Object
|
||||
-- directory.
|
||||
|
||||
elsif Project.Library_Dir.Name = Project.Object_Directory.Name then
|
||||
Error_Msg
|
||||
(Data.Flags,
|
||||
"library directory cannot be the same " &
|
||||
"as object directory",
|
||||
Lib_Dir.Location, Project);
|
||||
Project.Library_Dir := No_Path_Information;
|
||||
if Project.Library_Dir.Name = Project.Object_Directory.Name then
|
||||
Error_Msg
|
||||
(Data.Flags,
|
||||
"library directory cannot be the same " &
|
||||
"as object directory",
|
||||
Lib_Dir.Location, Project);
|
||||
Project.Library_Dir := No_Path_Information;
|
||||
|
||||
else
|
||||
declare
|
||||
OK : Boolean := True;
|
||||
Dirs_Id : String_List_Id;
|
||||
Dir_Elem : String_Element;
|
||||
Pid : Project_List;
|
||||
|
||||
begin
|
||||
-- The library directory cannot be the same as a source
|
||||
-- directory of the current project.
|
||||
|
||||
Dirs_Id := Project.Source_Dirs;
|
||||
while Dirs_Id /= Nil_String loop
|
||||
Dir_Elem := Data.Tree.String_Elements.Table (Dirs_Id);
|
||||
Dirs_Id := Dir_Elem.Next;
|
||||
|
||||
if Project.Library_Dir.Name =
|
||||
Path_Name_Type (Dir_Elem.Value)
|
||||
then
|
||||
Err_Vars.Error_Msg_File_1 :=
|
||||
File_Name_Type (Dir_Elem.Value);
|
||||
Error_Msg
|
||||
(Data.Flags,
|
||||
"library directory cannot be the same " &
|
||||
"as source directory {",
|
||||
Lib_Dir.Location, Project);
|
||||
OK := False;
|
||||
exit;
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
if OK then
|
||||
else
|
||||
declare
|
||||
OK : Boolean := True;
|
||||
Dirs_Id : String_List_Id;
|
||||
Dir_Elem : String_Element;
|
||||
Pid : Project_List;
|
||||
|
||||
begin
|
||||
-- The library directory cannot be the same as a source
|
||||
-- directory of another project either.
|
||||
-- directory of the current project.
|
||||
|
||||
Pid := Data.Tree.Projects;
|
||||
Project_Loop : loop
|
||||
exit Project_Loop when Pid = null;
|
||||
Dirs_Id := Project.Source_Dirs;
|
||||
while Dirs_Id /= Nil_String loop
|
||||
Dir_Elem := Data.Tree.String_Elements.Table (Dirs_Id);
|
||||
Dirs_Id := Dir_Elem.Next;
|
||||
|
||||
if Pid.Project /= Project then
|
||||
Dirs_Id := Pid.Project.Source_Dirs;
|
||||
|
||||
Dir_Loop : while Dirs_Id /= Nil_String loop
|
||||
Dir_Elem :=
|
||||
Data.Tree.String_Elements.Table (Dirs_Id);
|
||||
Dirs_Id := Dir_Elem.Next;
|
||||
|
||||
if Project.Library_Dir.Name =
|
||||
Path_Name_Type (Dir_Elem.Value)
|
||||
then
|
||||
Err_Vars.Error_Msg_File_1 :=
|
||||
File_Name_Type (Dir_Elem.Value);
|
||||
Err_Vars.Error_Msg_Name_1 := Pid.Project.Name;
|
||||
|
||||
Error_Msg
|
||||
(Data.Flags,
|
||||
"library directory cannot be the same " &
|
||||
"as source directory { of project %%",
|
||||
Lib_Dir.Location, Project);
|
||||
OK := False;
|
||||
exit Project_Loop;
|
||||
end if;
|
||||
end loop Dir_Loop;
|
||||
if Project.Library_Dir.Name =
|
||||
Path_Name_Type (Dir_Elem.Value)
|
||||
then
|
||||
Err_Vars.Error_Msg_File_1 :=
|
||||
File_Name_Type (Dir_Elem.Value);
|
||||
Error_Msg
|
||||
(Data.Flags,
|
||||
"library directory cannot be the same " &
|
||||
"as source directory {",
|
||||
Lib_Dir.Location, Project);
|
||||
OK := False;
|
||||
exit;
|
||||
end if;
|
||||
end loop;
|
||||
|
||||
Pid := Pid.Next;
|
||||
end loop Project_Loop;
|
||||
end if;
|
||||
if OK then
|
||||
|
||||
if not OK then
|
||||
Project.Library_Dir := No_Path_Information;
|
||||
-- The library directory cannot be the same as a
|
||||
-- source directory of another project either.
|
||||
|
||||
elsif Current_Verbosity = High then
|
||||
Pid := Data.Tree.Projects;
|
||||
Project_Loop : loop
|
||||
exit Project_Loop when Pid = null;
|
||||
|
||||
-- Display the Library directory in high verbosity
|
||||
if Pid.Project /= Project then
|
||||
Dirs_Id := Pid.Project.Source_Dirs;
|
||||
|
||||
Write_Attr
|
||||
("Library directory",
|
||||
Get_Name_String (Project.Library_Dir.Display_Name));
|
||||
end if;
|
||||
end;
|
||||
Dir_Loop : while Dirs_Id /= Nil_String loop
|
||||
Dir_Elem :=
|
||||
Data.Tree.String_Elements.Table (Dirs_Id);
|
||||
Dirs_Id := Dir_Elem.Next;
|
||||
|
||||
if Project.Library_Dir.Name =
|
||||
Path_Name_Type (Dir_Elem.Value)
|
||||
then
|
||||
Err_Vars.Error_Msg_File_1 :=
|
||||
File_Name_Type (Dir_Elem.Value);
|
||||
Err_Vars.Error_Msg_Name_1 :=
|
||||
Pid.Project.Name;
|
||||
|
||||
Error_Msg
|
||||
(Data.Flags,
|
||||
"library directory cannot be the same" &
|
||||
" as source directory { of project %%",
|
||||
Lib_Dir.Location, Project);
|
||||
OK := False;
|
||||
exit Project_Loop;
|
||||
end if;
|
||||
end loop Dir_Loop;
|
||||
end if;
|
||||
|
||||
Pid := Pid.Next;
|
||||
end loop Project_Loop;
|
||||
end if;
|
||||
|
||||
if not OK then
|
||||
Project.Library_Dir := No_Path_Information;
|
||||
|
||||
elsif Current_Verbosity = High then
|
||||
|
||||
-- Display the Library directory in high verbosity
|
||||
|
||||
Write_Attr
|
||||
("Library directory",
|
||||
Get_Name_String (Project.Library_Dir.Display_Name));
|
||||
end if;
|
||||
end;
|
||||
end if;
|
||||
end if;
|
||||
end if;
|
||||
|
||||
@ -3811,8 +3815,9 @@ package body Prj.Nmsc is
|
||||
Lib_ALI_Dir.Location, Project);
|
||||
end if;
|
||||
|
||||
if Project.Library_ALI_Dir /= Project.Library_Dir then
|
||||
|
||||
if (not Project.Externally_Built) and then
|
||||
Project.Library_ALI_Dir /= Project.Library_Dir
|
||||
then
|
||||
-- The library ALI directory cannot be the same as the
|
||||
-- Object directory.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user