diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-06-17 15:00:26 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-06-17 15:00:26 +0200 |
commit | 6f76a2575b040ada4b58e1aea71ce609bffa5c06 (patch) | |
tree | 6a2625010c5e52e487613f192efd5e4aa354c359 /gcc/ada/prj-nmsc.adb | |
parent | cfab0c49a4c675d04dafd77b48069a482cf6701d (diff) | |
download | gcc-6f76a2575b040ada4b58e1aea71ce609bffa5c06.zip gcc-6f76a2575b040ada4b58e1aea71ce609bffa5c06.tar.gz gcc-6f76a2575b040ada4b58e1aea71ce609bffa5c06.tar.bz2 |
[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
Diffstat (limited to 'gcc/ada/prj-nmsc.adb')
-rw-r--r-- | gcc/ada/prj-nmsc.adb | 163 |
1 files changed, 84 insertions, 79 deletions
diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb index 7dc8ad3..ea3ae29 100644 --- a/gcc/ada/prj-nmsc.adb +++ b/gcc/ada/prj-nmsc.adb @@ -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; - - 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 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 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 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 Pid.Project /= Project then - Dirs_Id := Pid.Project.Source_Dirs; + if OK then - Dir_Loop : while Dirs_Id /= Nil_String loop - Dir_Elem := - Data.Tree.String_Elements.Table (Dirs_Id); - Dirs_Id := Dir_Elem.Next; + -- The library directory cannot be the same as a + -- source directory of another project either. - 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; + Pid := Data.Tree.Projects; + Project_Loop : loop + exit Project_Loop when Pid = null; - 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; + 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; + end if; - Pid := Pid.Next; - end loop Project_Loop; - end if; + Pid := Pid.Next; + end loop Project_Loop; + end if; - if not OK then - Project.Library_Dir := No_Path_Information; + if not OK then + Project.Library_Dir := No_Path_Information; - elsif Current_Verbosity = High then + elsif Current_Verbosity = High then - -- Display the Library directory in high verbosity + -- Display the Library directory in high verbosity - Write_Attr - ("Library directory", - Get_Name_String (Project.Library_Dir.Display_Name)); - end if; - end; + 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. |