diff options
author | Emmanuel Briot <briot@adacore.com> | 2009-08-17 11:42:19 +0200 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2009-08-17 11:42:19 +0200 |
commit | 48eff283138708a8be3d3ed2ad20d34f875abbb8 (patch) | |
tree | 4728ff516530c2b8bab54862de22026b6598e1e5 /gcc | |
parent | 88eb6e62fcba2cb0c92194b4a3dbb29c4385ae75 (diff) | |
download | gcc-48eff283138708a8be3d3ed2ad20d34f875abbb8.zip gcc-48eff283138708a8be3d3ed2ad20d34f875abbb8.tar.gz gcc-48eff283138708a8be3d3ed2ad20d34f875abbb8.tar.bz2 |
2009-08-17 Emmanuel Briot <briot@adacore.com>
* prj-part.adb, prj.adb, prj.ads, prj-nmsc.adb, prj-conf.adb
(Processing_Flags.Require_Obj_Dirs): new field, which controls whether
object directories must be present. In the case of gprclean at least,
these are optional (if they do not exist there is nothing to clean)
From-SVN: r150827
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/prj-conf.adb | 14 | ||||
-rw-r--r-- | gcc/ada/prj-nmsc.adb | 19 | ||||
-rw-r--r-- | gcc/ada/prj-part.adb | 4 | ||||
-rw-r--r-- | gcc/ada/prj.adb | 7 | ||||
-rw-r--r-- | gcc/ada/prj.ads | 25 |
5 files changed, 58 insertions, 11 deletions
diff --git a/gcc/ada/prj-conf.adb b/gcc/ada/prj-conf.adb index 9258cd4..879178d 100644 --- a/gcc/ada/prj-conf.adb +++ b/gcc/ada/prj-conf.adb @@ -29,6 +29,7 @@ with Makeutl; use Makeutl; with MLib.Tgt; with Opt; use Opt; with Output; use Output; +with Prj.Err; with Prj.Part; with Prj.PP; with Prj.Proc; use Prj.Proc; @@ -722,8 +723,17 @@ package body Prj.Conf is end if; if not Is_Directory (Obj_Dir) then - raise Invalid_Config - with "object directory " & Obj_Dir & " does not exist"; + case Flags.Require_Obj_Dirs is + when Error => + raise Invalid_Config + with "object directory " & Obj_Dir & " does not exist"; + when Warning => + Prj.Err.Error_Msg + (Flags, + "?object directory " & Obj_Dir & " does not exist"); + when Silent => + null; + end case; end if; -- Invoke gprconfig diff --git a/gcc/ada/prj-nmsc.adb b/gcc/ada/prj-nmsc.adb index 75e4c6e..1a03718 100644 --- a/gcc/ada/prj-nmsc.adb +++ b/gcc/ada/prj-nmsc.adb @@ -5148,10 +5148,21 @@ package body Prj.Nmsc is Err_Vars.Error_Msg_File_1 := File_Name_Type (Object_Dir.Value); - Error_Msg - (Data.Flags, - "object directory { not found", - Project.Location, Project); + + case Data.Flags.Require_Obj_Dirs is + when Error => + Error_Msg + (Data.Flags, + "object directory { not found", + Project.Location, Project); + when Warning => + Error_Msg + (Data.Flags, + "?object directory { not found", + Project.Location, Project); + when Silent => + null; + end case; end if; end if; diff --git a/gcc/ada/prj-part.adb b/gcc/ada/prj-part.adb index 8a0f6a5..84e3f6d 100644 --- a/gcc/ada/prj-part.adb +++ b/gcc/ada/prj-part.adb @@ -583,6 +583,10 @@ package body Prj.Part is if No (Project) or else Always_Errout_Finalize then Prj.Err.Finalize; + + -- Reinitialize to avoid duplicate warnings later on + + Prj.Err.Initialize; end if; end; diff --git a/gcc/ada/prj.adb b/gcc/ada/prj.adb index 2ad7903..2bed1a8 100644 --- a/gcc/ada/prj.adb +++ b/gcc/ada/prj.adb @@ -1189,7 +1189,9 @@ package body Prj is Require_Sources_Other_Lang : Boolean := True; Allow_Duplicate_Basenames : Boolean := True; Compiler_Driver_Mandatory : Boolean := False; - Error_On_Unknown_Language : Boolean := True) return Processing_Flags + Error_On_Unknown_Language : Boolean := True; + Require_Obj_Dirs : Error_Warning := Error) + return Processing_Flags is begin return Processing_Flags' @@ -1198,7 +1200,8 @@ package body Prj is Require_Sources_Other_Lang => Require_Sources_Other_Lang, Allow_Duplicate_Basenames => Allow_Duplicate_Basenames, Error_On_Unknown_Language => Error_On_Unknown_Language, - Compiler_Driver_Mandatory => Compiler_Driver_Mandatory); + Compiler_Driver_Mandatory => Compiler_Driver_Mandatory, + Require_Obj_Dirs => Require_Obj_Dirs); end Create_Flags; begin diff --git a/gcc/ada/prj.ads b/gcc/ada/prj.ads index 8f95c08..76eb59a 100644 --- a/gcc/ada/prj.ads +++ b/gcc/ada/prj.ads @@ -1386,7 +1386,9 @@ package Prj is Require_Sources_Other_Lang : Boolean := True; Allow_Duplicate_Basenames : Boolean := True; Compiler_Driver_Mandatory : Boolean := False; - Error_On_Unknown_Language : Boolean := True) return Processing_Flags; + Error_On_Unknown_Language : Boolean := True; + Require_Obj_Dirs : Error_Warning := Error) + return Processing_Flags; -- Function used to create Processing_Flags structure -- -- If Allow_Duplicate_Basenames, then files with the same base names are @@ -1410,8 +1412,13 @@ package Prj is -- -- If Error_On_Unknown_Language is true, an error is displayed if some of -- the source files listed in the project do not match any naming scheme + -- + -- If Require_Obj_Dirs is true, then all object directories must exist + -- (possibly after they have been created automatically if the appropriate + -- switches were specified), or an error is raised. Gprbuild_Flags : constant Processing_Flags; + Gprclean_Flags : constant Processing_Flags; Gnatmake_Flags : constant Processing_Flags; -- Flags used by the various tools. They all display the error messages -- through Prj.Err. @@ -1516,6 +1523,7 @@ private Allow_Duplicate_Basenames : Boolean; Compiler_Driver_Mandatory : Boolean; Error_On_Unknown_Language : Boolean; + Require_Obj_Dirs : Error_Warning; end record; Gprbuild_Flags : constant Processing_Flags := @@ -1524,7 +1532,17 @@ private Require_Sources_Other_Lang => True, Allow_Duplicate_Basenames => False, Compiler_Driver_Mandatory => True, - Error_On_Unknown_Language => True); + Error_On_Unknown_Language => True, + Require_Obj_Dirs => Error); + + Gprclean_Flags : constant Processing_Flags := + (Report_Error => null, + When_No_Sources => Warning, + Require_Sources_Other_Lang => True, + Allow_Duplicate_Basenames => False, + Compiler_Driver_Mandatory => True, + Error_On_Unknown_Language => True, + Require_Obj_Dirs => Warning); Gnatmake_Flags : constant Processing_Flags := (Report_Error => null, @@ -1532,6 +1550,7 @@ private Require_Sources_Other_Lang => False, Allow_Duplicate_Basenames => False, Compiler_Driver_Mandatory => False, - Error_On_Unknown_Language => False); + Error_On_Unknown_Language => False, + Require_Obj_Dirs => Error); end Prj; |