home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / opt.ads < prev    next >
Text File  |  1996-09-28  |  15KB  |  322 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT COMPILER COMPONENTS                         --
  4. --                                                                          --
  5. --                                  O P T                                   --
  6. --                                                                          --
  7. --                                 S p e c                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.65 $                             --
  10. --                                                                          --
  11. --        Copyright (c) 1992,1993,1994,1995 NYU, All Rights Reserved        --
  12. --                                                                          --
  13. -- The GNAT library is free software; you can redistribute it and/or modify --
  14. -- it under terms of the GNU Library General Public License as published by --
  15. -- the Free Software  Foundation; either version 2, or (at your option) any --
  16. -- later version.  The GNAT library is distributed in the hope that it will --
  17. -- be useful, but WITHOUT ANY WARRANTY;  without even  the implied warranty --
  18. -- of MERCHANTABILITY  or  FITNESS FOR  A PARTICULAR PURPOSE.  See the  GNU --
  19. -- Library  General  Public  License for  more  details.  You  should  have --
  20. -- received  a copy of the GNU  Library  General Public License  along with --
  21. -- the GNAT library;  see the file  COPYING.LIB.  If not, write to the Free --
  22. -- Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.        --
  23. --                                                                          --
  24. ------------------------------------------------------------------------------
  25.  
  26. --  This package contains global switches set by the initialization
  27. --  routine from the command line and referenced throughout the compiler,
  28. --  the binder or gnatmake. The comments indicate which options are used by
  29. --  the compiler which are used by the binder or gnatmake, and which are
  30. --  common to these programs.
  31.  
  32. with Types;          use Types;
  33. with System.WCh_Con; use System.WCh_Con;
  34.  
  35. package Opt is
  36.  
  37.    --------------------------------------------
  38.    -- Switches Common to Compiler and Binder --
  39.    --------------------------------------------
  40.  
  41.    Brief_Output : Boolean := False;
  42.    --  Force brief error messages to standard error, even if verbose mode is
  43.    --  set (so that main error messages go to standard output).
  44.  
  45.    GNAT_Mode : Boolean := False;
  46.    --  True if compiling in GNAT system mode (-g switch set)
  47.  
  48.    Identifier_Character_Set : Character;
  49.    --  This variable indicates the character set to be used for identifiers.
  50.    --  The possible settings are:
  51.    --    '1'  Latin-1
  52.    --    '2'  Latin-2
  53.    --    '3'  Latin-3
  54.    --    '4'  Latin-4
  55.    --    'p'  PC (US, IBM page 437)
  56.    --    '8'  PC (European, IBM page 850)
  57.    --    'f'  Full upper set (all distinct)
  58.    --    'n'  No upper characters (Ada/83 rules)
  59.    --    'w'  Latin-1 plus wide characters allowed in identifiers
  60.    --
  61.    --  The setting affects the set of letters allowed in identifiers and the
  62.    --  upper/lower case equivalences. It does not affect the interpretation of
  63.    --  character and string literals, which are always stored using the actual
  64.    --  coding in the source program. This variable is initialized to the
  65.    --  default value appropriate to the system (in Osint.Initialize), and then
  66.    --  reset if a command line switch is used to change the setting.
  67.  
  68.    Maximum_Errors : Int := 9999;
  69.    --  Maximum number of errors before compilation is terminated
  70.  
  71.    Maximum_File_Name_Length : Int;
  72.    --  Maximum number of characters allowed in a file name, not counting the
  73.    --  extension, as set by the appropriate switch. If no switch is given,
  74.    --  then this value is initialized by Osint to the appropriate value.
  75.  
  76.    Suppress_Options : Suppress_Record;
  77.    --  Flags set True to suppress corresponding check, i.e. add an implicit
  78.    --  pragma Suppress at the outer level of each unit compiled. Note that
  79.    --  these suppress actions can be overridden by the use of the Unsuppress
  80.    --  pragma. This variable is initialized by Osint.Initialize.
  81.  
  82.    Verbose_Mode : Boolean := False;
  83.    --  Set to True to get verbose mode (full error message text and location
  84.    --  information sent to standard output, also header, copyright and summary)
  85.  
  86.    type Warning_Mode_Type is (Suppress, Normal, Treat_As_Error);
  87.    Warning_Mode : Warning_Mode_Type := Normal;
  88.    --  Controls treatment of warning messages. If set to Suppress, warning
  89.    --  messages are not generated at all. In Normal mode, they are generated
  90.    --  but do not count as errors. In Treat_As_Error mode, warning messages
  91.    --  are generated and are treated as errors.
  92.  
  93.    ----------------------------------------
  94.    -- Switches Used Only By The Compiler --
  95.    ----------------------------------------
  96.  
  97.    --  All switches can be used with GNAT1 or GNATF, but some of them are only
  98.    --  relevant to one or other of these programs as indicated in the comments.
  99.  
  100.    Ada_83_Switch : Boolean := False;
  101.    --  This is the value of the command line switch for Ada 83 mode. At the
  102.    --  start of compiling a unit, Ada_95 and Ada_83 are set from this value
  103.    --  but then they can be subsequently modified by pragmas Ada_83, Ada_95.
  104.  
  105.    Ada_95 : Boolean := True;
  106.    --  Set True if operating in Ada 95 mode
  107.    --  Set False if operating in Ada 83 mode
  108.  
  109.    Ada_83 : Boolean := False;
  110.    --  Set True if operating in Ada 83 mode
  111.    --  Set False if operating in Ada 95 mode
  112.  
  113.    All_Errors_Mode : Boolean := False;
  114.    --  Flag set to force display of multiple errors on a single line and
  115.    --  also repeated error messages for references to undefined identifiers.
  116.  
  117.    Assertions_Enabled : Boolean := False;
  118.    --  Enable assertions made using pragma Assert. Used only by GNATF, ignored
  119.    --  by GNAT1 (actually the pragmas are still processed, but if no code is
  120.    --  generated, they have no effect).
  121.  
  122.    type Distribution_Stub_Mode_Type is
  123.      (No_Stubs,
  124.       --  Normal mode, no generation/compilation of distribution stubs
  125.  
  126.       Compile_Receiver_Stub_Spec,
  127.       --  The unit being compiled is the body of the receiver stubs, and
  128.       --  the corresponding spec will be generated appropriately.
  129.  
  130.       Compile_Caller_Stub_Spec,
  131.       --  The unit being compiled is the body of the caller stubs, and
  132.       --  the corresponding spec will be generated appropriately
  133.  
  134.       Generate_Receiver_Stub_Body,
  135.       --  The unit being compiled is the RCI spec, and the compiler will
  136.       --  generate the body for the receiver stubs.
  137.  
  138.       Generate_Caller_Stub_Body);
  139.       --  The unit being compiled is the RCI spec, and the compiler will
  140.       --  generate the body for the caller stubs.
  141.  
  142.    Stub_Mode : Distribution_Stub_Mode_Type := No_Stubs;
  143.    --  This enumeration variable indicates the five states of distribution
  144.    --  annex stub generation/compilation.
  145.  
  146.    Full_List : Boolean := False;
  147.    --  Set True to generate full source listing with embedded errors
  148.  
  149.    Immediate_Errors : Boolean := False;
  150.    --  If set to True, then error messages are output as soon as they are
  151.    --  detected (useful for navigating around compiler error situations)
  152.  
  153.    Inline_Active : Boolean := False;
  154.    --  Set True to activate pragma Inline processing across modules. Default
  155.    --  for now is not to inline across module boundaries.
  156.    --  Used by GNAT1, ignored by GNATF.
  157.  
  158.    List_Units : Boolean := False;
  159.    --  List units in the active lbrary
  160.  
  161.    type Mode_Type is (Check_Syntax, Check_Semantics, Generate_Code);
  162.    Operating_Mode : Mode_Type := Generate_Code;
  163.    --  Indicates the operating mode of the compiler. The default is generate
  164.    --  code, which runs the parser, semantics and backend. Switches can be
  165.    --  used to set syntax checking only mode, or syntax and semantics checking
  166.    --  only mode. Operating_Mode can also be modified as a result of detecting
  167.    --  errors during the compilation process. In particular if any error is
  168.    --  detected then this flag is reset from Generate_Code to Check_Semantics
  169.    --  after generating an error message. For GNATF, Generate_Code is treated
  170.    --  as equivalent to Check_Semantics.
  171.  
  172.    Software_Overflow_Checking : Boolean;
  173.    --  Set to True by Osint.Initialize if the target requires the software
  174.    --  approach to integer arithmetic overflow checking (i.e. the use of
  175.    --  double length arithmetic followed by a range check). Set to False
  176.    --  if the target implements hardware overflow checking. Used only by
  177.    --  GNAT1, not used by GNATF.
  178.  
  179.    Style_Check : Boolean := False;
  180.    --  Set True to perform style checks. Activates checks carried out
  181.    --  in package Style (see body of this package for details of checks)
  182.  
  183.    Tree_Output : Boolean := False;
  184.    --  Set True to generate output tree file
  185.  
  186.    Try_Semantics : Boolean := False;
  187.    --  Flag set to force attempt at semantic analysis, even if parser errors
  188.    --  occur. This will probably cause blowups at this stage in the game. On
  189.    --  the other hand, most such blowups will be caught cleanly and simply
  190.    --  say compilation abandoned.
  191.  
  192.    RM_Column_Check : Boolean := False;
  193.    --  Flag set to cause column alignment to be taken into account in
  194.    --  determining legality of various constructs, using the layout rules
  195.    --  specified in the RM.
  196.  
  197.    Wide_Character_Encoding_Method : WC_Encoding_Method := WCEM_None;
  198.    --  Method used for encoding wide characters in the source program. See
  199.    --  description of type in unit System.WCh_Con for a list of the methods
  200.    --  that are currently supported. The default mode (WCEM_None) prohibits
  201.    --  wide character encodings from appearing in the program completely.
  202.  
  203.    Upper_Half_Encoding : Boolean := False;
  204.    --  Normally set False, indicating that upper half ASCII characters are
  205.    --  used in the normal way to represent themselves. If the wide character
  206.    --  encoding method uses the upper bit for this encoding, then this flag
  207.    --  is set True, and upper half characters in the source indicate the
  208.    --  start of a wide character sequence.
  209.  
  210.    Xref_Analyze : Boolean := False;
  211.    --  This flag is used to indicate to semantic analyzer that the current
  212.    --  compilation is done for GNATF. So the expander mustn't be called.
  213.  
  214.    Xref_Flag_1 : Boolean := False;
  215.    --  Set to generate warning messages for unused with clauses. Used only
  216.    --  by GNATF, ignored by GNAT1.
  217.  
  218.    Xref_Flag_2 : Boolean := False;
  219.    --  Set to generate warning messages for unused entities (including
  220.    --  unused with clauses). Used only by GNATF, ignored by GNAT1.
  221.  
  222.    Xref_Flag_3 : Boolean := False;
  223.    --  Set to generate cross-reference file listing all references in the
  224.    --  compiled files (also generates warning messages described above).
  225.    --  Used only by GNATF, ignored by GNAT1.
  226.  
  227.    Xref_Flag_4 : Boolean := False;
  228.    --  Set to include in the reference list all informations about entities
  229.    --  declared in bodies if the corresponding spec declares inlined
  230.    --  subprograms or generics. Includes effects of Xref_Flag_1,2,3).
  231.    --  Used only by GNATF, ignored by GNAT1.
  232.  
  233.    Xref_Flag_5 : Boolean := False;
  234.    --  Set to include all information in cross-reference listing.
  235.    --  (includes effects of Xref_Flag_1,2,3 described above). Used
  236.    --  only by GNATF, ignored by GNAT1.
  237.  
  238.    Xref_Flag_6 : Boolean := False;
  239.    --  Same thing as Xef_Flag_5 except that a global xref file is generated
  240.  
  241.    Xref_Flag_9 : Boolean := False;
  242.    --  Set to generate a cross-reference listing of Ada 95 features used. This
  243.    --  listing is sorted by category and output to the standard output file.
  244.    --  Unlike other Xref flags, used by both GNAT1 and GNATF.
  245.  
  246.    Xref_Flag_B : Boolean := False;
  247.    --  If set, cross-reference file includes information on required interfaces
  248.    --  for library unit bodies. Used only by GNATF, ignored by GNAT1.
  249.  
  250.    Xref_Flag_S : Boolean := False;
  251.    --  If set, cross-reference file includes information on required interfaces
  252.    --  for library package specs. Used only by GNATF, ignored by GNAT1.
  253.  
  254.    --------------------------------------
  255.    -- Switches Used Only By The Binder --
  256.    --------------------------------------
  257.  
  258.    All_Sources : Boolean := False;
  259.    --  Set to True to require all source files to be present. This flag is
  260.    --  directly modified by gnatmake to affect the shared binder routines.
  261.  
  262.    Bind_Main_Program : Boolean := True;
  263.    --  Set to False if not binding main Ada program.
  264.  
  265.    Check_Only : Boolean := False;
  266.    --  Set to True to do checks only, no output of binder file.
  267.  
  268.    Check_Source_Files : Boolean := True;
  269.    --  Set to True to enable consistency checking for any source files that
  270.    --  are present (i.e. date must match the date in the library info file).
  271.    --  Set to False for object file consistency check only. This flag is
  272.    --  directly modified by gnatmake, to affect the shared binder routines.
  273.  
  274.    Elab_Dependency_Output : Boolean := False;
  275.    --  Set to True to output complete list of elaboration constraints
  276.  
  277.    Elab_Order_Output : Boolean := False;
  278.    --  Set to True to output chosen elaboration order
  279.  
  280.    Ignore_Time_Stamp_Errors : Boolean := False;
  281.    --  Ignore time stamp mismatch errors (treat as warnings only)
  282.  
  283.    Output_Filename_Present : Boolean := False;
  284.    --  Set to True when the output C filename is given with option -o
  285.  
  286.    ------------------------------------
  287.    -- Switches Used Only By Gnatmake --
  288.    ------------------------------------
  289.  
  290.    Check_Internal_Files : Boolean := False;
  291.    --  Set to True to check GNAT internal files during the make process.
  292.  
  293.    Compile_Only : Boolean := False;
  294.    --  Set to True to skip bind and link step.
  295.  
  296.    Force_Compilations : Boolean := False;
  297.    --  Set to force recompilations even when the objects are up-to-date.
  298.  
  299.    Dont_Execute : Boolean := False;
  300.    --  Set to True if no actual compilations should be undertaken.
  301.  
  302.    Quiet_Output : Boolean := False;
  303.    --  Set to True if the list of compilation commands should not be output.
  304.  
  305.    Smart_Compilations : Boolean := False;
  306.    --  Set to True if smart recompilations requested.
  307.  
  308.    Generate_Debug : Boolean := False;
  309.    --  Set to True if the -g switch has to be set for gcc and gnatbl
  310.  
  311.    -----------------------
  312.    -- Tree I/O Routines --
  313.    -----------------------
  314.  
  315.    procedure Tree_Read;
  316.    --  Reads switch settings from current tree file using Tree_Read
  317.  
  318.    procedure Tree_Write;
  319.    --  Writes out switch settings to current tree file using Tree_Write
  320.  
  321. end Opt;
  322.