OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [ada/] [prj-pars.adb] - Blame information for rev 706

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 706 jeremybenn
------------------------------------------------------------------------------
2
--                                                                          --
3
--                         GNAT COMPILER COMPONENTS                         --
4
--                                                                          --
5
--                             P R J . P A R S                              --
6
--                                                                          --
7
--                                 B o d y                                  --
8
--                                                                          --
9
--          Copyright (C) 2001-2011, Free Software Foundation, Inc.         --
10
--                                                                          --
11
-- GNAT is free software;  you can  redistribute it  and/or modify it under --
12
-- terms of the  GNU General Public License as published  by the Free Soft- --
13
-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
14
-- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15
-- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16
-- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
17
-- for  more details.  You should have  received  a copy of the GNU General --
18
-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
19
-- http://www.gnu.org/licenses for a complete copy of the license.          --
20
--                                                                          --
21
-- GNAT was originally developed  by the GNAT team at  New York University. --
22
-- Extensive contributions were provided by Ada Core Technologies Inc.      --
23
--                                                                          --
24
------------------------------------------------------------------------------
25
 
26
with Ada.Exceptions; use Ada.Exceptions;
27
with GNAT.Directory_Operations; use GNAT.Directory_Operations;
28
 
29
with Output;   use Output;
30
with Prj.Conf; use Prj.Conf;
31
with Prj.Err;  use Prj.Err;
32
with Prj.Part;
33
with Prj.Tree; use Prj.Tree;
34
with Sinput.P;
35
 
36
package body Prj.Pars is
37
 
38
   -----------
39
   -- Parse --
40
   -----------
41
 
42
   procedure Parse
43
     (In_Tree           : Project_Tree_Ref;
44
      Project           : out Project_Id;
45
      Project_File_Name : String;
46
      Packages_To_Check : String_List_Access;
47
      Reset_Tree        : Boolean := True;
48
      In_Node_Tree      : Prj.Tree.Project_Node_Tree_Ref := null;
49
      Env               : in out Prj.Tree.Environment)
50
   is
51
      Project_Node            : Project_Node_Id := Empty_Node;
52
      The_Project             : Project_Id      := No_Project;
53
      Success                 : Boolean         := True;
54
      Current_Dir             : constant String := Get_Current_Dir;
55
      Project_Node_Tree       : Prj.Tree.Project_Node_Tree_Ref := In_Node_Tree;
56
      Automatically_Generated : Boolean;
57
      Config_File_Path        : String_Access;
58
 
59
   begin
60
      if Project_Node_Tree = null then
61
         Project_Node_Tree := new Project_Node_Tree_Data;
62
         Prj.Tree.Initialize (Project_Node_Tree);
63
      end if;
64
 
65
      --  Parse the main project file into a tree
66
 
67
      Sinput.P.Reset_First;
68
      Prj.Part.Parse
69
        (In_Tree                => Project_Node_Tree,
70
         Project                => Project_Node,
71
         Project_File_Name      => Project_File_Name,
72
         Errout_Handling        => Prj.Part.Finalize_If_Error,
73
         Packages_To_Check      => Packages_To_Check,
74
         Current_Directory      => Current_Dir,
75
         Env                    => Env,
76
         Is_Config_File         => False);
77
 
78
      --  If there were no error, process the tree
79
 
80
      if Project_Node /= Empty_Node then
81
         begin
82
            --  No config file should be read from the disk for gnatmake.
83
            --  However, we will simulate one that only contains the
84
            --  default GNAT naming scheme.
85
 
86
            Process_Project_And_Apply_Config
87
              (Main_Project               => The_Project,
88
               User_Project_Node          => Project_Node,
89
               Config_File_Name           => "",
90
               Autoconf_Specified         => False,
91
               Project_Tree               => In_Tree,
92
               Project_Node_Tree          => Project_Node_Tree,
93
               Packages_To_Check          => null,
94
               Allow_Automatic_Generation => False,
95
               Automatically_Generated    => Automatically_Generated,
96
               Config_File_Path           => Config_File_Path,
97
               Env                        => Env,
98
               Normalized_Hostname        => "",
99
               On_Load_Config             =>
100
                 Add_Default_GNAT_Naming_Scheme'Access,
101
               Reset_Tree                 => Reset_Tree);
102
 
103
            Success := The_Project /= No_Project;
104
 
105
         exception
106
            when Invalid_Config =>
107
               Success := False;
108
         end;
109
 
110
         Prj.Err.Finalize;
111
 
112
         if not Success then
113
            The_Project := No_Project;
114
         end if;
115
      end if;
116
 
117
      Project := The_Project;
118
 
119
      --  ??? Should free the project_node_tree, no longer useful
120
 
121
   exception
122
      when X : others =>
123
 
124
         --  Internal error
125
 
126
         Write_Line (Exception_Information (X));
127
         Write_Str  ("Exception ");
128
         Write_Str  (Exception_Name (X));
129
         Write_Line (" raised, while processing project file");
130
         Project := No_Project;
131
   end Parse;
132
 
133
   -------------------
134
   -- Set_Verbosity --
135
   -------------------
136
 
137
   procedure Set_Verbosity (To : Verbosity) is
138
   begin
139
      Current_Verbosity := To;
140
   end Set_Verbosity;
141
 
142
end Prj.Pars;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.