When a default config project file (for example default.cgpr in
.../share/gpr) exists, gnatmake was parsing it, and would fail if, for
example, Default_Language was not declared.
This patch ensures that an existing config project file is never taken
into account by gnatmake.
The test is to invoke gnatmake with an empty config project file
default.cgpr in the project directory: gnatmake should not fail because
of the presence of this empty config project file.

Tested on x86_64-pc-linux-gnu, committed on trunk

2011-08-02  Vincent Celier  <cel...@adacore.com>

        * prj-conf.adb (Get_Or_Create_Configuration_File): If On_Load_Config is
        not null, call it to create the in memory config project file without
        parsing an existing default config project file.

Index: prj-conf.adb
===================================================================
--- prj-conf.adb        (revision 177054)
+++ prj-conf.adb        (working copy)
@@ -1107,7 +1107,12 @@
          Write_Line (Config_File_Path.all);
       end if;
 
-      if Config_File_Path /= null then
+      if On_Load_Config /= null then
+         On_Load_Config
+           (Config_File       => Config_Project_Node,
+            Project_Node_Tree => Project_Node_Tree);
+
+      elsif Config_File_Path /= null then
          Prj.Part.Parse
            (In_Tree                => Project_Node_Tree,
             Project                => Config_Project_Node,
@@ -1119,16 +1124,9 @@
             Flags                  => Flags,
             Target_Name            => Target_Name);
       else
-         --  Maybe the user will want to create his own configuration file
          Config_Project_Node := Empty_Node;
       end if;
 
-      if On_Load_Config /= null then
-         On_Load_Config
-           (Config_File       => Config_Project_Node,
-            Project_Node_Tree => Project_Node_Tree);
-      end if;
-
       if Config_Project_Node /= Empty_Node then
          Prj.Proc.Process_Project_Tree_Phase_1
            (In_Tree                => Project_Tree,

Reply via email to