OSDN Git Service

2006-10-31 Javier Miranda <miranda@adacore.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / indepsw.ads
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT COMPILER COMPONENTS                         --
4 --                                                                          --
5 --                              I N D E P S W                               --
6 --                                                                          --
7 --                                 S p e c                                  --
8 --                                                                          --
9 --          Copyright (C) 2004-2005, 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 2,  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 COPYING.  If not, write --
19 -- to  the  Free Software Foundation,  51  Franklin  Street,  Fifth  Floor, --
20 -- Boston, MA 02110-1301, USA.                                              --
21 --                                                                          --
22 -- As a special exception,  if other files  instantiate  generics from this --
23 -- unit, or you link  this unit with other files  to produce an executable, --
24 -- this  unit  does not  by itself cause  the resulting  executable  to  be --
25 -- covered  by the  GNU  General  Public  License.  This exception does not --
26 -- however invalidate  any other reasons why  the executable file  might be --
27 -- covered by the  GNU Public License.                                      --
28 --                                                                          --
29 -- GNAT was originally developed  by the GNAT team at  New York University. --
30 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
31 --                                                                          --
32 ------------------------------------------------------------------------------
33
34 --  GNATLINK platform-independent switches
35
36 --  Used to convert GNAT switches to their platform-dependent switch
37 --  equivalent for the underlying linker.
38
39 with GNAT.OS_Lib; use GNAT.OS_Lib;
40
41 package Indepsw is
42
43    type Switch_Kind is
44    --  Independent switches currently supported
45
46      (Map_File);
47       --  Produce a map file. The path name of the map file to produce
48       --  is given as an argument.
49
50    procedure Convert
51      (Switch   : Switch_Kind;
52       Argument : String;
53       To       : out String_List_Access);
54    --  Convert Switch to the platform-dependent linker switch (with or without
55    --  additional arguments) To. Issue a warning if Switch is not supported
56    --  for the platform; in this case, To is set to null.
57
58    function Is_Supported (Switch : Switch_Kind) return Boolean;
59    --  Return True for each independent switch supported by the platform
60
61 private
62    --  Default warning messages when the switches are not supported by the
63    --  implementation. These are in the spec so that the platform specific
64    --  bodies do not need to redefine them.
65
66    Map_File_Not_Supported : aliased String :=
67      "the underlying linker does not allow the output of a map file";
68
69    No_Support_For : constant array (Switch_Kind) of String_Access :=
70                       (Map_File => Map_File_Not_Supported'Access);
71    --  All implementations of procedure Convert should include a case
72    --  statements with a "when others =>" choice that output the default
73    --  warning message:
74
75    --   case Switch is
76    --      when ... =>
77    --         ...
78    --      when others =>
79    --         Write_Str ("warning: ");
80    --         Write_Line (No_Support_For (Switch).all);
81    --         To := null;
82    --   end case;
83
84 end Indepsw;