aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/prj-nmsc.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2010-06-17 15:00:26 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2010-06-17 15:00:26 +0200
commit6f76a2575b040ada4b58e1aea71ce609bffa5c06 (patch)
tree6a2625010c5e52e487613f192efd5e4aa354c359 /gcc/ada/prj-nmsc.adb
parentcfab0c49a4c675d04dafd77b48069a482cf6701d (diff)
downloadgcc-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.adb163
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.