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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [ada/] [vms_data.ads] - Blame information for rev 826

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 281 jeremybenn
------------------------------------------------------------------------------
2
--                                                                          --
3
--                         GNAT COMPILER COMPONENTS                         --
4
--                                                                          --
5
--                             V M S _ D A T A                              --
6
--                                                                          --
7
--                                 S p e c                                  --
8
--                                                                          --
9
--          Copyright (C) 1996-2009, 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
--  This package contains, for each of the command of the GNAT driver, one
27
--  constant array; each component of this array is a string that defines,
28
--  in coded form as explained below, the conversion of a VMS qualifier of the
29
--  command to the corresponding switch of the GNAT tool corresponding to the
30
--  command.
31
 
32
--  This package is used by the GNAT driver to invokes the GNAT tools with the
33
--  switches corresponding to the VMS qualifier and by the Project Manager to
34
--  convert VMS qualifiers in project files to their corresponding switch
35
--  values.
36
 
37
--  This package is also an input to the tool that generates the VMS GNAT
38
--  help information automatically.
39
 
40
--  NOTE: the format of this package must follow the following rules, so that
41
--        the VMS GNAT help tool works properly:
42
 
43
--    - Each command zone (where the eventual qualifiers are declared) must
44
--      begin with a boxed comment of the form:
45
 
46
--      ---------------------------------
47
--      -- Switches for GNAT <COMMAND> --
48
--      ---------------------------------
49
 
50
--      where <COMMAND> is the name of a GNAT command in capital letters, for
51
--      example BIND, COMPILE, XREF, ...
52
 
53
--    - each qualifier declaration must be followed either by
54
--         - a comment starting with "--  NODOC", to indicate that there is
55
--           no documentation for this qualifier, or
56
--         - a contiguous sequence of comments that constitute the
57
--           documentation of the qualifier.
58
 
59
--    - each command zone ends with the declaration of the constant array
60
--      for the command, of the form:
61
 
62
--      <Command>__Switches : aliased constant Switches :=
63
 
64
package VMS_Data is
65
 
66
   ----------------
67
   -- QUALIFIERS --
68
   ----------------
69
 
70
   --  The syntax of a qualifier declaration is as follows:
71
 
72
   --    SWITCH_STRING ::= "/ command-qualifier-name TRANSLATION"
73
 
74
   --    TRANSLATION ::=
75
   --      DIRECT_TRANSLATION
76
   --    | DIRECTORIES_TRANSLATION
77
   --    | FILE_TRANSLATION
78
   --    | NO_SPACE_FILE_TRANSL
79
   --    | NUMERIC_TRANSLATION
80
   --    | STRING_TRANSLATION
81
   --    | OPTIONS_TRANSLATION
82
   --    | COMMANDS_TRANSLATION
83
   --    | ALPHANUMPLUS_TRANSLATION
84
   --    | OTHER_TRANSLATION
85
 
86
   --    DIRECT_TRANSLATION       ::= space UNIX_SWITCHES
87
   --    DIRECTORIES_TRANSLATION  ::= =* UNIX_SWITCH *
88
   --    DIRECTORY_TRANSLATION    ::= =% UNIX_SWITCH %
89
   --    FILE_TRANSLATION         ::= =@ UNIX_SWITCH @
90
   --    NO_SPACE_FILE_TRANSL     ::= =< UNIX_SWITCH >
91
   --    NUMERIC_TRANSLATION      ::= =# UNIX_SWITCH # | # number #
92
   --    STRING_TRANSLATION       ::= =" UNIX_SWITCH "
93
   --    OPTIONS_TRANSLATION      ::= =OPTION {space OPTION}
94
   --    COMMANDS_TRANSLATION     ::= =? ARGS space command-name
95
   --    ALPHANUMPLUS_TRANSLATION ::= =| UNIX_SWITCH |
96
 
97
   --    UNIX_SWITCHES ::= UNIX_SWITCH {, UNIX_SWITCH}
98
 
99
   --    UNIX_SWITCH ::= unix-switch-string | !unix-switch-string | `string'
100
 
101
   --    OPTION ::= option-name space UNIX_SWITCHES
102
 
103
   --    ARGS ::= -cargs | -bargs | -largs
104
 
105
   --  Here command-qual is the name of the switch recognized by the GNATCmd.
106
   --  This is always given in upper case in the templates, although in the
107
   --  actual commands, either upper or lower case is allowed.
108
 
109
   --  The unix-switch-string always starts with a minus, and has no commas
110
   --  or spaces in it. Case is significant in the unix switch string. If a
111
   --  unix switch string is preceded by the not sign (!) it means that the
112
   --  effect of the corresponding command qualifier is to remove any previous
113
   --  occurrence of the given switch in the command line.
114
 
115
   --  The DIRECTORIES_TRANSLATION format is used where a list of directories
116
   --  is given. This possible corresponding formats recognized by GNATCmd are
117
   --  as shown by the following example for the case of PATH
118
 
119
   --    PATH=direc
120
   --    PATH=(direc,direc,direc,direc)
121
 
122
   --  When more than one directory is present for the DIRECTORIES case, then
123
   --  multiple instances of the corresponding unix switch are generated,
124
   --  with the file name being substituted for the occurrence of *.
125
 
126
   --  The FILE_TRANSLATION format is similar except that only a single
127
   --  file is allowed, not a list of files, and only one unix switch is
128
   --  generated as a result.
129
 
130
   --  the NO_SPACE_FILE_TRANSL is similar to FILE_TRANSLATION, except that
131
   --  no space is inserted between the switch and the file name.
132
 
133
   --  The NUMERIC_TRANSLATION format is similar to the FILE_TRANSLATION case
134
   --  except that the parameter is a decimal integer in the range 0 to 999999.
135
 
136
   --  For the OPTIONS_TRANSLATION case, GNATCmd similarly permits one or
137
   --  more options to appear (although only in some cases does the use of
138
   --  multiple options make logical sense). For example, taking the
139
   --  case of ERRORS for GCC, the following are all allowed:
140
 
141
   --    /ERRORS=BRIEF
142
   --    /ERRORS=(FULL,VERBOSE)
143
   --    /ERRORS=(BRIEF IMMEDIATE)
144
 
145
   --  If no option is provided (e.g. just /ERRORS is written), then the
146
   --  first option in the list is the default option. For /ERRORS this
147
   --  is NORMAL, so /ERRORS with no option is equivalent to /ERRORS=NORMAL.
148
 
149
   --  The COMMANDS_TRANSLATION case is only used for gnatmake, to correspond
150
   --  to the use of -cargs, -bargs and -largs (the ARGS string as indicated
151
   --  is one of these three possibilities). The name given by COMMAND is the
152
   --  corresponding command name to be used to interpret the switches to be
153
   --  passed on. Switches of this type set modes, e.g. /COMPILER_QUALIFIERS
154
   --  sets the mode so that all subsequent switches, up to another switch
155
   --  with COMMANDS_TRANSLATION apply to the corresponding commands issued
156
   --  by the make utility. For example
157
 
158
   --    /COMPILER_QUALIFIERS /LIST /BINDER_QUALIFIERS /MAIN
159
   --    /COMPILER_QUALIFIERS /NOLIST /COMPILE_CHECKS=SYNTAX
160
 
161
   --  Clearly these switches must come at the end of the list of switches
162
   --  since all subsequent switches apply to an issued command.
163
 
164
   --  For the DIRECT_TRANSLATION case, an implicit additional qualifier
165
   --  declaration is created by prepending NO to the name of the qualifier,
166
   --  and then inverting the sense of the UNIX_SWITCHES string. For example,
167
   --  given the qualifier definition:
168
 
169
   --     "/LIST -gnatl"
170
 
171
   --  An implicit qualifier definition is created:
172
 
173
   --     "/NOLIST !-gnatl"
174
 
175
   --  In the case where, a ! is already present, inverting the sense of the
176
   --  switch means removing it.
177
 
178
   subtype S is String;
179
   --  A synonym to shorten the table
180
 
181
   type String_Ptr is access constant String;
182
   --  String pointer type used throughout
183
 
184
   type Switches is array (Natural range <>) of String_Ptr;
185
   --  Type used for array of switches
186
 
187
   type Switches_Ptr is access constant Switches;
188
 
189
   ----------------------------
190
   -- Switches for GNAT BIND --
191
   ----------------------------
192
 
193
   S_Bind_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
194
                                            "-aP*";
195
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
196
   --
197
   --   Add directories to the project search path.
198
 
199
   S_Bind_Bind    : aliased constant S := "/BIND_FILE="                    &
200
                                            "ADA "                         &
201
                                               "-A "                       &
202
                                            "C "                           &
203
                                               "-C";
204
   --        /BIND_FILE[=bind-file-option]
205
   --
206
   --   Specifies the language of the binder generated file.
207
   --
208
   --        ADA (D)    Binder file is Ada.
209
   --
210
   --        C          Binder file is 'C'.
211
 
212
   S_Bind_Build   : aliased constant S := "/BUILD_LIBRARY=|"               &
213
                                            "-L|";
214
   --        /BUILD_LIBRARY=xxx
215
   --
216
   --        Binds the units for library building. In this case the adainit and
217
   --        adafinal procedures are rename to xxxinit and xxxfinal. Implies
218
   --        /NOMAIN.
219
 
220
   S_Bind_Current : aliased constant S := "/CURRENT_DIRECTORY "            &
221
                                            "!-I-";
222
   --        /CURRENT_DIRECTORY (D)
223
   --        /NOCURRENT_DIRECTORY
224
   --
225
   --        Look for source, library or object files in the default directory.
226
 
227
   S_Bind_Debug   : aliased constant S := "/DEBUG="                        &
228
                                            "TRACEBACK "                   &
229
                                               "-g2 "                      &
230
                                            "ALL "                         &
231
                                               "-g3 "                      &
232
                                            "NONE "                        &
233
                                               "-g0 "                      &
234
                                            "SYMBOLS "                     &
235
                                               "-g1 "                      &
236
                                            "NOSYMBOLS "                   &
237
                                               "!-g1 "                     &
238
                                            "LINK "                        &
239
                                               "-g3 "                      &
240
                                            "NOTRACEBACK "                 &
241
                                               "!-g2";
242
   --        /DEBUG[=debug-level]
243
   --        /NODEBUG
244
   --
245
   --    Specify level of debugging information generated for the elaboration
246
   --    routine.  See corresponding qualifier for GNAT COMPILE.
247
 
248
   S_Bind_DebugX  : aliased constant S := "/NODEBUG "                      &
249
                                            "!-g";
250
   --  NODOC  (see /DEBUG)
251
 
252
   S_Bind_Elab    : aliased constant S := "/ELABORATION_DEPENDENCIES "     &
253
                                            "-e";
254
   --        /ELABORATION_DEPENDENCIES
255
   --        /NOELABORATION_DEPENDENCIES (D)
256
   --
257
   --   Output complete list of elaboration-order dependencies, showing the
258
   --   reason for each dependency. This output can be rather extensive but may
259
   --   be useful in diagnosing problems with elaboration order. The output is
260
   --   written to SYS$OUTPUT.
261
 
262
   S_Bind_Error   : aliased constant S := "/ERROR_LIMIT=#"                 &
263
                                            "-m#";
264
   --        /ERROR_LIMIT=nnn
265
   --
266
   --   Limit number of detected errors to nnn (1-999999).
267
 
268
   S_Bind_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
269
                                            "-X" & '"';
270
   --       /EXTERNAL_REFERENCE="name=val"
271
   --
272
   --   Specifies an external reference to the project manager. Useful only if
273
   --   /PROJECT_FILE is used.
274
   --
275
   --   Example:
276
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
277
 
278
   S_Bind_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
279
                                            "-eL";
280
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
281
   --        /FOLLOW_LINKS_FOR_FILES
282
   --
283
   --    Follow links when parsing project files
284
 
285
   S_Bind_Force   : aliased constant S := "/FORCE_ELAB_FLAGS "             &
286
                                            "-F";
287
   --        /NOFORCE_ELAB_FLAGS (D)
288
   --        /FORCE_ELAB_FLAGS
289
   --
290
   --    Force checking of elaboration Flags
291
 
292
   S_Bind_Help    : aliased constant S := "/HELP "                         &
293
                                            "-h";
294
   --        /HELP
295
   --
296
   --   Output usage information.
297
 
298
   S_Bind_Init    : aliased constant S := "/INITIALIZE_SCALARS="           &
299
                                            "INVALID "                     &
300
                                               "-Sin "                     &
301
                                            "LOW "                         &
302
                                               "-Slo "                     &
303
                                            "HIGH "                        &
304
                                               "-Shi";
305
   --        /INITIALIZE_SCALARS[=scalar-option]
306
   --
307
   --   Indicate how uninitialized scalar values for which a pragma
308
   --   Initialize_Scalars applies should be initialized.
309
   --   scalar-option may be one of the following:
310
   --
311
   --      INVALID (D)  Initialize with an invalid value.
312
   --      LOW          Initialize with the lowest valid value of the subtype.
313
   --      HIGH         Initialize with the highest valid value of the subtype.
314
 
315
   S_Bind_Leap    : aliased constant S := "/ENABLE_LEAP_SECONDS "          &
316
                                            "-y";
317
   --      /ENABLE_LEAP_SECONDS
318
   --      /NOENABLE_LEAP_SECONDS (D)
319
   --
320
   --   Enable leap seconds support in Ada.Calendar and its children.
321
 
322
   S_Bind_Library : aliased constant S := "/LIBRARY_SEARCH=*"              &
323
                                            "-aO*";
324
   --        /LIBRARY_SEARCH=(direc[,...])
325
   --
326
   --        When looking for library and object files look also in directories
327
   --        specified.
328
 
329
   S_Bind_Linker  : aliased constant S := "/LINKER_OPTION_LIST "           &
330
                                            "-K";
331
   --        /NOLINKER_OPTION_LIST (D)
332
   --        /LINKER_OPTION_LIST
333
   --
334
   --        Output linker options to SYS$OUTPUT.  Includes library search
335
   --        paths, contents of pragmas Ident and Linker_Options, and
336
   --        libraries added by GNAT BIND.
337
 
338
   S_Bind_Main    : aliased constant S := "/MAIN "                         &
339
                                            "!-n";
340
   --        /MAIN (D)
341
   --
342
   --   The main program is in Ada.
343
   --
344
   --        /NOMAIN
345
   --
346
   --   The main program is not in Ada.
347
 
348
   S_Bind_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
349
                                            "DEFAULT "                     &
350
                                               "-vP0 "                     &
351
                                            "MEDIUM "                      &
352
                                               "-vP1 "                     &
353
                                            "HIGH "                        &
354
                                               "-vP2";
355
   --        /MESSAGES_PROJECT_FILE[=messages-option]
356
   --
357
   --   Specifies the "verbosity" of the parsing of project files.
358
   --   messages-option may be one of the following:
359
   --
360
   --      DEFAULT (D)  No messages are output if there is no error or warning.
361
   --
362
   --      MEDIUM       A small number of messages are output.
363
   --
364
   --      HIGH         A great number of messages are output, most of them not
365
   --                   being useful for the user.
366
 
367
   S_Bind_Nostinc : aliased constant S := "/NOSTD_INCLUDES "               &
368
                                            "-nostdinc";
369
   --        /NOSTD_INCLUDES
370
   --
371
   --    Do not look for sources the in the system default directory.
372
 
373
   S_Bind_Nostlib : aliased constant S := "/NOSTD_LIBRARIES "              &
374
                                            "-nostdlib";
375
   --        /NOSTD_LIBRARIES
376
   --
377
   --    Do not look for library files in the system default directory.
378
 
379
   S_Bind_No_Time : aliased constant S := "/NO_TIME_STAMP_CHECK "          &
380
                                            "-t";
381
   --  NODOC (see /TIME_STAMP_CHECK)
382
 
383
   S_Bind_Object  : aliased constant S := "/OBJECT_LIST "                  &
384
                                            "-O";
385
   --        /NOOBJECT_LIST (D)
386
   --        /OBJECT_LIST
387
   --
388
   --    Output full names of all the object files that must be linker to
389
   --    provide the Ada component of the program. The output is written to
390
   --    SYS$OUTPUT.
391
 
392
   S_Bind_Order   : aliased constant S := "/ORDER_OF_ELABORATION "         &
393
                                            "-l";
394
   --        /NOORDER_OF_ELABORATION (D)
395
   --        /ORDER_OF_ELABORATION
396
   --
397
   --   Output chosen elaboration order. The output is written to SYS$OUTPUT.
398
 
399
   S_Bind_Output  : aliased constant S := "/OUTPUT=@"                      &
400
                                            "-o@";
401
   --        /OUTPUT=filename
402
   --
403
   --   File name to use for the program containing the elaboration code.
404
 
405
   S_Bind_OutputX : aliased constant S := "/NOOUTPUT "                     &
406
                                            "-c";
407
   --        /NOOUTPUT
408
   --
409
   --   Check only. Do not generate the binder output file.
410
   --
411
   --   In this mode the binder performs all error checks but does not generate
412
   --   an output file.
413
 
414
   S_Bind_Pess    : aliased constant S := "/PESSIMISTIC_ELABORATION "      &
415
                                            "-p";
416
   --        /PESSIMISTIC_ELABORATION
417
   --
418
   --   Causes the binder to choose a "pessimistic" elaboration order, i.e. one
419
   --   which is most likely to cause elaboration order problems. This can be
420
   --   useful in testing portable code to make sure that there are no missing
421
   --   elaborate pragmas.
422
 
423
   S_Bind_Project : aliased constant S := "/PROJECT_FILE=<"                &
424
                                            "-P>";
425
   --        /PROJECT_FILE=filename
426
   --
427
   --   Specifies the main project file to be used. The project files rooted
428
   --   at the main project file will be parsed before the invocation of the
429
   --   binder. The source and object directories to be searched will be
430
   --   communicated to the binder through logical names ADA_PRJ_INCLUDE_FILE
431
   --   and ADA_PRJ_OBJECTS_FILE.
432
 
433
   S_Bind_Read    : aliased constant S := "/READ_SOURCES="                 &
434
                                            "ALL "                         &
435
                                               "-s "                       &
436
                                            "NONE "                        &
437
                                               "-x "                       &
438
                                            "AVAILABLE "                   &
439
                                               "!-x,!-s";
440
   --        /READ_SOURCES[=(keyword[,...])]
441
   --        /NOREAD_SOURCES
442
   --
443
   --   The following keyword are accepted:
444
   --
445
   --      ALL (D)      Require source files to be present. In this mode, the
446
   --                   binder insists on being able to locate all source files
447
   --                   that are referenced and checks their consistency.  In
448
   --                   normal mode, if a source file cannot be located it is
449
   --                   simply ignored. If you specify the ALL keyword, a
450
   --                   missing source file is an error.
451
   --
452
   --      NONE         Exclude source files. In this mode, the binder only
453
   --                   checks that ALI files are consistent with one another.
454
   --                   source files are not accessed.  The binder runs faster
455
   --                   in this mode, and there is still a guarantee that the
456
   --                   resulting program is self-consistent.
457
   --
458
   --                   If a source file has been edited since it was last
459
   --                   compiled and you specify the NONE keyword, the binder
460
   --                   will not detect that the object file is out of date
461
   --                   with the source file.
462
   --
463
   --                   This is the same as specifying /NOREAD_SOURCES.
464
   --
465
   --      AVAILABLE    Check that object files are consistent with one
466
   --                   another and are consistent with any source files that
467
   --                   can be located.
468
 
469
   S_Bind_ReadX   : aliased constant S := "/NOREAD_SOURCES "               &
470
                                            "-x";
471
   --  NODOC (see /READ_SOURCES)
472
 
473
   S_Bind_Rename  : aliased constant S := "/RENAME_MAIN=<"                 &
474
                                            "-M>";
475
   --        /RENAME_MAIN=xxx
476
   --
477
   --   Renames the generated main program from main to xxx.
478
   --   This is useful in the case of some cross-building environments, where
479
   --   the actual main program is separate from the one generated
480
   --   by GNAT BIND.
481
 
482
   S_Bind_Report  : aliased constant S := "/REPORT_ERRORS="                &
483
                                            "VERBOSE "                     &
484
                                               "-v "                       &
485
                                            "BRIEF "                       &
486
                                               "-b "                       &
487
                                            "DEFAULT "                     &
488
                                               "!-b,!-v";
489
   --        /REPORT_ERRORS[=(keyword[,...])]
490
   --           VERBOSE (D)
491
   --           BRIEF
492
   --           DEFAULT
493
   --        /NOREPORT_ERRORS
494
   --
495
   --   With the DEFAULT keyword (which is not the default when the binder is
496
   --   run from GNAT BIND) or the /NOREPORT_ERRORS qualifier, brief error
497
   --   messages are generated to SYS$ERROR.  If the VERBOSE keyword is
498
   --   present, a header is written to SYS$OUTPUT and any error messages are
499
   --   directed to SYS$OUTPUT  All that is written to SYS$ERROR is a brief
500
   --   summary message.
501
   --
502
   --   If the BRIEF keyword is specified, the binder will generate brief error
503
   --   messages to SYS$ERROR even if verbose mode is specified. This is
504
   --   relevant only when used together with the VERBOSE keyword or /VERBOSE
505
   --   qualifier.
506
 
507
   S_Bind_ReportX : aliased constant S := "/NOREPORT_ERRORS "              &
508
                                            "!-b,!-v";
509
   --  NODOC (see /REPORT_ERRORS)
510
 
511
   S_Bind_Restr   : aliased constant S := "/RESTRICTION_LIST "             &
512
                                            "-r";
513
   --        /NORESTRICTION_LIST (D)
514
   --        /RESTRICTION_LIST
515
   --
516
   --   Generate list of pragma Restrictions that could be applied to the
517
   --   current unit. This is useful for code audit purposes, and also may be
518
   --   used to improve code generation in some cases.
519
 
520
   S_Bind_Return  : aliased constant S := "/RETURN_CODES="                 &
521
                                            "POSIX "                       &
522
                                               "!-X1 "                     &
523
                                            "VMS "                         &
524
                                               "-X1";
525
   --        /RETURN_CODES=POSIX (D)
526
   --        /RETURN_CODES=VMS
527
   --
528
   --   Specifies the style of default exit code returned. Must be used in
529
   --   conjunction with and match the Link qualifier with same name.
530
   --
531
   --        POSIX (D)   Return Posix success (0) by default.
532
   --
533
   --        VMS         Return VMS success (1) by default.
534
 
535
   S_Bind_RTS     : aliased constant S := "/RUNTIME_SYSTEM=|"              &
536
                                            "--RTS=|";
537
   --      /RUNTIME_SYSTEM=xxx
538
   --
539
   --    Binds against an alternate runtime system named xxx or RTS-xxx.
540
 
541
   S_Bind_Search  : aliased constant S := "/SEARCH=*"                      &
542
                                            "-I*";
543
   --        /SEARCH=(directory[,...])
544
   --
545
   --   When looking for source or object files also look in directories
546
   --   specified.
547
   --
548
   --   This is the same as specifying both /LIBRARY_SEARCH and /SOURCE_SEARCH
549
   --   for a directory.
550
 
551
   S_Bind_Shared  : aliased constant S := "/SHARED "                       &
552
                                            "-shared,!-static";
553
   --        /SHARED
554
   --        /NOSHARED
555
   --
556
   --    Link against a shared GNAT run time when available.
557
 
558
   S_Bind_Slice   : aliased constant S := "/TIME_SLICE=#"                  &
559
                                            "-T#";
560
   --        /TIME_SLICE=nnn
561
   --
562
   --   Set the time slice value to nnn milliseconds. A value of zero means no
563
   --   time slicing and also indicates to the tasking run time to match as
564
   --   close as possible to the annex D requirements of the RM.
565
 
566
   S_Bind_Source  : aliased constant S := "/SOURCE_SEARCH=*"               &
567
                                            "-aI*";
568
   --        /SOURCE_SEARCH=(directory[,...])
569
   --
570
   --    When looking for source files also look in directories specified.
571
 
572
   S_Bind_Static  : aliased constant S := "/STATIC "                       &
573
                                            "-static,!-shared";
574
   --        /STATIC
575
   --        /NOSTATIC
576
   --
577
   --    Link against a static GNAT run time.
578
 
579
   S_Bind_Store   : aliased constant S := "/STORE_TRACEBACKS "             &
580
                                            "-E";
581
   --        /STORE_TRACEBACKS (D)
582
   --        /NOSTORE_TRACEBACKS
583
   --
584
   --   Store tracebacks in exception occurrences.
585
   --   This is the default on VMS, with the zero-cost exception mechanism.
586
   --   This qualifier has no impact, except when using the setjmp/longjmp
587
   --   exception mechanism, with the GNAT COMPILE qualifier /LONGJMP_SETJMP.
588
 
589
   S_Bind_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
590
                                            "--subdirs=>";
591
   --        /SUBDIRS=dir
592
   --
593
   --   The actual directories (object, exec, library, ...) are subdirectories
594
   --   of the directory specified in the project file. If the subdirectory
595
   --   does not exist, it is created automatically.
596
 
597
   S_Bind_Time    : aliased constant S := "/TIME_STAMP_CHECK "             &
598
                                            "!-t";
599
   --      /TIME_STAMP_CHECK (D)
600
   --
601
   --   Time stamp errors will be treated as errors.
602
   --
603
   --      /NOTIME_STAMP_CHECK
604
   --
605
   --   Ignore time stamp errors. Any time stamp error messages are treated as
606
   --   warning messages. This switch essentially disconnects the normal
607
   --   consistency checking, and the resulting program may have undefined
608
   --   semantics if inconsistent units are present.
609
   --
610
   --   This means that /NOTIME_STAMP_CHECK should be used only in unusual
611
   --   situations, with extreme care.
612
 
613
   S_Bind_Verbose : aliased constant S := "/VERBOSE "                      &
614
                                            "-v";
615
   --        /VERBOSE (D)
616
   --        /NOVERBOSE
617
   --
618
   --   Equivalent to /REPORT_ERRORS=VERBOSE.
619
 
620
   S_Bind_Warn    : aliased constant S := "/WARNINGS="                     &
621
                                            "NORMAL "                      &
622
                                               "!-ws,!-we "                &
623
                                            "SUPPRESS "                    &
624
                                               "-ws "                      &
625
                                            "ERROR "                       &
626
                                               "-we";
627
   --      /WARNINGS[=(keyword[,...])]
628
   --      /NOWARNINGS
629
   --
630
   --   The following keywords are supported:
631
   --
632
   --        NORMAL (D)    Print warning messages and treat them as warning.
633
   --        SUPPRESS      Suppress all warning messages (same as /NOWARNINGS).
634
   --        ERROR         Treat any warning messages as fatal errors
635
 
636
   S_Bind_WarnX   : aliased constant S := "/NOWARNINGS "                   &
637
                                            "-ws";
638
   --  NODOC (see /WARNINGS)
639
 
640
   S_Bind_Wide    : aliased constant S := "/WIDE_CHARACTER_ENCODING="      &
641
                                            "BRACKETS "                    &
642
                                               "-gnatWb "                  &
643
                                            "HEX "                         &
644
                                               "-gnatWh "                  &
645
                                            "UPPER "                       &
646
                                               "-gnatWu "                  &
647
                                            "SHIFT_JIS "                   &
648
                                               "-gnatWs "                  &
649
                                            "UTF8 "                        &
650
                                               "-gnatW8 "                  &
651
                                            "EUC "                         &
652
                                               "-gnatWe";
653
   --        /NOWIDE_CHARACTER_ENCODING (D)
654
   --        /WIDE_CHARACTER_ENCODING[=encode-type]
655
   --
656
   --   Specifies the mechanism used to encode wide characters, overriding
657
   --   the default as set by the /WIDE_CHARACTER_ENCODING option for the
658
   --   compilation of the main program.
659
 
660
   S_Bind_Zero    : aliased constant S := "/ZERO_MAIN "                    &
661
                                            "-z";
662
   --        /NOZERO_MAIN (D)
663
   --        /ZERO_MAIN
664
   --
665
   --   Normally the binder checks that the unit name given on the command line
666
   --   corresponds to a suitable main subprogram. When /ZERO_MAIN is used,
667
   --   a list of ALI files can be given, and the execution of the program
668
   --   consists of elaboration of these units in an appropriate order.
669
 
670
   Bind_Switches : aliased constant Switches :=
671
                     (S_Bind_Add     'Access,
672
                      S_Bind_Bind    'Access,
673
                      S_Bind_Build   'Access,
674
                      S_Bind_Current 'Access,
675
                      S_Bind_Debug   'Access,
676
                      S_Bind_DebugX  'Access,
677
                      S_Bind_Elab    'Access,
678
                      S_Bind_Error   'Access,
679
                      S_Bind_Ext     'Access,
680
                      S_Bind_Follow  'Access,
681
                      S_Bind_Force   'Access,
682
                      S_Bind_Help    'Access,
683
                      S_Bind_Init    'Access,
684
                      S_Bind_Leap    'Access,
685
                      S_Bind_Library 'Access,
686
                      S_Bind_Linker  'Access,
687
                      S_Bind_Main    'Access,
688
                      S_Bind_Mess    'Access,
689
                      S_Bind_Nostinc 'Access,
690
                      S_Bind_Nostlib 'Access,
691
                      S_Bind_No_Time 'Access,
692
                      S_Bind_Object  'Access,
693
                      S_Bind_Order   'Access,
694
                      S_Bind_Output  'Access,
695
                      S_Bind_OutputX 'Access,
696
                      S_Bind_Pess    'Access,
697
                      S_Bind_Project 'Access,
698
                      S_Bind_Read    'Access,
699
                      S_Bind_ReadX   'Access,
700
                      S_Bind_Rename  'Access,
701
                      S_Bind_Report  'Access,
702
                      S_Bind_ReportX 'Access,
703
                      S_Bind_Restr   'Access,
704
                      S_Bind_Return  'Access,
705
                      S_Bind_RTS     'Access,
706
                      S_Bind_Search  'Access,
707
                      S_Bind_Shared  'Access,
708
                      S_Bind_Slice   'Access,
709
                      S_Bind_Source  'Access,
710
                      S_Bind_Static  'Access,
711
                      S_Bind_Store   'Access,
712
                      S_Bind_Subdirs 'Access,
713
                      S_Bind_Time    'Access,
714
                      S_Bind_Verbose 'Access,
715
                      S_Bind_Warn    'Access,
716
                      S_Bind_WarnX   'Access,
717
                      S_Bind_Wide    'Access,
718
                      S_Bind_Zero    'Access);
719
 
720
   -----------------------------
721
   -- Switches for GNAT CHECK --
722
   -----------------------------
723
 
724
   S_Check_Add    : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
725
                                            "-aP*";
726
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
727
   --
728
   --   Add directories to the project search path.
729
 
730
   S_Check_All    : aliased constant S := "/ALL "                          &
731
                                            "-a";
732
   --        /NOALL (D)
733
   --        /ALL
734
   --
735
   --   Also check the components of the GNAT run time and process the needed
736
   --  components of the GNAT RTL when building and analyzing the global
737
   --  structure for checking the global rules.
738
 
739
   S_Check_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'    &
740
                                             "-X" & '"';
741
   --       /EXTERNAL_REFERENCE="name=val"
742
   --
743
   --   Specifies an external reference to the project manager. Useful only if
744
   --   /PROJECT_FILE is used.
745
   --
746
   --   Example:
747
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
748
 
749
   S_Check_Files  : aliased constant S := "/FILES=@"                       &
750
                                             "-files=@";
751
   --      /FILES=filename
752
   --
753
   --   Take as arguments the files that are listed in the specified
754
   --   text file.
755
 
756
   S_Check_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
757
                                            "-eL";
758
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
759
   --        /FOLLOW_LINKS_FOR_FILES
760
   --
761
   --    Follow links when parsing project files
762
 
763
   S_Check_Help   : aliased constant S := "/HELP "                         &
764
                                            "-h";
765
   --        /NOHELP (D)
766
   --        /HELP
767
   --
768
   --   Print information about currently implemented checks.
769
 
770
   S_Check_Locs   : aliased constant S := "/LOCS "                         &
771
                                            "-l";
772
   --        /NOLOCS (D)
773
   --        /LOCS
774
   --
775
   --   Use full source locations references in the report file.
776
 
777
   S_Diagnosis   : aliased constant S := "/DIAGNOSTIC_LIMIT=#"             &
778
                                            "-m#";
779
   --        /DIAGNOSTIC_LIMIT=500 (D)
780
   --        /DIAGNOSTIC_LIMIT=nnn
781
   --
782
   --   NNN is a decimal integer in the range of 1 to 1000 and limits the
783
   --   number of diagnostic messages to be generated into Stdout to that
784
   --   number.  Once that number has been reached, gnatcheck stops
785
   --   to print out diagnoses into Stderr. If NNN is equal to 0, this means
786
   --   that there is no limit on the number of diagnoses in Stdout.
787
 
788
   S_Check_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="       &
789
                                             "DEFAULT "                    &
790
                                                "-vP0 "                    &
791
                                             "MEDIUM "                     &
792
                                                "-vP1 "                    &
793
                                             "HIGH "                       &
794
                                                "-vP2";
795
   --        /MESSAGES_PROJECT_FILE[=messages-option]
796
   --
797
   --   Specifies the "verbosity" of the parsing of project files.
798
   --   messages-option may be one of the following:
799
   --
800
   --      DEFAULT (D)  No messages are output if there is no error or warning.
801
   --
802
   --      MEDIUM       A small number of messages are output.
803
   --
804
   --      HIGH         A great number of messages are output, most of them not
805
   --                   being useful for the user.
806
 
807
   S_Check_Project : aliased constant S := "/PROJECT_FILE=<"               &
808
                                             "-P>";
809
   --        /PROJECT_FILE=filename
810
   --
811
   --   Specifies the main project file to be used. The project files rooted
812
   --   at the main project file will be parsed before the invocation of the
813
   --   gnatcheck. The source directories to be searched will be communicated
814
   --   to gnatcheck through logical name ADA_PRJ_INCLUDE_FILE.
815
 
816
   S_Check_Quiet  : aliased constant S := "/QUIET "                        &
817
                                            "-q";
818
   --        /NOQUIET (D)
819
   --        /QUIET
820
   --
821
   --   Work quietly, only output warnings and errors.
822
 
823
   S_Check_Time     : aliased constant S := "/TIME "                       &
824
                                               "-t";
825
   --        /NOTIME (D)
826
   --        /TIME
827
   --
828
   --   Print out execution time
829
 
830
   S_Check_Log      : aliased constant S := "/LOG "                        &
831
                                               "-log";
832
   --        /NOLOG (D)
833
   --        /LOG
834
   --
835
   --   Duplicate all the output sent to Stderr into a log file.
836
 
837
   S_Check_Sections : aliased constant S := "/SECTIONS="                   &
838
                                            "DEFAULT "                     &
839
                                               "-s123 "                    &
840
                                            "COMPILER_STYLE "              &
841
                                               "-s1 "                      &
842
                                            "BY_RULES "                    &
843
                                               "-s2 "                      &
844
                                            "BY_FILES_BY_RULES "           &
845
                                               "-s3";
846
   --        /SECTIONS[=section-option, section-option, ...]
847
   --
848
   --   Specify what sections should be included into the report file.
849
   --   By default, all three section (diagnoses in the format corresponding
850
   --   to compiler error and warning messages, diagnoses grouped by rules and
851
   --   then - by files, diagnoses grouped by files and then - by rules) are
852
   --   included in the report file.
853
   --
854
   --   section-option may be one of the following:
855
   --
856
   --      COMPILER_STYLE      Include diagnostics in compile-style format
857
   --                          (diagnoses are grouped by files, for each file
858
   --                          they are ordered according to the references
859
   --                          into the source)
860
   --      BY_RULES            Include diagnostics grouped first by rules and
861
   --                          then by files
862
   --      BY_FILES_BY_RULES   Include diagnostics grouped first by files and
863
   --                          then by rules
864
   --
865
   --   If one of these options is specified, then the report file contains
866
   --   only sections set by these options
867
 
868
   S_Check_Short  : aliased constant S := "/SHORT "                        &
869
                                            "-s";
870
   --        /NOSHORT (D)
871
   --        /SHORT
872
   --
873
   --   Generate a short form of the report file.
874
 
875
   S_Check_Subdirs : aliased constant S := "/SUBDIRS=<"                    &
876
                                             "--subdirs=>";
877
   --        /SUBDIRS=dir
878
   --
879
   --   The actual directories (object, exec, library, ...) are subdirectories
880
   --   of the directory specified in the project file. If the subdirectory
881
   --   does not exist, it is created automatically.
882
 
883
   S_Check_Verb   : aliased constant S := "/VERBOSE "                      &
884
                                            "-v";
885
   --        /NOVERBOSE (D)
886
   --        /VERBOSE
887
   --
888
   --   The version number and copyright notice are output, as well as exact
889
   --   copies of the gnat1 commands spawned to obtain the chop control
890
   --   information.
891
 
892
   S_Check_Out  : aliased constant S := "/OUTPUT=@"                &
893
                                             "-o@";
894
   --        /OUTPUT=filename
895
   --
896
   --   Specify the name of the output file.
897
 
898
   Check_Switches : aliased constant Switches :=
899
                      (S_Check_Add      'Access,
900
                       S_Check_All      'Access,
901
                       S_Diagnosis      'Access,
902
                       S_Check_Ext      'Access,
903
                       S_Check_Files    'Access,
904
                       S_Check_Follow   'Access,
905
                       S_Check_Help     'Access,
906
                       S_Check_Locs     'Access,
907
                       S_Check_Mess     'Access,
908
                       S_Check_Project  'Access,
909
                       S_Check_Quiet    'Access,
910
                       S_Check_Time     'Access,
911
                       S_Check_Log      'Access,
912
                       S_Check_Sections 'Access,
913
                       S_Check_Short    'Access,
914
                       S_Check_Subdirs  'Access,
915
                       S_Check_Verb     'Access,
916
                       S_Check_Out      'Access);
917
 
918
   ----------------------------
919
   -- Switches for GNAT CHOP --
920
   ----------------------------
921
 
922
   S_Chop_Comp   : aliased constant S := "/COMPILATION "                   &
923
                                            "-c";
924
   --        /NOCOMPILATION (D)
925
   --        /COMPILATION
926
   --
927
   --   Compilation mode, handle configuration pragmas strictly according to
928
   --   RM rules.
929
 
930
   S_Chop_File   : aliased constant S := "/FILE_NAME_MAX_LENGTH=#"         &
931
                                            "-k#";
932
   --        /FILE_NAME_MAX_LENGTH[=nnn]
933
   --
934
   --   Limit generated file names to NNN (default of 8) characters. This is
935
   --   useful if the resulting set of files is required to be interoperable
936
   --   with systems like MS-DOS which limit the length of file names.
937
 
938
   S_Chop_Help   : aliased constant S := "/HELP "                          &
939
                                            "-h";
940
   --        /NOHELP (D)
941
   --        /HELP
942
   --
943
   --   Print usage information.
944
 
945
   S_Chop_Over   : aliased constant S := "/OVERWRITE "                     &
946
                                            "-w";
947
   --        /NOOVERWRITE (D)
948
   --        /OVERWRITE
949
   --
950
   --   Overwrite existing file names. Normally GNAT CHOP regards it as a
951
   --   fatal error situation if there is already a file with the same name as
952
   --   a file it would otherwise output. The /OVERWRITE qualifier bypasses
953
   --   this check, and any such existing files will be silently overwritten.
954
 
955
   S_Chop_Pres   : aliased constant S := "/PRESERVE "                      &
956
                                            "-p";
957
   --        /NOPRESERVE (D)
958
   --        /PRESERVE
959
   --
960
   --   Causes the file modification time stamp of the input file to be
961
   --   preserved and used for the time stamp of the output file(s). This may
962
   --   be useful for preserving coherency of time stamps in an environment
963
   --   where gnatchop is used as part of a standard build process.
964
 
965
   S_Chop_Quiet  : aliased constant S := "/QUIET "                         &
966
                                            "-q";
967
   --        /NOQUIET (D)
968
   --        /QUIET
969
   --
970
   --   Work quietly, only output warnings and errors.
971
 
972
   S_Chop_Ref    : aliased constant S := "/REFERENCE "                     &
973
                                            "-r";
974
   --        /NOREFERENCE (D)
975
   --        /REFERENCE
976
   --
977
   --   Generate "Source_Reference" pragmas. Use this qualifier if the output
978
   --   files are regarded as temporary and development is to be done in terms
979
   --   of the original unchopped file. The /REFERENCE qualifier causes
980
   --   "Source_Reference" pragmas to be inserted into each of the generated
981
   --   files to refers back to the original file name and line number.  The
982
   --   result is that all error messages refer back to the original unchopped
983
   --   file.
984
   --
985
   --   In addition, the debugging information placed into the object file
986
   --   (when the /DEBUG qualifier of GNAT COMPILE or GNAT MAKE is specified)
987
   --   also refers back to this original file so that tools like profilers
988
   --   and debuggers will give information in terms of the original unchopped
989
   --   file.
990
 
991
   S_Chop_Verb   : aliased constant S := "/VERBOSE "                       &
992
                                            "-v";
993
   --        /NOVERBOSE (D)
994
   --        /VERBOSE
995
   --
996
   --   The version number and copyright notice are output, as well as exact
997
   --   copies of the gnat1 commands spawned to obtain the chop control
998
   --   information.
999
 
1000
   Chop_Switches : aliased constant Switches :=
1001
                     (S_Chop_Comp   'Access,
1002
                      S_Chop_File   'Access,
1003
                      S_Chop_Help   'Access,
1004
                      S_Chop_Over   'Access,
1005
                      S_Chop_Pres   'Access,
1006
                      S_Chop_Quiet  'Access,
1007
                      S_Chop_Ref    'Access,
1008
                      S_Chop_Verb   'Access);
1009
 
1010
   -----------------------------
1011
   -- Switches for GNAT CLEAN --
1012
   -----------------------------
1013
 
1014
   S_Clean_Add    : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
1015
                                            "-aP*";
1016
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
1017
   --
1018
   --   Add directories to the project search path.
1019
 
1020
   S_Clean_Compil  : aliased constant S := "/COMPILER_FILES_ONLY "         &
1021
                                             "-c";
1022
   --        /NOCOMPILER_FILES_ONLY (D)
1023
   --        /COMPILER_FILES_ONLY
1024
   --
1025
   --   Only attempt to delete the files produced by the compiler, not those
1026
   --   produced by the binder or the linker. The files that are not to be
1027
   --   deleted are library files, interface copy files, binder generated files
1028
   --   and executable files.
1029
 
1030
   S_Clean_Current : aliased constant S := "/CURRENT_DIRECTORY "           &
1031
                                            "!-I-";
1032
   --        /CURRENT_DIRECTORY (D)
1033
   --
1034
   --   Look for ALI or object files in the directory where GNAT CLEAN was
1035
   --   invoked.
1036
   --
1037
   --        /NOCURRENT_DIRECTORY
1038
   --
1039
   --   Do not look for ALI or object files in the directory where GNAT CLEAN
1040
   --   was invoked.
1041
 
1042
   S_Clean_Delete  : aliased constant S := "/DELETE "                      &
1043
                                            "!-n";
1044
   --        /DELETE (D)
1045
   --
1046
   --   Delete the files that are not read-only.
1047
   --
1048
   --        /NODELETE
1049
   --
1050
   --   Informative-only mode. Do not delete any files. Output the list of the
1051
   --   files that would have been deleted if this switch was not specified.
1052
 
1053
   S_Clean_Dirobj  : aliased constant S := "/DIRECTORY_OBJECTS=@"          &
1054
                                            "-D@";
1055
   --        /DIRECTORY_OBJECTS=<file>
1056
   --
1057
   --   Find the object files and .ALI files in <file>.
1058
   --   This qualifier is not compatible with /PROJECT_FILE.
1059
 
1060
   S_Clean_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'    &
1061
                                            "-X" & '"';
1062
   --        /EXTERNAL_REFERENCE="name=val"
1063
   --
1064
   --   Specifies an external reference to the project manager. Useful only if
1065
   --   /PROJECT_FILE is used.
1066
   --
1067
   --   Example:
1068
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
1069
 
1070
   S_Clean_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
1071
                                            "-eL";
1072
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
1073
   --        /FOLLOW_LINKS_FOR_FILES
1074
   --
1075
   --    Follow links when parsing project files
1076
 
1077
   S_Clean_Full    : aliased constant S := "/FULL_PATH_IN_BRIEF_MESSAGES " &
1078
                                            "-F";
1079
   --        /NOFULL_PATH_IN_BRIEF_MESSAGES (D)
1080
   --        /FULL_PATH_IN_BRIEF_MESSAGES
1081
   --
1082
   --   When using project files, if some errors or warnings are detected
1083
   --   during parsing and verbose mode is not in effect (no use of qualifier
1084
   --   /VERBOSE), then error lines start with the full path name of the
1085
   --   project file, rather than its simple file name.
1086
 
1087
   S_Clean_Help    : aliased constant S := "/HELP "                        &
1088
                                            "-h";
1089
   --        /NOHELP (D)
1090
   --        /HELP
1091
   --
1092
   --   Output a message explaining the usage of gnatclean.
1093
 
1094
   S_Clean_Index   : aliased constant S := "/SOURCE_INDEX=#"               &
1095
                                             "-i#";
1096
   --        /SOURCE_INDEX=nnn
1097
   --
1098
   --   Specifies the index of the units in the source file
1099
   --   By default, source files are mono-unit and there is no index
1100
 
1101
   S_Clean_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="       &
1102
                                            "DEFAULT "                     &
1103
                                               "-vP0 "                     &
1104
                                            "MEDIUM "                      &
1105
                                               "-vP1 "                     &
1106
                                            "HIGH "                        &
1107
                                               "-vP2";
1108
   --        /MESSAGES_PROJECT_FILE[=messages-option]
1109
   --
1110
   --   Specifies the "verbosity" of the parsing of project files.
1111
   --   messages-option may be one of the following:
1112
   --
1113
   --      DEFAULT (D) No messages are output if there is no error or warning.
1114
   --
1115
   --      MEDIUM      A small number of messages are output.
1116
   --
1117
   --      HIGH        A great number of messages are output, most of them not
1118
   --                  being useful for the user.
1119
 
1120
   S_Clean_Object  : aliased constant S := "/OBJECT_SEARCH=*"              &
1121
                                            "-aO*";
1122
   --        /OBJECT_SEARCH=(directory,...)
1123
   --
1124
   --   When searching for library and object files, look in the specified
1125
   --   directories. The order in which library files are searched is the same
1126
   --   as for MAKE.
1127
 
1128
   S_Clean_Project : aliased constant S := "/PROJECT_FILE=<"               &
1129
                                            "-P>";
1130
   --        /PROJECT_FILE=filename
1131
   --
1132
   --   Specifies the main project file to be used. The project files rooted
1133
   --   at the main project file will be parsed before the invocation of the
1134
   --   compiler. The source and object directories to be searched will be
1135
   --   communicated to gnatclean through logical names ADA_PRJ_INCLUDE_FILE
1136
   --   and ADA_PRJ_OBJECTS_FILE.
1137
 
1138
   S_Clean_Quiet   : aliased constant S := "/QUIET "                       &
1139
                                            "-q";
1140
   --        /NOQUIET (D)
1141
   --        /QUIET
1142
   --
1143
   --   Quiet output. If there are no error, do not output anything, except in
1144
   --   verbose mode (qualifier /VERBOSE) or in informative-only mode
1145
   --  (qualifier /NODELETE).
1146
 
1147
   S_Clean_Recurs  : aliased constant S := "/RECURSIVE "                   &
1148
                                            "-r";
1149
   --        /NORECURSIVE (D)
1150
   --        /RECURSIVE
1151
   --
1152
   --   When a project file is specified (using switch -P), clean all imported
1153
   --   and extended project files, recursively. If this qualifier is not
1154
   --   specified, only the files related to the main project file are to be
1155
   --   deleted. This qualifier has no effect if no project file is specified.
1156
 
1157
   S_Clean_Search  : aliased constant S := "/SEARCH=*"                     &
1158
                                            "-I*";
1159
   --        /SEARCH=(directory,...)
1160
   --
1161
   --   Equivalent to /OBJECT_SEARCH=(directory,...).
1162
 
1163
   S_Clean_Subdirs : aliased constant S := "/SUBDIRS=<"                    &
1164
                                              "--subdirs=>";
1165
   --        /SUBDIRS=dir
1166
   --
1167
   --   The actual directories (object, exec, library, ...) are subdirectories
1168
   --   of the directory specified in the project file. If the subdirectory
1169
   --   does not exist, it is created automatically.
1170
 
1171
   S_Clean_Verbose : aliased constant S := "/VERBOSE "                     &
1172
                                            "-v";
1173
   --        /NOVERBOSE (D)
1174
   --        /VERBOSE
1175
   --
1176
   --   Verbose mode.
1177
 
1178
   Clean_Switches : aliased constant Switches :=
1179
                      (S_Clean_Add    'Access,
1180
                       S_Clean_Compil 'Access,
1181
                       S_Clean_Current'Access,
1182
                       S_Clean_Delete 'Access,
1183
                       S_Clean_Dirobj 'Access,
1184
                       S_Clean_Ext    'Access,
1185
                       S_Clean_Follow 'Access,
1186
                       S_Clean_Full   'Access,
1187
                       S_Clean_Help   'Access,
1188
                       S_Clean_Index  'Access,
1189
                       S_Clean_Mess   'Access,
1190
                       S_Clean_Object 'Access,
1191
                       S_Clean_Project'Access,
1192
                       S_Clean_Quiet  'Access,
1193
                       S_Clean_Recurs 'Access,
1194
                       S_Clean_Search 'Access,
1195
                       S_Clean_Subdirs'Access,
1196
                       S_Clean_Verbose'Access);
1197
 
1198
   -------------------------------
1199
   -- Switches for GNAT COMPILE --
1200
   -------------------------------
1201
 
1202
   S_GCC_Ada_83  : aliased constant S := "/83 "                            &
1203
                                             "-gnat83";
1204
   --        /NO83 (D)
1205
   --        /83
1206
   --
1207
   --   Although GNAT is primarily an Ada 95 compiler, it accepts this
1208
   --   qualifier to specify that an Ada 83 mode program is being compiled. If
1209
   --   you specify this qualifier, GNAT rejects Ada 95 extensions and applies
1210
   --   Ada 83 semantics. It is not possible to guarantee this qualifier does
1211
   --   a perfect job; for example, some subtle tests of pathological cases,
1212
   --   such as are found in ACVC tests that have been removed from the ACVC
1213
   --   suite for Ada 95, may not compile correctly. However for practical
1214
   --   purposes, using this qualifier should ensure that programs that
1215
   --   compile correctly under the /83 qualifier can be ported reasonably
1216
   --   easily to an Ada 83 compiler. This is the main use of this qualifier.
1217
   --
1218
   --   With few exceptions (most notably the need to use "<>" on
1219
   --   unconstrained generic formal parameters), it is not necessary to use
1220
   --   this qualifier switch when compiling Ada 83 programs, because, with
1221
   --   rare and obscure exceptions, Ada 95 is upwardly compatible with Ada
1222
   --   83. This means that a correct Ada 83 program is usually also a correct
1223
   --   Ada 95 program.
1224
 
1225
   S_GCC_Ada_95  : aliased constant S := "/95 "                            &
1226
                                             "-gnat95";
1227
   --        /95 (D)
1228
   --
1229
   --   Allows GNAT to recognize the full range of Ada 95 constructs.
1230
   --   This is the normal default for GNAT Pro.
1231
 
1232
   S_GCC_Ada_05 : aliased constant S := "/05 "                             &
1233
                                             "-gnat05";
1234
   --        /05 (D)
1235
   --
1236
   --   Allows GNAT to recognize all implemented proposed Ada 2005
1237
   --   extensions. See features file for list of implemented features.
1238
 
1239
   S_GCC_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"       &
1240
                                            "-aP*";
1241
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
1242
   --
1243
   --   Add directories to the project search path.
1244
 
1245
   S_GCC_Asm     : aliased constant S := "/ASM "                           &
1246
                                             "-S,!-c";
1247
   --        /NOASM (D)
1248
   --        /ASM
1249
   --
1250
   --   Use to cause the assembler source file to be generated, using S as the
1251
   --   filetype, instead of the object file. This may be useful if you need
1252
   --   to examine the generated assembly code.
1253
 
1254
   S_GCC_AValid  : aliased constant S := "/ASSUME_VALID "                  &
1255
                                             "-gnatB";
1256
   --        /NO_ASSUME_VALID (D)
1257
   --        /ASSUME_VALID
1258
   --
1259
   --   Use to tell the compiler to assume that all objects have valid values
1260
   --   except those occurring as prefixes to 'Valid attributes. In the default
1261
   --   mode, the compiler assumes that values may be invalid unless it can
1262
   --   be sure that they are valid, and code is generated to allow for this
1263
   --   possibility. The use of /ASSUME_VALID will improve the code.
1264
 
1265
   S_GCC_Checks  : aliased constant S := "/CHECKS="                        &
1266
                                             "FULL "                       &
1267
                                                "-gnato,!-gnatE,!-gnatp "  &
1268
                                             "OVERFLOW "                   &
1269
                                                "-gnato "                  &
1270
                                             "ELABORATION "                &
1271
                                                "-gnatE "                  &
1272
                                             "ASSERTIONS "                 &
1273
                                                "-gnata "                  &
1274
                                             "DEFAULT "                    &
1275
                                                "!-gnato,!-gnatp "         &
1276
                                             "STACK "                      &
1277
                                                "-fstack-check "           &
1278
                                             "SUPPRESS_ALL "               &
1279
                                                "-gnatp";
1280
   --        /NOCHECKS
1281
   --        /CHECKS[=(keyword[,...])]
1282
   --
1283
   --   If you compile with the default options, GNAT will insert many runtime
1284
   --   checks into the compiled code, including code that performs range
1285
   --   checking against constraints, but not arithmetic overflow checking for
1286
   --   integer operations (including division by zero) or checks for access
1287
   --   before elaboration on subprogram calls.  All other runtime checks, as
1288
   --   required by the Ada 95 Reference Manual, are generated by default.
1289
   --
1290
   --   You may specify one or more of the following keywords to the /CHECKS
1291
   --   qualifier to modify this behavior:
1292
   --
1293
   --     DEFAULT       The behavior described above. This is the default
1294
   --                   if the /CHECKS qualifier is not present on the
1295
   --                   command line. Same as /NOCHECKS.
1296
   --
1297
   --     OVERFLOW      Enables overflow checking for integer operations and
1298
   --                   checks for access before elaboration on subprogram
1299
   --                   calls. This causes GNAT to generate slower and larger
1300
   --                   executable programs by adding code to check for both
1301
   --                   overflow and division by zero (resulting in raising
1302
   --                   "Constraint_Error" as required by Ada semantics).
1303
   --                   Similarly, GNAT does not generate elaboration check
1304
   --                   by default, and you must specify this keyword to
1305
   --                   enable them.
1306
   --
1307
   --                   Note that this keyword does not affect the code
1308
   --                   generated for any floating-point operations; it
1309
   --                   applies only to integer operations. For floating-point,
1310
   --                   GNAT has the "Machine_Overflows" attribute set to
1311
   --                   "False" and the normal mode of operation is to generate
1312
   --                   IEEE NaN and infinite values on overflow or invalid
1313
   --                   operations (such as dividing 0.0 by 0.0).
1314
   --
1315
   --     ELABORATION   Enables dynamic checks for access-before-elaboration
1316
   --                   on subprogram calls and generic instantiations.
1317
   --
1318
   --     ASSERTIONS    The pragmas "Assert" and "Debug" normally have no
1319
   --                   effect and are ignored. This keyword causes "Assert"
1320
   --                   and "Debug" pragmas to be activated, as well as
1321
   --                   "Check", "Precondition" and "Postcondition" pragmas.
1322
   --
1323
   --     SUPPRESS_ALL  Suppress all runtime checks as though you have "pragma
1324
   --                   Suppress (all_checks)" in your source. Use this switch
1325
   --                   to improve the performance of the code at the expense
1326
   --                   of safety in the presence of invalid data or program
1327
   --                   bugs.
1328
   --
1329
   --     DEFAULT       Suppress the effect of any option OVERFLOW or
1330
   --                   ASSERTIONS.
1331
   --
1332
   --     FULL (D)      Similar to OVERFLOW, but suppress the effect of any
1333
   --                   option ELABORATION or SUPPRESS_ALL.
1334
   --
1335
   --   These keywords only control the default setting of the checks.  You
1336
   --   may modify them using either "Suppress" (to remove checks) or
1337
   --   "Unsuppress" (to add back suppressed checks) pragmas in your program
1338
   --   source.
1339
 
1340
   S_GCC_ChecksX : aliased constant S := "/NOCHECKS "                      &
1341
                                             "-gnatp,!-gnato,!-gnatE";
1342
   --  NODOC (see /CHECKS)
1343
 
1344
   S_GCC_Compres : aliased constant S := "/COMPRESS_NAMES "                &
1345
                                             "-gnatC";
1346
   --        /NOCOMPRESS_NAMES (D)
1347
   --        /COMPRESS_NAMES
1348
   --
1349
   --   Compress debug information and external symbol name table entries.
1350
   --   In the generated debugging information, and also in the case of long
1351
   --   external names, the compiler uses a compression mechanism if the name
1352
   --   is very long.  This compression method uses a checksum, and avoids
1353
   --   trouble on some operating systems which have difficulty with very long
1354
   --   names.
1355
 
1356
   S_GCC_Config  : aliased constant S := "/CONFIGURATION_PRAGMAS_FILE=<"   &
1357
                                             "-gnatec>";
1358
   --        /CONFIGURATION_PRAGMAS_FILE=file
1359
   --
1360
   --   Specify a configuration pragmas file that need to be taken into account
1361
 
1362
   S_GCC_Current : aliased constant S := "/CURRENT_DIRECTORY "             &
1363
                                             "!-I-";
1364
   --        /CURRENT_DIRECTORY (D)
1365
   --        /NOCURRENT_DIRECTORY
1366
   --
1367
   --   Look for source files in the default directory.
1368
 
1369
   S_GCC_Data    : aliased constant S := "/DATA_PREPROCESSING=<"           &
1370
                                            "-gnatep>";
1371
   --        /DATA_PREPROCESSING=file_name
1372
   --
1373
   --   This qualifier indicates to the compiler the file name (without
1374
   --   directory information) of the preprocessor data file to use.
1375
   --   The preprocessor data file should be found in the source directories.
1376
   --
1377
   --   A preprocessing data file is a text file with significant lines
1378
   --   indicating how should be preprocessed either a specific source or all
1379
   --   sources not mentioned in other lines. A significant line is a non
1380
   --   empty, non comment line. Comments are similar to Ada comments.
1381
   --
1382
   --  Each significant line starts with either a literal string or the
1383
   --  character '*'. A literal string is the file name (without directory
1384
   --  information) of the source to preprocess. A character '*' indicates the
1385
   --  preprocessing for all the sources that are not specified explicitly on
1386
   --  other lines. It is an error to have two lines with the same file name
1387
   --  or two lines starting with the character '*'.
1388
   --
1389
   --  After the file name or the character '*', another optional literal
1390
   --  string indicating the file name of the definition file to be used for
1391
   --  preprocessing. (see 15.3 Form of Definitions File. The definition files
1392
   --  are found by the compiler in one of the source directories. In some
1393
   --  cases, when compiling a source in a directory other than the current
1394
   --  directory, if the definition file is in the current directory, it may
1395
   --  be necessary to add the current directory as a source directory through
1396
   --  qualifier "/SEARCH=[]", otherwise the compiler would not find the
1397
   --  definition file.
1398
   --
1399
   --  Then, optionally, switches similar to those of gnatprep may be found.
1400
   --  Those switches are:
1401
   --
1402
   --   -b              Causes both preprocessor lines and the lines deleted by
1403
   --                   preprocessing to be replaced by blank lines, preserving
1404
   --                   the line number. This switch is always implied;
1405
   --                   however, if specified after `-c' it cancels the effect
1406
   --                   of `-c'.
1407
   --
1408
   --   -c              Causes both preprocessor lines and the lines deleted by
1409
   --                   preprocessing to be retained as comments marked with
1410
   --                   the special string "--! ".
1411
   --
1412
   --   -Dsymbol=value  Define or redefine a symbol, associated with value.
1413
   --                   A symbol is an Ada identifier, or an Ada reserved word,
1414
   --                   with the exception of "if", "else", "elsif", "end",
1415
   --                   "and", "or" and "then". value is either a literal
1416
   --                   string, an Ada identifier or any Ada reserved word.
1417
   --                   A symbol declared with this switch replaces a symbol
1418
   --                   with the same name defined in a definition file.
1419
   --
1420
   --   -s              Causes a sorted list of symbol names and values to be
1421
   --                   listed on the standard output file.
1422
   --
1423
   --   -u              Causes undefined symbols to be treated as having the
1424
   --                   value FALSE in the context of a preprocessor test.
1425
   --                   In the absence of this option, an undefined symbol
1426
   --                   in a #if or #elsif test will be treated as an error.
1427
   --
1428
   --   Examples of valid lines in a preprocessor data file:
1429
   --
1430
   --     "toto.adb"  "prep.def" -u
1431
   --     --  preprocess "toto.adb", using definition file "prep.def",
1432
   --     --  undefined symbol are False.
1433
   --
1434
   --     * -c -DVERSION=V101
1435
   --     --  preprocess all other sources without a definition file;
1436
   --     --  suppressed lined are commented; symbol VERSION has the value
1437
   --     --  V101.
1438
   --
1439
   --     "titi.adb" "prep2.def" -s
1440
   --     --  preprocess "titi.adb", using definition file "prep2.def";
1441
   --     --  list all symbols with their values.
1442
 
1443
   S_GCC_Debug   : aliased constant S := "/DEBUG="                         &
1444
                                            "SYMBOLS "                     &
1445
                                               "-g2 "                      &
1446
                                            "NOSYMBOLS "                   &
1447
                                               "!-g2 "                     &
1448
                                            "TRACEBACK "                   &
1449
                                               "-g1 "                      &
1450
                                            "ALL "                         &
1451
                                               "-g3 "                      &
1452
                                            "NONE "                        &
1453
                                               "-g0 "                      &
1454
                                            "NOTRACEBACK "                 &
1455
                                               "-g0";
1456
   --        /DEBUG[=debug-level]
1457
   --        /NODEBUG
1458
   --
1459
   --   Specifies how much debugging information is to be included in
1460
   --   the resulting object fie.
1461
   --
1462
   --   'debug-level' is one of the following:
1463
   --
1464
   --        SYMBOLS (D)    Include both debugger symbol records and traceback
1465
   --                       in the object file.
1466
   --
1467
   --        ALL            Include debugger symbol records, traceback plus
1468
   --                       extra debug information in the object file.
1469
   --
1470
   --        NONE           Excludes both debugger symbol records and traceback
1471
   --                       from the object file.  Same as /NODEBUG.
1472
   --
1473
   --        TRACEBACK      Includes only traceback records in the object
1474
   --                       file. This is the default when /DEBUG is not used.
1475
 
1476
   S_GCC_DebugX  : aliased constant S := "/NODEBUG "                       &
1477
                                             "!-g";
1478
   --  NODOC (see /Debug)
1479
 
1480
   S_GCC_Dist    : aliased constant S := "/DISTRIBUTION_STUBS="            &
1481
                                            "RECEIVER "                    &
1482
                                               "-gnatzr "                  &
1483
                                            "CALLER "                      &
1484
                                              "-gnatzc";
1485
   --        /NODISTRIBUTION_STUBS (D)
1486
   --        /DISTRIBUTION_STUBS[=dist-opt]
1487
   --
1488
   --   'dist-opt' is either RECEIVER (the default) or SENDER and indicates
1489
   --   that stubs for use in distributed programs (see the Distributed
1490
   --   Systems Annex of the Ada RM) should be generated.
1491
 
1492
   S_GCC_DistX   : aliased constant S := "/NODISTRIBUTION_STUBS "          &
1493
                                            "!-gnatzr,!-gnatzc";
1494
   --  NODOC (see /DISTRIBUTION_STUBS)
1495
 
1496
   S_GCC_Error   : aliased constant S := "/ERROR_LIMIT=#"                  &
1497
                                            "-gnatm#";
1498
   --        /NOERROR_LIMIT (D)
1499
   --        /ERROR_LIMIT=nnn
1500
   --
1501
   --   NNN is a decimal integer in the range of 1 to 999999 and limits the
1502
   --   number of error messages to be generated to that number.  Once that
1503
   --   number has been reached, the compilation is abandoned.
1504
   --   Specifying 999999 is equivalent to /NOERROR_LIMIT.
1505
 
1506
   S_GCC_ErrorX  : aliased constant S := "/NOERROR_LIMIT "                 &
1507
                                            "-gnatm999999";
1508
   --  NODOC (see /ERROR_LIMIT)
1509
 
1510
   S_GCC_Expand  : aliased constant S := "/EXPAND_SOURCE "                 &
1511
                                            "-gnatG";
1512
   --        /NOEXPAND_SOURCE (D)
1513
   --        /EXPAND_SOURCE
1514
   --
1515
   --   Produces a listing of the expanded code in Ada source form. For
1516
   --   example, all tasking constructs are reduced to appropriate run-time
1517
   --   library calls. The maximum line length for the listing 72.
1518
 
1519
   S_GCC_Lexpand : aliased constant S := "/LEXPAND_SOURCE=#"               &
1520
                                            "-gnatG#";
1521
   --        /LEXPAND_SOURCE=nnn
1522
   --
1523
   --   Produces a listing of the expanded code in Ada source form. For
1524
   --   example, all tasking constructs are reduced to appropriate run-time
1525
   --   library calls. The parameter is the maximum line length for the
1526
   --   listing.
1527
 
1528
   S_GCC_Extend  : aliased constant S := "/EXTENSIONS_ALLOWED "            &
1529
                                            "-gnatX";
1530
   --        /NOEXTENSIONS_ALLOWED (D)
1531
   --        /EXTENSIONS_ALLOWED
1532
   --
1533
   --   GNAT specific language extensions allowed.
1534
 
1535
   S_GCC_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'      &
1536
                                            "-X" & '"';
1537
   --        /EXTERNAL_REFERENCE="name=val"
1538
   --
1539
   --   Specifies an external reference to the project manager. Useful only if
1540
   --   /PROJECT_FILE is used.
1541
   --
1542
   --   Example:
1543
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
1544
 
1545
   S_GCC_File    : aliased constant S := "/FILE_NAME_MAX_LENGTH=#"         &
1546
                                            "-gnatk#";
1547
   --        /FILE_NAME_MAX_LENGTH=nnn
1548
   --
1549
   --   Activates file name "krunching". NNN, a decimal integer in the range
1550
   --   1-999, indicates the maximum allowable length of a file name (not
1551
   --   including the ADS or ADB filetype. The default is not to enable file
1552
   --   name krunching.
1553
 
1554
   S_GCC_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
1555
                                            "-eL";
1556
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
1557
   --        /FOLLOW_LINKS_FOR_FILES
1558
   --
1559
   --    Follow links when parsing project files
1560
 
1561
   S_GCC_Force   : aliased constant S := "/FORCE_ALI "                     &
1562
                                            "-gnatQ";
1563
   --        /NOFORCE_ALI (D)
1564
   --        /FORCE_ALI
1565
   --
1566
   --   In normal operation mode, the .ALI file is not generated if any
1567
   --   illegalities are detected in the program. The use of this qualifier
1568
   --   forces generation of the .ALI file. This file is marked as being
1569
   --   in error, so it cannot be used for binding purposes, but it does
1570
   --   contain reasonably complete cross-reference information, and thus may
1571
   --   be useful for use by tools (e.g. semantic browsing tools or integrated
1572
   --   development environments) that are driven from the .ALI file.
1573
 
1574
   S_GCC_Full    : aliased constant S := "/FULL_PATH_IN_BRIEF_MESSAGES "   &
1575
                                            "-gnatef";
1576
   --        /NOFULL_PATH_IN_BRIEF_MESSAGES (D)
1577
   --        /FULL_PATH_IN_BRIEF_MESSAGES
1578
   --
1579
   --   When using project files, if some errors or warnings are detected
1580
   --   during parsing and verbose mode is not in effect (no use of qualifier
1581
   --   /VERBOSE), then error lines start with the full path name of the
1582
   --   project file, rather than its simple file name.
1583
 
1584
   S_GCC_Generate : aliased constant S := "/GENERATE_PROCESSED_SOURCE "    &
1585
                                             "-gnateG";
1586
   --        /NOGENERATE_PROCESSED_SOURCE (D)
1587
   --        /GENERATE_PROCESSED_SOURCE
1588
   --
1589
   --        Generate a file <source>_prep if the integrated preprocessing
1590
   --        is modifying the source text.
1591
 
1592
   S_GCC_GNAT    : aliased constant S := "/GNAT_INTERNAL "                 &
1593
                                            "-gnatg";
1594
   --        /NOGNAT_INTERNAL (D)
1595
   --        /GNAT_INTERNAL
1596
   --
1597
   --        Internal GNAT implementation mode. This should not be used for
1598
   --        applications programs, it is intended only for use by the compiler
1599
   --        and its run-time library. For documentation, see the GNAT sources.
1600
   --        Note that it implies /WARNINGS=ALL,ERRORS and /STYLE_CHECKS=GNAT
1601
   --        so that all standard warnings and all standard style options are
1602
   --        turned on. All warnings and style error messages are treated as
1603
   --        errors.
1604
 
1605
   S_GCC_Help    : aliased constant S := "/HELP "                          &
1606
                                            "-gnath";
1607
   --        /NOHELP (D)
1608
   --        /HELP
1609
   --
1610
   --   Output usage information.
1611
 
1612
   S_GCC_Ident   : aliased constant S := "/IDENTIFIER_CHARACTER_SET="      &
1613
                                             "DEFAULT "                    &
1614
                                                "-gnati1 "                 &
1615
                                             "1 "                          &
1616
                                                "-gnati1 "                 &
1617
                                             "2 "                          &
1618
                                                "-gnati2 "                 &
1619
                                             "3 "                          &
1620
                                                "-gnati3 "                 &
1621
                                             "4 "                          &
1622
                                                "-gnati4 "                 &
1623
                                             "5 "                          &
1624
                                                "-gnati5 "                 &
1625
                                             "PC "                         &
1626
                                                "-gnatip "                 &
1627
                                             "PC850 "                      &
1628
                                                "-gnati8 "                 &
1629
                                             "FULL_UPPER "                 &
1630
                                                "-gnatif "                 &
1631
                                             "NO_UPPER "                   &
1632
                                                "-gnatin "                 &
1633
                                             "WIDE "                       &
1634
                                                "-gnatiw";
1635
   --        /NOIDENTIFIER_CHARACTER_SET (D)
1636
   --        /IDENTIFIER_CHARACTER_SET=char-set
1637
   --
1638
   --   Normally GNAT recognizes the Latin-1 character set in source program
1639
   --   identifiers, as described in the reference manual. This qualifier
1640
   --   causes GNAT to recognize alternate character sets in identifiers.
1641
   --   'char-set' is one of the following strings indicating the character
1642
   --   set:
1643
   --
1644
   --        DEFAULT (D) Equivalent to 1, below. Also equivalent to
1645
   --                    /NOIDENTIFIER_CHARACTER_SET.
1646
   --
1647
   --        1           The basic character set is Latin-1. This character
1648
   --                    set is defined by ISO standard 8859, part 1. The lower
1649
   --                    half (character codes 16#00# ... 16#7F#) is identical
1650
   --                    to standard ASCII coding, but the upper half is used
1651
   --                    to represent additional characters. This includes
1652
   --                    extended letters used by European languages, such as
1653
   --                    the umlaut used in German.
1654
   --
1655
   --                    You may use any of these extended characters freely
1656
   --                    in character or string literals. In addition, the
1657
   --                    extended characters that represent letters can be
1658
   --                    used in identifiers.
1659
   --
1660
   --        2           Latin-2 letters allowed in identifiers, with uppercase
1661
   --                    and lowercase equivalence.
1662
   --
1663
   --        3           Latin-3 letters allowed in identifiers, with uppercase
1664
   --                    and lower case equivalence.
1665
   --
1666
   --        4           Latin-4 letters allowed in identifiers, with uppercase
1667
   --                    and lower case equivalence.
1668
   --
1669
   --        PC          IBM PC code page 437.  This code page is the normal
1670
   --                    default for PCs in the U.S. It corresponds to the
1671
   --                    original IBM PC character set. This set has some, but
1672
   --                    not all, of the extended Latin-1 letters, but these
1673
   --                    letters do not have the same encoding as Latin-1. In
1674
   --                    this mode, these letters are allowed in identifiers
1675
   --                    with uppercase and lowercase equivalence.
1676
   --
1677
   --        PC850       This code page (850) is a modification of 437 extended
1678
   --                    to include all the Latin-1 letters, but still not with
1679
   --                    the usual Latin-1 encoding. In this mode, all these
1680
   --                    letters are allowed in identifiers with uppercase and
1681
   --                    lower case equivalence.
1682
   --
1683
   --        FULL_UPPER  Any character in the range 80-FF allowed in
1684
   --                    identifiers, and all are considered distinct.  In
1685
   --                    other words, there are no uppercase and lower case
1686
   --                    equivalences in this range.
1687
   --
1688
   --        NO_UPPER    No upper-half characters in the range 80-FF are
1689
   --                    allowed in identifiers.  This gives Ada 95
1690
   --                    compatibility for identifier names.
1691
   --
1692
   --        WIDE        GNAT allows wide character codes to appear in
1693
   --                    character and string literals, and also optionally
1694
   --                    in identifiers.  See the /WIDE_CHARACTER_ENCODING
1695
   --                    qualifier for information on encoding formats.
1696
 
1697
   S_GCC_IdentX  : aliased constant S := "/NOIDENTIFIER_CHARACTER_SET "    &
1698
                                             "-gnati1";
1699
   --  NODOC (see /IDENTIFIER_CHARACTER_SET)
1700
 
1701
   S_GCC_Ignore  : aliased constant S := "/IGNORE_REP_CLAUSES "            &
1702
                                             "-gnatI";
1703
   --        /IGNORE_REP_CLAUSES
1704
   --
1705
   --   Causes all representation clauses to be ignored and treated as
1706
   --   comments. Useful when compiling foreign code (for example when ASIS
1707
   --   is used to analyze such code).
1708
 
1709
   S_GCC_Immed   : aliased constant S := "/IMMEDIATE_ERRORS "              &
1710
                                             "-gnatdO";
1711
   --        /NOIMMEDIATE_ERRORS (D)
1712
   --        /IMMEDIATE_ERRORS
1713
   --
1714
   --   Causes errors to be displayed as soon as they are encountered, rather
1715
   --   than after compilation is terminated. If GNAT terminates prematurely
1716
   --   or goes into an infinite loop, the last error message displayed may
1717
   --   help to pinpoint the culprit.
1718
 
1719
   S_GCC_Inline  : aliased constant S := "/INLINE="                        &
1720
                                            "PRAGMA "                      &
1721
                                              "-gnatn "                    &
1722
                                            "FULL "                        &
1723
                                              "-gnatN "                    &
1724
                                            "SUPPRESS "                    &
1725
                                              "-fno-inline";
1726
   --        /NOINLINE (D)
1727
   --        /INLINE[=keyword]
1728
   --
1729
   --   Selects the level of inlining for your program.  In the absence of this
1730
   --   qualifier, GNAT does not attempt inlining across units and does not
1731
   --   need to access the bodies of subprograms for which "pragma Inline" is
1732
   --   specified if they are not in the current unit.
1733
   --
1734
   --   The supported keywords are as follows:
1735
   --
1736
   --        PRAGMA (D)  Recognize and process "Inline" pragmas.  However,
1737
   --                    for the inlining to actually occur, optimization
1738
   --                    must be enabled.  This enables inlining across unit
1739
   --                    boundaries, that is, inlining a call in one unit of
1740
   --                    a subprogram declared in a with'ed unit. The compiler
1741
   --                    will access these bodies, creating an extra source
1742
   --                    dependency for the resulting object file, and where
1743
   --                    possible, the call will be inlined.
1744
   --
1745
   --                    This qualifier also turns on full optimization and
1746
   --                    requests GNAT to try to attempt automatic inlining
1747
   --                    of small subprograms within a unit.
1748
   --
1749
   --                    Specifying /OPTIMIZE=NONE will disable the main effect
1750
   --                    of this qualifier, but you may specify other
1751
   --                    optimization options, to get either lower
1752
   --                    (/OPTIMIZE=SOME) or higher (/OPTIMIZE=UNROLL_LOOPS)
1753
   --                    levels of optimization.
1754
   --
1755
   --        FULL        Front end inlining. The front end inlining activated
1756
   --                    by this switch is generally more extensive, and quite
1757
   --                    often more effective than the standard PRAGMA inlining
1758
   --                    mode. It will also generate additional dependencies.
1759
   --
1760
   --        SUPPRESS    Suppresses all inlining, even if other optimization
1761
   --                        or inlining switches are set.
1762
 
1763
   S_GCC_InlineX : aliased constant S := "/NOINLINE "                      &
1764
                                             "!-gnatn,!-gnatN";
1765
   --  NODOC (see /INLINE)
1766
 
1767
   S_GCC_Intsrc  : aliased constant S := "/INTERSPERSE_SOURCE "            &
1768
                                             "-gnatL";
1769
 
1770
   --        /NO_INTERSPERSE_SOURCE (D)
1771
   --        /INTERSPERSE_SOURCE
1772
   --
1773
   --   Causes output from /XDEBUG or /EXPAND_SOURCE to be interspersed with
1774
   --   lines from the original source file, output as comment lines with the
1775
   --   associated line number.
1776
 
1777
   S_GCC_Just   : aliased constant S := "/JUSTIFY_MESSAGES=#"              &
1778
                                             "-gnatj#";
1779
 
1780
   --        /NO_JUSTIFY_MESSAGES (D)
1781
   --        /JUSTIFY_MESSAGES=nnn
1782
   --
1783
   --   Causes error messages to be reformatted so that a message and all its
1784
   --   continuation lines count as one warning or error in the statistics on
1785
   --   total errors, and the message is broken down into lines (justified) so
1786
   --   that no line is longer than nnn characters. The default message
1787
   --   behavior (each message counted separately and not reformatted to fit
1788
   --   a particular line length) can be obtained using /NO_JUSTIFY_MESSAGES.
1789
 
1790
   S_GCC_JustX  : aliased constant S := "/NO_JUSTIFY_MESSAGES "            &
1791
                                             "-gnatj0";
1792
 
1793
   --  NODOC (see /JUSTIFY_MESSAGES)
1794
 
1795
   S_GCC_Length  : aliased constant S := "/MAX_LINE_LENGTH=#"              &
1796
                                             "-gnatyM#";
1797
   --        /MAX_LINE_LENGTH=nnn
1798
   --
1799
   --   Set maximum line length.
1800
   --   The length of lines must not exceed the given value nnn.
1801
 
1802
   S_GCC_List    : aliased constant S := "/LIST "                          &
1803
                                             "-gnatl";
1804
   --        /NOLIST (D)
1805
   --        /LIST
1806
   --
1807
   --   Cause a full listing of the file to be generated. In the case where
1808
   --   a body is compiled, the corresponding spec is also listed, along
1809
   --   with any subunits.
1810
 
1811
   S_GCC_Machine : aliased constant S := "/MACHINE_CODE_LISTING "          &
1812
                                             "-source-listing";
1813
   --        /NOMACHINE_CODE_LISTING (D)
1814
   --        /MACHINE_CODE_LISTING
1815
   --
1816
   --   Cause a full machine code listing of the file to be generated to
1817
   --   <filename>.lis. Interspersed source is included if the /DEBUG
1818
   --   qualifier is also present.
1819
 
1820
   S_GCC_Mapping : aliased constant S := "/MAPPING_FILE=<"                 &
1821
                                            "-gnatem>";
1822
   --        /MAPPING_FILE=file_name
1823
   --
1824
   --   Use mapping file file_name
1825
   --
1826
   --   A mapping file is a way to communicate to the compiler two mappings:
1827
   --   from unit names to file names (without any directory information) and
1828
   --   from file names to path names (with full directory information).
1829
   --   These mappings are used by the compiler to short-circuit the path
1830
   --   search.
1831
   --
1832
   --   The use of mapping files is not required for correct operation of the
1833
   --   compiler, but mapping files can improve efficiency, particularly when
1834
   --   sources are read over a slow network connection. In normal operation,
1835
   --   you need not be concerned with the format or use of mapping files,
1836
   --   and /MAPPING_FILE is not a qualifier that you would use explicitly.
1837
   --   It is intended only for use by automatic tools such as GNAT MAKE
1838
   --   running under the project file facility. The description here of the
1839
   --   format of mapping files is provided for completeness and for possible
1840
   --   use by other tools.
1841
   --
1842
   --   A mapping file is a sequence of sets of three lines. In each set, the
1843
   --   first line is the unit name, in lower case, with "%s" appended for
1844
   --   specifications and "%b" appended for bodies; the second line is the
1845
   --   file name; and the third line is the path name.
1846
   --
1847
   --   Example:
1848
   --
1849
   --      main%b
1850
   --      main.2_ada
1851
   --      /gnat/project1/sources/main.2_ada
1852
   --
1853
   --   When qualifier ?MAPPING_FILE is specified, the compiler will create in
1854
   --   memory the two mappings from the specified file. If there is any
1855
   --   problem (non existent file, truncated file or duplicate entries),
1856
   --   no mapping will be created.
1857
   --
1858
   --   Several /MAPPING_FILE qualifiers may be specified; however, only the
1859
   --   last one on the command line will be taken into account.
1860
   --
1861
   --   When using a project file, GNAT MAKE creates a temporary mapping file
1862
   --   and communicates it to the compiler using this switch.
1863
 
1864
   S_GCC_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="         &
1865
                                            "DEFAULT "                     &
1866
                                               "-vP0 "                     &
1867
                                            "MEDIUM "                      &
1868
                                               "-vP1 "                     &
1869
                                            "HIGH "                        &
1870
                                               "-vP2";
1871
   --        /MESSAGES_PROJECT_FILE[=messages-option]
1872
   --
1873
   --   Specifies the "verbosity" of the parsing of project files.
1874
   --   messages-option may be one of the following:
1875
   --
1876
   --      DEFAULT (D) No messages are output if there is no error or warning.
1877
   --
1878
   --      MEDIUM      A small number of messages are output.
1879
   --
1880
   --      HIGH        A great number of messages are output, most of them not
1881
   --                  being useful for the user.
1882
 
1883
   S_GCC_Nesting  : aliased constant S := "/MAX_NESTING=#"                 &
1884
                                             "-gnatyL#";
1885
   --        /MAX_NESTING=nnn
1886
   --
1887
   --   Set maximum level of nesting of constructs (including subprograms,
1888
   --   loops, blocks, packages, and conditionals).
1889
   --   The level of nesting must not exceed the given value nnn.
1890
   --   A value of zero disable this style check (not enabled by default).
1891
 
1892
   S_GCC_Noadc   : aliased constant S := "/NO_GNAT_ADC "                   &
1893
                                             "-gnatA";
1894
   --        /NO_GNAT_ADC
1895
   --
1896
   --   Cause the compiler to ignore any configuration pragmas file GNAT.ADC
1897
   --   in the default directory. Implied by qualifier /PROJECT_FILE.
1898
   --   Often used in conjunction with qualifier /CONFIGURATION_PRAGMAS_FILE.
1899
 
1900
   S_GCC_Noload  : aliased constant S := "/NOLOAD "                        &
1901
                                             "-gnatc";
1902
   --        /NOLOAD
1903
   --
1904
   --   Cause the compiler to operate in semantic check mode with full
1905
   --   checking for all illegalities specified in the reference manual, but
1906
   --   without generation of any source code (no object or ALI file
1907
   --   generated).
1908
   --
1909
   --   Since dependent files must be accessed, you must follow the GNAT
1910
   --   semantic restrictions on file structuring to operate in this mode:
1911
   --
1912
   --   o The needed source files must be accessible.
1913
   --   o Each file must contain only one compilation unit.
1914
   --   o The file name and unit name must match.
1915
   --
1916
   --   The output consists of error messages as appropriate. No object file
1917
   --   or ALI file is generated. The checking corresponds exactly to the
1918
   --   notion of legality in the Ada reference manual.
1919
   --
1920
   --   Any unit can be compiled in semantics-checking-only mode, including
1921
   --   units that would not normally be compiled (generic library units,
1922
   --   subunits, and specifications where a separate body is present).
1923
 
1924
   S_GCC_Nostinc : aliased constant S := "/NOSTD_INCLUDES "                &
1925
                                             "-nostdinc";
1926
   --        /NOSTD_INCLUDES
1927
   --
1928
   --   Do not look in the default directory for source files of the runtime.
1929
 
1930
   S_GCC_Nostlib : aliased constant S := "/NOSTD_LIBRARIES "               &
1931
                                            "-nostdlib";
1932
   --        /NOSTD_LIBRARIES
1933
   --
1934
   --    Do not look for library files in the system default directory.
1935
 
1936
   S_GCC_NoWarnP  : aliased constant S := "/NOWARNING_PRAGMAS "            &
1937
                                             "-gnatd.i";
1938
   --        /NOWARNING_PRAGMAS
1939
   --
1940
   --   Causes all Warnings pragmas to be ignored. Useful to check if the
1941
   --   program has obsolete warnings pragmas that are hiding problems.
1942
 
1943
   S_GCC_Opt     : aliased constant S := "/OPTIMIZE="                      &
1944
                                            "ALL "                         &
1945
                                               "-O2,!-O0,!-O1,!-O3 "       &
1946
                                            "NONE "                        &
1947
                                               "-O0,!-O1,!-O2,!-O3 "       &
1948
                                            "SOME "                        &
1949
                                               "-O1,!-O0,!-O2,!-O3 "       &
1950
                                            "SPACE "                       &
1951
                                               "-Os,!-O0,!-O1,!-O2,!-O3 "  &
1952
                                            "DEVELOPMENT "                 &
1953
                                               "-O1,!-O0,!-O2,!-O3 "       &
1954
                                            "UNROLL_LOOPS "                &
1955
                                               "-funroll-loops "           &
1956
                                            "NO_STRICT_ALIASING "          &
1957
                                               "-fno-strict-aliasing "     &
1958
                                            "INLINING "                    &
1959
                                               "-O3,!-O0,!-O1,!-O2";
1960
   --        /NOOPTIMIZE (D)
1961
   --        /OPTIMIZE[=(keyword[,...])]
1962
   --
1963
   --   Selects the level of optimization for your program.  The supported
1964
   --   keywords are as follows:
1965
   --
1966
   --      ALL (D)       Perform most optimizations, including those that
1967
   --                    may be expensive.
1968
   --
1969
   --      NONE          Do not do any optimizations. Same as /NOOPTIMIZE.
1970
   --
1971
   --      SOME          Perform some optimizations, but omit ones that
1972
   --                    are costly in compilation time.
1973
   --
1974
   --      SPACE         Optimize space usage
1975
   --
1976
   --      DEVELOPMENT   Same as SOME.
1977
   --
1978
   --      INLINING      Full optimization, and also attempt automatic inlining
1979
   --                    of small subprograms within a unit
1980
   --
1981
   --      UNROLL_LOOPS  Try to unroll loops. This keyword may be specified
1982
   --                    with any keyword above other than NONE. Loop
1983
   --                    unrolling usually, but not always, improves the
1984
   --                    performance of programs.
1985
   --
1986
   --      NO_STRICT_ALIASING
1987
   --                    Suppress aliasing analysis. When optimization is
1988
   --                    enabled (ALL or SOME above), the compiler assumes
1989
   --                    that pointers do in fact point to legitimate values
1990
   --                    of the pointer type (allocated from the proper pool).
1991
   --                    If this assumption is violated, e.g. by the use of
1992
   --                    unchecked conversion, then it may be necessary to
1993
   --                    suppress this assumption using this keyword (which
1994
   --                    may be specified only in conjunction with any
1995
   --                    keyword above, other than NONE).
1996
 
1997
   S_GCC_OptX    : aliased constant S := "/NOOPTIMIZE "                    &
1998
                                            "-O0,!-O1,!-O2,!-O3";
1999
   --  NODOC (see /OPTIMIZE)
2000
 
2001
   S_GCC_Output  : aliased constant S := "/OUTPUT_FILE=<"                  &
2002
                                            "-gnatl=>";
2003
   --        /OUTPUT_FILE=fname
2004
   --
2005
   --   This has the same effect as /LIST except that the output is written
2006
   --   to a file instead of to standard output. If the given fname
2007
   --   does not start with a period, then it is the full name of the file
2008
   --   to be written. If fname starts with a period, the name of the file
2009
   --   is the concatenation of to the name of the file being compiled with
2010
   --   fname where the period is replace by an underline. For example, if
2011
   --   file xyz.adb is compiled with -gnatl=.lst, then the output is written
2012
   --   to file xyz.adb_lst.
2013
 
2014
   S_GCC_Pointer : aliased constant S := "/POINTER_SIZE="                  &
2015
                                            "64 "                          &
2016
                                               "-mmalloc64 "               &
2017
                                            "LONG "                        &
2018
                                               "-mmalloc64 "               &
2019
                                            "32 "                          &
2020
                                               "-mno-malloc64 "            &
2021
                                            "SHORT "                       &
2022
                                               "-mno-malloc64";
2023
   --        /POINTER_SIZE=64 (D)
2024
   --        /POINTER_SIZE[=(keyword[,...])]
2025
   --
2026
   --   Change how pointers and descriptors are allocated. The following
2027
   --   keywords are supported:
2028
   --
2029
   --        64 (D)       Allocate heap pointers in 64bit space except as
2030
   --                     constrained by a 32bit size clause or by
2031
   --                     Convention_C and generate 64bit descriptors for
2032
   --                     Descriptor mechanisms for calling imported
2033
   --                     subprograms and accept both 64bit and 32bit
2034
   --                     descriptors for calls to exported subprograms.
2035
   --
2036
   --        LONG         Equivalent to option 64.
2037
   --
2038
   --        32           Allocate all heap pointers in 32bit space and
2039
   --                     generate 32bit descriptors for Descriptor
2040
   --                     mechanisms for calling imported subprograms.
2041
   --
2042
   --        SHORT        Equivalent to option 32.
2043
 
2044
   S_GCC_Polling : aliased constant S := "/POLLING "                       &
2045
                                            "-gnatP";
2046
   --        /NOPOLLING (D)
2047
   --        /POLLING
2048
   --
2049
   --   Enable polling. See the description of pragma Polling in the GNAT
2050
   --   Reference Manual for full details.
2051
 
2052
   S_GCC_Project : aliased constant S := "/PROJECT_FILE=<"                 &
2053
                                            "-P>";
2054
   --        /PROJECT_FILE=filename
2055
   --
2056
   --   Specifies the main project file to be used. The project files rooted
2057
   --   at the main project file will be parsed before the invocation of the
2058
   --   compiler. The source and object directories to be searched will be
2059
   --   communicated to the compiler through logical names
2060
   --   ADA_PRJ_INCLUDE_FILE and ADA_PRJ_OBJECTS_FILE.
2061
 
2062
   S_GCC_Psta    : aliased constant S := "/PRINT_STANDARD "                &
2063
                                            "-gnatS";
2064
   --        /PRINT_STANDARD
2065
   --
2066
   --   cause the compiler to output a representation of package Standard
2067
   --   in a form very close to standard Ada. It is not quite possible to
2068
   --   do this and remain entirely Standard (since new numeric base types
2069
   --   cannot be created in standard Ada), but the output is easily
2070
   --   readable to any Ada programmer, and is useful to determine the
2071
   --   characteristics of target dependent types in package Standard.
2072
 
2073
   S_GCC_Reswarn : aliased constant S := "/TREAT_RESTRICTIONS_AS_WARNINGS " &
2074
                                             "-gnatr";
2075
 
2076
   --        /NO_TREAT_RESTRICTIONS_AS_WARNINGS (D)
2077
   --        /TREAT_RESTRICTIONS_AS_WARNINGS
2078
   --
2079
   --   Causes all restrictions to be treated as warnings (pragma Restriction
2080
   --   treated as Restriction_Warnings, pragma Profile as Profile_Warnings,
2081
   --   and pragma Ravenscar sets restriction warnings instead of restrictions)
2082
 
2083
   S_GCC_Report  : aliased constant S := "/REPORT_ERRORS="                 &
2084
                                            "VERBOSE "                     &
2085
                                               "-gnatv "                   &
2086
                                            "BRIEF "                       &
2087
                                               "-gnatb "                   &
2088
                                            "FULL "                        &
2089
                                               "-gnatf "                   &
2090
                                            "IMMEDIATE "                   &
2091
                                               "-gnatdO "                  &
2092
                                            "DEFAULT "                     &
2093
                                               "!-gnatb,!-gnatv";
2094
   --        /NOREPORT_ERRORS (D)
2095
   --        /REPORT_ERRORS[=(keyword[,...])]
2096
   --
2097
   --   Change the way errors are reported.  The following keywords are
2098
   --   supported:
2099
   --
2100
   --        VERBOSE (D)  Verbose mode. Full error output with source lines
2101
   --                     to SYS$OUTPUT.
2102
   --
2103
   --        BRIEF        Generate the brief format error messages to
2104
   --                     SYS$OUTPUT as well as the verbose format message or
2105
   --                     full listing.
2106
   --
2107
   --        FULL         Normally, the compiler suppresses error messages that
2108
   --                     are likely to be redundant. This keyword causes all
2109
   --                     error messages to be generated. One particular effect
2110
   --                     is for the case of references to undefined variables.
2111
   --                     If a given variable is referenced several times, the
2112
   --                     normal format of messages produces one error.  With
2113
   --                     FULL, each undefined reference produces a separate
2114
   --                     error message.
2115
   --
2116
   --        IMMEDIATE    Normally, the compiler saves up error messages and
2117
   --                     generates them at the end of compilation in proper
2118
   --                     sequence.  This keyword causes error messages to be
2119
   --                     generated as soon as they are detected. The use of
2120
   --                     IMMEDIATE usually causes error messages to be
2121
   --                     generated out of sequence. Use it when the compiler
2122
   --                     blows up due to an internal error.  In this case, the
2123
   --                     error messages may be lost. Sometimes blowups are
2124
   --                     the result of mishandled error messages, so you may
2125
   --                     want to run with this keyword to determine whether
2126
   --                     any error messages were generated.
2127
   --
2128
   --      DEFAULT        Turn off VERBOSE and BRIEF. Same as /NOREPORT_ERRORS.
2129
 
2130
   S_GCC_ReportX : aliased constant S := "/NOREPORT_ERRORS "               &
2131
                                            "!-gnatb,!-gnatv";
2132
   --  NODOC (see /REPORT_ERRORS)
2133
 
2134
   S_GCC_Repinfo : aliased constant S := "/REPRESENTATION_INFO="           &
2135
                                            "DEFAULT "                     &
2136
                                               "-gnatR "                   &
2137
                                            "NONE "                        &
2138
                                               "-gnatR0 "                  &
2139
                                            "ARRAYS "                      &
2140
                                               "-gnatR1 "                  &
2141
                                            "ARRAYS_FILE "                 &
2142
                                               "-gnatR1s "                 &
2143
                                            "OBJECTS "                     &
2144
                                               "-gnatR2 "                  &
2145
                                            "OBJECTS_FILE "                &
2146
                                               "-gnatR2s "                 &
2147
                                            "SYMBOLIC "                    &
2148
                                               "-gnatR3 "                  &
2149
                                            "SYMBOLIC_FILE "               &
2150
                                               "-gnatR3s";
2151
   --        /NOREPRESENTATION_INFO (D)
2152
   --        /REPRESENTATION_INFO[=(keyword[,...])]
2153
   --
2154
   --   This qualifier controls output from the compiler of a listing showing
2155
   --   representation information for declared types and objects.
2156
   --
2157
   --        ARRAYS (D)      Size and alignment information is listed for
2158
   --                        declared array and record types.
2159
   --
2160
   --        ARRAYS_FILE     Similar to ARRAYS, but the output is to a file
2161
   --                        with the name 'file_rep' where 'file' is the name
2162
   --                        of the corresponding source file.
2163
   --
2164
   --        NONE            no information is output (equivalent to omitting
2165
   --                        the /REPRESENTATION_INFO qualifiers).
2166
   --
2167
   --        OBJECTS         Size and alignment information is listed for all
2168
   --                        declared types and objects.
2169
   --
2170
   --        OBJECTS_FILE    Similar to OBJECTS, but the output is to a file
2171
   --                        with the name 'file_rep' where 'file' is the name
2172
   --                        of the corresponding source file.
2173
   --
2174
   --        SYMBOLIC        Symbolic expression information for values that
2175
   --                        are computed at run time for variant records.
2176
   --
2177
   --        SYMBOLIC_FILE   Similar to SYMBOLIC, but the output is to a file
2178
   --                        with the name 'file_rep' where 'file' is the name
2179
   --                        of the corresponding source file.
2180
   --
2181
   --        DEFAULT         Equivalent to ARRAYS.
2182
 
2183
   S_GCC_RepinfX : aliased constant S := "/NOREPRESENTATION_INFO "         &
2184
                                            "!-gnatR";
2185
   --  NODOC (see /REPRESENTATION_INFO)
2186
 
2187
   S_GCC_RTS     : aliased constant S := "/RUNTIME_SYSTEM=|"               &
2188
                                            "--RTS=|";
2189
   --        /RUNTIME_SYSTEM=xxx
2190
   --
2191
   --    Build against an alternate runtime system named xxx or RTS-xxx.
2192
 
2193
   S_GCC_SCO     : aliased constant S := "/SCO_OUTPUT "   &
2194
                                            "-gnateS";
2195
   --        /NOSCO_OUTPUT (D)
2196
   --        /SCO_OUTPUT
2197
   --
2198
   --   Controls the output of SCO (Source Coverage Obligation) information
2199
   --   in the generated ALI file. This information is used by advanced source
2200
   --   coverage tools. For a full description of the SCO format, see unit
2201
   --   SCOs in the compiler sources (sco.ads/sco.adb).
2202
 
2203
   S_GCC_Search  : aliased constant S := "/SEARCH=*"                       &
2204
                                            "-I*";
2205
   --        /SEARCH=(directory[,...])
2206
   --
2207
   --    When looking for source files also look in directories specified.
2208
 
2209
   S_GCC_Style   : aliased constant S := "/STYLE_CHECKS="                  &
2210
                                            "ALL_BUILTIN "                 &
2211
                                               "-gnatyy "                  &
2212
                                            "0 "                           &
2213
                                               "-gnaty0 "                  &
2214
                                            "1 "                           &
2215
                                               "-gnaty1 "                  &
2216
                                            "2 "                           &
2217
                                               "-gnaty2 "                  &
2218
                                            "3 "                           &
2219
                                               "-gnaty3 "                  &
2220
                                            "4 "                           &
2221
                                               "-gnaty4 "                  &
2222
                                            "5 "                           &
2223
                                               "-gnaty5 "                  &
2224
                                            "6 "                           &
2225
                                               "-gnaty6 "                  &
2226
                                            "7 "                           &
2227
                                               "-gnaty7 "                  &
2228
                                            "8 "                           &
2229
                                               "-gnaty8 "                  &
2230
                                            "9 "                           &
2231
                                               "-gnaty9 "                  &
2232
                                            "ATTRIBUTE "                   &
2233
                                               "-gnatya "                  &
2234
                                            "NOATTRIBUTE "                 &
2235
                                               "-gnaty-a "                 &
2236
                                            "ARRAY_INDEXES "               &
2237
                                               "-gnatyA "                  &
2238
                                            "NOARRAY_INDEXES "             &
2239
                                               "-gnaty-A "                 &
2240
                                            "BLANKS "                      &
2241
                                               "-gnatyb "                  &
2242
                                            "BOOLEAN_OPERATORS "           &
2243
                                               "-gnatyB "                  &
2244
                                            "NOBLANKS "                    &
2245
                                               "-gnaty-b "                 &
2246
                                            "COMMENTS "                    &
2247
                                               "-gnatyc "                  &
2248
                                            "NOCOMMENTS "                  &
2249
                                               "-gnaty-c "                 &
2250
                                            "DOS_LINE_ENDINGS "            &
2251
                                               "-gnatyd "                  &
2252
                                            "NODOS_LINE_ENDINGS "          &
2253
                                               "-gnaty-d "                 &
2254
                                            "END "                         &
2255
                                               "-gnatye "                  &
2256
                                            "NOEND "                       &
2257
                                               "-gnaty-e "                 &
2258
                                            "VTABS "                       &
2259
                                               "-gnatyf "                  &
2260
                                            "NOVTABS "                     &
2261
                                               "-gnaty-f "                 &
2262
                                            "GNAT "                        &
2263
                                               "-gnatyg "                  &
2264
                                            "HTABS "                       &
2265
                                               "-gnatyh "                  &
2266
                                            "NOHTABS "                     &
2267
                                               "-gnaty-h "                 &
2268
                                            "IF_THEN "                     &
2269
                                               "-gnatyi "                  &
2270
                                            "NOIF_THEN "                   &
2271
                                               "-gnaty-i "                 &
2272
                                            "KEYWORD "                     &
2273
                                               "-gnatyk "                  &
2274
                                            "NOKEYWORD "                   &
2275
                                               "-gnaty-k "                 &
2276
                                            "LAYOUT "                      &
2277
                                               "-gnatyl "                  &
2278
                                            "NOLAYOUT "                    &
2279
                                               "-gnaty-l "                 &
2280
                                            "LINE_LENGTH "                 &
2281
                                               "-gnatym "                  &
2282
                                            "NOLINE_LENGTH "               &
2283
                                               "-gnaty-m "                 &
2284
                                            "MODE_IN "                     &
2285
                                               "-gnatyI "                  &
2286
                                            "NOMODE_IN "                   &
2287
                                               "-gnaty-I "                 &
2288
                                            "NONE "                        &
2289
                                               "-gnatyN "                  &
2290
                                            "STANDARD_CASING "             &
2291
                                               "-gnatyn "                  &
2292
                                            "NOSTANDARD_CASING "           &
2293
                                               "-gnaty-n "                 &
2294
                                            "ORDERED_SUBPROGRAMS "         &
2295
                                               "-gnatyo "                  &
2296
                                            "NOORDERED_SUBPROGRAMS "       &
2297
                                               "-gnaty-o "                 &
2298
                                            "OVERRIDING_INDICATORS "       &
2299
                                               "-gnatyO "                  &
2300
                                            "NOOVERRIDING_INDICATORS "     &
2301
                                               "-gnaty-O "                 &
2302
                                            "PRAGMA "                      &
2303
                                               "-gnatyp "                  &
2304
                                            "NOPRAGMA "                    &
2305
                                               "-gnaty-p "                 &
2306
                                            "REFERENCES "                  &
2307
                                               "-gnatyr "                  &
2308
                                            "NOREFERENCES "                &
2309
                                               "-gnaty-r "                 &
2310
                                            "SPECS "                       &
2311
                                               "-gnatys "                  &
2312
                                            "NOSPECS "                     &
2313
                                               "-gnaty-s "                 &
2314
                                            "STATEMENTS_AFTER_THEN_ELSE "  &
2315
                                               "-gnatyS "                  &
2316
                                            "NOSTATEMENTS_AFTER_THEN_ELSE " &
2317
                                               "-gnaty-S "                 &
2318
                                            "TOKEN "                       &
2319
                                               "-gnatyt "                  &
2320
                                            "NOTOKEN "                     &
2321
                                               "-gnaty-t "                 &
2322
                                            "UNNECESSARY_BLANK_LINES "     &
2323
                                               "-gnatyu "                  &
2324
                                            "NOUNNECESSARY_BLANK_LINES "   &
2325
                                               "-gnaty-u "                 &
2326
                                            "XTRA_PARENS "                 &
2327
                                               "-gnaty-x "                 &
2328
                                            "NOXTRA_PARENS "               &
2329
                                               "-gnaty-x ";
2330
   --        /NOSTYLE_CHECKS (D)
2331
   --        /STYLE_CHECKS[=(keyword,[...])]
2332
   --
2333
   --   Normally, GNAT permits any code layout consistent with the reference
2334
   --   manual requirements.  This qualifier imposes style checking on the
2335
   --   input source code.  The following keywords are supported:
2336
   --
2337
   --      ALL_BUILTIN (D)      Equivalent to the following list of options:
2338
   --                           3, ATTRIBUTE, BLANKS, COMMENTS, END, VTABS,
2339
   --                           HTABS, IF_THEN, KEYWORD, LAYOUT, LINE_LENGTH,
2340
   --                           PRAGMA, REFERENCES, SPECS, TOKEN.
2341
   --
2342
   --      1 .. 9               Specify indentation level from 1 to 9.
2343
   --                           The general style of required indentation is as
2344
   --                           specified by the examples in the Ada Reference
2345
   --                           Manual. Full line comments must be aligned with
2346
   --                           the -- starting on a column that is a multiple
2347
   --                           of the alignment level.
2348
   --
2349
   --      ATTRIBUTE            Check attribute casing.
2350
   --                           Attribute names, including the case of keywords
2351
   --                           such as digits used as attributes names,
2352
   --                           must be written in mixed case, that is,
2353
   --                           the initial letter and any letter following an
2354
   --                           underscore must be uppercase.
2355
   --                           All other letters must be lowercase.
2356
   --
2357
   --      ARRAY_INDEXES        Check indexes of array attributes.
2358
   --                           For array attributes First, Last, Range,
2359
   --                           or Length, the index number must be omitted
2360
   --                           for one-dimensional arrays and is required
2361
   --                           for multi-dimensional arrays.
2362
   --
2363
   --      BLANKS               Blanks not allowed at statement end.
2364
   --                           Trailing blanks are not allowed at the end of
2365
   --                           statements. The purpose of this rule, together
2366
   --                           with option HTABS (no horizontal tabs), is to
2367
   --                           enforce a canonical format for the use of
2368
   --                           blanks to separate source tokens.
2369
   --
2370
   --      COMMENTS             Check comments.
2371
   --                           Comments must meet the following set of rules:
2372
   --
2373
   --                             * The "--" that starts the column must either
2374
   --                               start in column one, or else at least one
2375
   --                               blank must precede this sequence.
2376
   --
2377
   --                             * Comments that follow other tokens on a line
2378
   --                               must have at least one blank following the
2379
   --                               "--" at the start of the comment.
2380
   --
2381
   --                             * Full line comments must have two blanks
2382
   --                               following the "--" that starts the comment,
2383
   --                               with the following exceptions.
2384
   --
2385
   --                             * A line consisting only of the "--"
2386
   --                               characters, possibly preceded by blanks is
2387
   --                               permitted.
2388
   --
2389
   --                             * A comment starting with "--x" where x is
2390
   --                               a special character is permitted. This
2391
   --                               allows proper processing of the output
2392
   --                               generated by specialized tools including
2393
   --                               gnatprep (where --! is used) and the SPARK
2394
   --                               annotation language (where --# is used).
2395
   --                               For the purposes of this rule, a special
2396
   --                               character is defined as being in one of the
2397
   --                               ASCII ranges 16#21#..16#2F# or
2398
   --                               16#3A#..16#3F#.
2399
   --
2400
   --                             * A line consisting entirely of minus signs,
2401
   --                               possibly preceded by blanks, is permitted.
2402
   --                               This allows the construction of box
2403
   --                               comments where lines of minus signs are
2404
   --                               used to form the top and bottom of the box.
2405
   --
2406
   --                             * If a comment starts and ends with "--" is
2407
   --                               permitted as long as at least one blank
2408
   --                               follows the initial "--". Together with
2409
   --                               the preceding rule, this allows the
2410
   --                               construction of box comments, as shown in
2411
   --                               the following example:
2412
   --
2413
   --                               ---------------------------
2414
   --                               -- This is a box comment --
2415
   --                               ---------------------------
2416
   --
2417
   --      DOS_LINE_ENDINGS     Check that no DOS line terminators are present
2418
   --                           All lines must be terminated by a single
2419
   --                           ASCII.LF character. In particular the DOS line
2420
   --                           terminator sequence CR / LF is not allowed).
2421
   --
2422
   --      END                  Check end/exit labels.
2423
   --                           Optional labels on end statements ending
2424
   --                           subprograms and on exit statements exiting
2425
   --                           named loops, are required to be present.
2426
   --
2427
   --      GNAT                 Enforces a set of style conventions that
2428
   --                           match the style used in the GNAT source code.
2429
   --                           This maybe useful when developing code that
2430
   --                           is eventually intended to be incorporated into
2431
   --                           GNAT. For further details, see GNAT sources.
2432
   --
2433
   --      HTABS                No horizontal tabs.
2434
   --                           Horizontal tab characters are not permitted in
2435
   --                           the source text. Together with the BLANKS
2436
   --                           (no blanks at end of line) option, this
2437
   --                           enforces a canonical form for the use of blanks
2438
   --                           to separate source tokens.
2439
   --
2440
   --      IF_THEN              Check if-then layout.
2441
   --                           The keyword then must appear either on the
2442
   --                           same line as the corresponding if, or on a line
2443
   --                           on its own, lined up under the if with at least
2444
   --                           one non-blank line in between containing all or
2445
   --                           part of the condition to be tested.
2446
   --
2447
   --      KEYWORD              Check keyword casing.
2448
   --                           All keywords must be in lower case (with the
2449
   --                           exception of keywords such as digits used as
2450
   --                           attribute names to which this check does not
2451
   --                           apply).
2452
   --
2453
   --      LAYOUT               Check layout.
2454
   --                           Layout of statement and declaration constructs
2455
   --                           must follow the recommendations in the Ada
2456
   --                           Reference Manual, as indicated by the form of
2457
   --                           the syntax rules. For example an else keyword
2458
   --                           must be lined up with the corresponding if
2459
   --                           keyword.
2460
   --
2461
   --                           There are two respects in which the style rule
2462
   --                           enforced by this check option are more liberal
2463
   --                           than those in the Ada Reference Manual.
2464
   --                           First in the case of record declarations,
2465
   --                           it is permissible to put the record keyword on
2466
   --                           the same line as the type keyword, and then
2467
   --                           the end in end record must line up under type.
2468
   --                           For example, either of the following two
2469
   --                           layouts is acceptable:
2470
   --
2471
   --                           type q is record
2472
   --                              a : integer;
2473
   --                              b : integer;
2474
   --                           end record;
2475
   --
2476
   --                           type q is
2477
   --                              record
2478
   --                                 a : integer;
2479
   --                                 b : integer;
2480
   --                              end record;
2481
   --
2482
   --                           Second, in the case of a block statement,
2483
   --                           a permitted alternative is to put the block
2484
   --                           label on the same line as the declare or begin
2485
   --                           keyword, and then line the end keyword up under
2486
   --                           the block label. For example both the following
2487
   --                           are permitted:
2488
   --
2489
   --
2490
   --
2491
   --                           Block : declare
2492
   --                              A : Integer := 3;
2493
   --                           begin
2494
   --                              Proc (A, A);
2495
   --                           end Block;
2496
   --
2497
   --                           Block :
2498
   --                              declare
2499
   --                                 A : Integer := 3;
2500
   --                              begin
2501
   --                                 Proc (A, A);
2502
   --                              end Block;
2503
   --
2504
   --                           The same alternative format is allowed for
2505
   --                           loops. For example, both of the following are
2506
   --                           permitted:
2507
   --
2508
   --
2509
   --
2510
   --                           Clear : while J < 10 loop
2511
   --                              A (J) := 0;
2512
   --                           end loop Clear;
2513
   --
2514
   --                           Clear :
2515
   --                              while J < 10 loop
2516
   --                                 A (J) := 0;
2517
   --                              end loop Clear;
2518
   --
2519
   --
2520
   --
2521
   --      LINE_LENGTH          Check maximum line length.
2522
   --                           The length of source lines must not exceed 79
2523
   --                           characters, including any trailing blanks
2524
   --                           The value of 79 allows convenient display on
2525
   --                           an 80 character wide device or window, allowing
2526
   --                           for possible special treatment of 80 character
2527
   --                           lines.
2528
   --
2529
   --      NONE                 Clear any previously set style checks.
2530
   --
2531
   --      ORDERED_SUBPROGRAMS  Check order of subprogram bodies.
2532
   --                           All subprogram bodies in a given scope (e.g.
2533
   --                           a package body) must be in alphabetical order.
2534
   --                           The ordering rule uses normal Ada rules for
2535
   --                           comparing strings, ignoring casing of letters,
2536
   --                           except that if there is a trailing numeric
2537
   --                           suffix, then the value of this suffix is used
2538
   --                           in the ordering (e.g. Junk2 comes before
2539
   --                           Junk10).
2540
   --
2541
   --      OVERRIDING_INDICATORS Check that overriding subprograms are
2542
   --                           explicitly marked as such. The declaration of
2543
   --                           a primitive operation of a type extension that
2544
   --                           overrides an inherited operation must carry
2545
   --                           an overriding indicator.
2546
   --
2547
   --      PRAGMA               Check pragma casing.
2548
   --                           Pragma names must be written in mixed case,
2549
   --                           that is, the initial letter and any letter
2550
   --                           following an underscore must be uppercase.
2551
   --                           All other letters must be lowercase.
2552
   --
2553
   --      REFERENCES           Check references.
2554
   --                           All identifier references must be cased in the
2555
   --                           same way as the corresponding declaration.
2556
   --                           No specific casing style is imposed on
2557
   --                           identifiers. The only requirement is for
2558
   --                           consistency of references with declarations.
2559
   --
2560
   --      SPECS                Check separate specs.
2561
   --                           Separate declarations ("specs") are required
2562
   --                           for subprograms (a body is not allowed to serve
2563
   --                           as its own declaration). The only exception is
2564
   --                           that parameterless library level procedures are
2565
   --                           not required to have a separate declaration.
2566
   --                           This exception covers the most frequent form of
2567
   --                           main program procedures.
2568
   --
2569
   --      STANDARD_CASING      Check casing of entities in Standard.
2570
   --                           Any identifier from Standard must be cased to
2571
   --                           match the presentation in the Ada Reference
2572
   --                           Manual (for example, Integer and ASCII.NUL).
2573
   --
2574
   --      TOKEN                Check token spacing.
2575
   --                           The following token spacing rules are enforced:
2576
   --
2577
   --                             * The keywords abs and not must be followed
2578
   --                               by a space.
2579
   --
2580
   --                             * The token => must be surrounded by spaces.
2581
   --
2582
   --                             * The token <> must be preceded by a space or
2583
   --                               a left parenthesis.
2584
   --
2585
   --                             * Binary operators other than ** must be
2586
   --                               surrounded by spaces. There is no
2587
   --                               restriction on the layout of the ** binary
2588
   --                               operator.
2589
   --
2590
   --                             * Colon must be surrounded by spaces.
2591
   --
2592
   --                             * Colon-equal (assignment) must be surrounded
2593
   --                               by spaces.
2594
   --
2595
   --                             * Comma must be the first non-blank character
2596
   --                               on the line, or be immediately preceded by
2597
   --                               a non-blank character, and must be followed
2598
   --                               by a space.
2599
   --
2600
   --                             * If the token preceding a left paren ends
2601
   --                               with a letter or digit, then a space must
2602
   --                               separate the two tokens.
2603
   --
2604
   --                             * A right parenthesis must either be the
2605
   --                               first non-blank character on a line, or it
2606
   --                               must be preceded by a non-blank character.
2607
   --
2608
   --                             * A semicolon must not be preceded by
2609
   --                               a space, and must not be followed by
2610
   --                               a non-blank character.
2611
   --
2612
   --                             * A unary plus or minus may not be followed
2613
   --                               by a space.
2614
   --
2615
   --                             * A vertical bar must be surrounded by
2616
   --                               spaces.
2617
   --
2618
   --                           In the above rules, appearing in column one is
2619
   --                           always permitted, that is, counts as meeting
2620
   --                           either a requirement for a required preceding
2621
   --                           space, or as meeting a requirement for no
2622
   --                           preceding space.
2623
   --
2624
   --                           Appearing at the end of a line is also always
2625
   --                           permitted, that is, counts as meeting either
2626
   --                           a requirement for a following space,
2627
   --                           or as meeting a requirement for no following
2628
   --                           space.
2629
   --
2630
   --      UNNECESSARY_BLANK_LINES
2631
   --                           Check for unnecessary blank lines.
2632
   --                           A blank line is considered unnecessary if it
2633
   --                           appears at the end of the file, or if more
2634
   --                           than one blank line occurs in sequence.
2635
   --
2636
   --      VTABS                No form feeds or vertical tabs.
2637
   --                           Form feeds or vertical tab characters are not
2638
   --                           permitted in the source text.
2639
   --
2640
   --      XTRA_PARENS          Check for the use of an unnecessary extra
2641
   --                           level of parentheses (C - style) around
2642
   --                           conditions in if statements, while statements
2643
   --                           and exit statements.
2644
 
2645
   S_GCC_StyleX  : aliased constant S := "/NOSTYLE_CHECKS "                &
2646
                                            "!-gnatg,!-gnaty*";
2647
   --  NODOC (see /STYLE_CHECKS)
2648
 
2649
   S_GCC_Subdirs : aliased constant S := "/SUBDIRS=<"                      &
2650
                                            "--subdirs=>";
2651
   --        /SUBDIRS=dir
2652
   --
2653
   --   The actual directories (object, exec, library, ...) are subdirectories
2654
   --   of the directory specified in the project file. If the subdirectory
2655
   --   does not exist, it is created automatically.
2656
 
2657
   S_GCC_Symbol  : aliased constant S := "/SYMBOL_PREPROCESSING=" & '"'    &
2658
                                            "-gnateD" & '"';
2659
   --        /SYMBOL_PREPROCESSING="symbol=value"
2660
   --
2661
   --   Define or redefine a preprocessing symbol, associated with value.
2662
   --   If "=value" is not specified, then the value of the symbol is True.
2663
   --   A symbol is an identifier, following normal Ada (case-insensitive)
2664
   --   rules for its syntax, and value is any sequence (including an empty
2665
   --   sequence) of characters from the set (letters, digits, period,
2666
   --   underline). Ada reserved words may be used as symbols, with the
2667
   --   exceptions of "if", "else", "elsif", "end", "and", "or" and "then".
2668
   --
2669
   --   A symbol declared with this qualifier on the command line replaces
2670
   --   a symbol with the same name either in a definition file or specified
2671
   --   with a switch -D in the preprocessor data file.
2672
   --
2673
   --   This qualifier is similar to qualifier /ASSOCIATE of
2674
   --   GNAT PREPROCESSING.
2675
 
2676
   S_GCC_Syntax  : aliased constant S := "/SYNTAX_ONLY "                   &
2677
                                            "-gnats";
2678
   --        /NOSYNTAX_ONLY (D)
2679
   --        /SYNTAX_ONLY
2680
   --
2681
   --   Run GNAT in syntax checking only mode.  You can check a series of
2682
   --   files in a single command, and can use wild cards to specify such a
2683
   --   group of files.
2684
   --
2685
   --   You may use other qualifiers in conjunction with this qualifier. In
2686
   --   particular, /LIST and /REPORT_ERRORS=VERBOSE are useful to control the
2687
   --   format of any generated error messages.
2688
   --
2689
   --   The output is simply the error messages, if any. No object file or ALI
2690
   --   file is generated by a syntax-only compilation. Also, no units other
2691
   --   than the one specified are accessed. For example, if a unit "X" with's
2692
   --   a unit "Y", compiling unit "X" in syntax check only mode does not
2693
   --   access the source file containing unit "Y".
2694
   --
2695
   --   Normally, GNAT allows only a single unit in a source file. However,
2696
   --   this restriction does not apply in syntax-check-only mode, and it is
2697
   --   possible to check a file containing multiple compilation units
2698
   --   concatenated together. This is primarily used by the GNAT CHOP
2699
   --   command.
2700
 
2701
   S_GCC_Table   : aliased constant S := "/TABLE_MULTIPLIER=#"             &
2702
                                            "-gnatT#";
2703
   --        /TABLE_MULTIPLIER=nnn
2704
   --
2705
   --   All compiler tables start at nnn times usual starting size.
2706
 
2707
   S_GCC_Trace   : aliased constant S := "/TRACE_UNITS "                   &
2708
                                            "-gnatdc";
2709
   --        /TRACE_UNITS
2710
   --        /NOTRACE_UNITS
2711
   --
2712
   --   This switch that does for the frontend what /VERBOSE does for the
2713
   --   backend. The system prints the name of each unit, either a compilation
2714
   --   unit or nested unit, as it is being analyzed.
2715
 
2716
   S_GCC_Tree    : aliased constant S := "/TREE_OUTPUT "                   &
2717
                                            "-gnatt";
2718
   --        /TREE_OUTPUT
2719
   --        /NOTREE_OUTPUT
2720
   --
2721
   --   Cause GNAT to write the internal tree for a unit to a file (with the
2722
   --   filetype ATB for a body or ATS for a spec).  This is not normally
2723
   --   required, but is used by separate analysis tools. Typically these
2724
   --   tools do the necessary compilations automatically, so you should never
2725
   --   have to specify this switch in normal operation.
2726
 
2727
   S_GCC_Trys    : aliased constant S := "/TRY_SEMANTICS "                 &
2728
                                            "-gnatq";
2729
   --        /TRY_SEMANTICS
2730
   --        /NOTRY_SEMANTICS
2731
   --
2732
   --   In normal operation mode the compiler first parses the program and
2733
   --   determines if there are any syntax errors. If there are, appropriate
2734
   --   error messages are generated and compilation is immediately
2735
   --   terminated.  This qualifier tells GNAT to continue with semantic
2736
   --   analysis even if syntax errors have been found.  This may enable the
2737
   --   detection of more errors in a single run. On the other hand, the
2738
   --   semantic analyzer is more likely to encounter some internal fatal
2739
   --   error when given a syntactically invalid tree.
2740
 
2741
   S_GCC_Units   : aliased constant S := "/UNITS_LIST "                    &
2742
                                            "-gnatu";
2743
   --        /NOUNITS_LIST (D)
2744
   --        /UNITS_LIST
2745
   --
2746
   --   Print a list of units required by this compilation on SYS$OUTPUT.  The
2747
   --   listing includes all units on which the unit being compiled depends
2748
   --   either directly or indirectly.
2749
 
2750
   S_GCC_Unique  : aliased constant S := "/UNIQUE_ERROR_TAG "              &
2751
                                            "-gnatU";
2752
   --        /NOUNIQUE_ERROR_TAG (D)
2753
   --        /UNIQUE_ERROR_TAG
2754
   --
2755
   --   Tag compiler error messages with the string "error: ".
2756
 
2757
   S_GCC_Upcase  : aliased constant S := "/UPPERCASE_EXTERNALS "           &
2758
                                            "-gnatF";
2759
   --        /NOUPPERCASE_EXTERNALS (D)
2760
   --        /UPPERCASE_EXTERNALS
2761
   --
2762
   --   Fold default and explicit external names in pragmas Import and Export
2763
   --   to uppercase for compatibility with the default behavior of DEC C.
2764
 
2765
   S_GCC_Valid   : aliased constant S := "/VALIDITY_CHECKING="             &
2766
                                            "DEFAULT "                     &
2767
                                               "-gnatVd "                  &
2768
                                            "NODEFAULT "                   &
2769
                                               "-gnatVD "                  &
2770
                                            "COPIES "                      &
2771
                                               "-gnatVc "                  &
2772
                                            "NOCOPIES "                    &
2773
                                               "-gnatVC "                  &
2774
                                            "COMPONENTS "                  &
2775
                                               "-gnatVe "                  &
2776
                                            "NOCOMPONENTS "                &
2777
                                               "-gnatVE "                  &
2778
                                            "FLOATS "                      &
2779
                                               "-gnatVf "                  &
2780
                                            "NOFLOATS "                    &
2781
                                               "-gnatVF "                  &
2782
                                            "IN_PARAMS "                   &
2783
                                               "-gnatVi "                  &
2784
                                            "NOIN_PARAMS "                 &
2785
                                               "-gnatVI "                  &
2786
                                            "MOD_PARAMS "                  &
2787
                                               "-gnatVm "                  &
2788
                                            "NOMOD_PARAMS "                &
2789
                                               "-gnatVM "                  &
2790
                                            "OPERANDS "                    &
2791
                                               "-gnatVo "                  &
2792
                                            "NOOPERANDS "                  &
2793
                                               "-gnatVO "                  &
2794
                                            "PARAMETERS "                  &
2795
                                               "-gnatVp "                  &
2796
                                            "NOPARAMETERS "                &
2797
                                               "-gnatVP "                  &
2798
                                            "RETURNS "                     &
2799
                                               "-gnatVr "                  &
2800
                                            "NORETURNS "                   &
2801
                                               "-gnatVR "                  &
2802
                                            "SUBSCRIPTS "                  &
2803
                                               "-gnatVs "                  &
2804
                                            "NOSUBSCRIPTS "                &
2805
                                               "-gnatVS "                  &
2806
                                            "TESTS "                       &
2807
                                               "-gnatVt "                  &
2808
                                            "NOTESTS "                     &
2809
                                               "-gnatVT "                  &
2810
                                            "ALL "                         &
2811
                                               "-gnatVa "                  &
2812
                                            "NONE "                        &
2813
                                               "-gnatVn";
2814
   --        /VALIDITY_CHECKING[=(keyword,[...])]
2815
   --
2816
   --   Control level of validity checking.
2817
   --
2818
   --        DEFAULT (D)     In this mode checks are made to prevent
2819
   --                        erroneous behavior in accordance with the RM.
2820
   --                        Notably extra checks may be needed for case
2821
   --                        statements and subscripted array assignments.
2822
   --
2823
   --        NONE            No special checks for invalid values are
2824
   --                        performed. This means that references to
2825
   --                        uninitialized variables can cause erroneous
2826
   --                        behavior from constructs like case statements
2827
   --                        and subscripted array assignments. In this
2828
   --                        mode, invalid values can lead to erroneous
2829
   --                        behavior.
2830
   --
2831
   --        FULL            Every assignment is checked for validity, so
2832
   --                        that it is impossible to assign invalid values.
2833
   --                        The RM specifically allows such assignments,
2834
   --                        but in this mode, invalid values can never be
2835
   --                        assigned, and an attempt to perform such an
2836
   --                        assignment immediately raises Constraint_Error.
2837
   --                        This behavior is allowed (but not required) by
2838
   --                        the RM. This mode is intended as a debugging aid,
2839
   --                        and may be useful in helping to track down
2840
   --                        uninitialized variables. It may be useful to
2841
   --                        use this in conjunction with the Normalize_Scalars
2842
   --                        pragma which attempts to initialize with invalid
2843
   --                        values where possible.
2844
 
2845
   S_GCC_Verbose : aliased constant S := "/VERBOSE "                       &
2846
                                            "-v";
2847
   --        /VERBOSE
2848
   --        /NOVERBOSE
2849
   --
2850
   --   Show commands generated by the GCC driver. Normally used only for
2851
   --   debugging purposes or if you need to be sure what version of the
2852
   --   compiler you are executing.
2853
 
2854
   S_GCC_Verb_Asm : aliased constant S := "/VERBOSE_ASM " &
2855
                                          "-S,-verbose_asm,!-c";
2856
   --        /NOASM (D)
2857
   --        /ASM
2858
   --
2859
   --   Use to cause the assembler source file to be generated, using S as the
2860
   --   filetype, instead of the object file. This may be useful if you need
2861
   --   to examine the generated assembly code.
2862
 
2863
   S_GCC_Warn    : aliased constant S := "/WARNINGS="                      &
2864
                                            "DEFAULT "                     &
2865
                                               "!-gnatws,!-gnatwe "        &
2866
                                            "ALL "                         &
2867
                                               "-gnatwa "                  &
2868
                                            "EVERY "                       &
2869
                                               "-gnatw.e "                 &
2870
                                            "OPTIONAL "                    &
2871
                                               "-gnatwa "                  &
2872
                                            "NOOPTIONAL "                  &
2873
                                               "-gnatwA "                  &
2874
                                            "NOALL "                       &
2875
                                               "-gnatwA "                  &
2876
                                            "ALL_GCC "                     &
2877
                                               "-Wall "                    &
2878
                                            "FAILING_ASSERTIONS "          &
2879
                                               "-gnatw.a "                 &
2880
                                            "NO_FAILING_ASSERTIONS "       &
2881
                                               "-gnatw.A "                 &
2882
                                            "BAD_FIXED_VALUES "            &
2883
                                               "-gnatwb "                  &
2884
                                            "NO_BAD_FIXED_VALUES "         &
2885
                                               "-gnatwB "                  &
2886
                                            "BIASED_REPRESENTATION "       &
2887
                                               "-gnatw.b "                 &
2888
                                            "NO_BIASED_REPRESENTATION "    &
2889
                                               "-gnatw.B "                 &
2890
                                            "CONDITIONALS "                &
2891
                                               "-gnatwc "                  &
2892
                                            "NOCONDITIONALS "              &
2893
                                               "-gnatwC "                  &
2894
                                            "MISSING_COMPONENT_CLAUSES "   &
2895
                                               "-gnatw.c "                 &
2896
                                            "NOMISSING_COMPONENT_CLAUSES " &
2897
                                               "-gnatw.C "                 &
2898
                                            "IMPLICIT_DEREFERENCE "        &
2899
                                               "-gnatwd "                  &
2900
                                            "NO_IMPLICIT_DEREFERENCE "     &
2901
                                               "-gnatwD "                  &
2902
                                            "ERRORS "                      &
2903
                                               "-gnatwe "                  &
2904
                                            "UNREFERENCED_FORMALS "        &
2905
                                               "-gnatwf "                  &
2906
                                            "NOUNREFERENCED_FORMALS "      &
2907
                                               "-gnatwF "                  &
2908
                                            "UNRECOGNIZED_PRAGMAS "        &
2909
                                               "-gnatwg "                  &
2910
                                            "NOUNRECOGNIZED_PRAGMAS "      &
2911
                                               "-gnatwG "                  &
2912
                                            "HIDING "                      &
2913
                                               "-gnatwh "                  &
2914
                                            "NOHIDING "                    &
2915
                                               "-gnatwH "                  &
2916
                                            "IMPLEMENTATION "              &
2917
                                               "-gnatwi "                  &
2918
                                            "NOIMPLEMENTATION "            &
2919
                                               "-gnatwI "                  &
2920
                                            "OBSOLESCENT "                 &
2921
                                               "-gnatwj "                  &
2922
                                            "NOOBSOLESCENT "               &
2923
                                               "-gnatwJ "                  &
2924
                                            "CONSTANT_VARIABLES "          &
2925
                                               "-gnatwk "                  &
2926
                                            "NOCONSTANT_VARIABLES "        &
2927
                                               "-gnatwK "                  &
2928
                                            "ELABORATION "                 &
2929
                                               "-gnatwl "                  &
2930
                                            "NOELABORATION "               &
2931
                                               "-gnatwL "                  &
2932
                                            "MODIFIED_UNREF "              &
2933
                                               "-gnatwm "                  &
2934
                                            "NOMODIFIED_UNREF "            &
2935
                                               "-gnatwM "                  &
2936
                                            "SUSPICIOUS_MODULUS "          &
2937
                                               "-gnatw.m "                 &
2938
                                            "NOSUSPICIOUS_MODULUS "        &
2939
                                               "-gnatw.M "                 &
2940
                                            "NORMAL "                      &
2941
                                               "-gnatwn "                  &
2942
                                            "OVERLAYS "                    &
2943
                                               "-gnatwo "                  &
2944
                                            "NOOVERLAYS "                  &
2945
                                               "-gnatwO "                  &
2946
                                            "OUT_PARAM_UNREF "             &
2947
                                               "-gnatw.o "                 &
2948
                                            "NOOUT_PARAM_UNREF "           &
2949
                                               "-gnatw.O "                 &
2950
                                            "INEFFECTIVE_INLINE "          &
2951
                                               "-gnatwp "                  &
2952
                                            "NOINEFFECTIVE_INLINE "        &
2953
                                               "-gnatwP "                  &
2954
                                            "MISSING_PARENS "              &
2955
                                               "-gnatwq "                  &
2956
                                            "PARAMETER_ORDER "             &
2957
                                               "-gnatw.p "                 &
2958
                                            "NOPARAMETER_ORDER "           &
2959
                                               "-gnatw.P "                 &
2960
                                            "NOMISSING_PARENS "            &
2961
                                               "-gnatwQ "                  &
2962
                                            "REDUNDANT "                   &
2963
                                               "-gnatwr "                  &
2964
                                            "NOREDUNDANT "                 &
2965
                                               "-gnatwR "                  &
2966
                                            "OBJECT_RENAMES "              &
2967
                                               "-gnatw.r "                 &
2968
                                            "NOOBJECT_RENAMES "            &
2969
                                               "-gnatw.R "                 &
2970
                                            "SUPPRESS "                    &
2971
                                               "-gnatws "                  &
2972
                                            "DELETED_CODE "                &
2973
                                               "-gnatwt "                  &
2974
                                            "NODELETED_CODE "              &
2975
                                               "-gnatwT "                  &
2976
                                            "UNINITIALIZED "               &
2977
                                               "-Wuninitialized "          &
2978
                                            "UNUSED "                      &
2979
                                               "-gnatwu "                  &
2980
                                            "NOUNUSED "                    &
2981
                                               "-gnatwU "                  &
2982
                                            "VARIABLES_UNINITIALIZED "     &
2983
                                               "-gnatwv "                  &
2984
                                            "NOVARIABLES_UNINITIALIZED "   &
2985
                                               "-gnatwV "                  &
2986
                                            "REVERSE_BIT_ORDER "           &
2987
                                               "-gnatw.v "                 &
2988
                                            "NOREVERSE_BIT_ORDER "         &
2989
                                               "-gnatw.V "                 &
2990
                                            "LOWBOUND_ASSUMED "            &
2991
                                               "-gnatww "                  &
2992
                                            "NOLOWBOUND_ASSUMED "          &
2993
                                               "-gnatwW "                  &
2994
                                            "WARNINGS_OFF_PRAGMAS "        &
2995
                                               "-gnatw.w "                 &
2996
                                            "NO_WARNINGS_OFF_PRAGMAS "     &
2997
                                               "-gnatw.W "                 &
2998
                                            "IMPORT_EXPORT_PRAGMAS "       &
2999
                                               "-gnatwx "                  &
3000
                                            "NOIMPORT_EXPORT_PRAGMAS "     &
3001
                                               "-gnatwX "                  &
3002
                                            "LOCAL_RAISE_HANDLING "        &
3003
                                               "-gnatw.x "                 &
3004
                                            "NOLOCAL_RAISE_HANDLING "      &
3005
                                               "-gnatw.X "                 &
3006
                                            "ADA_2005_COMPATIBILITY "      &
3007
                                               "-gnatwy "                  &
3008
                                            "NOADA_2005_COMPATIBILITY "    &
3009
                                               "-gnatwY "                  &
3010
                                            "UNCHECKED_CONVERSIONS "       &
3011
                                               "-gnatwz "                  &
3012
                                            "NOUNCHECKED_CONVERSIONS "     &
3013
                                               "-gnatwZ";
3014
   --        /NOWARNINGS
3015
   --
3016
   --   Suppress the output of all warning messages from the GNAT front end.
3017
   --   Note that it does not suppress warnings from the gcc back end.
3018
   --
3019
   --        /WARNINGS[=(keyword[,...])]
3020
   --
3021
   --   In addition to error messages, corresponding to illegalities as
3022
   --   defined in the reference manual, the compiler detects two kinds of
3023
   --   warning situations.  First, the compiler considers some constructs
3024
   --   suspicious and generates a warning message to alert you to a possible
3025
   --   error. Second, if the compiler detects a situation that is sure to
3026
   --   raise an exception at runtime, it generates a warning message.
3027
   --
3028
   --   You may specify the following keywords to change this behavior:
3029
   --
3030
   --   DEFAULT (D)             The default behavior above.
3031
   --
3032
   --   ALL                     Activate all optional warnings.
3033
   --                           Activates most optional warning messages,
3034
   --                           see remaining list in this section for
3035
   --                           details on optional warning messages that
3036
   --                           can be individually controlled.
3037
   --                           The warnings that are not turned on by
3038
   --                           this option are BIASED_ROUNDING,
3039
   --                           IMPLICIT_DEREFERENCE, HIDING and
3040
   --                           ELABORATION. All other optional Ada
3041
   --                           warnings are turned on.
3042
   --
3043
   --   EVERY                   Activate every optional warning.
3044
   --                           Activates all optional warnings, including
3045
   --                           those listed above as exceptions for ALL.
3046
   --
3047
   --   NOALL                   Suppress all optional errors.
3048
   --                           Suppresses all optional warning messages
3049
   --                           that can be activated by option ALL.
3050
   --
3051
   --   ALL_GCC                 Request additional messages from the GCC
3052
   --                           backend.  Most of these are not relevant
3053
   --                           to Ada.
3054
   --
3055
   --   CONDITIONALS            Activate warnings for conditional
3056
   --                           Expressions used in tests that are known
3057
   --                           to be True or False at compile time. The
3058
   --                           default is that such warnings are not
3059
   --                           generated.
3060
   --
3061
   --   NOCONDITIONALS          Suppress warnings for conditional
3062
   --                           expressions used in tests that are known
3063
   --                           to be True or False at compile time.
3064
   --
3065
   --   IMPLICIT_DEREFERENCE    Activate warnings on implicit dereferencing.
3066
   --                           The use of a prefix of an access type in an
3067
   --                           indexed component, slice, or selected component
3068
   --                           without an explicit .all will generate
3069
   --                           a warning. With this warning enabled, access
3070
   --                           checks occur only at points where an explicit
3071
   --                           .all appears in the source code (assuming no
3072
   --                           warnings are generated as a result of this
3073
   --                           option). The default is that such warnings are
3074
   --                           not generated. Note that /WARNINGS=ALL does not
3075
   --                           affect the setting of this warning option.
3076
   --
3077
   --   NOIMPLICIT_DEREFERENCE  Suppress warnings on implicit dereferencing.
3078
   --                           in indexed components, slices, and selected
3079
   --                           components.
3080
   --
3081
   --   ELABORATION             Activate warnings on missing pragma
3082
   --                           Elaborate_All statements. The default is
3083
   --                           that such warnings are not generated.
3084
   --
3085
   --   NOELABORATION           Suppress warnings on missing pragma
3086
   --                           Elaborate_All statements.
3087
   --
3088
   --   ERRORS                  Warning messages are to be treated as errors.
3089
   --                           The warning string still appears, but the
3090
   --                           warning messages are counted as errors, and
3091
   --                           prevent the generation of an object file.
3092
   --
3093
   --   HIDING                  Activate warnings on hiding declarations.
3094
   --                           A declaration is considered hiding if it is
3095
   --                           for a non-overloadable entity, and it declares
3096
   --                           an entity with the same name as some other
3097
   --                           entity that is directly or use-visible. The
3098
   --                           default is that such warnings are not
3099
   --                           generated.
3100
   --
3101
   --   NOHIDING                Suppress warnings on hiding declarations.
3102
   --
3103
   --   IMPLEMENTATION          Activate warnings for a with of an internal
3104
   --                           GNAT implementation unit, defined as any unit
3105
   --                           from the Ada, Interfaces, GNAT, DEC or
3106
   --                           System hierarchies that is not documented in
3107
   --                           either the Ada Reference Manual or the GNAT
3108
   --                           Programmer's Reference Manual. Such units are
3109
   --                           intended only for internal implementation
3110
   --                           purposes and should not be with'ed by user
3111
   --                           programs. The default is that such warnings
3112
   --                           are generated.
3113
   --
3114
   --   NOIMPLEMENTATION        Disables warnings for a with of an internal
3115
   --                           GNAT implementation unit.
3116
   --
3117
   --   INEFFECTIVE_INLINE      Activate warnings on ineffective pragma Inlines
3118
   --                           Activates warnings for failure of front end
3119
   --                           inlining (activated by /INLINE=FULL) to inline
3120
   --                           a particular call. There are many reasons for
3121
   --                           not being able to inline a call, including most
3122
   --                           commonly that the call is too complex to
3123
   --                           inline. This warning can also be turned on
3124
   --                           using /INLINE=FULL.
3125
   --
3126
   --   NOINEFFECTIVE_INLINE    Suppress warnings on ineffective pragma Inlines
3127
   --                           Suppresses warnings on ineffective pragma
3128
   --                           Inlines. If the inlining mechanism cannot
3129
   --                           inline a call, it will simply ignore the
3130
   --                           request silently.
3131
   --
3132
   --   MISSING_COMPONENT_CLAUSES
3133
   --                           Activate warnings for cases when there are
3134
   --                           component clauses for a record type, but not
3135
   --                           for every component of the record.
3136
   --
3137
   --   NOMISSING_COMPONENT_CLAUSES
3138
   --                           Suppress warnings for cases when there are
3139
   --                           missing component clauses for a record type.
3140
   --
3141
   --   MISSING_PARENS
3142
   --                           Activate warnings for cases where parentheses
3143
   --                           are not used and the result is potential
3144
   --                           ambiguity from a reader's point of view.
3145
   --                           For example (not a > b) when a and b are
3146
   --                           modular means (not (a) > b) and very likely
3147
   --                           the programmer intended (not (a > b)).
3148
   --
3149
   --   NOMISSING_PARENS
3150
   --                           Suppress warnings for cases where parentheses
3151
   --                           are not used and the result is potential
3152
   --                           ambiguity from a reader's point of view.
3153
   --
3154
   --   MODIFIED_UNREF          Activates warnings for variables that are
3155
   --                           assigned (using an initialization value or with
3156
   --                           one or more assignment statements) but whose
3157
   --                           value is never read. The warning is suppressed
3158
   --                           for volatile variables and also for variables
3159
   --                           that are renamings of other variables or for
3160
   --                           which an address clause is given. This warning
3161
   --                           can also be turned on using /WARNINGS/OPTIONAL.
3162
   --
3163
   --   NOMODIFIED_UNREF        Disables warnings for variables that are
3164
   --                           assigned or initialized, but never read.
3165
   --
3166
   --   NORMAL                  Sets normal warning mode, in which enabled
3167
   --                           warnings are issued and treated as warnings
3168
   --                           rather than errors. This is the default mode.
3169
   --                           It can be used to cancel the effect of an
3170
   --                           explicit /WARNINGS=SUPPRESS or
3171
   --                           /WARNINGS=ERRORS. It also cancels the effect
3172
   --                           of the implicit /WARNINGS=ERRORS that is
3173
   --                           activated by the use of /STYLE=GNAT.
3174
   --
3175
   --   OBSOLESCENT             Activates warnings for calls to subprograms
3176
   --                           marked with pragma Obsolescent and for use of
3177
   --                           features in Annex J of the Ada Reference
3178
   --                           Manual. In the case of Annex J, not all
3179
   --                           features are flagged. In particular use of the
3180
   --                           renamed packages (like Text_IO), use of package
3181
   --                           ASCII and use of the attribute 'Constrained are
3182
   --                           not flagged, since these are very common and
3183
   --                           would generate many annoying positive warnings.
3184
   --                           The default is that such warnings are not
3185
   --                           generated.
3186
   --
3187
   --   NOOBSOLESCENT           Disables warnings on use of obsolescent
3188
   --                           features.
3189
   --
3190
   --   OBJECT_RENAME           Activate warnings for non limited objects
3191
   --                           renaming parameterless functions.
3192
   --
3193
   --   NOOBJECT_RENAME         Suppress warnings for non limited objects
3194
   --                           renaming parameterless functions.
3195
   --
3196
   --   OPTIONAL                Equivalent to ALL.
3197
   --
3198
   --   NOOPTIONAL              Equivalent to NOALL.
3199
   --
3200
   --   OVERLAYS                Activate warnings for possibly unintended
3201
   --                           initialization effects of defining address
3202
   --                           clauses that cause one variable to overlap
3203
   --                           another. The default is that such warnings
3204
   --                           are generated.
3205
   --
3206
   --   NOOVERLAYS              Suppress warnings on possibly unintended
3207
   --                           initialization effects of defining address
3208
   --                           clauses that cause one variable to overlap
3209
   --                           another.
3210
   --
3211
   --   REDUNDANT               Activate warnings for redundant constructs.
3212
   --                           In particular assignments of a variable to
3213
   --                           itself, and a type conversion that converts
3214
   --                           an object to its own type. The default
3215
   --                           is that such warnings are not generated.
3216
   --
3217
   --   NOREDUNDANT             Suppress warnings for redundant constructs.
3218
   --
3219
   --   SUPPRESS                Completely suppress the output of all warning
3220
   --                           messages.  Same as /NOWARNINGS.
3221
   --
3222
   --   UNCHECKED_CONVERSIONS   Activates warnings on unchecked conversions.
3223
   --                           Causes warnings to be generated for
3224
   --                           unchecked conversions when the two types are
3225
   --                           known at compile time to have different sizes.
3226
   --                           The default is that such warnings are
3227
   --                           generated.
3228
   --
3229
   --   NOUNCHECKED_CONVERSIONS Suppress warnings for unchecked conversions.
3230
   --
3231
   --   UNINITIALIZED           Generate warnings for uninitialized variables.
3232
   --                           This is a GCC option, not an Ada option.
3233
   --                           You must also specify the /OPTIMIZE qualifier
3234
   --                           with a value other than NONE (in other words,
3235
   --                           this keyword works only if optimization is
3236
   --                           turned on).
3237
   --
3238
   --   UNREFERENCED_FORMALS    Activate warnings on unreferenced formals.
3239
   --                           Causes a warning to be generated if a formal
3240
   --                           parameter is not referenced in the body of
3241
   --                           the subprogram. This warning can also be turned
3242
   --                           on using option ALL or UNUSED.
3243
   --
3244
   --   NOUNREFERENCED_FORMALS  Suppress warnings on unreferenced formals.
3245
   --                           Suppresses warnings for unreferenced formal
3246
   --                           parameters. Note that the combination UNUSED
3247
   --                           followed by NOUNREFERENCED_FORMALS has the
3248
   --                           effect of warning on unreferenced entities
3249
   --                           other than subprogram formals.
3250
   --
3251
   --   UNUSED                  Activates warnings to be generated for entities
3252
   --                           that are defined but not referenced, and for
3253
   --                           units that are with'ed and not referenced. In
3254
   --                           the case of packages, a warning is also
3255
   --                           generated if no entities in the package are
3256
   --                           referenced. This means that if the package
3257
   --                           is referenced but the only references are in
3258
   --                           use clauses or renames declarations, a warning
3259
   --                           is still generated. A warning is also generated
3260
   --                           for a generic package that is with'ed but never
3261
   --                           instantiated.  In the case where a package or
3262
   --                           subprogram body is compiled, and there is a
3263
   --                           with on the corresponding spec that is only
3264
   --                           referenced in the body, a warning is also
3265
   --                           generated, noting that the with can be moved
3266
   --                           to the body. The default is that such warnings
3267
   --                           are not generated.
3268
   --
3269
   --   NOUNUSED                Suppress warnings for unused entities and
3270
   --                           packages.
3271
   --
3272
   --   VARIABLES_UNINITIALIZED Activates warnings on unassigned variables.
3273
   --                           Causes warnings to be generated when a variable
3274
   --                           is accessed which may not be properly
3275
   --                           uninitialized.
3276
   --                           The default is that such warnings are
3277
   --                           generated.
3278
   --
3279
   --   NOVARIABLES_UNINITIALIZED       Suppress warnings for uninitialized
3280
   --                                   variables.
3281
 
3282
   S_GCC_WarnX   : aliased constant S := "/NOWARNINGS "                    &
3283
                                            "-gnatws";
3284
   --  NODOC (see /WARNINGS)
3285
 
3286
   S_GCC_No_Back : aliased constant S := "/NO_BACK_END_WARNINGS "          &
3287
                                            "-w";
3288
   --        /NO_BACK_END_WARNINGS
3289
   --
3290
   --   Inhibit all warning messages of the GCC back-end.
3291
 
3292
   S_GCC_All_Back : aliased constant S := "/ALL_BACK_END_WARNINGS "        &
3293
                                            "-Wall";
3294
   --        /ALL_BACK_END_WARNINGS
3295
   --
3296
   --   Activate all warning messages of the GCC back-end.
3297
 
3298
   S_GCC_Wide    : aliased constant S := "/WIDE_CHARACTER_ENCODING="       &
3299
                                             "BRACKETS "                   &
3300
                                                "-gnatWb "                 &
3301
                                             "HEX "                        &
3302
                                                "-gnatWh "                 &
3303
                                             "UPPER "                      &
3304
                                                "-gnatWu "                 &
3305
                                             "SHIFT_JIS "                  &
3306
                                                "-gnatWs "                 &
3307
                                             "UTF8 "                       &
3308
                                                "-gnatW8 "                 &
3309
                                             "EUC "                        &
3310
                                                "-gnatWe";
3311
   --        /NOWIDE_CHARACTER_ENCODING (D)
3312
   --        /WIDE_CHARACTER_ENCODING[=encode-type]
3313
   --
3314
   --   Specifies the mechanism used to encode wide characters.  'encode-type'
3315
   --   is one of the following:
3316
   --
3317
   --   BRACKETS (D)    A wide character is encoded as ["xxxx"] where XXXX
3318
   --                   are four hexadecimal digits representing the coding
3319
   --                   ('Pos value) of the character in type
3320
   --                   Wide_Character. The hexadecimal digits may use upper
3321
   --                   or lower case letters.
3322
   --
3323
   --                   This notation can also be used for upper half
3324
   --                   Character values using the format ["xx"] where XX is
3325
   --                   two hexadecimal digits representing the coding ('Pos
3326
   --                   value) of the character in type Character (or
3327
   --                   Wide_Character). The hexadecimal digits may use upper
3328
   --                   of lower case.
3329
   --
3330
   --   NONE            No wide characters are allowed.  Same
3331
   --                   as /NOWIDE_CHARACTER_ENCODING.
3332
   --
3333
   --   HEX             In this encoding, a wide character is represented by
3334
   --                   the following five character sequence: ESC a b c d
3335
   --                   Where 'a', 'b', 'c', and 'd' are the four hexadecimal
3336
   --                   characters (using uppercase letters) of the wide
3337
   --                   character code. For example, ESC A345 is used to
3338
   --                   represent the wide character with code 16#A345#. This
3339
   --                   scheme is compatible with use of the full
3340
   --                   Wide_Character set.
3341
   --
3342
   --   UPPER           The wide character with encoding 16#abcd# where the
3343
   --                   upper bit is on (in other words, "a" is in the range
3344
   --                   8-F) is represented as two bytes, 16#ab# and 16#cd#.
3345
   --                   The second byte may never be a format control
3346
   --                   character, but is not required to be in the upper
3347
   --                   half. This method can be also used for shift-JIS or
3348
   --                   EUC, where the internal coding matches the external
3349
   --                   coding.
3350
   --
3351
   --   SHIFT_JIS       A wide character is represented by a two-character
3352
   --                   sequence, 16#ab# and 16#cd#, with the restrictions
3353
   --                   described for upper-half encoding as described above.
3354
   --                   The internal character code is the corresponding JIS
3355
   --                   character according to the standard algorithm for
3356
   --                   Shift-JIS conversion. Only characters defined in the
3357
   --                   JIS code set table can be used with this encoding
3358
   --                   method.
3359
   --
3360
   --   UTF8            A wide character is represented using
3361
   --                   UCS Transformation Format 8 (UTF-8) as defined in Annex
3362
   --                   R of ISO 10646-1/Am.2.  Depending on the character
3363
   --                   value, the representation is a one, two, or three byte
3364
   --                   sequence:
3365
   --
3366
   --                   16#0000#-16#007f#: 2#0xxxxxxx#
3367
   --                   16#0080#-16#07ff#: 2#110xxxxx# 2#10xxxxxx#
3368
   --                   16#0800#-16#ffff#: 2#1110xxxx# 2#10xxxxxx# 2#10xxxxxx#
3369
   --
3370
   --                   where the xxx bits correspond to the left-padded bits
3371
   --                   of the 16-bit character value. Note that all lower
3372
   --                   half ASCII characters are represented as ASCII bytes
3373
   --                   and all upper half characters and other wide characters
3374
   --                   are represented as sequences of upper-half (The full
3375
   --                   UTF-8 scheme allows for encoding 31-bit characters as
3376
   --                   6-byte sequences, but in this implementation, all UTF-8
3377
   --                   sequences of four or more bytes length will be treated
3378
   --                   as illegal).
3379
   --
3380
   --   EUC             A wide character is represented by a two-character
3381
   --                   sequence 16#ab# and 16#cd#, with both characters being
3382
   --                   in the upper half. The internal character code is the
3383
   --                   corresponding JIS character according to the EUC
3384
   --                   encoding algorithm. Only characters defined in the JIS
3385
   --                   code set table can be used with this encoding method.
3386
 
3387
   S_GCC_WideX   : aliased constant S := "/NOWIDE_CHARACTER_ENCODING "     &
3388
                                             "-gnatWn";
3389
   --  NODOC (see /WIDE_CHARACTER_ENCODING)
3390
 
3391
   S_GCC_Xdebug  : aliased constant S := "/XDEBUG "                        &
3392
                                            "-gnatD";
3393
   --        /NOXDEBUG (D)
3394
   --        /XDEBUG
3395
   --
3396
   --   Output expanded source files for source level debugging.
3397
   --   The expanded source (see /EXPAND_SOURCE) is written to files
3398
   --   with names formed by appending "_DG" to the input file name,
3399
   --   The debugging information generated by the /DEBUG qualifier will then
3400
   --   refer to the generated file. This allows source level debugging using
3401
   --   the generated code which is sometimes useful for complex code, for
3402
   --   example to find out exactly which part of a complex construction
3403
   --   raised an exception. The maximum line length for the output is 72.
3404
 
3405
   S_GCC_Lxdebug : aliased constant S := "/LXDEBUG=#"                      &
3406
                                            "-gnatD=#";
3407
   --        /LXDEBUG=nnn
3408
   --
3409
   --   Output expanded source files for source level debugging.
3410
   --   The expanded source (see /EXPAND_SOURCE) is written to files
3411
   --   with names formed by appending "_DG" to the input file name,
3412
   --   The debugging information generated by the /DEBUG qualifier will then
3413
   --   refer to the generated file. This allows source level debugging using
3414
   --   the generated code which is sometimes useful for complex code, for
3415
   --   example to find out exactly which part of a complex construction
3416
   --   raised an exception. The parameter is the maximum line length for
3417
   --   the output.
3418
 
3419
   S_GCC_Xref    : aliased constant S := "/XREF="                          &
3420
                                            "GENERATE "                    &
3421
                                               "!-gnatx "                  &
3422
                                            "SUPPRESS "                    &
3423
                                               "-gnatx";
3424
   --        /XREF[=keyword]
3425
   --
3426
   --   Normally the compiler generates full cross-referencing information in
3427
   --   the .ALI file. This information is used by a number of tools,
3428
   --   including GNAT FIND and GNAT XREF.
3429
   --
3430
   --        GENERATE (D)            Generate cross-referencing information.
3431
   --
3432
   --        SUPPRESS                Suppress cross-referencing information.
3433
   --                                This saves some space and may slightly
3434
   --                                speed up compilation, but means that some
3435
   --                                tools cannot be used.
3436
 
3437
   GCC_Switches : aliased constant Switches :=
3438
                    (S_GCC_Ada_83  'Access,
3439
                     S_GCC_Ada_95  'Access,
3440
                     S_GCC_Ada_05  'Access,
3441
                     S_GCC_Add     'Access,
3442
                     S_GCC_Asm     'Access,
3443
                     S_GCC_AValid  'Access,
3444
                     S_GCC_Checks  'Access,
3445
                     S_GCC_ChecksX 'Access,
3446
                     S_GCC_Compres 'Access,
3447
                     S_GCC_Config  'Access,
3448
                     S_GCC_Current 'Access,
3449
                     S_GCC_Debug   'Access,
3450
                     S_GCC_DebugX  'Access,
3451
                     S_GCC_Data    'Access,
3452
                     S_GCC_Dist    'Access,
3453
                     S_GCC_DistX   'Access,
3454
                     S_GCC_Error   'Access,
3455
                     S_GCC_ErrorX  'Access,
3456
                     S_GCC_Expand  'Access,
3457
                     S_GCC_Lexpand 'Access,
3458
                     S_GCC_Extend  'Access,
3459
                     S_GCC_Ext     'Access,
3460
                     S_GCC_File    'Access,
3461
                     S_GCC_Follow  'Access,
3462
                     S_GCC_Force   'Access,
3463
                     S_GCC_Full    'Access,
3464
                     S_GCC_Generate'Access,
3465
                     S_GCC_GNAT    'Access,
3466
                     S_GCC_Help    'Access,
3467
                     S_GCC_Ident   'Access,
3468
                     S_GCC_IdentX  'Access,
3469
                     S_GCC_Ignore  'Access,
3470
                     S_GCC_Immed   'Access,
3471
                     S_GCC_Inline  'Access,
3472
                     S_GCC_InlineX 'Access,
3473
                     S_GCC_Intsrc  'Access,
3474
                     S_GCC_Just    'Access,
3475
                     S_GCC_JustX   'Access,
3476
                     S_GCC_Length  'Access,
3477
                     S_GCC_List    'Access,
3478
                     S_GCC_Output  'Access,
3479
                     S_GCC_Machine 'Access,
3480
                     S_GCC_Mapping 'Access,
3481
                     S_GCC_Mess    'Access,
3482
                     S_GCC_Nesting 'Access,
3483
                     S_GCC_Noadc   'Access,
3484
                     S_GCC_Noload  'Access,
3485
                     S_GCC_Nostinc 'Access,
3486
                     S_GCC_Nostlib 'Access,
3487
                     S_GCC_NoWarnP 'Access,
3488
                     S_GCC_Opt     'Access,
3489
                     S_GCC_OptX    'Access,
3490
                     S_GCC_Pointer 'Access,
3491
                     S_GCC_Polling 'Access,
3492
                     S_GCC_Project 'Access,
3493
                     S_GCC_Psta    'Access,
3494
                     S_GCC_Report  'Access,
3495
                     S_GCC_ReportX 'Access,
3496
                     S_GCC_Repinfo 'Access,
3497
                     S_GCC_RepinfX 'Access,
3498
                     S_GCC_RTS     'Access,
3499
                     S_GCC_SCO     'Access,
3500
                     S_GCC_Search  'Access,
3501
                     S_GCC_Style   'Access,
3502
                     S_GCC_StyleX  'Access,
3503
                     S_GCC_Subdirs 'Access,
3504
                     S_GCC_Symbol  'Access,
3505
                     S_GCC_Syntax  'Access,
3506
                     S_GCC_Table   'Access,
3507
                     S_GCC_Trace   'Access,
3508
                     S_GCC_Tree    'Access,
3509
                     S_GCC_Trys    'Access,
3510
                     S_GCC_Units   'Access,
3511
                     S_GCC_Unique  'Access,
3512
                     S_GCC_Upcase  'Access,
3513
                     S_GCC_Valid   'Access,
3514
                     S_GCC_Verbose 'Access,
3515
                     S_GCC_Verb_Asm'Access,
3516
                     S_GCC_Warn    'Access,
3517
                     S_GCC_WarnX   'Access,
3518
                     S_GCC_Wide    'Access,
3519
                     S_GCC_WideX   'Access,
3520
                     S_GCC_No_Back 'Access,
3521
                     S_GCC_All_Back'Access,
3522
                     S_GCC_Xdebug  'Access,
3523
                     S_GCC_Lxdebug 'Access,
3524
                     S_GCC_Xref    'Access);
3525
 
3526
   ----------------------------
3527
   -- Switches for GNAT ELIM --
3528
   ----------------------------
3529
 
3530
   S_Elim_Add    : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"       &
3531
                                           "-aP*";
3532
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
3533
   --
3534
   --   Add directories to the project search path.
3535
 
3536
   S_Elim_All    : aliased constant S := "/ALL "                           &
3537
                                            "-a";
3538
   --        /NOALL (D)
3539
   --        /ALL
3540
   --
3541
   --   Also look for subprograms from the GNAT run time that can be
3542
   --   eliminated. Note that when 'gnat.adc' is produced using this switch,
3543
   --   the entire program must be recompiled with qualifier /ALL_FILES of
3544
   --   GNAT MAKE.
3545
 
3546
   S_Elim_Bind   : aliased constant S := "/BIND_FILE=<"                    &
3547
                                            "-b>";
3548
   --        /BIND_FILE=file_name
3549
   --
3550
   --   Specifies file_name as the bind file to process. If this qualifier is
3551
   --   not used, the name of the bind file is computed from the full expanded
3552
   --   Ada name of a main subprogram.
3553
 
3554
   S_Elim_Comp   : aliased constant S := "/COMPILER=@"                     &
3555
                                            "--GCC=@";
3556
   --        /COMPILER=path_name
3557
   --
3558
   --   Instructs GNAT ELIM to use a specific gcc compiler instead of one
3559
   --   available on the path.
3560
 
3561
   S_Elim_Config : aliased constant S := "/CONFIGURATION_PRAGMAS=<"        &
3562
                                            "-C>";
3563
   --        /CONFIGURATION_PRAGMAS=path_name
3564
   --
3565
   --   Specifies a file that contains configuration pragmas.
3566
   --   The file must be specified with absolute path.
3567
 
3568
   S_Elim_Current : aliased constant S := "/CURRENT_DIRECTORY "            &
3569
                                           "!-I-";
3570
   --        /CURRENT_DIRECTORY (D)
3571
   --        /NOCURRENT_DIRECTORY
3572
   --
3573
   --        Look for source files in the default directory.
3574
 
3575
   S_Elim_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
3576
                                             "-X" & '"';
3577
   --       /EXTERNAL_REFERENCE="name=val"
3578
   --
3579
   --   Specifies an external reference to the project manager. Useful only if
3580
   --   /PROJECT_FILE is used.
3581
   --
3582
   --   Example:
3583
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
3584
 
3585
   S_Elim_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
3586
                                            "-eL";
3587
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
3588
   --        /FOLLOW_LINKS_FOR_FILES
3589
   --
3590
   --    Follow links when parsing project files
3591
 
3592
   S_Elim_GNATMAKE : aliased constant S := "/GNATMAKE=@"                   &
3593
                                            "--GNATMAKE=@";
3594
   --        /GNATMAKE=path_name
3595
   --
3596
   --   Instructs GNAT MAKE to use a specific gnatmake instead of one available
3597
   --   on the path.
3598
 
3599
   S_Elim_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
3600
                                             "DEFAULT "                    &
3601
                                                "-vP0 "                    &
3602
                                             "MEDIUM "                     &
3603
                                                "-vP1 "                    &
3604
                                             "HIGH "                       &
3605
                                                "-vP2";
3606
   --        /MESSAGES_PROJECT_FILE[=messages-option]
3607
   --
3608
   --   Specifies the "verbosity" of the parsing of project files.
3609
   --   messages-option may be one of the following:
3610
   --
3611
   --      DEFAULT (D)  No messages are output if there is no error or warning.
3612
   --
3613
   --      MEDIUM       A small number of messages are output.
3614
   --
3615
   --      HIGH         A great number of messages are output, most of them not
3616
   --                   being useful for the user.
3617
 
3618
   S_Elim_Project : aliased constant S := "/PROJECT_FILE=<"                &
3619
                                             "-P>";
3620
   --        /PROJECT_FILE=filename
3621
   --
3622
   --   Specifies the main project file to be used. The project files rooted
3623
   --   at the main project file will be parsed before the invocation of the
3624
   --   gnatelim. The source directories to be searched will be communicated
3625
   --   to gnatelim through logical name ADA_PRJ_INCLUDE_FILE.
3626
 
3627
   S_Elim_Quiet  : aliased constant S := "/QUIET "                         &
3628
                                            "-q";
3629
   --        /NOQUIET (D)
3630
   --        /QUIET
3631
   --
3632
   --   Quiet mode: by default GNAT ELIM outputs to the standard error stream
3633
   --   the number of program units left to be processed. This option turns
3634
   --   this trace off.
3635
 
3636
   S_Elim_Search : aliased constant S := "/SEARCH=*"                       &
3637
                                            "-I*";
3638
   --        /SEARCH=(directory, ...)
3639
   --
3640
   --   When looking for source files also look in the specified directories.
3641
 
3642
   S_Elim_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
3643
                                             "--subdirs=>";
3644
   --        /SUBDIRS=dir
3645
   --
3646
   --   The actual directories (object, exec, library, ...) are subdirectories
3647
   --   of the directory specified in the project file. If the subdirectory
3648
   --   does not exist, it is created automatically.
3649
 
3650
   S_Elim_Verb   : aliased constant S := "/VERBOSE "                       &
3651
                                            "-v";
3652
   --        /NOVERBOSE (D)
3653
   --        /VERBOSE
3654
   --
3655
   --   Verbose mode: GNAT ELIM version information is output as Ada comments
3656
   --   to the standard output stream. Also, in addition to the number of
3657
   --   program units left, GNAT ELIM will output the name of the current unit
3658
   --   being processed.
3659
 
3660
   Elim_Switches : aliased constant Switches :=
3661
                     (S_Elim_Add     'Access,
3662
                      S_Elim_All     'Access,
3663
                      S_Elim_Bind    'Access,
3664
                      S_Elim_Comp    'Access,
3665
                      S_Elim_Config  'Access,
3666
                      S_Elim_Current 'Access,
3667
                      S_Elim_Ext     'Access,
3668
                      S_Elim_Follow  'Access,
3669
                      S_Elim_GNATMAKE'Access,
3670
                      S_Elim_Mess    'Access,
3671
                      S_Elim_Project 'Access,
3672
                      S_Elim_Quiet   'Access,
3673
                      S_Elim_Search  'Access,
3674
                      S_Elim_Subdirs 'Access,
3675
                      S_Elim_Verb    'Access);
3676
 
3677
   ----------------------------
3678
   -- Switches for GNAT FIND --
3679
   ----------------------------
3680
 
3681
   S_Find_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
3682
                                            "-aP*";
3683
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
3684
   --
3685
   --   Add directories to the project search path.
3686
 
3687
   S_Find_All     : aliased constant S := "/ALL_FILES "                    &
3688
                                            "-a";
3689
   --        /NOALL_FILES (D)
3690
   --        /ALL_FILES
3691
   --
3692
   --   If this switch is present, FIND and XREF will parse the read-only
3693
   --   files found in the library search path. Otherwise, these files will
3694
   --   be ignored. This option can be used to protect Gnat sources or your
3695
   --   own libraries from being parsed, thus making FIND and XREF much
3696
   --   faster, and their output much smaller.
3697
 
3698
   S_Find_Deriv   : aliased constant S := "/DERIVED_TYPE_INFORMATION "     &
3699
                                            "-d";
3700
   --        /NODERIVED_TYPE_INFORMATION (D)
3701
   --        /DERIVED_TYPE_INFORMATION
3702
   --
3703
   --   Output the parent type reference for each matching derived types.
3704
 
3705
   S_Find_Expr    : aliased constant S := "/EXPRESSIONS "                  &
3706
                                            "-e";
3707
   --        /NOEXPRESSIONS (D)
3708
   --        /EXPRESSIONS
3709
   --
3710
   --   By default, FIND accepts the simple regular expression set for pattern.
3711
   --   If this switch is set, then the pattern will be considered as a full
3712
   --   Unix-style regular expression.
3713
 
3714
   S_Find_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
3715
                                            "-X" & '"';
3716
   --        /EXTERNAL_REFERENCE="name=val"
3717
   --
3718
   --   Specifies an external reference to the project manager. Useful only if
3719
   --   /PROJECT_FILE is used.
3720
   --
3721
   --   Example:
3722
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
3723
 
3724
   S_Find_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
3725
                                            "-eL";
3726
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
3727
   --        /FOLLOW_LINKS_FOR_FILES
3728
   --
3729
   --    Follow links when parsing project files
3730
 
3731
   S_Find_Full    : aliased constant S := "/FULL_PATHNAME "                &
3732
                                            "-f";
3733
   --        /NOFULL_PATHNAME (D)
3734
   --        /FULL_PATHNAME
3735
   --
3736
   --   If this switch is set, the output file names will be preceded by their
3737
   --   directory (if the file was found in the search path). If this switch
3738
   --   is not set, the directory will not be printed.
3739
 
3740
   S_Find_Ignore  : aliased constant S := "/IGNORE_LOCALS "                &
3741
                                            "-g";
3742
   --        /NOIGNORE_LOCALS (D)
3743
   --        /IGNORE_LOCALS
3744
   --
3745
   --   If this switch is set, information is output only for library-level
3746
   --   entities, ignoring local entities. The use of this switch may
3747
   --   accelerate FIND and XREF.
3748
 
3749
   S_Find_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
3750
                                            "DEFAULT "                     &
3751
                                               "-vP0 "                     &
3752
                                            "MEDIUM "                      &
3753
                                               "-vP1 "                     &
3754
                                            "HIGH "                        &
3755
                                               "-vP2";
3756
   --        /MESSAGES_PROJECT_FILE[=messages-option]
3757
   --
3758
   --   Specifies the "verbosity" of the parsing of project files.
3759
   --   messages-option may be one of the following:
3760
   --
3761
   --      DEFAULT (D)  No messages are output if there is no error or warning.
3762
   --
3763
   --      MEDIUM       A small number of messages are output.
3764
   --
3765
   --      HIGH         A great number of messages are output, most of them not
3766
   --                   being useful for the user.
3767
 
3768
   S_Find_Nostinc : aliased constant S := "/NOSTD_INCLUDES "               &
3769
                                            "-nostdinc";
3770
   --        /NOSTD_INCLUDES
3771
   --
3772
   --   Do not look for sources in the system default directory.
3773
 
3774
   S_Find_Nostlib : aliased constant S := "/NOSTD_LIBRARIES "              &
3775
                                            "-nostdlib";
3776
   --        /NOSTD_LIBRARIES
3777
   --
3778
   --   Do not look for library files in the system default directory.
3779
 
3780
   S_Find_Object  : aliased constant S := "/OBJECT_SEARCH=*"               &
3781
                                            "-aO*";
3782
   --        /OBJECT_SEARCH=(directory,...)
3783
   --
3784
   --   When searching for library and object files, look in the specified
3785
   --   directories. The order in which library files are searched is the same
3786
   --   as for MAKE.
3787
 
3788
   S_Find_Print   : aliased constant S := "/PRINT_LINES "                  &
3789
                                            "-s";
3790
   --        /NOPRINT_LINES (D)
3791
   --        /PRINT_LINES
3792
   --
3793
   --   Output the content of the Ada source file lines were the entity was
3794
   --   found.
3795
 
3796
   S_Find_Project : aliased constant S := "/PROJECT=@"                     &
3797
                                            "-p@";
3798
   --        /PROJECT=file
3799
   --
3800
   --   Specify a project file to use. By default, FIND and XREF will try to
3801
   --   locate a project file in the current directory.
3802
   --
3803
   --   If a project file is either specified or found by the tools, then the
3804
   --   content of the source directory and object directory lines are added
3805
   --   as if they had been specified respectively by /SOURCE_SEARCH and
3806
   --   /OBJECT_SEARCH.
3807
   --
3808
   --   This qualifier is not compatible with /PROJECT_FILE
3809
 
3810
   S_Find_Prj     : aliased constant S := "/PROJECT_FILE=<"                &
3811
                                            "-P>";
3812
   --        /PROJECT_FILE=filename
3813
   --
3814
   --   Specifies the main project file to be used. The project files rooted
3815
   --   at the main project file will be parsed before looking for sources.
3816
   --   The source and object directories to be searched will be communicated
3817
   --   to gnatfind through logical names ADA_PRJ_INCLUDE_FILE and
3818
   --   ADA_PRJ_OBJECTS_FILE.
3819
 
3820
   S_Find_Ref     : aliased constant S := "/REFERENCES "                   &
3821
                                            "-r";
3822
   --        /NOREFERENCES (D)
3823
   --        /REFERENCES
3824
   --
3825
   --   By default, FIND will output only the information about the
3826
   --   declaration, body or type completion of the entities. If this switch
3827
   --   is set, the FIND will locate every reference to the entities in the
3828
   --   files specified on the command line (or in every file in the search
3829
   --   path if no file is given on the command line).
3830
 
3831
   S_Find_Search  : aliased constant S := "/SEARCH=*"                      &
3832
                                            "-I*";
3833
   --        /SEARCH=(directory,...)
3834
   --
3835
   --   Equivalent to:
3836
   --   /OBJECT_SEARCH=(directory,...) /SOURCE_SEARCH=(directory,...)
3837
 
3838
   S_Find_Source  : aliased constant S := "/SOURCE_SEARCH=*"               &
3839
                                            "-aI*";
3840
   --        /SOURCE_SEARCH=(directory,...)
3841
   --
3842
   --   When looking for source files also look in the specified directories.
3843
   --   The order in which source file search is undertaken is the same as for
3844
   --   MAKE.
3845
 
3846
   S_Find_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
3847
                                             "--subdirs=>";
3848
   --        /SUBDIRS=dir
3849
   --
3850
   --   The actual directories (object, exec, library, ...) are subdirectories
3851
   --   of the directory specified in the project file. If the subdirectory
3852
   --   does not exist, it is created automatically.
3853
 
3854
   S_Find_Types   : aliased constant S := "/TYPE_HIERARCHY "               &
3855
                                            "-t";
3856
   --        /NOTYPE_HIERARCHY (D)
3857
   --        /TYPE_HIERARCHY
3858
   --
3859
   --   Output the type hierarchy for the specified type. It acts like the
3860
   --   /DERIVED_TYPE_INFORMATION qualifier, but recursively from parent type
3861
   --   to parent type. When this qualifier is specified it is not possible to
3862
   --   specify more than one file.
3863
 
3864
   Find_Switches : aliased constant Switches :=
3865
                     (S_Find_Add     'Access,
3866
                      S_Find_All     'Access,
3867
                      S_Find_Deriv   'Access,
3868
                      S_Find_Expr    'Access,
3869
                      S_Find_Ext     'Access,
3870
                      S_Find_Follow  'Access,
3871
                      S_Find_Full    'Access,
3872
                      S_Find_Ignore  'Access,
3873
                      S_Find_Mess    'Access,
3874
                      S_Find_Nostinc 'Access,
3875
                      S_Find_Nostlib 'Access,
3876
                      S_Find_Object  'Access,
3877
                      S_Find_Print   'Access,
3878
                      S_Find_Project 'Access,
3879
                      S_Find_Prj     'Access,
3880
                      S_Find_Ref     'Access,
3881
                      S_Find_Search  'Access,
3882
                      S_Find_Source  'Access,
3883
                      S_Find_Subdirs 'Access,
3884
                      S_Find_Types   'Access);
3885
 
3886
   ------------------------------
3887
   -- Switches for GNAT KRUNCH --
3888
   ------------------------------
3889
 
3890
   S_Krunch_Count  : aliased constant S := "/COUNT=#"                      &
3891
                                            "`#";
3892
   --        /COUNT=39 (D)
3893
   --        /COUNT=nnn
3894
   --
3895
   --   Limit file names to nnn characters (where nnn is a decimal
3896
   --   integer). The maximum file name length is 39, but if you want to
3897
   --   generate a set of files that would be usable if ported to a system
3898
   --   with some different maximum file length, then a different value can
3899
   --   be specified.
3900
 
3901
   Krunch_Switches : aliased constant Switches  :=
3902
                       (1 .. 1 => S_Krunch_Count  'Access);
3903
 
3904
   ----------------------------
3905
   -- Switches for GNAT LINK --
3906
   ----------------------------
3907
 
3908
   S_Link_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
3909
                                            "-aP*";
3910
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
3911
   --
3912
   --   Add directories to the project search path.
3913
 
3914
   S_Link_Bind    : aliased constant S := "/BIND_FILE="                    &
3915
                                            "ADA "                         &
3916
                                               "-A "                       &
3917
                                            "C "                           &
3918
                                               "-C";
3919
   --        /BIND_FILE=[bind-file-option]
3920
   --
3921
   --   Specifies the language of the binder generated file.
3922
   --
3923
   --        ADA (D)         Binder file is Ada.
3924
   --
3925
   --        C               Binder file is 'C'.
3926
 
3927
   S_Link_Debug   : aliased constant S := "/DEBUG="                        &
3928
                                            "ALL "                         &
3929
                                               "-g3 "                      &
3930
                                            "NONE "                        &
3931
                                               "-g0 "                      &
3932
                                            "TRACEBACK "                   &
3933
                                               "-g1 "                      &
3934
                                            "NOTRACEBACK "                 &
3935
                                               "-g0";
3936
   --        /NODEBUG (D)
3937
   --        /DEBUG[=debug-option]
3938
   --
3939
   --   Specifies the amount of debugging information included. 'debug-option'
3940
   --   is one of the following:
3941
   --
3942
   --        ALL (D)      Include full debugging information.
3943
   --
3944
   --        NONE         Provide no debugging information.  Same as /NODEBUG.
3945
   --
3946
   --        TRACEBACK    Provide sufficient debug information for a traceback.
3947
   --
3948
   --        NOTRACEBACK  Same as NONE.
3949
 
3950
   S_Link_Nodebug : aliased constant S := "/NODEBUG "                      &
3951
                                            "-g0";
3952
   --  NODOC (see /DEBUG)
3953
 
3954
   S_Link_Execut  : aliased constant S := "/EXECUTABLE=@"                  &
3955
                                            "-o@";
3956
   --        /EXECUTABLE=exec-name
3957
   --
3958
   --   'exec-name' specifies an alternative name for the generated executable
3959
   --   program. If this qualifier switch is omitted, the executable is called
3960
   --   the name of the main unit. So "$ GNAT LINK TRY.ALI" creates an
3961
   --   executable called TRY.EXE.
3962
 
3963
   S_Link_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
3964
                                            "-X" & '"';
3965
   --        /EXTERNAL_REFERENCE="name=val"
3966
   --
3967
   --   Specifies an external reference to the project manager. Useful only if
3968
   --   /PROJECT_FILE is used.
3969
   --
3970
   --   Example:
3971
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
3972
 
3973
   S_Link_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
3974
                                            "-eL";
3975
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
3976
   --        /FOLLOW_LINKS_FOR_FILES
3977
   --
3978
   --    Follow links when parsing project files
3979
 
3980
   S_Link_Forlink : aliased constant S := "/FOR_LINKER=" & '"'             &
3981
                                            "--for-linker=" & '"';
3982
   --        /FOR_LINKER=<string>
3983
   --
3984
   --   Transmit the option <string> to the underlying linker.
3985
 
3986
   S_Link_Force   : aliased constant S := "/FORCE_OBJECT_FILE_LIST "       &
3987
                                            "-f";
3988
   --        /NOFORCE_OBJECT_FILE_LIST (D)
3989
   --        /FORCE_OBJECT_FILE_LIST
3990
   --
3991
   --   Forces the generation of a file that contains commands for the linker.
3992
   --   This is useful in some cases to deal with special situations where the
3993
   --   command line length is exceeded.
3994
 
3995
   S_Link_Ident   : aliased constant S := "/IDENTIFICATION=" & '"'         &
3996
                                            "--for-linker=IDENT="          &
3997
                                            '"';
3998
   --        /IDENTIFICATION="<string>"
3999
   --
4000
   --   "<string>" specifies the string to be stored in the image file ident-
4001
   --   ification field in the image header. It overrides any pragma Ident
4002
   --   specified string.
4003
 
4004
   S_Link_Libdir  : aliased constant S := "/LIBDIR=*"                      &
4005
                                            "-L*";
4006
   --        /LIBDIR=(directory, ...)
4007
   --
4008
   --   Look for libraries in the specified directories.
4009
 
4010
   S_Link_Library : aliased constant S := "/LIBRARY=|"                     &
4011
                                            "-l|";
4012
   --        /LIBRARY=xyz
4013
   --
4014
   --   Link with library named "xyz".
4015
 
4016
   S_Link_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
4017
                                            "DEFAULT "                     &
4018
                                               "-vP0 "                     &
4019
                                            "MEDIUM "                      &
4020
                                               "-vP1 "                     &
4021
                                            "HIGH "                        &
4022
                                               "-vP2";
4023
   --        /MESSAGES_PROJECT_FILE[=messages-option]
4024
   --
4025
   --   Specifies the "verbosity" of the parsing of project files.
4026
   --   messages-option may be one of the following:
4027
   --
4028
   --      DEFAULT (D)  No messages are output if there is no error or warning.
4029
   --
4030
   --      MEDIUM       A small number of messages are output.
4031
   --
4032
   --      HIGH         A great number of messages are output, most of them not
4033
   --                   being useful for the user.
4034
 
4035
   S_Link_Nocomp  : aliased constant S := "/NOCOMPILE "                    &
4036
                                            "-n";
4037
   --        /NOCOMPILE
4038
   --
4039
   --   Do not compile the file generated by the binder.
4040
   --   This may be used when a link is rerun with different options,
4041
   --   but there is no need to recompile the binder generated file.
4042
 
4043
   S_Link_Noinhib : aliased constant S := "/NOINHIBIT-EXEC "               &
4044
                                            "--for-linker=--noinhibit-exec";
4045
   --        /NOINHIBIT-EXEC
4046
   --
4047
   --   Delete executable if there are errors or warnings.
4048
 
4049
   S_Link_Nofiles : aliased constant S := "/NOSTART_FILES "                &
4050
                                            "-nostartfiles";
4051
   --        /NOSTART_FILES
4052
   --
4053
   --   Link in default image initialization and startup functions.
4054
 
4055
   S_Link_Project : aliased constant S := "/PROJECT_FILE=<"                &
4056
                                            "-P>";
4057
   --        /PROJECT_FILE=filename
4058
   --
4059
   --   Specifies the main project file to be used. The project files rooted
4060
   --   at the main project file will be parsed before the invocation of the
4061
   --   linker.
4062
   --   The source and object directories to be searched will be communicated
4063
   --   to the linker through logical names ADA_PRJ_INCLUDE_FILE and
4064
   --   ADA_PRJ_OBJECTS_FILE.
4065
 
4066
   S_Link_Return  : aliased constant S := "/RETURN_CODES="                 &
4067
                                            "POSIX "                       &
4068
                                               "!-mvms-return-codes "      &
4069
                                            "VMS "                         &
4070
                                               "-mvms-return-codes";
4071
   --        /RETURN_CODES=POSIX (D)
4072
   --        /RETURN_CODES=VMS
4073
   --
4074
   --   Specifies the style of codes returned by
4075
   --   Ada.Command_Line.Set_Exit_Status. Must be used in conjunction with
4076
   --   and match the Bind qualifier with the same name.
4077
   --
4078
   --        POSIX (D)   Return Posix compatible exit codes.
4079
   --
4080
   --        VMS         Return VMS compatible exit codes. The value returned
4081
   --                    is identically equal to the Set_Exit_Status parameter.
4082
 
4083
   S_Link_Static  : aliased constant S := "/STATIC "                       &
4084
                                            "--for-linker=-static";
4085
   --        /NOSTATIC (D)
4086
   --        /STATIC
4087
   --
4088
   --   Indicate to the linker that the link is static.
4089
 
4090
   S_Link_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
4091
                                             "--subdirs=>";
4092
   --        /SUBDIRS=dir
4093
   --
4094
   --   The actual directories (object, exec, library, ...) are subdirectories
4095
   --   of the directory specified in the project file. If the subdirectory
4096
   --   does not exist, it is created automatically.
4097
 
4098
   S_Link_Verb    : aliased constant S := "/VERBOSE "                      &
4099
                                            "-v";
4100
   --        /NOVERBOSE (D)
4101
   --        /VERBOSE
4102
   --
4103
   --   Causes additional information to be output, including a full list of
4104
   --   the included object files. This switch option is most useful when you
4105
   --   want to see what set of object files are being used in the link step.
4106
 
4107
   S_Link_ZZZZZ   : aliased constant S := "/<other> "                      &
4108
                                            "--for-linker=";
4109
   --        /<other>
4110
   --
4111
   --   Any other switch that will be transmitted to the underlying linker.
4112
 
4113
   Link_Switches : aliased constant Switches :=
4114
                     (S_Link_Add     'Access,
4115
                      S_Link_Bind    'Access,
4116
                      S_Link_Debug   'Access,
4117
                      S_Link_Nodebug 'Access,
4118
                      S_Link_Execut  'Access,
4119
                      S_Link_Ext     'Access,
4120
                      S_Link_Follow  'Access,
4121
                      S_Link_Forlink 'Access,
4122
                      S_Link_Force   'Access,
4123
                      S_Link_Ident   'Access,
4124
                      S_Link_Libdir  'Access,
4125
                      S_Link_Library 'Access,
4126
                      S_Link_Mess    'Access,
4127
                      S_Link_Nocomp  'Access,
4128
                      S_Link_Nofiles 'Access,
4129
                      S_Link_Noinhib 'Access,
4130
                      S_Link_Project 'Access,
4131
                      S_Link_Return  'Access,
4132
                      S_Link_Static  'Access,
4133
                      S_Link_Subdirs 'Access,
4134
                      S_Link_Verb    'Access,
4135
                      S_Link_ZZZZZ   'Access);
4136
 
4137
   ----------------------------
4138
   -- Switches for GNAT LIST --
4139
   ----------------------------
4140
 
4141
   S_List_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
4142
                                            "-aP*";
4143
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
4144
   --
4145
   --   Add directories to the project search path.
4146
 
4147
   S_List_All     : aliased constant S := "/ALL_UNITS "                    &
4148
                                            "-a";
4149
   --        /NOALL_UNITS (D)
4150
   --        /ALL_UNITS
4151
   --
4152
   --   Consider all units, including those of the predefined Ada library.
4153
   --   Especially useful with /DEPENDENCIES.
4154
 
4155
   S_List_Allproj : aliased constant S := "/ALL_PROJECTS "                 &
4156
                                            "-U";
4157
   --        /NOALL_PROJECTS (D)
4158
   --        /ALL_PROJECTS
4159
   --
4160
   --   When used with a project file and no file specified, indicate
4161
   --   that gnatls should be called for all sources of all projects in
4162
   --   the project tree.
4163
 
4164
   S_List_Current : aliased constant S := "/CURRENT_DIRECTORY "            &
4165
                                            "!-I-";
4166
   --        /CURRENT_DIRECTORY (D)
4167
   --        /NOCURRENT_DIRECTORY
4168
   --
4169
   --   Look for source, library or object files in the default directory.
4170
 
4171
   S_List_Depend  : aliased constant S := "/DEPENDENCIES "                 &
4172
                                            "-d";
4173
   --        /NODEPENDENCIES (D)
4174
   --        /DEPENDENCIES
4175
 
4176
   S_List_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
4177
                                            "-X" & '"';
4178
   --        /EXTERNAL_REFERENCE="name=val"
4179
   --
4180
   --   Specifies an external reference to the project manager. Useful only if
4181
   --   /PROJECT_FILE is used.
4182
   --
4183
   --   Example:
4184
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
4185
 
4186
   S_List_Files   : aliased constant S := "/FILES=@"                       &
4187
                                            "-files=@";
4188
   --        /FILES=filename
4189
   --
4190
   --   Take as arguments the files that are listed in the specified
4191
   --   text file.
4192
 
4193
   S_List_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
4194
                                            "-eL";
4195
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
4196
   --        /FOLLOW_LINKS_FOR_FILES
4197
   --
4198
   --    Follow links when parsing project files
4199
 
4200
   S_List_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
4201
                                            "DEFAULT "                     &
4202
                                               "-vP0 "                     &
4203
                                            "MEDIUM "                      &
4204
                                               "-vP1 "                     &
4205
                                            "HIGH "                        &
4206
                                               "-vP2";
4207
   --        /MESSAGES_PROJECT_FILE[=messages-option]
4208
   --
4209
   --   Specifies the "verbosity" of the parsing of project files.
4210
   --   messages-option may be one of the following:
4211
   --
4212
   --      DEFAULT (D)  No messages are output if there is no error or warning.
4213
   --
4214
   --      MEDIUM       A small number of messages are output.
4215
   --
4216
   --      HIGH         A great number of messages are output, most of them not
4217
   --                   being useful for the user.
4218
 
4219
   S_List_Nostinc : aliased constant S := "/NOSTD_INCLUDES "               &
4220
                                            "-nostdinc";
4221
   --        /NOSTD_INCLUDES
4222
   --
4223
   --   Do not look for sources of the run time in the standard directory.
4224
 
4225
   S_List_Object  : aliased constant S := "/OBJECT_SEARCH=*"               &
4226
                                            "-aO*";
4227
   --        /OBJECT_SEARCH=(directory,...)
4228
   --
4229
   --   When looking for library and object files look also in the specified
4230
   --   directories.
4231
 
4232
   S_List_Output  : aliased constant S := "/OUTPUT="                       &
4233
                                            "SOURCES "                     &
4234
                                               "-s "                       &
4235
                                            "DEPEND "                      &
4236
                                               "-d "                       &
4237
                                            "OBJECTS "                     &
4238
                                               "-o "                       &
4239
                                            "UNITS "                       &
4240
                                               "-u "                       &
4241
                                            "OPTIONS "                     &
4242
                                               "-h "                       &
4243
                                            "VERBOSE "                     &
4244
                                               "-v ";
4245
   --        /OUTPUT=(option,option,...)
4246
   --
4247
   --        SOURCES (D)     Only output information about source files.
4248
   --
4249
   --        DEPEND          List sources from which specified units depend on.
4250
   --
4251
   --        OBJECTS         Only output information about object files.
4252
   --
4253
   --        UNITS           Only output information about compilation units.
4254
   --
4255
   --        OPTIONS         Output the list of options.
4256
   --
4257
   --        VERBOSE         Output the complete source and object paths.
4258
   --                        Do not use the default column layout but instead
4259
   --                        use long format giving as much as information
4260
   --                        possible on each requested units, including
4261
   --                        special characteristics.
4262
 
4263
   S_List_Project : aliased constant S := "/PROJECT_FILE=<"                &
4264
                                            "-P>";
4265
   --        /PROJECT_FILE=filename
4266
   --
4267
   --   Specifies the main project file to be used. The project files rooted
4268
   --   at the main project file will be parsed before doing any listing.
4269
   --   The source and object directories to be searched will be communicated
4270
   --   to gnatlist through logical names ADA_PRJ_INCLUDE_FILE and
4271
   --   ADA_PRJ_OBJECTS_FILE.
4272
 
4273
   S_List_Search  : aliased constant S := "/SEARCH=*"                      &
4274
                                            "-I*";
4275
   --        /SEARCH=(directory,...)
4276
   --
4277
   --   Search the specified directories for both source and object files.
4278
 
4279
   S_List_Source  : aliased constant S := "/SOURCE_SEARCH=*"               &
4280
                                            "-aI*";
4281
   --        /SOURCE_SEARCH=(directory,...)
4282
   --
4283
   --   When looking for source files also look in the specified directories.
4284
 
4285
   S_List_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
4286
                                             "--subdirs=>";
4287
   --        /SUBDIRS=dir
4288
   --
4289
   --   The actual directories (object, exec, library, ...) are subdirectories
4290
   --   of the directory specified in the project file. If the subdirectory
4291
   --   does not exist, it is created automatically.
4292
 
4293
   List_Switches : aliased constant Switches :=
4294
                     (S_List_Add     'Access,
4295
                      S_List_All     'Access,
4296
                      S_List_Allproj 'Access,
4297
                      S_List_Current 'Access,
4298
                      S_List_Depend  'Access,
4299
                      S_List_Ext     'Access,
4300
                      S_List_Files   'Access,
4301
                      S_List_Follow  'Access,
4302
                      S_List_Mess    'Access,
4303
                      S_List_Nostinc 'Access,
4304
                      S_List_Object  'Access,
4305
                      S_List_Output  'Access,
4306
                      S_List_Project 'Access,
4307
                      S_List_Search  'Access,
4308
                      S_List_Source  'Access,
4309
                      S_List_Subdirs 'Access);
4310
 
4311
   ----------------------------
4312
   -- Switches for GNAT MAKE --
4313
   ----------------------------
4314
 
4315
   S_Make_Actions : aliased constant S := "/ACTIONS="                      &
4316
                                            "COMPILE "                     &
4317
                                               "-c "                       &
4318
                                            "BIND "                        &
4319
                                               "-b "                       &
4320
                                            "LINK "                        &
4321
                                               "-l ";
4322
   --        /ACTIONS=(keyword[,...])
4323
   --
4324
   --  GNAT MAKE default behavior is to check if the sources are up to date,
4325
   --  compile those sources that are not up to date, bind the main source,
4326
   --  then link the executable.
4327
   --
4328
   --  With the /ACTIONS qualifier, GNAT MAKE may be restricted to one or
4329
   --  two of these three steps:
4330
   --
4331
   --  o Compile
4332
   --  o Bind
4333
   --  o Link
4334
   --
4335
   --
4336
   --   You may specify one or more of the following keywords to the /ACTIONS
4337
   --   qualifier:
4338
   --
4339
   --   BIND            Bind only. Can be combined with /ACTIONS=COMPILE
4340
   --                   to do compilation and binding, but no linking.
4341
   --                   Can be combined with /ACTIONS=LINK to do binding and
4342
   --                   linking. When not combined with /ACTIONS=COMPILE,
4343
   --                   all the units in the closure of the main program must
4344
   --                   have been previously compiled and must be up to date.
4345
   --
4346
   --   COMPILE         Compile only. Do not perform binding, except when
4347
   --                   /ACTIONS=BIND is also specified. Do not perform
4348
   --                   linking, except if both /ACTIONS=BIND and /ACTIONS=LINK
4349
   --                   are also specified.
4350
   --
4351
   --   LINK            Link only. Can be combined with /ACTIONS=BIND to do
4352
   --                   binding and linking. Linking will not be performed
4353
   --                   if combined with /ACTIONS=COMPILE but not with
4354
   --                   /ACTIONS=BIND\. When not combined with /ACTIONS=BIND
4355
   --                   all the units in the closure of the main program must
4356
   --                   have been previously compiled and must be up to date,
4357
   --                   and the main program need to have been bound.
4358
 
4359
   S_Make_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
4360
                                            "-aP*";
4361
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
4362
   --
4363
   --   Add directories to the project search path.
4364
 
4365
   S_Make_All     : aliased constant S := "/ALL_FILES "                    &
4366
                                            "-a";
4367
   --        /NOALL_FILES (D)
4368
   --        /ALL_FILES
4369
   --
4370
   --   Consider all files in the make process, even the GNAT internal system
4371
   --   files (for example, the predefined Ada library files). By default,
4372
   --   GNAT MAKE does not check these files (however, if there is an
4373
   --   installation problem, it will be caught when GNAT MAKE binds your
4374
   --   program). You may have to specify this qualifier if you are working on
4375
   --   GNAT itself.  The vast majority of GNAT MAKE users never need to
4376
   --   specify this switch.  All GNAT internal files with will be compiled
4377
   --   with /STYLE_CHECK=GNAT.
4378
 
4379
   S_Make_Allproj : aliased constant S := "/ALL_PROJECTS "                 &
4380
                                            "-U";
4381
   --        /NOALL_PROJECTS (D)
4382
   --        /ALL_PROJECTS
4383
   --
4384
   --   Implies /Unique.
4385
   --   When used without project files, it is equivalent to /UNIQUE.
4386
   --   When used with a project file with no main (neither on the command
4387
   --   line nor in the attribute Main) check every source of every project,
4388
   --   recompile all sources that are not up to date and rebuild libraries
4389
   --   if necessary.
4390
 
4391
   S_Make_Bind    : aliased constant S := "/BINDER_QUALIFIERS=?"           &
4392
                                            "-bargs BIND";
4393
   --        /BINDER_QUALIFIERS
4394
   --
4395
   --   Any qualifiers specified after this qualifier other than
4396
   --   /COMPILER_QUALIFIERS, /LINKER_QUALIFIERS and /MAKE_QUALIFIERS will be
4397
   --   passed to any GNAT BIND commands generated by GNAT MAKE.
4398
 
4399
   S_Make_Bindprj : aliased constant S := "/BND_LNK_FULL_PROJECT "         &
4400
                                            "-B";
4401
   --        /BND_LNK_FULL_PROJECT
4402
   --
4403
   --   Bind and link all sources of a project, without any consideration
4404
   --   to attribute Main, if there is one. This qualifier need to be
4405
   --   used in conjunction with the /PROJECT_FILE= qualifier and cannot
4406
   --   be used with a main subprogram on the command line or for
4407
   --   a library project file. As the binder is invoked with the option
4408
   --   meaning "No Ada main subprogram", the user must ensure that the
4409
   --   proper options are specified to the linker. This qualifier is
4410
   --   normally used when the main subprogram is in a foreign language
4411
   --   such as C.
4412
 
4413
   S_Make_Comp    : aliased constant S := "/COMPILER_QUALIFIERS=?"         &
4414
                                            "-cargs COMPILE";
4415
   --        /COMPILER_QUALIFIERS
4416
   --
4417
   --   Any qualifiers specified after this qualifier other than
4418
   --   /BINDER_QUALIFIERS, /LINKER_QUALIFIERS and /MAKE_QUALIFIERS will be
4419
   --   passed to any GNAT COMPILE commands generated by GNAT MAKE.
4420
 
4421
   S_Make_Cond    : aliased constant S := "/CONDITIONAL_SOURCE_SEARCH=*"   &
4422
                                            "-A*";
4423
   --        /CONDITIONAL_SOURCE_SEARCH=dir
4424
   --
4425
   --   Equivalent to "/SOURCE_SEARCH=dir /SKIP_MISSING=dir".
4426
 
4427
   S_Make_Cont    : aliased constant S := "/CONTINUE_ON_ERROR "            &
4428
                                            "-k";
4429
   --        /NOCONTINUE_ON_ERROR (D)
4430
   --        /CONTINUE_ON_ERROR
4431
   --
4432
   --   Keep going. Continue as much as possible after a compilation error.
4433
   --   To ease the programmer's task in case of compilation errors, the list
4434
   --   of sources for which the compile fails is given when GNAT MAKE
4435
   --   terminates.
4436
 
4437
   S_Make_Current : aliased constant S := "/CURRENT_DIRECTORY "            &
4438
                                            "!-I-";
4439
   --        /CURRENT_DIRECTORY (D)
4440
   --        /NOCURRENT_DIRECTORY
4441
   --
4442
   --   Look for source, library or object files in the default directory.
4443
 
4444
   S_Make_Dep     : aliased constant S := "/DEPENDENCIES_LIST "            &
4445
                                            "-M";
4446
   --        /NODEPENDENCIES_LIST (D)
4447
   --        /DEPENDENCIES_LIST
4448
   --
4449
   --   Check if all objects are up to date. If they are, output the object
4450
   --   dependences to SYS$OUTPUT in a form that can be directly exploited in
4451
   --   a Unix-style Makefile. By default, each source file is prefixed with
4452
   --   its (relative or absolute) directory name. This name is whatever you
4453
   --   specified in the various /SOURCE_SEARCH and /SEARCH qualifiers.  If
4454
   --   you also specify the /QUIET qualifier, only the source file names,
4455
   --   without relative paths, are output. If you just specify the
4456
   --   /DEPENDENCY_LIST qualifier, dependencies of the GNAT internal system
4457
   --   files are omitted.  This is typically what you want. If you also
4458
   --   specify the /ALL_FILES qualifier, dependencies of the GNAT internal
4459
   --   files are also listed. Note that dependencies of the objects in
4460
   --   external Ada libraries (see the /SKIP_MISSING qualifier) are never
4461
   --   reported.
4462
 
4463
   S_Make_Dirobj  : aliased constant S := "/DIRECTORY_OBJECTS=@"           &
4464
                                            "-D@";
4465
   --        /DIRECTORY_OBJECTS=<file>
4466
   --
4467
   --   Put all object files and .ALI files in <file>.
4468
   --   This qualifier is not compatible with /PROJECT_FILE.
4469
 
4470
   S_Make_Disprog : aliased constant S := "/DISPLAY_PROGRESS "             &
4471
                                            "-d";
4472
   --        /NOPLAY_PROGRESS (D)
4473
   --        /DISPLAY_PROGRESS
4474
   --
4475
   --   Display progress for each source, up to date or not, as a single line
4476
   --      completed x out of y (zz%)
4477
   --   If the file needs to be compiled this is displayed after the
4478
   --   invocation of the compiler. These lines are displayed even in quiet
4479
   --   output mode (/QUIET).
4480
 
4481
   S_Make_Doobj   : aliased constant S := "/DO_OBJECT_CHECK "              &
4482
                                            "-n";
4483
   --        /NODO_OBJECT_CHECK (D)
4484
   --        /DO_OBJECT_CHECK
4485
   --
4486
   --   Don't compile, bind, or link. Output a single command that will
4487
   --   recompile an out of date unit, if any. Repeated use of this option,
4488
   --   followed by carrying out the indicated compilation, will eventually
4489
   --   result in recompiling all required units.
4490
   --
4491
   --   If any ALI is missing during the process, GNAT MAKE halts and
4492
   --   displays an error message.
4493
 
4494
   S_Make_Execut  : aliased constant S := "/EXECUTABLE=@"                  &
4495
                                            "-o@";
4496
   --        /EXECUTABLE=exec-name
4497
   --
4498
   --   The name of the final executable program will be 'exec_name'. If this
4499
   --   qualifier is omitted the default name for the executable will be the
4500
   --   name of the input file with an EXE filetype.  You may prefix
4501
   --   'exec_name' with a relative or absolute directory path.
4502
 
4503
   S_Make_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
4504
                                            "-X" & '"';
4505
   --        /EXTERNAL_REFERENCE="name=val"
4506
   --
4507
   --   Specifies an external reference to the project manager. Useful only if
4508
   --   /PROJECT_FILE is used.
4509
   --
4510
   --   Example:
4511
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
4512
 
4513
   S_Make_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
4514
                                            "-eL";
4515
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
4516
   --        /FOLLOW_LINKS_FOR_FILES
4517
   --
4518
   --    Follow links when parsing project files
4519
 
4520
   S_Make_Force   : aliased constant S := "/FORCE_COMPILE "                &
4521
                                            "-f";
4522
   --        /NOFORCE_COMPILE (D)
4523
   --        /FORCE_COMPILE
4524
   --
4525
   --   Force recompilations. Recompile all sources, even though some object
4526
   --   files may be up to date, but don't recompile predefined or GNAT
4527
   --   internal files unless the /ALL_FILES qualifier is also specified.
4528
 
4529
   S_Make_Full    : aliased constant S := "/FULL_PATH_IN_BRIEF_MESSAGES "  &
4530
                                            "-F";
4531
   --        /NOFULL_PATH_IN_BRIEF_MESSAGES (D)
4532
   --        /FULL_PATH_IN_BRIEF_MESSAGES
4533
   --
4534
   --   When using project files, if some errors or warnings are detected
4535
   --   during parsing and verbose mode is not in effect (no use of qualifier
4536
   --   /VERBOSE), then error lines start with the full path name of the
4537
   --   project file, rather than its simple file name.
4538
 
4539
   S_Make_Hi_Verb : aliased constant S := "/HIGH_VERBOSITY "               &
4540
                                          "-vh";
4541
   --        /NOHIGH_VERBOSITY (D)
4542
   --        /HIGH_VERBOSITY
4543
   --
4544
   --   Displays the reason for all recompilations GNAT MAKE decides are
4545
   --   necessary, in high verbosity. Equivalent to /VERBOSE.
4546
 
4547
   S_Make_Inplace : aliased constant S := "/IN_PLACE "                     &
4548
                                            "-i";
4549
   --        /NOIN_PLACE (D)
4550
   --        /IN_PLACE
4551
   --
4552
   --   In normal mode, GNAT MAKE compiles all object files and ALI files
4553
   --   into the current directory. If the /IN_PLACE switch is used,
4554
   --   then instead object files and ALI files that already exist are over-
4555
   --   written in place. This means that once a large project is organized
4556
   --   into separate directories in the desired manner, then GNAT MAKE will
4557
   --   automatically maintain and update this organization. If no ALI files
4558
   --   are found on the Ada object path, the new object and ALI files are
4559
   --   created in the directory containing the source being compiled.
4560
 
4561
   S_Make_Index   : aliased constant S := "/SOURCE_INDEX=#"                &
4562
                                             "-eI#";
4563
   --        /SOURCE_INDEX=nnn
4564
   --
4565
   --   Specifies the index of the units in the source file
4566
   --   By default, source files are mono-unit and there is no index
4567
   --   When /SOURCE_INDEX=nnn is specified, only one main may be specified
4568
   --   on the command line.
4569
 
4570
   S_Make_Library : aliased constant S := "/LIBRARY_SEARCH=*"              &
4571
                                            "-L*";
4572
   --        /LIBRARY_SEARCH=(directory[,...])
4573
   --
4574
   --   Add the specified directories to the list of directories in which the
4575
   --   linker will search for libraries.
4576
 
4577
   S_Make_Link    : aliased constant S := "/LINKER_QUALIFIERS=?"           &
4578
                                            "-largs LINK";
4579
   --        /LINKER_QUALIFIERS
4580
   --
4581
   --   Any qualifiers specified after this qualifier other than
4582
   --   /COMPILER_QUALIFIERS, /BINDER_QUALIFIERS and /MAKE_QUALIFIERS will be
4583
   --   passed to any GNAT LINK commands generated by GNAT LINK.
4584
 
4585
   S_Make_Low_Verb : aliased constant S := "/LOW_VERBOSITY "               &
4586
                                           "-vl";
4587
   --        /NOLOW_VERBOSITY (D)
4588
   --        /LOW_VERBOSITY
4589
   --
4590
   --   Displays the reason for all recompilations GNAT MAKE decides are
4591
   --   necessary, in low verbosity, that is with less output than
4592
   --   /MEDIUM_VERBOSITY, /HIGH_VERBOSITY or /VERBOSE.
4593
 
4594
   S_Make_Make    : aliased constant S := "/MAKE_QUALIFIERS=?"             &
4595
                                            "-margs MAKE";
4596
   --        /MAKE_QUALIFIERS
4597
   --
4598
   --   Any qualifiers specified after this qualifier other than
4599
   --   /COMPILER_QUALIFIERS, /BINDER_QUALIFIERS and /LINKER_QUALIFIERS
4600
   --   are for the benefit of GNAT MAKE itself.
4601
 
4602
   S_Make_Mapping : aliased constant S := "/MAPPING "                      &
4603
                                            "-C";
4604
   --        /NOMAPPING (D)
4605
   --        /MAPPING
4606
   --
4607
   --   Use a mapping file.  A mapping file is a way to communicate to the
4608
   --   compiler two mappings: from unit names to file names (without any
4609
   --   directory information) and from file names to path names (with full
4610
   --   directory information). These mappings are used by the compiler to
4611
   --   short-circuit the path search. When GNAT MAKE is invoked with this
4612
   --   qualifier, it will create a mapping file, initially populated by the
4613
   --   project manager, if /PROJECT_File= is used, otherwise initially empty.
4614
   --   Each invocation of the compiler will add the newly accessed sources to
4615
   --   the mapping file. This will improve the source search during the next
4616
   --   invocations of the compiler
4617
 
4618
   S_Make_Med_Verb : aliased constant S := "/MEDIUM_VERBOSITY "            &
4619
                                           "-vm";
4620
   --        /NOMEDIUM_VERBOSITY (D)
4621
   --        /MEDIUM_VERBOSITY
4622
   --
4623
   --   Displays the reason for all recompilations GNAT MAKE decides are
4624
   --   necessary, in medium verbosity, that is with potentially less output
4625
   --   than /HIGH_VERBOSITY or /VERBOSE.
4626
 
4627
   S_Make_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
4628
                                            "DEFAULT "                     &
4629
                                               "-vP0 "                     &
4630
                                            "MEDIUM "                      &
4631
                                               "-vP1 "                     &
4632
                                            "HIGH "                        &
4633
                                               "-vP2";
4634
   --        /MESSAGES_PROJECT_FILE[=messages-option]
4635
   --
4636
   --   Specifies the "verbosity" of the parsing of project files.
4637
   --   messages-option may be one of the following:
4638
   --
4639
   --      DEFAULT (D)  No messages are output if there is no error or warning.
4640
   --
4641
   --      MEDIUM       A small number of messages are output.
4642
   --
4643
   --      HIGH         A great number of messages are output, most of them not
4644
   --                   being useful for the user.
4645
 
4646
   S_Make_Minimal : aliased constant S := "/MINIMAL_RECOMPILATION "        &
4647
                                            "-m";
4648
   --        /NOMINIMAL_RECOMPILATION (D)
4649
   --        /MINIMAL_RECOMPILATION
4650
   --
4651
   --   Specifies that the minimum necessary amount of recompilation
4652
   --   be performed. In this mode GNAT MAKE ignores time stamp differences
4653
   --   when the only modifications to a source file consist in
4654
   --   adding/removing comments, empty lines, spaces or tabs.
4655
 
4656
   S_Make_Missing : aliased constant S := "/CREATE_MISSING_DIRS "          &
4657
                                            "-p";
4658
   --        /NOCREATE_MISSING_DIRS (D)
4659
   --        /CREATE_MISSING_DIRS
4660
   --
4661
   --   When an object directory, a library directory or an exec directory
4662
   --   in missing, attempt to create the directory.
4663
 
4664
   S_Make_Nolink  : aliased constant S := "/NOLINK "                       &
4665
                                            "-c";
4666
   --        /NOLINK
4667
   --
4668
   --   Compile only. Do not perform binding and linking. If the root unit is
4669
   --   not a main unit, this is the default.  Otherwise GNAT MAKE will
4670
   --   attempt binding and linking unless all objects are up to date and the
4671
   --   executable is more recent than the objects.
4672
   --   This is equivalent to /ACTIONS=COMPILE
4673
 
4674
   S_Make_Nomain  : aliased constant S := "/NOMAIN "                       &
4675
                                            "-z";
4676
   --        /NOMAIN
4677
   --
4678
   --   No main subprogram. Bind and link the program even if the unit name
4679
   --   given on the command line is a package name. The resulting executable
4680
   --   will execute the elaboration routines of the package and its closure,
4681
   --   then the finalization routines.
4682
 
4683
   S_Make_Nonpro  : aliased constant S := "/NON_PROJECT_UNIT_COMPILATION " &
4684
                                            "-x";
4685
   --        /NON_PROJECT_UNIT_COMPILATION
4686
   --
4687
   --    Normally, when using project files, a unit that is not part of any
4688
   --    project file, cannot be compile. These units may be compile, when
4689
   --    needed, if this qualifier is specified.
4690
 
4691
   S_Make_Nostinc : aliased constant S := "/NOSTD_INCLUDES "               &
4692
                                            "-nostdinc";
4693
   --        /NOSTD_INCLUDES
4694
   --
4695
   --    Do not look for sources the in the system default directory.
4696
 
4697
   S_Make_Nostlib : aliased constant S := "/NOSTD_LIBRARIES "              &
4698
                                            "-nostdlib";
4699
   --        /NOSTD_LIBRARIES
4700
   --
4701
   --    Do not look for library files in the system default directory.
4702
 
4703
   S_Make_Object  : aliased constant S := "/OBJECT_SEARCH=*"               &
4704
                                            "-aO*";
4705
   --        /OBJECT_SEARCH=(directory[,...])
4706
   --
4707
   --   When looking for library and object files look also in the specified
4708
   --   directories.
4709
 
4710
   S_Make_Proc    : aliased constant S := "/PROCESSES=#"                   &
4711
                                            "-j#";
4712
   --        /NOPROCESSES (D)
4713
   --        /PROCESSES=NNN
4714
   --
4715
   --   Use NNN processes to carry out the (re)compilations. If you have a
4716
   --   multiprocessor machine, compilations will occur in parallel.  In the
4717
   --   event of compilation errors, messages from various compilations might
4718
   --   get interspersed (but GNAT MAKE will give you the full ordered list of
4719
   --   failing compiles at the end). This can at times be annoying.  To get a
4720
   --   clean list of error messages don't use this qualifier.
4721
 
4722
   S_Make_Nojobs  : aliased constant S := "/NOPROCESSES "                  &
4723
                                            "-j1";
4724
   --  NODOC (see /PROCESS)
4725
 
4726
   S_Make_Project : aliased constant S := "/PROJECT_FILE=<"                &
4727
                                            "-P>";
4728
   --        /PROJECT_FILE=filename
4729
   --
4730
   --   Specifies the main project file to be used. The project files rooted
4731
   --   at the main project file will be parsed before any other processing to
4732
   --   set the building environment.
4733
 
4734
   S_Make_Quiet   : aliased constant S := "/QUIET "                        &
4735
                                            "-q";
4736
   --        /NOQUIET (D)
4737
   --        /QUIET
4738
   --
4739
   --   When this qualifiers is specified, the commands carried out by GNAT
4740
   --   MAKE are not displayed.
4741
 
4742
   S_Make_Reason  : aliased constant S := "/REASONS "                      &
4743
                                            "-v";
4744
   --        /NOREASONS (D)
4745
   --        /REASONS
4746
   --
4747
   --   Displays the reason for all recompilations GNAT MAKE decides are
4748
   --   necessary.
4749
 
4750
   S_Make_RTS     : aliased constant S := "/RUNTIME_SYSTEM=|"              &
4751
                                            "--RTS=|";
4752
   --        /RUNTIME_SYSTEM=xxx
4753
   --
4754
   --    Build against an alternate runtime system named xxx or RTS-xxx.
4755
 
4756
   S_Make_Search  : aliased constant S := "/SEARCH=*"                      &
4757
                                            "-I*";
4758
   --        /SEARCH=(directory[,...])
4759
   --
4760
   --   Search the specified directories for both source and object files.
4761
 
4762
   S_Make_Skip    : aliased constant S := "/SKIP_MISSING=*"                &
4763
                                            "-aL*";
4764
   --        /SKIP_MISSING=(directory[,...])
4765
   --
4766
   --   Skip missing library sources if ALI in 'directory'.
4767
 
4768
   S_Make_Source  : aliased constant S := "/SOURCE_SEARCH=*"               &
4769
                                            "-aI*";
4770
   --        /SOURCE_SEARCH=(directory[,...])
4771
   --
4772
   --   When looking for source files also look in the specified directories.
4773
 
4774
   S_Make_Stand   : aliased constant S := "/STANDARD_OUTPUT_FOR_COMMANDS " &
4775
                                            "-eS";
4776
   --        /NOSTANDARD_OUTPUT_FOR_COMMANDS (D)
4777
   --        /STANDARD_OUTPUT_FOR_COMMANDS
4778
   --
4779
   --   Output the commands for the compiler, the binder and the linker
4780
   --   on SYS$OUTPUT, instead of SYS$ERROR.
4781
 
4782
   S_Make_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
4783
                                             "--subdirs=>";
4784
   --        /SUBDIRS=dir
4785
   --
4786
   --   The actual directories (object, exec, library, ...) are subdirectories
4787
   --   of the directory specified in the project file. If the subdirectory
4788
   --   does not exist, it is created automatically.
4789
 
4790
   S_Make_Switch  : aliased constant S := "/SWITCH_CHECK "                 &
4791
                                            "-s";
4792
   --        /NOSWITCH_CHECK (D)
4793
   --        /SWITCH_CHECK
4794
   --
4795
   --   Recompile if compiler switches have changed since last compilation.
4796
   --   All compiler switches but -I and -o are taken into account in the
4797
   --   following way: orders between different "first letter" switches are
4798
   --   ignored, but orders between same switches are taken into account.
4799
   --   For example, -O -O2 is different than -O2 -O, but -g -O is equivalent
4800
   --   to -O -g.
4801
 
4802
   S_Make_Unique  : aliased constant S := "/UNIQUE "                       &
4803
                                            "-u";
4804
   --        /NOUNIQUE (D)
4805
   --        /UNIQUE
4806
   --
4807
   --  Recompile at most the main file. It implies /ACTIONS=COMPILE.
4808
   --  Combined with /FORCE_COMPILE, it is equivalent to calling the compiler
4809
   --  directly.
4810
 
4811
   S_Make_Use_Map : aliased constant S := "/USE_MAPPING_File=@"            &
4812
                                            "-C=@";
4813
   --        /USE_MAPPING_FILE=file_name
4814
   --
4815
   --   Use a specific mapping file. The file 'file_name', specified as a path
4816
   --   name (absolute or relative) by this qualifier, should already exist,
4817
   --   otherwise the qualifier is ineffective. The specified mapping file
4818
   --   will be communicated to the compiler. This switch is not compatible
4819
   --   with a project file (/PROJECT_FILE=) or with multiple compiling
4820
   --   processes (/PROCESSES=nnn, when nnn is greater than 1).
4821
 
4822
   S_Make_Verbose : aliased constant S := "/VERBOSE "                      &
4823
                                            "-v";
4824
   --        /NOVERBOSE (D)
4825
   --        /VERBOSE
4826
   --
4827
   --   Displays the reason for all recompilations GNAT MAKE decides are
4828
   --   necessary.
4829
 
4830
   Make_Switches : aliased constant Switches :=
4831
                     (S_Make_Add     'Access,
4832
                      S_Make_Actions 'Access,
4833
                      S_Make_All     'Access,
4834
                      S_Make_Allproj 'Access,
4835
                      S_Make_Bind    'Access,
4836
                      S_Make_Comp    'Access,
4837
                      S_Make_Cond    'Access,
4838
                      S_Make_Cont    'Access,
4839
                      S_Make_Current 'Access,
4840
                      S_Make_Dep     'Access,
4841
                      S_Make_Dirobj  'Access,
4842
                      S_Make_Disprog 'Access,
4843
                      S_Make_Doobj   'Access,
4844
                      S_Make_Execut  'Access,
4845
                      S_Make_Ext     'Access,
4846
                      S_Make_Follow  'Access,
4847
                      S_Make_Force   'Access,
4848
                      S_Make_Full    'Access,
4849
                      S_Make_Hi_Verb 'Access,
4850
                      S_Make_Inplace 'Access,
4851
                      S_Make_Index   'Access,
4852
                      S_Make_Library 'Access,
4853
                      S_Make_Link    'Access,
4854
                      S_Make_Low_Verb'Access,
4855
                      S_Make_Make    'Access,
4856
                      S_Make_Mapping 'Access,
4857
                      S_Make_Med_Verb'Access,
4858
                      S_Make_Mess    'Access,
4859
                      S_Make_Minimal 'Access,
4860
                      S_Make_Missing 'Access,
4861
                      S_Make_Nolink  'Access,
4862
                      S_Make_Nomain  'Access,
4863
                      S_Make_Nonpro  'Access,
4864
                      S_Make_Nostinc 'Access,
4865
                      S_Make_Nostlib 'Access,
4866
                      S_Make_Object  'Access,
4867
                      S_Make_Proc    'Access,
4868
                      S_Make_Nojobs  'Access,
4869
                      S_Make_Project 'Access,
4870
                      S_Make_Quiet   'Access,
4871
                      S_Make_Reason  'Access,
4872
                      S_Make_RTS     'Access,
4873
                      S_Make_Search  'Access,
4874
                      S_Make_Skip    'Access,
4875
                      S_Make_Source  'Access,
4876
                      S_Make_Stand   'Access,
4877
                      S_Make_Subdirs 'Access,
4878
                      S_Make_Switch  'Access,
4879
                      S_Make_Unique  'Access,
4880
                      S_Make_Use_Map 'Access,
4881
                      S_Make_Verbose 'Access);
4882
 
4883
   ------------------------------
4884
   -- Switches for GNAT METRIC --
4885
   ------------------------------
4886
 
4887
   S_Metric_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"    &
4888
                                              "-aP*";
4889
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
4890
   --
4891
   --   Add directories to the project search path.
4892
 
4893
   S_Metric_All_Prjs : aliased constant S := "/ALL_PROJECTS "              &
4894
                                               "-U";
4895
   --        /NOALL_PROJECTS (D)
4896
   --        /ALL_PROJECTS
4897
   --   When GNAT METRIC is used with a Project File and no source is
4898
   --   specified, the underlying tool gnatmetric is called for all the
4899
   --   sources of all the Project Files in the project tree.
4900
 
4901
   S_Metric_Debug    : aliased constant S := "/DEBUG_OUTPUT "              &
4902
                                             "-dv";
4903
   --      /DEBUG_OUTPUT
4904
   --
4905
   --   Generate the debug information
4906
 
4907
   S_Metric_Direct   : aliased constant S := "/DIRECTORY=@"                &
4908
                                             "-d=@";
4909
   --      /DIRECTORY=pathname
4910
   --
4911
   --   Put the files with detailed metric information into the specified
4912
   --   directory
4913
 
4914
   S_Metric_Element : aliased constant S := "/ELEMENT_METRICS="            &
4915
                                             "ALL "                        &
4916
                                              "!-ed,!-es,!-enl,!-eps,"     &
4917
                                              "!-eas,!-ept,!-eat,!-enu,"   &
4918
                                              "!-ec "                      &
4919
                                             "DECLARATION_TOTAL "          &
4920
                                              "-ed "                       &
4921
                                             "STATEMENT_TOTAL "            &
4922
                                              "-es "                       &
4923
                                             "LOOP_NESTING_MAX "           &
4924
                                              "-enl "                      &
4925
                                             "INT_SUBPROGRAMS "            &
4926
                                              "-eps "                      &
4927
                                             "SUBPROGRAMS_ALL "            &
4928
                                              "-eas "                      &
4929
                                             "INT_TYPES "                  &
4930
                                              "-ept "                      &
4931
                                             "TYPES_ALL "                  &
4932
                                              "-eat "                      &
4933
                                             "PROGRAM_NESTING_MAX "        &
4934
                                              "-enu "                      &
4935
                                             "CONSTRUCT_NESTING_MAX "      &
4936
                                              "-ec";
4937
   --  NODOC  (see /SYNTAX_METRICS)
4938
 
4939
   S_Metric_Syntax : aliased constant S := "/SYNTAX_METRICS="              &
4940
                                             "ALL "                        &
4941
                                             "--syntax-all "               &
4942
                                             "NONE "                       &
4943
                                             "--no-syntax-all "            &
4944
                                             "DECLARATIONS "               &
4945
                                             "--declarations "             &
4946
                                             "NODECLARATIONS "             &
4947
                                             "--no-declarations "          &
4948
                                             "STATEMENTS "                 &
4949
                                             "--statements "               &
4950
                                             "NOSTATEMENTS "               &
4951
                                             "--no-statements "            &
4952
                                             "PUBLIC_SUBPROGRAMS "         &
4953
                                             "--public-subprograms "       &
4954
                                             "NOPUBLIC_SUBPROGRAMS "       &
4955
                                             "--no-public-subprograms "    &
4956
                                             "ALL_SUBPROGRAMS "            &
4957
                                             "--all-subprograms "          &
4958
                                             "NOALL_SUBPROGRAMS "          &
4959
                                             "--no-all-subprograms "       &
4960
                                             "PUBLIC_TYPES "               &
4961
                                             "--public-types "             &
4962
                                             "NOPUBLIC_TYPES "             &
4963
                                             "--no-public-types "          &
4964
                                             "ALL_TYPES "                  &
4965
                                             "--all-types "                &
4966
                                             "NOALL_TYPES "                &
4967
                                             "--no-all-types "             &
4968
                                             "UNIT_NESTING "               &
4969
                                             "--unit-nesting "             &
4970
                                             "NOUNIT_NESTING "             &
4971
                                             "--no-unit-nesting "          &
4972
                                             "CONSTRUCT_NESTING "          &
4973
                                             "--construct-nesting "        &
4974
                                             "NOCONSTRUCT_NESTING "        &
4975
                                             "--no-construct-nesting";
4976
   --       /SYNTAX_METRICS(option, option ...)
4977
   --
4978
   --   Specifies the syntax element metrics to be computed (if at least one
4979
   --   positive syntax element metric, line metric, complexity or coupling
4980
   --   metric is specified then only explicitly specified syntax element
4981
   --   metrics are computed and reported)
4982
   --
4983
   --   option may be one of the following:
4984
   --
4985
   --     ALL (D)               All the syntax element metrics are computed
4986
   --     NONE                  None of syntax element metrics is computed
4987
   --     DECLARATIONS          Compute the total number of declarations
4988
   --     NODECLARATIONS        Do not compute the total number of declarations
4989
   --     STATEMENTS            Compute the total number of statements
4990
   --     NOSTATEMENTS          Do not compute the total number of statements
4991
   --     PUBLIC_SUBPROGRAMS    Compute the number of public subprograms
4992
   --     NOPUBLIC_SUBPROGRAMS  Do not compute the number of public subprograms
4993
   --     ALL_SUBPROGRAMS       Compute the number of all the subprograms
4994
   --     NOALL_SUBPROGRAMS     Do not compute the number of all the
4995
   --                           subprograms
4996
   --     PUBLIC_TYPES          Compute the number of public types
4997
   --     NOPUBLIC_TYPES        Do not compute the number of public types
4998
   --     ALL_TYPES             Compute the number of all the types
4999
   --     NOALL_TYPES           Do not compute the number of all the types
5000
   --     UNIT_NESTING          Compute the maximal program unit nesting
5001
   --                           level
5002
   --     NOUNIT_NESTING        Do not compute the maximal program unit
5003
   --                           nesting level
5004
   --     CONSTRUCT_NESTING     Compute the maximal construct nesting level
5005
   --     NOCONSTRUCT_NESTING   Do not compute the maximal construct nesting
5006
   --                           level
5007
   --
5008
   --   All combinations of syntax element metrics options are allowed.
5009
 
5010
   S_Metric_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'   &
5011
                                             "-X" & '"';
5012
   --       /EXTERNAL_REFERENCE="name=val"
5013
   --
5014
   --   Specifies an external reference to the project manager. Useful only if
5015
   --   /PROJECT_FILE is used.
5016
   --
5017
   --   Example:
5018
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
5019
 
5020
   S_Metric_Files   : aliased constant S := "/FILES=@"                     &
5021
                                             "-files=@";
5022
   --      /FILES=filename
5023
   --
5024
   --   Take as arguments the files that are listed in the specified
5025
   --   text file.
5026
 
5027
   S_Metric_Format  : aliased constant S := "/FORMAT_OUTPUT="              &
5028
                                             "DEFAULT "                    &
5029
                                              "!-x,!-nt,!-sfn "            &
5030
                                             "XML "                        &
5031
                                              "-x "                        &
5032
                                             "XSD "                        &
5033
                                              "-xs "                       &
5034
                                             "NO_TEXT "                    &
5035
                                              "-nt "                       &
5036
                                             "SHORT_SOURCE_FILE_NAME "     &
5037
                                              "-sfn";
5038
   --       /FORMAT_OUTPUT=(option, option ...)
5039
   --
5040
   --   Specifies the details of the tool output
5041
   --
5042
   --   option may be one of the following:
5043
   --
5044
   --     DEFAULT (D)             Generate the text output only, use full
5045
   --                             argument source names in global information
5046
   --     XML                     Generate the output in XML format
5047
   --     XSD                     Generate the output in XML format, and
5048
   --                             generate an XML schema file that describes
5049
   --                             the structure of XML metrics report
5050
   --     NO_TEXT                 Do not generate the text output (implies XML)
5051
   --     SHORT_SOURCE_FILE_NAME  Use short argument source names in output
5052
 
5053
   S_Metric_Globout : aliased constant S := "/GLOBAL_OUTPUT=@"             &
5054
                                             "-og@";
5055
   --        /GLOBAL_OUTPUT=filename
5056
   --
5057
   --   Put the textual global metric information into the specified file
5058
 
5059
   S_Metric_Line     : aliased constant S := "/LINE_METRICS="              &
5060
                                                "ALL "                     &
5061
                                                 "!-la,!-lcode,!-lcomm,"   &
5062
                                                 "!-leol,!-lb "            &
5063
                                                "LINES_ALL "               &
5064
                                                 "-la "                    &
5065
                                                "CODE_LINES "              &
5066
                                                 "-lcode "                 &
5067
                                                "COMENT_LINES "            &
5068
                                                 "-lcomm "                 &
5069
                                                "MIXED_CODE_COMMENTS "     &
5070
                                                 "-leol "                  &
5071
                                                "COMMENT_PERCENTAGE "      &
5072
                                                 "-lratio "                &
5073
                                                "BLANK_LINES "             &
5074
                                                 "-lb "                    &
5075
                                                "AVERAGE_LINES_IN_BODIES " &
5076
                                                 "-lav ";
5077
   --  NODOC  (see /LINE_COUNT_METRICS)
5078
 
5079
   S_Metric_Lines : aliased constant S := "/LINE_COUNT_METRICS="           &
5080
                                           "ALL "                          &
5081
                                           "--lines-all "                  &
5082
                                           "NONE "                         &
5083
                                           "--no-lines-all "               &
5084
                                           "ALL_LINES "                    &
5085
                                           "--lines "                      &
5086
                                           "NOALL_LINES "                  &
5087
                                           "--no-lines "                   &
5088
                                           "CODE_LINES "                   &
5089
                                           "--lines-code "                 &
5090
                                           "NOCODE_LINES "                 &
5091
                                           "--no-lines-code "              &
5092
                                           "COMMENT_LINES "                &
5093
                                           "--lines-comment "              &
5094
                                           "NOCOMMENT_LINES "              &
5095
                                           "--no-lines-comment "           &
5096
                                           "CODE_COMMENT_LINES "           &
5097
                                           "--lines-eol-comment "          &
5098
                                           "NOCODE_COMMENT_LINES "         &
5099
                                           "--no-lines-eol-comment "       &
5100
                                           "COMMENT_PERCENTAGE "           &
5101
                                           "--lines-ratio "                &
5102
                                           "NOCOMMENT_PERCENTAGE "         &
5103
                                           "--no-lines-ratio "             &
5104
                                           "BLANK_LINES "                  &
5105
                                           "--lines-blank "                &
5106
                                           "NOBLANK_LINES "                &
5107
                                           "--no-lines-blank "             &
5108
                                           "AVERAGE_BODY_LINES "           &
5109
                                           "--lines-average "              &
5110
                                           "NOAVERAGE_BODY_LINES "         &
5111
                                           "--no-lines-average";
5112
   --      /LINE_COUNT_METRICS=(option, option ...)
5113
 
5114
   --   Specifies the line metrics to be computed (if at least one positive
5115
   --   syntax element metric, line metric, complexity or coupling metric is
5116
   --   specified then only explicitly specified line metrics are computed
5117
   --   and reported)
5118
   --
5119
   --   option may be one of the following:
5120
   --
5121
   --     ALL (D)               All the line metrics are computed
5122
   --     NONE                  None of line metrics is computed
5123
   --     ALL_LINES             All lines are computed
5124
   --     NOALL_LINES           All lines are not computed
5125
   --     CODE_LINES            Lines with Ada code are computed
5126
   --     NOCODE_LINES          Lines with Ada code are not computed
5127
   --     COMMENT_LINES         Comment lines are computed
5128
   --     NOCOMMENT_LINES       Comment lines are not computed
5129
   --     CODE_COMMENT_LINES    Lines containing both code and comment parts
5130
   --                           are computed
5131
   --     NOCODE_COMMENT_LINES  Lines containing both code and comment parts
5132
   --                           are not computed
5133
   --     COMMENT_PERCENTAGE    Ratio between comment lines and all the lines
5134
   --                           containing comments and program code is
5135
   --                           computed
5136
   --     NOCOMMENT_PERCENTAGE  Ratio between comment lines and all the lines
5137
   --                           containing comments and program code is not
5138
   --                           computed
5139
   --     BLANK_LINES           Blank lines are computed
5140
   --     NOBLANK_LINES         Blank lines are not computed
5141
   --     AVERAGE_BODY_LINES    Average number of code lines in subprogram,
5142
   --                           task and entry bodies and statement sequences
5143
   --                           of package bodies is computed
5144
   --     NOAVERAGE_BODY_LINES  Average number of code lines in subprogram,
5145
   --                           task and entry bodies and statement sequences
5146
   --                           of package bodies is not computed
5147
   --
5148
   --   All combinations of line metrics options are allowed.
5149
 
5150
   S_Metric_Complexity : aliased constant S := "/COMPLEXITY_METRICS="      &
5151
                                               "ALL "                      &
5152
                                               "--complexity-all "         &
5153
                                              "NONE "                      &
5154
                                              "--no-complexity-all "       &
5155
                                              "CYCLOMATIC "                &
5156
                                              "--complexity-cyclomatic "   &
5157
                                              "NOCYCLOMATIC "              &
5158
                                              "--no-complexity-cyclomatic "&
5159
                                              "ESSENTIAL "                 &
5160
                                              "--complexity-essential "    &
5161
                                              "NOESSENTIAL "               &
5162
                                              "--no-complexity-essential " &
5163
                                              "LOOP_NESTING "              &
5164
                                              "--loop-nesting "            &
5165
                                              "NOLOOP_NESTING "            &
5166
                                              "--no-loop-nesting "         &
5167
                                              "AVERAGE_COMPLEXITY "        &
5168
                                              "--complexity-average "      &
5169
                                              "NOAVERAGE_COMPLEXITY "      &
5170
                                              "--no-complexity-average "   &
5171
                                              "EXTRA_EXIT_POINTS "         &
5172
                                              "--extra-exit-points "       &
5173
                                              "NOEXTRA_EXIT_POINTS "       &
5174
                                              "--no-extra-exit-points";
5175
   --      /COMPLEXITY_METRICS=(option, option ...)
5176
 
5177
   --   Specifies the complexity metrics to be computed (if at least one
5178
   --   positive syntax element metric, line metric, complexity or coupling
5179
   --   metric is specified then only explicitly specified complexity metrics
5180
   --   are computed and reported)
5181
   --
5182
   --   option may be one of the following:
5183
   --
5184
   --     ALL (D)               All the complexity metrics are computed
5185
   --     NONE                  None of complexity metrics is computed
5186
   --     CYCLOMATIC            Compute the McCabe Cyclomatic Complexity
5187
   --     NOCYCLOMATIC          Do not compute the McCabe Cyclomatic Complexity
5188
   --     ESSENTIAL             Compute the Essential Complexity
5189
   --     NOESSENTIAL           Do not compute the Essential Complexity
5190
   --     LOOP_NESTING          Compute the maximal loop nesting
5191
   --     NOLOOP_NESTING        Do not compute the maximal loop nesting
5192
   --     AVERAGE_COMPLEXITY    Compute the average complexity for executable
5193
   --                           bodies
5194
   --     NOAVERAGE_COMPLEXITY  Do not compute the average complexity for
5195
   --                           executable bodies
5196
   --     EXTRA_EXIT_POINTS     Compute extra exit points metric
5197
   --     NOEXTRA_EXIT_POINTS   Do not compute extra exit points metric
5198
   --
5199
   --   All combinations of line metrics options are allowed.
5200
 
5201
   S_Metric_Coupling : aliased constant S := "/COUPLING_METRICS="             &
5202
                                           "ALL "                             &
5203
                                           "--coupling-all "                  &
5204
                                           "NONE "                            &
5205
                                           "--no-coupling-all "               &
5206
                                           "PACKAGE_EFFERENT "                &
5207
                                           "--package-efferent-coupling "     &
5208
                                           "NOPACKAGE_EFFERENT "              &
5209
                                           "--no-package-efferent-coupling "  &
5210
                                           "PACKAGE_AFFERENT "                &
5211
                                           "--package-afferent-coupling "     &
5212
                                           "NOPACKAGE_AFFERENT "              &
5213
                                           "--no-package-afferent-coupling "  &
5214
                                           "CATEGORY_EFFERENT "               &
5215
                                           "--category-efferent-coupling "    &
5216
                                           "NOCATEGORY_EFFERENT "             &
5217
                                           "--no-category-efferent-coupling " &
5218
                                           "CATEGORY_AFFERENT "               &
5219
                                           "--category-afferent-coupling "    &
5220
                                           "NOCATEGORY_AFFERENT "             &
5221
                                           "--no-category-afferent-coupling";
5222
 
5223
   --      /COUPLING_METRICS=(option, option ...)
5224
 
5225
   --   Specifies the coupling metrics to be computed.
5226
   --
5227
   --   option may be one of the following:
5228
   --
5229
   --     ALL                   All the coupling metrics are computed
5230
   --     NONE (D)              None of coupling metrics is computed
5231
   --     PACKAGE_EFFERENT      Compute package efferent coupling
5232
   --     NOPACKAGE_EFFERENT    Do not compute package efferent coupling
5233
   --     PACKAGE_AFFERENT      Compute package afferent coupling
5234
   --     NOPACKAGE_AFFERENT    Do not compute package afferent coupling
5235
   --     CATEGORY_EFFERENT     Compute category efferent coupling
5236
   --     NOCATEGORY_EFFERENT   Do not compute category efferent coupling
5237
   --     CATEGORY_AFFERENT     Compute category afferent coupling
5238
   --     NOCATEGORY_AFFERENT   Do not compute category afferent coupling
5239
   --
5240
   --   All combinations of coupling metrics options are allowed.
5241
 
5242
   S_Metric_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "      &
5243
                                             "-eL";
5244
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
5245
   --        /FOLLOW_LINKS_FOR_FILES
5246
   --
5247
   --    Follow links when parsing project files
5248
 
5249
   S_Metric_No_Local : aliased constant S := "/NO_LOCAL_DETAILS "          &
5250
                                             "-nolocal";
5251
   --        /LOCAL_DETAILS (D)
5252
   --        /NO_LOCAL_DETAILS
5253
   --
5254
   --   Do not compute the detailed metrics for local program units.
5255
 
5256
   S_Metric_No_Exits_As_Gotos : aliased constant S := "/NO_EXITS_AS_GOTOS " &
5257
                                                      "-ne";
5258
   --        /EXITS_AS_GOTOS (D)
5259
   --        /NO_EXITS_AS_GOTOS
5260
   --
5261
   --   Do not count EXIT statements as GOTOs when computing the Essential
5262
   --   Complexity.
5263
 
5264
   S_Metric_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="      &
5265
                                             "DEFAULT "                    &
5266
                                                "-vP0 "                    &
5267
                                             "MEDIUM "                     &
5268
                                                "-vP1 "                    &
5269
                                             "HIGH "                       &
5270
                                                "-vP2";
5271
   --        /MESSAGES_PROJECT_FILE[=messages-option]
5272
   --
5273
   --   Specifies the "verbosity" of the parsing of project files.
5274
   --   messages-option may be one of the following:
5275
   --
5276
   --      DEFAULT (D)  No messages are output if there is no error or warning.
5277
   --
5278
   --      MEDIUM       A small number of messages are output.
5279
   --
5280
   --      HIGH         A great number of messages are output, most of them not
5281
   --                   being useful for the user.
5282
 
5283
   S_Metric_Project : aliased constant S := "/PROJECT_FILE=<"              &
5284
                                             "-P>";
5285
   --        /PROJECT_FILE=filename
5286
   --
5287
   --   Specifies the main project file to be used. The project files rooted
5288
   --   at the main project file will be parsed before the invocation of the
5289
   --   binder.
5290
 
5291
   S_Metric_Quiet    : aliased constant S := "/QUIET "                     &
5292
                                             "-q";
5293
   --        /NOQUIET (D)
5294
   --        /QUIET
5295
   --
5296
   --   Quiet mode: by default GNAT METRIC outputs to the standard error stream
5297
   --   the number of program units left to be processed. This option turns
5298
   --   this trace off.
5299
 
5300
   S_Metric_Subdirs : aliased constant S := "/SUBDIRS=<"                   &
5301
                                               "--subdirs=>";
5302
   --        /SUBDIRS=dir
5303
   --
5304
   --   The actual directories (object, exec, library, ...) are subdirectories
5305
   --   of the directory specified in the project file. If the subdirectory
5306
   --   does not exist, it is created automatically.
5307
 
5308
   S_Metric_Suffix  : aliased constant S := "/SUFFIX_DETAILS=" & '"'       &
5309
                                             "-o" & '"';
5310
   --        /SUFFIX_DETAILS=suffix
5311
   --
5312
   --   Use the given suffix as the suffix for the name of the file to place
5313
   --   the detailed metrics into.
5314
 
5315
   S_Metric_Suppress : aliased constant S :=  "/SUPPRESS="                 &
5316
                                               "NOTHING "                  &
5317
                                                "!-nocc,!-noec,!-nonl,"    &
5318
                                                "!-ne,!-nolocal "          &
5319
                                               "CYCLOMATIC_COMPLEXITY "    &
5320
                                                "-nocc "                   &
5321
                                               "ESSENTIAL_COMPLEXITY "     &
5322
                                                "-noec "                   &
5323
                                               "MAXIMAL_LOOP_NESTING "     &
5324
                                                "-nonl "                   &
5325
                                               "EXITS_AS_GOTOS "           &
5326
                                                "-ne "                     &
5327
                                               "LOCAL_DETAILS "            &
5328
                                                "-nolocal ";
5329
   --  NODOC  (see /COMPLEXITY_METRICS /NO_LOCAL_DETAILS /NO_EXITS_AS_GOTOS)
5330
 
5331
   S_Metric_Verbose  : aliased constant S := "/VERBOSE "                   &
5332
                                             "-v";
5333
   --        /NOVERBOSE (D)
5334
   --        /VERBOSE
5335
   --
5336
   --   Verbose mode.
5337
 
5338
   S_Metric_XMLout  : aliased constant S := "/XML_OUTPUT=@"                &
5339
                                             "-ox@";
5340
   --        /XML_OUTPUT=filename
5341
   --
5342
   --   Place the XML output into the specified file
5343
 
5344
   Metric_Switches : aliased constant Switches :=
5345
                       (S_Metric_Add              'Access,
5346
                        S_Metric_All_Prjs         'Access,
5347
                        S_Metric_Complexity       'Access,
5348
                        S_Metric_Coupling         'Access,
5349
                        S_Metric_Debug            'Access,
5350
                        S_Metric_Direct           'Access,
5351
                        S_Metric_Element          'Access,
5352
                        S_Metric_Ext              'Access,
5353
                        S_Metric_Files            'Access,
5354
                        S_Metric_Follow           'Access,
5355
                        S_Metric_Format           'Access,
5356
                        S_Metric_Globout          'Access,
5357
                        S_Metric_Line             'Access,
5358
                        S_Metric_Lines            'Access,
5359
                        S_Metric_Mess             'Access,
5360
                        S_Metric_No_Exits_As_Gotos'Access,
5361
                        S_Metric_No_Local         'Access,
5362
                        S_Metric_Project          'Access,
5363
                        S_Metric_Quiet            'Access,
5364
                        S_Metric_Suffix           'Access,
5365
                        S_Metric_Subdirs          'Access,
5366
                        S_Metric_Syntax           'Access,
5367
                        S_Metric_Suppress         'Access,
5368
                        S_Metric_Verbose          'Access,
5369
                        S_Metric_XMLout           'Access);
5370
 
5371
   ----------------------------
5372
   -- Switches for GNAT NAME --
5373
   ----------------------------
5374
 
5375
   S_Name_Conf    : aliased constant S := "/CONFIG_FILE=<"                 &
5376
                                            "-c>";
5377
   --        /CONFIG_FILE=path_name
5378
   --
5379
   --   Create a configuration pragmas file 'path_name' (instead of the default
5380
   --   'gnat.adc'). 'path_name' may include directory information. 'path_name'
5381
   --   must be writable. There may be only one qualifier /CONFIG_FILE.
5382
   --   This qualifier is not compatible with qualifier /PROJECT_FILE.
5383
 
5384
   S_Name_Dirs    : aliased constant S := "/SOURCE_DIRS=*"                 &
5385
                                            "-d*";
5386
   --        /SOURCE_DIRS=(directory, ...)
5387
   --
5388
   --   Look for source files in the specified directories. When this qualifier
5389
   --   is specified, the current working directory will not be searched for
5390
   --   source files, unless it is explicitly specified with a qualifier
5391
   --   /SOURCE_DIRS or /DIRS_FILE. Several qualifiers /SOURCE_DIRS may be
5392
   --   specified. If a directory is specified as a relative path, it is
5393
   --   relative to the directory of the configuration pragmas file specified
5394
   --   with qualifier /CONFIG_FILE, or to the directory of the project file
5395
   --   specified with qualifier /PROJECT_FILE or, if neither qualifier
5396
   --   /CONFIG_FILE nor qualifier /PROJECT_FILE are specified, it is relative
5397
   --   to the current working directory. The directories specified with
5398
   --   qualifiers /SOURCE_DIRS must exist and be readable.
5399
 
5400
   S_Name_Dfile   : aliased constant S := "/DIRS_FILE=<"                   &
5401
                                            "-D>";
5402
   --        /DIRS_FILE=file_name
5403
   --
5404
   --   Look for source files in all directories listed in text file
5405
   --   'file_name'. 'file_name' must be an existing, readable text file.
5406
   --   Each non empty line in the specified file must be a directory.
5407
   --   Specifying qualifier /DIRS_FILE is equivalent to specifying as many
5408
   --   qualifiers /SOURCE_DIRS as there are non empty lines in the specified
5409
   --   text file.
5410
 
5411
   S_Name_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
5412
                                            "-eL";
5413
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
5414
   --        /FOLLOW_LINKS_FOR_FILES
5415
   --
5416
   --    Follow links when parsing project files
5417
 
5418
   S_Name_Frng    : aliased constant S := "/FOREIGN_PATTERN=" & '"'        &
5419
                                            "-f" & '"';
5420
   --        /FOREIGN_PATTERN=<string>
5421
   --
5422
   --   Specify a foreign pattern.
5423
   --   Using this qualifier, it is possible to add sources of languages other
5424
   --   than Ada to the list of sources of a project file. It is only useful
5425
   --   if a qualifier /PROJECT_FILE is used. For example,
5426
   --
5427
   --   GNAT NAME /PROJECT_FILE=PRJ /FOREIGN_PATTERN="*.C" "*.ADA"
5428
   --
5429
   --   will look for Ada units in all files with the '.ADA' extension, and
5430
   --   will add to the list of file for project PRJ.GPR the C files with
5431
   --   extension ".C".
5432
 
5433
   S_Name_Help    : aliased constant S := "/HELP "                         &
5434
                                            "-h";
5435
   --        /NOHELP (D)
5436
   --        /HELP
5437
   --
5438
   --   Output usage information to the standard output stream.
5439
 
5440
   S_Name_Proj    : aliased constant S := "/PROJECT_FILE=<"                &
5441
                                            "-P>";
5442
   --        /PROJECT_FILE=file_name
5443
   --
5444
   --   Create or update a project file. 'file_name' may include directory
5445
   --   information. The specified file must be writable. There may be only
5446
   --   one qualifier /PROJECT_FILE. When a qualifier /PROJECT_FILE is
5447
   --   specified, no qualifier /CONFIG_FILE may be specified.
5448
 
5449
   S_Name_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
5450
                                             "--subdirs=>";
5451
   --        /SUBDIRS=dir
5452
   --
5453
   --   The actual directories (object, exec, library, ...) are subdirectories
5454
   --   of the directory specified in the project file. If the subdirectory
5455
   --   does not exist, it is created automatically.
5456
 
5457
   S_Name_Verbose : aliased constant S := "/VERBOSE "                      &
5458
                                            "-v";
5459
   --        /NOVERBOSE (D)
5460
   --        /VERBOSE
5461
   --
5462
   --   Verbose mode. Output detailed explanation of behavior to the standard
5463
   --   output stream. This includes name of the file written, the name of the
5464
   --   directories to search and, for each file in those directories whose
5465
   --   name matches at least one of the Naming Patterns, an indication of
5466
   --   whether the file contains a unit, and if so the name of the unit.
5467
 
5468
   S_Name_Excl    : aliased constant S := "/EXCLUDED_PATTERN=" & '"'       &
5469
                                            "-x" & '"';
5470
   --      /EXCLUDED_PATTERN=<string>
5471
   --
5472
   --   Specify an excluded pattern.
5473
   --   Using this qualifier, it is possible to exclude some files that would
5474
   --   match the Naming patterns. For example,
5475
   --
5476
   --   GNAT NAME /EXCLUDED_PATTERN="*_NT.ADA" "*.ADA"
5477
   --
5478
   --   will look for Ada units in all files with the '.ADA' extension, except
5479
   --   those whose names end with '_NT.ADA'.
5480
 
5481
   Name_Switches : aliased constant Switches :=
5482
                     (S_Name_Conf    'Access,
5483
                      S_Name_Dirs    'Access,
5484
                      S_Name_Dfile   'Access,
5485
                      S_Name_Follow  'Access,
5486
                      S_Name_Frng    'Access,
5487
                      S_Name_Help    'Access,
5488
                      S_Name_Proj    'Access,
5489
                      S_Name_Subdirs 'Access,
5490
                      S_Name_Verbose 'Access,
5491
                      S_Name_Excl    'Access);
5492
 
5493
   ----------------------------------
5494
   -- Switches for GNAT PREPROCESS --
5495
   ----------------------------------
5496
 
5497
   S_Prep_Assoc   : aliased constant S := "/ASSOCIATE=" & '"'              &
5498
                                            "-D" & '"';
5499
   --        /ASSOCIATE="name=val"
5500
   --
5501
   --   Defines a new symbol, associated with value. If no value is given
5502
   --   on the command line, then symbol is considered to be True.
5503
   --   This qualifier can be used in place of a definition file.
5504
 
5505
   S_Prep_Blank   : aliased constant S := "/BLANK_LINES "                  &
5506
                                            "-b";
5507
   --        /NOBLANK_LINES (D)
5508
   --        /BLANK_LINES
5509
   --
5510
   --   Causes both preprocessor lines and the lines deleted by preprocessing
5511
   --   to be replaced by blank lines in the output source file, thus
5512
   --   preserving line numbers in the output file.
5513
 
5514
   S_Prep_Com     : aliased constant S := "/COMMENTS "                     &
5515
                                            "-c";
5516
   --        /NOCOMMENTS (D)
5517
   --        /COMMENTS
5518
   --
5519
   --   /COMMENTS causes both preprocessor lines and the lines deleted
5520
   --   by preprocessing to be retained in the output source as comments marked
5521
   --   with the special string "--! ". This option will result in line numbers
5522
   --   being preserved in the output file.
5523
   --
5524
   --   /NOCOMMENTS causes both preprocessor lines and the lines deleted by
5525
   --   preprocessing to be replaced by blank lines in the output source file,
5526
   --   thus preserving line numbers in the output file.
5527
 
5528
   S_Prep_Ref     : aliased constant S := "/REFERENCE "                    &
5529
                                            "-r";
5530
   --        /NOREFERENCE (D)
5531
   --        /REFERENCE
5532
   --
5533
   --   Causes a "Source_Reference" pragma to be generated that references the
5534
   --   original input file, so that error messages will use the file name of
5535
   --   this original file.  Also implies /BLANK_LINES if /COMMENTS is not
5536
   --   specified.
5537
 
5538
   S_Prep_Remove  : aliased constant S := "/REMOVE "                       &
5539
                                            "!-b,!-c";
5540
   --        /REMOVE (D)
5541
   --        /NOREMOVE
5542
   --
5543
   --   Preprocessor lines and deleted lines are completely removed from the
5544
   --   output.
5545
 
5546
   S_Prep_Replace : aliased constant S := "/REPLACE_IN_COMMENTS "          &
5547
                                            "-C";
5548
   --        /NOREPLACE_IN_COMMENTS (D)
5549
   --        /REPLACE_IN_COMMENTS
5550
   --
5551
   --   Causes preprocessor to scan comments and perform replacements on
5552
   --   any $symbol occurrences within the comment text.
5553
 
5554
   S_Prep_Symbols : aliased constant S := "/SYMBOLS "                      &
5555
                                            "-s";
5556
   --        /NOSYMBOLS (D)
5557
   --        /SYMBOLS
5558
   --
5559
   --   Causes a sorted list of symbol names and values to be listed on
5560
   --   SYS$OUTPUT.
5561
 
5562
   S_Prep_Undef   : aliased constant S := "/UNDEFINED "                    &
5563
                                            "-u";
5564
   --        /NOUNDEFINED (D)
5565
   --        /UNDEFINED
5566
 
5567
   Prep_Switches : aliased constant Switches :=
5568
                     (S_Prep_Assoc   'Access,
5569
                      S_Prep_Blank   'Access,
5570
                      S_Prep_Com     'Access,
5571
                      S_Prep_Ref     'Access,
5572
                      S_Prep_Remove  'Access,
5573
                      S_Prep_Replace 'Access,
5574
                      S_Prep_Symbols 'Access,
5575
                      S_Prep_Undef   'Access);
5576
 
5577
   ------------------------------
5578
   -- Switches for GNAT PRETTY --
5579
   ------------------------------
5580
 
5581
   S_Pretty_Add    : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"     &
5582
                                             "-aP*";
5583
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
5584
   --
5585
   --   Add directories to the project search path.
5586
 
5587
   S_Pretty_Align  : aliased constant S := "/ALIGN="                       &
5588
                                           "DEFAULT "                      &
5589
                                               "-A12345 "                  &
5590
                                           "OFF "                          &
5591
                                               "-A0 "                      &
5592
                                           "COLONS "                       &
5593
                                               "-A1 "                      &
5594
                                           "DECLARATIONS "                 &
5595
                                               "-A2 "                      &
5596
                                           "STATEMENTS "                   &
5597
                                               "-A3 "                      &
5598
                                           "ARROWS "                       &
5599
                                               "-A4 "                      &
5600
                                           "COMPONENT_CLAUSES "            &
5601
                                               "-A5";
5602
   --        /ALIGN[=align-option, align-option, ...]
5603
   --
5604
   --   Set alignments. By default, all alignments (colons in declarations,
5605
   --   initialisations in declarations, assignments and arrow delimiters) are
5606
   --   ON.
5607
   --
5608
   --   align-option may be one of the following:
5609
   --
5610
   --      OFF (D)           Set all alignments to OFF
5611
   --      COLONS            Set alignments of colons in declarations to ON
5612
   --      DECLARATIONS      Set alignments of initialisations in declarations
5613
   --                        to ON
5614
   --      STATEMENTS        Set alignments of assignments statements to ON
5615
   --      ARROWS            Set alignments of arrow delimiters to ON.
5616
   --      COMPONENT_CLAUSES Set alignments of AT keywords in component
5617
   --                        clauses ON
5618
   --
5619
   --   Specifying one of the ON options without first specifying the OFF
5620
   --   option has no effect, because by default all alignments are set to ON.
5621
 
5622
   S_Pretty_All_Prjs : aliased constant S := "/ALL_PROJECTS "              &
5623
                                              "-U";
5624
   --        /NOALL_PROJECTS (D)
5625
   --        /ALL_PROJECTS
5626
   --   When GNAT PRETTY is used with a Project File and no source is
5627
   --   specified, the underlying tool gnatpp is called for all the
5628
   --   sources of all the Project Files in the project tree.
5629
 
5630
   S_Pretty_Attrib : aliased constant S := "/ATTRIBUTE_CASING="            &
5631
                                           "MIXED_CASE "                   &
5632
                                               "-aM "                      &
5633
                                           "LOWER_CASE "                   &
5634
                                               "-aL "                      &
5635
                                           "UPPER_CASE "                   &
5636
                                               "-aU";
5637
   --        /ATTRIBUTE_CASING[=casing-option]
5638
   --
5639
   --   Set the case of the attributes. By default the attributes are in mixed
5640
   --   case.
5641
   --   casing-option may be one of the following:
5642
   --
5643
   --      MIXED_CASE (D)
5644
   --      LOWER_CASE
5645
   --      UPPER_CASE
5646
 
5647
   S_Pretty_Comments  : aliased constant S := "/COMMENTS_LAYOUT="          &
5648
                                              "UNTOUCHED "                 &
5649
                                                 "-c0 "                    &
5650
                                              "DEFAULT "                   &
5651
                                                 "-c1 "                    &
5652
                                              "STANDARD_INDENT "           &
5653
                                                 "-c2 "                    &
5654
                                              "GNAT_BEGINNING "            &
5655
                                                 "-c3 "                    &
5656
                                              "REFORMAT "                  &
5657
                                                 "-c4 "                    &
5658
                                              "KEEP_SPECIAL "              &
5659
                                                 "-c5";
5660
   --        /COMMENTS_LAYOUT[=layout-option, layout-option, ...]
5661
   --
5662
   --   Set the comment layout. By default, comments use the GNAT style
5663
   --   comment line indentation.
5664
   --
5665
   --   layout-option may be one of the following:
5666
   --
5667
   --     UNTOUCHED           All the comments remain unchanged
5668
   --     DEFAULT (D)         GNAT style comment line indentation
5669
   --     STANDARD_INDENT     Standard comment line indentation
5670
   --     GNAT_BEGINNING      GNAT style comment beginning
5671
   --     REFORMAT            Reformat comment blocks
5672
   --     KEEP_SPECIAL        Keep unchanged special form comments
5673
   --
5674
   --     All combinations of layout options are allowed, except for DEFAULT
5675
   --     and STANDARD_INDENT which are mutually exclusive, and also if
5676
   --     UNTOUCHED is specified, this must be the only option.
5677
   --
5678
   --     The difference between "GNAT style comment line indentation" and
5679
   --     "standard comment line indentation" is the following: for standard
5680
   --     comment indentation, any comment line is indented as if it were
5681
   --     a declaration or statement at the same place.
5682
   --     For GNAT style comment indentation, comment lines which are
5683
   --     immediately followed by if or case statement alternative, record
5684
   --     variant or 'begin' keyword are indented as the keyword that follows
5685
   --     them.:
5686
   --
5687
   --     Standard indentation:
5688
   --
5689
   --        if A then
5690
   --           null;
5691
   --           -- some comment
5692
   --        else
5693
   --           null;
5694
   --        end if;
5695
   --
5696
   --     GNAT style indentation:
5697
   --
5698
   --        if A then
5699
   --           null;
5700
   --        -- some comment
5701
   --        else
5702
   --           null;
5703
   --        end if;
5704
   --
5705
   --     Option "GNAT style comment beginning" means that for each comment
5706
   --     which is not considered as non-formattable separator (that is, the
5707
   --     comment line contains only dashes, or a comment line ends with two
5708
   --     dashes), there will be at least two spaces between starting "--" and
5709
   --     the first non-blank character of the comment.
5710
 
5711
   S_Pretty_Config    : aliased constant S := "/CONFIGURATION_PRAGMAS_FILE=<" &
5712
                                              "-gnatec>";
5713
   --        /CONFIGURATION_PRAGMAS_FILE=file
5714
   --
5715
   --   Specify a configuration pragmas file that need to be passed to the
5716
   --   compiler.
5717
 
5718
   S_Pretty_Constr    : aliased constant S := "/CONSTRUCT_LAYOUT="         &
5719
                                               "GNAT "                     &
5720
                                                  "-l1 "                   &
5721
                                               "COMPACT "                  &
5722
                                                  "-l2 "                   &
5723
                                               "UNCOMPACT "                &
5724
                                                   "-l3";
5725
   --        /CONSTRUCT_LAYOUT[=construct-option]
5726
   --
5727
   --   Set construct layout. Default is GNAT style layout.
5728
   --   construct-option may be one of the following:
5729
   --
5730
   --      GNAT (D)
5731
   --      COMPACT
5732
   --      UNCOMPACT
5733
   --
5734
   --   The difference between GNAT style and Compact layout on one hand
5735
   --   and Uncompact layout on the other hand can be illustrated by the
5736
   --   following examples:
5737
   --
5738
   --       GNAT style and                          Uncompact layout
5739
   --       Compact layout
5740
   --
5741
   --       type q is record                        type q is
5742
   --          a : integer;                            record
5743
   --          b : integer;                               a : integer;
5744
   --       end record;                                   b : integer;
5745
   --                                                  end record;
5746
   --
5747
   --
5748
   --       Block : declare                         Block :
5749
   --          A : Integer := 3;                       declare
5750
   --       begin                                         A : Integer := 3;
5751
   --          Proc (A, A);                            begin
5752
   --       end Block;                                    Proc (A, A);
5753
   --                                                  end Block;
5754
   --
5755
   --       Clear : for J in 1 .. 10 loop           Clear :
5756
   --          A (J) := 0;                             for J in 1 .. 10 loop
5757
   --       end loop Clear;                               A (J) := 0;
5758
   --                                                  end loop Clear;
5759
   --
5760
   --
5761
   --   A further difference between GNAT style layout and compact layout is
5762
   --   that in GNAT style layout compound statements, return statements and
5763
   --   bodies are always separated by empty lines.
5764
 
5765
   S_Pretty_Comind    : aliased constant S := "/CONTINUATION_INDENT=#"     &
5766
                                                 "-cl#";
5767
   --        /CONTINUATION_INDENT=nnn
5768
   --
5769
   --   Indentation level for continuation lines, nnn from 1 .. 9.
5770
   --   The default value is one less then the (normal) indentation level,
5771
   --   unless the indentation is set to 1: in that case the default value for
5772
   --   continuation line indentation is also 1.
5773
 
5774
   S_Pretty_Compact_Is : aliased constant S := "/NO_SEPARATE_IS "          &
5775
                                                 "--no-separate-is";
5776
   --        /NO_SEPARATE_IS
5777
   --
5778
   --   Do not place the IS keyword on a separate line in a subprogram body in
5779
   --   case if the specification occupies more then one line.
5780
 
5781
   S_Pretty_Sep_Label : aliased constant S := "/SEPARATE_LABEL "           &
5782
                                                    "--separate-label";
5783
   --        /SEPARATE_LABEL
5784
   --
5785
   --   Place statement label(s) and the statement itself on separate lines.
5786
 
5787
   S_Pretty_Sep_Loop_Then : aliased constant S := "/SEPARATE_LOOP_THEN "   &
5788
                                                    "--separate-loop-then";
5789
   --        /SEPARATE_LOOP_THEN
5790
   --
5791
   --   Place the THEN keyword in IF statement and the LOOP keyword in for-
5792
   --   and while-loops on a separate line.
5793
 
5794
   S_Pretty_N_Sep_Loop_Then : aliased constant S := "/NO_SEPARATE_LOOP_THEN " &
5795
                                                    "--no-separate-loop-then";
5796
   --        /NO_SEPARATE_LOOP_THEN
5797
   --
5798
   --   Do not place the THEN keyword in IF statement and the LOOP keyword in
5799
   --   for- and while-loops on a separate line.
5800
 
5801
   S_Pretty_Use_On_New_Line : aliased constant S := "/USE_ON_NEW_LINE "    &
5802
                                                      "--use-on-new-line";
5803
   --        /USE_ON_NEW_LINE
5804
   --
5805
   --   Start any USE clause that is a part of a context clause from a
5806
   --   separate line.
5807
 
5808
   S_Pretty_Stnm_On_Nw_Line : aliased constant S := "/STMT_NAME_ON_NEW_LINE " &
5809
                                                      "--separate-stmt-name";
5810
   --        /STMT_NAME_ON_NEW_LINE
5811
   --
5812
   --   For named block and loop statements use a separate line for the
5813
   --   statement name, but do not use an extra indentation level for the
5814
   --   statement itself.
5815
 
5816
   S_Pretty_Eol       : aliased constant S := "/END_OF_LINE="              &
5817
                                                "DOS "                     &
5818
                                                   "--eol=dos "            &
5819
                                                "UNIX "                    &
5820
                                                   "--eol=unix "           &
5821
                                                "CRLF "                    &
5822
                                                   "--eol=crlf "           &
5823
                                                "LF "                      &
5824
                                                   "--eol=lf";
5825
   --        /END_OF_LINE=[option]
5826
   --
5827
   --   Specifies the form of the line terminators in the produced source.
5828
   --   By default, the form of the line terminator depends on the platforms.
5829
   --   On Unix and VMS, it is a Line Feed (LF) character. On Windows (DOS),
5830
   --   It is a Carriage Return (CR) followed by a Line Feed.
5831
   --   The Options DOS and CRLF are equivalent. The options UNIX and LF are
5832
   --   also equivalent.
5833
 
5834
   S_Pretty_Ext       : aliased constant S := "/EXTERNAL_REFERENCE=" & '"' &
5835
                                            "-X" & '"';
5836
   --        /EXTERNAL_REFERENCE="name=val"
5837
   --
5838
   --   Specifies an external reference to the project manager. Useful only if
5839
   --   /PROJECT_FILE is used.
5840
   --
5841
   --   Example:
5842
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
5843
 
5844
   S_Pretty_Current   : aliased constant S := "/CURRENT_DIRECTORY "        &
5845
                                              "!-I-";
5846
   --        /CURRENT_DIRECTORY (D)
5847
   --
5848
   --   Look for source files in the current working directory.
5849
   --
5850
   --        /NOCURRENT_DIRECTORY
5851
   --   Do not look for source files in the current working directory.
5852
 
5853
   S_Pretty_Dico      : aliased constant S := "/DICTIONARY=*"              &
5854
                                              "-D*";
5855
   --        /DICTIONARY=(file_name, ...)
5856
   --
5857
   --   Use each specified file as a dictionary file that defines the casing
5858
   --   for a set of specified names, thereby overriding the effect on these
5859
   --   names by any explicit or implicit /NAME_CASING qualifier.
5860
   --
5861
   --   GNAT PRETTY implicitly uses a default dictionary file to define the
5862
   --   casing for the Ada predefined names and the names declared in the GNAT
5863
   --   libraries.
5864
   --
5865
   --   The structure of a dictionary file, and details on the conventions
5866
   --   used in the default dictionary file, are defined in the GNAT User's
5867
   --   Guide.
5868
 
5869
   S_Pretty_Encoding  : aliased constant S := "/RESULT_ENCODING="          &
5870
                                              "BRACKETS "                  &
5871
                                                 "-Wb "                    &
5872
                                              "HEX "                       &
5873
                                                 "-Wh "                    &
5874
                                              "UPPER "                     &
5875
                                                 "-Wu "                    &
5876
                                              "SHIFT_JIS "                 &
5877
                                                 "-Ws "                    &
5878
                                              "EUC "                       &
5879
                                                 "-We "                    &
5880
                                              "UTF8 "                      &
5881
                                                 "-W8";
5882
   --        /RESULT_ENCODING[=encoding-type]
5883
   --
5884
   --   Specify the wide character encoding method used when writing the
5885
   --   reformatted code in the result file. 'encoding-type' is one of the
5886
   --   following:
5887
   --
5888
   --      BRACKETS (D)      Brackets encoding.
5889
   --
5890
   --      HEX               Hex ESC encoding.
5891
   --
5892
   --      UPPER             Upper half encoding.
5893
   --
5894
   --      SHIFT_JIS         Shift-JIS encoding.
5895
   --
5896
   --      EUC               EUC Encoding.
5897
   --
5898
   --      UTF8              UTF-8 encoding.
5899
   --
5900
   --   See 'HELP GNAT COMPILE /WIDE_CHARACTER_ENCODING' for an explanation
5901
   --   about the different character encoding methods.
5902
 
5903
   S_Pretty_Files     : aliased constant S := "/FILES=@"                   &
5904
                                                 "-files=@";
5905
   --      /FILES=filename
5906
   --
5907
   --   Take as arguments the files that are listed in the specified
5908
   --   text file.
5909
 
5910
   S_Pretty_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "      &
5911
                                             "-eL";
5912
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
5913
   --        /FOLLOW_LINKS_FOR_FILES
5914
   --
5915
   --    Follow links when parsing project files
5916
 
5917
   S_Pretty_Forced    : aliased constant S := "/FORCED_OUTPUT=@"           &
5918
                                                 "-of@";
5919
   --        /FORCED_OUTPUT=file
5920
   --
5921
   --   Write the output into the specified file, overriding any possibly
5922
   --   existing file.
5923
 
5924
   S_Pretty_Formfeed  : aliased constant S := "/FORM_FEED_AFTER_PRAGMA_PAGE " &
5925
                                              "-ff";
5926
   --        /FORM_FEED_AFTER_PRAGMA_PAGE
5927
   --
5928
   --   When there is a pragma Page in the source, insert a Form Feed
5929
   --   character immediately after the semicolon that follows the pragma
5930
   --   Page.
5931
 
5932
   S_Pretty_Indent    : aliased constant S := "/INDENTATION_LEVEL=#"       &
5933
                                                "-i#";
5934
   --        /INDENTATION_LEVEL=nnn
5935
   --
5936
   --   Specify the number of spaces to add for each indentation level.
5937
   --   nnn must be between 1 and 9. The default is 3.
5938
 
5939
   S_Pretty_Keyword   : aliased constant S := "/KEYWORD_CASING="           &
5940
                                              "LOWER_CASE "                &
5941
                                                 "-kL "                    &
5942
                                              "UPPER_CASE "                &
5943
                                                 "-kU";
5944
   --        /KEYWORD_CASING[=keyword-option]
5945
   --
5946
   --   Specify the case of Ada keywords. The default is keywords in lower
5947
   --   case.
5948
   --
5949
   --   keyword-option may be one of the following:
5950
   --
5951
   --      LOWER_CASE (D)
5952
   --      UPPER_CASE
5953
 
5954
   S_Pretty_Maxlen    : aliased constant S := "/LINE_LENGTH_MAX=#"         &
5955
                                                 "-M#";
5956
   --        /LINE_LENGTH_MAX=nnn
5957
   --
5958
   --   Set the maximum line length, nnn from 32 ..256. The default is 79.
5959
 
5960
   S_Pretty_Maxind    : aliased constant S := "/MAX_INDENT=#"              &
5961
                                                 "-T#";
5962
   --        /MAX_INDENT=nnn
5963
   --
5964
   --   Do not use an additional indentation level for case alternatives
5965
   --   and variants if their number is nnn or more. The default is 10.
5966
   --   If nnn is zero, an additional indentation level is used for any
5967
   --   number of case alternatives and variants.
5968
 
5969
   S_Pretty_Mess      : aliased constant S := "/MESSAGES_PROJECT_FILE="    &
5970
                                            "DEFAULT "                     &
5971
                                               "-vP0 "                     &
5972
                                            "MEDIUM "                      &
5973
                                               "-vP1 "                     &
5974
                                            "HIGH "                        &
5975
                                               "-vP2";
5976
   --        /MESSAGES_PROJECT_FILE[=messages-option]
5977
   --
5978
   --   Specifies the "verbosity" of the parsing of project files.
5979
   --   messages-option may be one of the following:
5980
   --
5981
   --      DEFAULT (D)  No messages are output if there is no error or warning.
5982
   --
5983
   --      MEDIUM       A small number of messages are output.
5984
   --
5985
   --      HIGH         A great number of messages are output, most of them not
5986
   --                   being useful for the user.
5987
 
5988
   S_Pretty_Names     : aliased constant S := "/NAME_CASING="              &
5989
                                              "AS_DECLARED "               &
5990
                                                 "-nD "                    &
5991
                                              "LOWER_CASE "                &
5992
                                                 "-nL "                    &
5993
                                              "UPPER_CASE "                &
5994
                                                 "-nU "                    &
5995
                                              "MIXED_CASE "                &
5996
                                                 "-nM";
5997
   --        /NAME_CASING[=name-option]
5998
   --
5999
   --   Specify the casing of names.
6000
   --   'name-option' may be one of:
6001
   --
6002
   --      AS_DECLARED (D)   Name casing for defining occurrences are as they
6003
   --                        appear in the source file.
6004
   --
6005
   --      LOWER_CASE        Names are in lower case.
6006
   --
6007
   --      UPPER_CASE        Names are in upper case.
6008
   --
6009
   --      MIXED_CASE        Names are in mixed case.
6010
 
6011
   S_Pretty_Replace_No_Backup : aliased constant S := "/REPLACE_NO_BACKUP " &
6012
                                                 "-rnb";
6013
   --        /REPLACE_NO_BACKUP
6014
   --
6015
   --   Replace the argument source with the pretty-printed source without
6016
   --   creating any backup copy of the argument source.
6017
 
6018
   S_Pretty_No_Labels : aliased constant S := "/NO_MISSED_LABELS "         &
6019
                                                 "-e";
6020
   --        /NO_MISSED_LABELS
6021
   --
6022
   --   Do not insert missing end/exit labels. The end label is the name of
6023
   --   a construct that may optionally appear at the end of the construct.
6024
   --   This includes the names of packages and subprograms.
6025
   --   Similarly, the exit label is the name of a loop that may appear as the
6026
   --   argument of an exit statement within the loop. By default, GNAT PRETTY
6027
   --   inserts these end/exit labels when they are absent in the original
6028
   --   source. This qualifier /NO_MISSED_LABELS suppresses this insertion,
6029
   --   so that the formatted source reflects the original.
6030
 
6031
   S_Pretty_Notabs    : aliased constant S := "/NOTABS "                   &
6032
                                                 "-notabs";
6033
   --        /NOTABS
6034
   --
6035
   --   Replace all tabulations in comments with spaces.
6036
 
6037
   S_Pretty_Output    : aliased constant S := "/OUTPUT=@"                  &
6038
                                              "-o@";
6039
   --        /OUTPUT=file
6040
   --
6041
   --   Write the output to the specified file. If the file already exists,
6042
   --   an error is reported.
6043
 
6044
   S_Pretty_Override  : aliased constant S := "/OVERRIDING_REPLACE "       &
6045
                                                 "-rf";
6046
   --        /NOOVERRIDING_REPLACE (D)
6047
   --        /OVERRIDING_REPLACE
6048
   --
6049
   --   Replace the argument source with the pretty-printed source and copy the
6050
   --   argument source into filename.NPP, overriding any existing file if
6051
   --   needed.
6052
 
6053
   S_Pretty_Pragma    : aliased constant S := "/PRAGMA_CASING="            &
6054
                                              "MIXED_CASE "                &
6055
                                                 "-pM "                    &
6056
                                              "LOWER_CASE "                &
6057
                                                 "-pL "                    &
6058
                                              "UPPER_CASE "                &
6059
                                                 "-pU";
6060
   --        /PRAGMA_CASING[=pragma-option]
6061
   --
6062
   --   Set the case of pragma identifiers. The default is Mixed case.
6063
   --   pragma-option may be one of the following:
6064
   --
6065
   --      MIXED_CASE (D)
6066
   --      LOWER_CASE
6067
   --      UPPER_CASE
6068
 
6069
   S_Pretty_Project   : aliased constant S := "/PROJECT_FILE=<"            &
6070
                                                "-P>";
6071
   --        /PROJECT_FILE=filename
6072
   --
6073
   --   Specifies the main project file to be used. The project files rooted
6074
   --   at the main project file will be parsed before any other processing to
6075
   --   set the building environment.
6076
 
6077
   S_Pretty_Replace   : aliased constant S := "/REPLACE "                  &
6078
                                                 "-r";
6079
   --        /NOREPLACE (D)
6080
   --        /REPLACE
6081
   --
6082
   --   Replace the argument source with the pretty-printed source and copy the
6083
   --   argument source into filename.NPP. If filename.NPP already exists,
6084
   --   report an error and exit.
6085
 
6086
   S_Pretty_RTS       : aliased constant S := "/RUNTIME_SYSTEM=|"          &
6087
                                               "--RTS=|";
6088
   --        /RUNTIME_SYSTEM=xxx
6089
   --
6090
   --    Compile against an alternate runtime system named xxx or RTS-xxx.
6091
 
6092
   S_Pretty_Search    : aliased constant S := "/SEARCH=*"                  &
6093
                                              "-I*";
6094
   --        /SEARCH=(directory[,...])
6095
   --
6096
   --    When looking for source files also look in directories specified.
6097
 
6098
   S_Pretty_Specific  : aliased constant S := "/SPECIFIC_CASING "          &
6099
                                              "-D-";
6100
   --        /SPECIFIC_CASING
6101
   --
6102
   --   Do not use the default dictionary file; instead, use the casing
6103
   --   defined by a qualifier /NAME_CASING and/or any explicit dictionary
6104
   --   file specified by a qualifier /DICTIONARY.
6105
 
6106
   S_Pretty_Standard  : aliased constant S := "/STANDARD_OUTPUT "          &
6107
                                              "-pipe";
6108
   --        /NOSTANDARD_OUTPUT (D)
6109
   --        /STANDARD_OUTPUT
6110
   --
6111
   --   Redirect the output to the standard output.
6112
 
6113
   S_Pretty_Subdirs : aliased constant S := "/SUBDIRS=<"                   &
6114
                                               "--subdirs=>";
6115
   --        /SUBDIRS=dir
6116
   --
6117
   --   The actual directories (object, exec, library, ...) are subdirectories
6118
   --   of the directory specified in the project file. If the subdirectory
6119
   --   does not exist, it is created automatically.
6120
 
6121
   S_Pretty_Verbose   : aliased constant S := "/VERBOSE "                  &
6122
                                              "-v";
6123
   --        /NOVERBOSE (D)
6124
   --        /VERBOSE
6125
   --
6126
   --   Verbose mode; GNAT PRETTY generates version information and then a
6127
   --   trace of the actions it takes to produce or obtain the ASIS tree.
6128
 
6129
   S_Pretty_Warnings  : aliased constant S := "/WARNINGS "                 &
6130
                                              "-w";
6131
   --        /NOWARNINGS (D)
6132
   --        /WARNINGS
6133
   --
6134
   --   Issue a warning to the standard error stream if it is not possible
6135
   --   to provide the required layout in the result source.
6136
   --   By default such warnings are not activated.
6137
 
6138
   Pretty_Switches : aliased constant Switches :=
6139
                       (S_Pretty_Add              'Access,
6140
                        S_Pretty_Align            'Access,
6141
                        S_Pretty_All_Prjs         'Access,
6142
                        S_Pretty_Attrib           'Access,
6143
                        S_Pretty_Comments         'Access,
6144
                        S_Pretty_Compact_Is       'Access,
6145
                        S_Pretty_Config           'Access,
6146
                        S_Pretty_Constr           'Access,
6147
                        S_Pretty_Comind           'Access,
6148
                        S_Pretty_Current          'Access,
6149
                        S_Pretty_Dico             'Access,
6150
                        S_Pretty_Eol              'Access,
6151
                        S_Pretty_Ext              'Access,
6152
                        S_Pretty_Encoding         'Access,
6153
                        S_Pretty_Files            'Access,
6154
                        S_Pretty_Follow           'Access,
6155
                        S_Pretty_Forced           'Access,
6156
                        S_Pretty_Formfeed         'Access,
6157
                        S_Pretty_Indent           'Access,
6158
                        S_Pretty_Keyword          'Access,
6159
                        S_Pretty_Maxlen           'Access,
6160
                        S_Pretty_Maxind           'Access,
6161
                        S_Pretty_Mess             'Access,
6162
                        S_Pretty_Names            'Access,
6163
                        S_Pretty_No_Labels        'Access,
6164
                        S_Pretty_Notabs           'Access,
6165
                        S_Pretty_Output           'Access,
6166
                        S_Pretty_Override         'Access,
6167
                        S_Pretty_Pragma           'Access,
6168
                        S_Pretty_Replace          'Access,
6169
                        S_Pretty_Replace_No_Backup'Access,
6170
                        S_Pretty_Project          'Access,
6171
                        S_Pretty_RTS              'Access,
6172
                        S_Pretty_Search           'Access,
6173
                        S_Pretty_Sep_Label        'Access,
6174
                        S_Pretty_Sep_Loop_Then    'Access,
6175
                        S_Pretty_N_Sep_Loop_Then  'Access,
6176
                        S_Pretty_Subdirs          'Access,
6177
                        S_Pretty_Use_On_New_Line  'Access,
6178
                        S_Pretty_Stnm_On_Nw_Line  'Access,
6179
                        S_Pretty_Specific         'Access,
6180
                        S_Pretty_Standard         'Access,
6181
                        S_Pretty_Verbose          'Access,
6182
                        S_Pretty_Warnings         'Access);
6183
 
6184
   ------------------------------
6185
   -- Switches for GNAT SHARED --
6186
   ------------------------------
6187
 
6188
   S_Shared_Debug   : aliased constant S := "/DEBUG="                      &
6189
                                            "ALL "                         &
6190
                                               "-g3 "                      &
6191
                                            "NONE "                        &
6192
                                               "-g0 "                      &
6193
                                            "TRACEBACK "                   &
6194
                                               "-g1 "                      &
6195
                                            "NOTRACEBACK "                 &
6196
                                               "-g0";
6197
   --        /DEBUG[=debug-option]
6198
   --        /NODEBUG
6199
   --
6200
   --   Specifies the amount of debugging information included. 'debug-option'
6201
   --   is one of the following:
6202
   --
6203
   --        ALL (D)      Include full debugging information.
6204
   --
6205
   --        NONE         Provide no debugging information. Same as /NODEBUG.
6206
   --
6207
   --        TRACEBACK    Provide sufficient debug information for a traceback.
6208
   --
6209
   --        NOTRACEBACK  Same as NONE.
6210
 
6211
   S_Shared_Image  : aliased constant S := "/IMAGE=@"                      &
6212
                                            "-o@";
6213
   --        /IMAGE=image-name
6214
   --
6215
   --   'image-name' specifies the name for the generated shared library.
6216
 
6217
   S_Shared_Ident   : aliased constant S := "/IDENTIFICATION=" & '"'       &
6218
                                            "--for-linker=IDENT="          &
6219
                                            '"';
6220
   --        /IDENTIFICATION="<string>"
6221
   --
6222
   --   "<string>" specifies the string to be stored in the image file ident-
6223
   --   ification field in the image header. It overrides any pragma Ident
6224
   --   specified string.
6225
 
6226
   S_Shared_Nofiles : aliased constant S := "/NOSTART_FILES "              &
6227
                                            "-nostartfiles";
6228
   --        /NOSTART_FILES
6229
   --
6230
   --   Link in default image initialization and startup functions.
6231
 
6232
   S_Shared_Noinhib : aliased constant S := "/NOINHIBIT-IMAGE "            &
6233
                                            "--for-linker=--noinhibit-exec";
6234
   --        /NOINHIBIT-IMAGE
6235
   --
6236
   --   Delete image if there are errors or warnings.
6237
 
6238
   S_Shared_Verb    : aliased constant S := "/VERBOSE "                    &
6239
                                            "-v";
6240
   --        /NOVERBOSE (D)
6241
   --        /VERBOSE
6242
   --
6243
   --   Causes additional information to be output, including a full list of
6244
   --   the included object files. This switch option is most useful when you
6245
   --   want to see what set of object files are being used in the link step.
6246
 
6247
   S_Shared_ZZZZZ   : aliased constant S := "/<other> "                    &
6248
                                            "--for-linker=";
6249
   --        /<other>
6250
   --
6251
   --   Any other switch transmitted to the underlying linker.
6252
 
6253
   Shared_Switches : aliased constant Switches :=
6254
                       (S_Shared_Debug   'Access,
6255
                        S_Shared_Image   'Access,
6256
                        S_Shared_Ident   'Access,
6257
                        S_Shared_Nofiles 'Access,
6258
                        S_Shared_Noinhib 'Access,
6259
                        S_Shared_Verb    'Access,
6260
                        S_Shared_ZZZZZ   'Access);
6261
 
6262
   -----------------------------
6263
   -- Switches for GNAT STACK --
6264
   -----------------------------
6265
 
6266
   S_Stack_Add        : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"  &
6267
                                                "-aP*";
6268
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
6269
   --
6270
   --   Add directories to the project search path.
6271
 
6272
   S_Stack_All        : aliased constant S := "/ALL_SUBPROGRAMS "          &
6273
                                                "-a";
6274
   --        /NOALL_SUBPROGRAMS (D)
6275
   --        /ALL_SUBPROGRAMS
6276
   --
6277
   --   Consider all subprograms as entry points.
6278
 
6279
   S_Stack_All_Cycles : aliased constant S := "/ALL_CYCLES "               &
6280
                                                "-ca";
6281
   --        /NOALL_CYCLES (D)
6282
   --        /ALL_CYCLES
6283
   --
6284
   --   Extract all possible cycles in the call graph.
6285
 
6286
   S_Stack_All_Prjs   : aliased constant S := "/ALL_PROJECTS "             &
6287
                                                "-U";
6288
   --        /NOALL_PROJECTS (D)
6289
   --        /ALL_PROJECTS
6290
   --
6291
   --   When GNAT STACK is used with a Project File and no source is
6292
   --   specified, the underlying tool gnatstack is called for all the
6293
   --   units of all the Project Files in the project tree.
6294
 
6295
   S_Stack_Debug      : aliased constant S := "/DEBUG "                    &
6296
                                                "-g";
6297
   --        /NODEBUG (D)
6298
   --        /DEBUG
6299
   --
6300
   --   Generate internal debug information.
6301
 
6302
   S_Stack_Directory  : aliased constant S := "/DIRECTORY=*"               &
6303
                                                "-aO*";
6304
   --        /DIRECTORY=(direc[,...])
6305
   --
6306
   --   When looking for .ci files look also in directories specified.
6307
 
6308
   S_Stack_Entries    : aliased constant S := "/ENTRIES=*"                 &
6309
                                                "-e*";
6310
   --
6311
   --        /ENTRY=(entry_point[,...])
6312
   --
6313
   --   Name of symbol to be used as entry point for the analysis.
6314
 
6315
   S_Stack_Files      : aliased constant S := "/FILES=@"                   &
6316
                                                "-files=@";
6317
   --      /FILES=filename
6318
   --
6319
   --   Take as arguments the files that are listed in the specified
6320
   --   text file.
6321
 
6322
   S_Stack_Follow : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
6323
                                            "-eL";
6324
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
6325
   --        /FOLLOW_LINKS_FOR_FILES
6326
   --
6327
   --    Follow links when parsing project files
6328
 
6329
   S_Stack_Help       : aliased constant S := "/HELP "                     &
6330
                                                "-h";
6331
   --        /NOHELP (D)
6332
   --        /HELP
6333
   --
6334
   --   Output a message explaining the usage of gnatstack.
6335
 
6336
   S_Stack_List       : aliased constant S := "/LIST=#"                    &
6337
                                                "-l#";
6338
   --        /LIST=nnn
6339
   --
6340
   --   Print the nnn subprograms requiring the biggest local stack usage. By
6341
   --   default none will be displayed.
6342
 
6343
   S_Stack_Order      : aliased constant S := "/ORDER="                    &
6344
                                              "STACK "                     &
6345
                                                 "-os "                    &
6346
                                              "ALPHABETICAL "              &
6347
                                                 "-oa";
6348
   --        /ORDER[=order-option]
6349
   --
6350
   --   Specifies the order for displaying the different call graphs.
6351
   --   order-option may be one of the following:
6352
   --
6353
   --      STACK (D)    Select stack usage order
6354
   --
6355
   --      ALPHABETICAL Select alphabetical order
6356
 
6357
   S_Stack_Path       : aliased constant S := "/PATH "                     &
6358
                                                "-p";
6359
   --        /NOPATH (D)
6360
   --        /PATH
6361
   --
6362
   --   Print all the subprograms that make up the worst-case path for every
6363
   --   entry point.
6364
 
6365
   S_Stack_Project    : aliased constant S := "/PROJECT_FILE=<"            &
6366
                                                "-P>";
6367
   --        /PROJECT_FILE=filename
6368
   --
6369
   --   Specifies the main project file to be used. The project files rooted
6370
   --   at the main project file will be parsed before the invocation of
6371
   --   gnatstack.
6372
 
6373
   S_Stack_Output     : aliased constant S := "/OUTPUT=@"                  &
6374
                                                "-f@";
6375
   --        /OUTPUT=filename
6376
   --
6377
   --   Name of the file containing the generated graph (VCG format).
6378
 
6379
   S_Stack_Regexp     : aliased constant S := "/EXPRESSION=|"              &
6380
                                                "-r|";
6381
   --
6382
   --        /EXPRESSION=regular-expression
6383
   --
6384
   --   Any symbol matching the regular expression will be considered as a
6385
   --   potential entry point for the analysis.
6386
 
6387
   S_Stack_Subdirs : aliased constant S := "/SUBDIRS=<"                    &
6388
                                              "--subdirs=>";
6389
   --        /SUBDIRS=dir
6390
   --
6391
   --   The actual directories (object, exec, library, ...) are subdirectories
6392
   --   of the directory specified in the project file. If the subdirectory
6393
   --   does not exist, it is created automatically.
6394
 
6395
   S_Stack_Unbounded  : aliased constant S := "/UNBOUNDED=#"               &
6396
                                                "-d#";
6397
   --        /UNBOUNDED=nnn
6398
   --
6399
   --   Default stack size to be used for unbounded (dynamic) frames.
6400
 
6401
   S_Stack_Unknown    : aliased constant S := "/UNKNOWN=#"                 &
6402
                                                "-u#";
6403
   --        /UNKNOWN=nnn
6404
   --
6405
   --   Default stack size to be used for unknown (external) calls.
6406
 
6407
   S_Stack_Verbose    : aliased constant S := "/VERBOSE "                  &
6408
                                                "-v";
6409
   --        /NOVERBOSE (D)
6410
   --        /VERBOSE
6411
   --
6412
   --   Specifies the amount of information to be displayed about the
6413
   --   different subprograms. In verbose mode the full location of the
6414
   --   subprogram will be part of the output, as well as detailed information
6415
   --   about inaccurate data.
6416
 
6417
   S_Stack_Warnings   : aliased constant S := "/WARNINGS="                 &
6418
                                              "ALL "                       &
6419
                                                 "-Wa "                    &
6420
                                              "CYCLES "                    &
6421
                                                 "-Wc "                    &
6422
                                              "UNBOUNDED "                 &
6423
                                                 "-Wu "                    &
6424
                                              "EXTERNAL "                  &
6425
                                                 "-We "                    &
6426
                                              "INDIRECT "                  &
6427
                                                 "-Wi";
6428
   --        /WARNINGS[=(keyword[,...])]
6429
   --
6430
   --    The following keywords are supported:
6431
   --
6432
   --        ALL        Turn on all optional warnings
6433
   --
6434
   --        CYCLES     Turn on warnings for cycles
6435
   --
6436
   --        UNBOUNDED  Turn on warnings for unbounded frames
6437
   --
6438
   --        EXTERNAL   Turn on warnings for external calls
6439
   --
6440
   --        INDIRECT   Turn on warnings for indirect calls
6441
 
6442
   Stack_Switches : aliased constant Switches :=
6443
                      (S_Stack_Add        'Access,
6444
                       S_Stack_All        'Access,
6445
                       S_Stack_All_Cycles 'Access,
6446
                       S_Stack_All_Prjs   'Access,
6447
                       S_Stack_Debug      'Access,
6448
                       S_Stack_Directory  'Access,
6449
                       S_Stack_Entries    'Access,
6450
                       S_Stack_Files      'Access,
6451
                       S_Stack_Follow     'Access,
6452
                       S_Stack_Help       'Access,
6453
                       S_Stack_List       'Access,
6454
                       S_Stack_Order      'Access,
6455
                       S_Stack_Path       'Access,
6456
                       S_Stack_Project    'Access,
6457
                       S_Stack_Output     'Access,
6458
                       S_Stack_Regexp     'Access,
6459
                       S_Stack_Subdirs    'Access,
6460
                       S_Stack_Unbounded  'Access,
6461
                       S_Stack_Unknown    'Access,
6462
                       S_Stack_Verbose    'Access,
6463
                       S_Stack_Warnings   'Access);
6464
 
6465
   ----------------------------
6466
   -- Switches for GNAT STUB --
6467
   ----------------------------
6468
 
6469
   S_Stub_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
6470
                                            "-aP*";
6471
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
6472
   --
6473
   --   Add directories to the project search path.
6474
 
6475
   S_Stub_Config  : aliased constant S := "/CONFIGURATION_PRAGMAS_FILE=<"  &
6476
                                            "-gnatec>";
6477
   --        /CONFIGURATION_PRAGMAS_FILE=filespec
6478
   --
6479
   --   Specifies a configuration pragmas file that must be taken into account
6480
   --   when compiling.
6481
 
6482
   S_Stub_Current : aliased constant S := "/CURRENT_DIRECTORY "            &
6483
                                            "!-I-";
6484
   --        /CURRENT_DIRECTORY (D)
6485
   --        /NOCURRENT_DIRECTORY
6486
   --
6487
   --   Look for source, library or object files in the default directory.
6488
 
6489
   S_Stub_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
6490
                                            "-X" & '"';
6491
   --        /EXTERNAL_REFERENCE="name=val"
6492
   --
6493
   --   Specifies an external reference to the project manager. Useful only if
6494
   --   /PROJECT_FILE is used.
6495
   --
6496
   --   Example:
6497
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
6498
 
6499
   S_Stub_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
6500
                                            "-eL";
6501
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
6502
   --        /FOLLOW_LINKS_FOR_FILES
6503
   --
6504
   --    Follow links when parsing project files
6505
 
6506
   S_Stub_Full    : aliased constant S := "/FULL "                         &
6507
                                            "-f";
6508
   --        /NOFULL (D)
6509
   --        /FULL
6510
   --
6511
   --   If the destination directory already contains a file with the name of
6512
   --   the body file for the argument file spec, replace it with the generated
6513
   --   body stub. If /FULL is not used and there is already a body file, this
6514
   --   existing body file is not replaced.
6515
 
6516
   S_Stub_Header  : aliased constant S := "/HEADER="                       &
6517
                                            "GENERAL "                     &
6518
                                               "-hg "                      &
6519
                                            "SPEC "                        &
6520
                                               "-hs";
6521
   --        /HEADER[=header-option]
6522
   --
6523
   --   Specifies the form of the comment header above the generated body stub.
6524
   --   If no /HEADER qualifier is specified, there is no comment header.
6525
   --   header-option is one of the following:
6526
   --
6527
   --
6528
   --      GENERAL (D)  Put a sample comment header into the body stub.
6529
   --
6530
   --      SPEC         Put the comment header (i.e., all the comments
6531
   --                   preceding the compilation unit) from the source of the
6532
   --                   library unit declaration into the body stub.
6533
 
6534
   S_Stub_Header_File : aliased constant S := "/FROM_HEADER_FILE=<" &
6535
                                                "--header-file=>";
6536
 
6537
   --        /FROM_HEADER_FILE==filename
6538
   --
6539
   --   Use the content of the file as the comment header for a generated body
6540
   --   stub.
6541
 
6542
   S_Stub_Indent  : aliased constant S := "/INDENTATION=#"                 &
6543
                                            "-i#";
6544
   --        /INDENTATION=nnn
6545
   --
6546
   --   (nnn is a non-negative integer). Set the indentation level in the
6547
   --   generated body stub to nnn. nnn=0 means "no indentation".
6548
   --   Default indentation is 3.
6549
 
6550
   S_Stub_Keep    : aliased constant S := "/KEEP "                         &
6551
                                            "-k";
6552
   --        /NOKEEP (D)
6553
   --        /KEEP
6554
   --
6555
   --   Do not delete the tree file (i.e., the snapshot of the compiler
6556
   --   internal structures used by gnatstub) after creating the body stub.
6557
 
6558
   S_Stub_Length  : aliased constant S := "/LINE_LENGTH=#"                 &
6559
                                            "-l#";
6560
   --        /LINE_LENGTH=nnn
6561
   --
6562
   --   (n is a non-negative integer). Set the maximum line length in the body
6563
   --   stub to nnn. Default is 78.
6564
 
6565
   S_Stub_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
6566
                                            "DEFAULT "                     &
6567
                                               "-vP0 "                     &
6568
                                            "MEDIUM "                      &
6569
                                               "-vP1 "                     &
6570
                                            "HIGH "                        &
6571
                                               "-vP2";
6572
   --        /MESSAGES_PROJECT_FILE[=messages-option]
6573
   --
6574
   --   Specifies the "verbosity" of the parsing of project files.
6575
   --   messages-option may be one of the following:
6576
   --
6577
   --      DEFAULT (D)  No messages are output if there is no error or warning.
6578
   --
6579
   --      MEDIUM       A small number of messages are output.
6580
   --
6581
   --      HIGH         A great number of messages are output, most of them not
6582
   --                   being useful for the user.
6583
 
6584
   S_Stub_No_Exc  : aliased constant S := "/NO_EXCEPTION "                 &
6585
                                          "--no-exception";
6586
   --        /NONO_EXCEPTION (D)
6587
   --        /NO_EXCEPTION
6588
   --
6589
   --  Avoid raising PROGRAM_ERROR in the generated program unit stubs.
6590
 
6591
   S_Stub_No_Head : aliased constant S := "/NO_LOCAL_HEADER "             &
6592
                                          "--no-local-header";
6593
   --        /NONO_LOCAL_HEADER (D)
6594
   --        /NO_LOCAL_HEADER
6595
   --
6596
   --  Do not put local comment header before body stub for local program unit.
6597
 
6598
   S_Stub_Output  : aliased constant S := "/OUTPUT=@"                      &
6599
                                            "-o@";
6600
   --        /OUTPUT=filespec
6601
   --
6602
   --   Body file name. This should be set if the argument file name does not
6603
   --   follow the GNAT file naming conventions. If this switch is omitted,
6604
   --   the default name for the body will be obtained from the argument file
6605
   --   name according to the GNAT file naming conventions.
6606
 
6607
   S_Stub_Project : aliased constant S := "/PROJECT_FILE=<"                &
6608
                                            "-P>";
6609
   --        /PROJECT_FILE=filename
6610
   --
6611
   --   Specifies the main project file to be used. The project files rooted
6612
   --   at the main project file will be parsed before any other processing.
6613
   --   The source and object directories to be searched will be communicated
6614
   --   to gnatstub through logical names ADA_PRJ_INCLUDE_FILE and
6615
   --   ADA_PRJ_OBJECTS_FILE.
6616
 
6617
   S_Stub_Quiet   : aliased constant S := "/QUIET "                        &
6618
                                            "-q";
6619
   --        /NOQUIET (D)
6620
   --        /QUIET
6621
   --
6622
   --   Quiet mode: do not generate a confirmation when a body is successfully
6623
   --   created, and do not generate a message when a body is not required for
6624
   --   an argument unit.
6625
 
6626
   S_Stub_Search  : aliased constant S := "/SEARCH=*"                      &
6627
                                            "-I*";
6628
   --        /SEARCH=(directory[,...])
6629
   --
6630
   --    When looking for source files also look in directories specified.
6631
 
6632
   S_Stub_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
6633
                                             "--subdirs=>";
6634
   --        /SUBDIRS=dir
6635
   --
6636
   --   The actual directories (object, exec, library, ...) are subdirectories
6637
   --   of the directory specified in the project file. If the subdirectory
6638
   --   does not exist, it is created automatically.
6639
 
6640
   S_Stub_Tree    : aliased constant S := "/TREE_FILE="                    &
6641
                                            "OVERWRITE "                   &
6642
                                               "-t "                       &
6643
                                            "SAVE "                        &
6644
                                               "-k "                       &
6645
                                            "REUSE "                       &
6646
                                               "-r";
6647
   --        /TREE_FILE[=treefile-option]
6648
   --
6649
   --   Specify what to do with the tree file.
6650
   --   treefile-option is one of the following:
6651
   --
6652
   --      OVERWRITE (D)  Overwrite the existing tree file. If the current
6653
   --                     directory already contains the file which, according
6654
   --                     to the GNAT file naming rules should be considered
6655
   --                     as a tree file for the argument source file, gnatstub
6656
   --                     will refuse to create the tree file needed to create
6657
   --                     a sample body unless this option is chosen.
6658
   --
6659
   --      SAVE           Do not remove the tree file (i.e., the snapshot
6660
   --                     of the compiler internal structures used by gnatstub)
6661
   --                     after creating the body stub.
6662
   --
6663
   --      REUSE          Reuse the tree file (if it exists) instead of
6664
   --                     creating it.
6665
   --                     Instead of creating the tree file for the library
6666
   --                     unit declaration, gnatstub tries to find it in the
6667
   --                     current directory and use it for creating a body.
6668
   --                     If the tree file is not found, no body is created.
6669
   --                     This option also implies `SAVE', whether or not the
6670
   --                     latter is set explicitly.
6671
 
6672
   S_Stub_Verbose : aliased constant S := "/VERBOSE "                      &
6673
                                            "-v";
6674
   --        /NOVERBOSE (D)
6675
   --        /VERBOSE
6676
   --
6677
   --   Verbose mode: generate version information.
6678
 
6679
   Stub_Switches : aliased constant Switches :=
6680
                     (S_Stub_Add        'Access,
6681
                      S_Stub_Config     'Access,
6682
                      S_Stub_Current    'Access,
6683
                      S_Stub_Ext        'Access,
6684
                      S_Stub_Follow     'Access,
6685
                      S_Stub_Full       'Access,
6686
                      S_Stub_Header     'Access,
6687
                      S_Stub_Header_File'Access,
6688
                      S_Stub_Indent     'Access,
6689
                      S_Stub_Keep       'Access,
6690
                      S_Stub_Length     'Access,
6691
                      S_Stub_Mess       'Access,
6692
                      S_Stub_Output     'Access,
6693
                      S_Stub_Project    'Access,
6694
                      S_Stub_No_Exc     'Access,
6695
                      S_Stub_No_Head    'Access,
6696
                      S_Stub_Quiet      'Access,
6697
                      S_Stub_Search     'Access,
6698
                      S_Stub_Subdirs    'Access,
6699
                      S_Stub_Tree       'Access,
6700
                      S_Stub_Verbose    'Access);
6701
 
6702
   ----------------------------
6703
   -- Switches for GNAT SYNC --
6704
   ----------------------------
6705
 
6706
   S_Sync_Add    : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"       &
6707
                                            "-aP*";
6708
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
6709
   --
6710
   --   Add directories to the project search path.
6711
 
6712
   S_Sync_All    : aliased constant S := "/ALL "                           &
6713
                                            "-a";
6714
   --        /NOALL (D)
6715
   --        /ALL
6716
   --
6717
   --   Also check the components of the GNAT run time and process the needed
6718
   --  components of the GNAT RTL when building and analyzing the global
6719
   --  structure for checking the global rules.
6720
 
6721
   S_Sync_Allproj : aliased constant S := "/ALL_PROJECTS "                 &
6722
                                            "-U";
6723
   --        /NOALL_PROJECTS (D)
6724
   --        /ALL_PROJECTS
6725
   --
6726
   --   When GNAT SYNC is used with a Project File and no source is
6727
   --   specified, the underlying tool gnatsync is called for all the
6728
   --   sources of all the Project Files in the project tree.
6729
 
6730
   S_Sync_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
6731
                                             "-X" & '"';
6732
   --       /EXTERNAL_REFERENCE="name=val"
6733
   --
6734
   --   Specifies an external reference to the project manager. Useful only if
6735
   --   /PROJECT_FILE is used.
6736
   --
6737
   --   Example:
6738
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
6739
 
6740
   S_Sync_Files  : aliased constant S := "/FILES=@"                        &
6741
                                             "-files=@";
6742
   --      /FILES=filename
6743
   --
6744
   --   Take as arguments the files that are listed in the specified
6745
   --   text file.
6746
 
6747
   S_Sync_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
6748
                                            "-eL";
6749
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
6750
   --        /FOLLOW_LINKS_FOR_FILES
6751
   --
6752
   --    Follow links when parsing project files
6753
 
6754
   S_Sync_Main    : aliased constant S := "/MAIN_SUBPROGRAM=@"             &
6755
                                            "-main=@";
6756
   --        /MAIN_SUBPROGRAM=filename
6757
   --
6758
   --   Specify the name of the file containing the main subprogram
6759
 
6760
   S_Sync_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
6761
                                             "DEFAULT "                    &
6762
                                                "-vP0 "                    &
6763
                                             "MEDIUM "                     &
6764
                                                "-vP1 "                    &
6765
                                             "HIGH "                       &
6766
                                                "-vP2";
6767
   --        /MESSAGES_PROJECT_FILE[=messages-option]
6768
   --
6769
   --   Specifies the "verbosity" of the parsing of project files.
6770
   --   messages-option may be one of the following:
6771
   --
6772
   --      DEFAULT (D)  No messages are output if there is no error or warning.
6773
   --
6774
   --      MEDIUM       A small number of messages are output.
6775
   --
6776
   --      HIGH         A great number of messages are output, most of them not
6777
   --                   being useful for the user.
6778
 
6779
   S_Sync_Project : aliased constant S := "/PROJECT_FILE=<"                &
6780
                                             "-P>";
6781
   --        /PROJECT_FILE=filename
6782
   --
6783
   --   Specifies the main project file to be used. The project files rooted
6784
   --   at the main project file will be parsed before the invocation of the
6785
   --   gnatcheck. The source directories to be searched will be communicated
6786
   --   to gnatcheck through logical name ADA_PRJ_INCLUDE_FILE.
6787
 
6788
   S_Sync_Quiet  : aliased constant S := "/QUIET "                         &
6789
                                            "-q";
6790
   --        /NOQUIET (D)
6791
   --        /QUIET
6792
   --
6793
   --   Work quietly, only output warnings and errors.
6794
 
6795
   S_Sync_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
6796
                                             "--subdirs=>";
6797
   --        /SUBDIRS=dir
6798
   --
6799
   --   The actual directories (object, exec, library, ...) are subdirectories
6800
   --   of the directory specified in the project file. If the subdirectory
6801
   --   does not exist, it is created automatically.
6802
 
6803
   S_Sync_Verb   : aliased constant S := "/VERBOSE "                       &
6804
                                            "-v";
6805
   --        /NOVERBOSE (D)
6806
   --        /VERBOSE
6807
   --
6808
   --   The version number and copyright notice are output, as well as exact
6809
   --   copies of the gnat1 commands spawned to obtain the chop control
6810
   --   information.
6811
 
6812
   S_Sync_Exec   : aliased constant S := "/EXECUTION_TIME "                &
6813
                                            "-t";
6814
   --        /NOEXECUTION_TIME (D)
6815
   --        /EXECUTION_TIME
6816
   --
6817
   --   Output the execution time
6818
 
6819
   S_Sync_Details : aliased constant S := "/DETAILS="                      &
6820
                                             "MEDIUM "                     &
6821
                                               "-om "                      &
6822
                                             "SHORT "                      &
6823
                                               "-os "                      &
6824
                                             "FULL "                       &
6825
                                               "-of";
6826
   --         /DETAILS[=options]
6827
   --
6828
   --   Specifies the details of the output.
6829
   --   Options may be one of the following:
6830
   --
6831
   --       MEDIUM (D)
6832
   --       SHORT
6833
   --       FULL
6834
 
6835
   S_Sync_Warnoff : aliased constant S := "/WARNINGS_OFF "                 &
6836
                                             "-wq";
6837
   --
6838
   --         /WARNINGS_OFF
6839
   --
6840
   --   Turn warnings off
6841
 
6842
   S_Sync_Output  : aliased constant S := "/OUTPUT_FILE=<"                 &
6843
                                             "-out_file=>";
6844
   --
6845
   --        /OUTPUT_FILE=filename
6846
   --
6847
   --   Redirect output to a text file
6848
 
6849
   Sync_Switches : aliased constant Switches :=
6850
                      (S_Sync_Add      'Access,
6851
                       S_Sync_All      'Access,
6852
                       S_Sync_Allproj  'Access,
6853
                       S_Sync_Ext      'Access,
6854
                       S_Sync_Follow   'Access,
6855
                       S_Sync_Files    'Access,
6856
                       S_Sync_Main     'Access,
6857
                       S_Sync_Mess     'Access,
6858
                       S_Sync_Project  'Access,
6859
                       S_Sync_Quiet    'Access,
6860
                       S_Sync_Subdirs  'Access,
6861
                       S_Sync_Verb     'Access,
6862
                       S_Sync_Exec     'Access,
6863
                       S_Sync_Details  'Access,
6864
                       S_Sync_Warnoff  'Access,
6865
                       S_Sync_Output   'Access);
6866
 
6867
   ----------------------------
6868
   -- Switches for GNAT XREF --
6869
   ----------------------------
6870
 
6871
   S_Xref_Add     : aliased constant S := "/ADD_PROJECT_SEARCH_DIR=*"      &
6872
                                            "-aP*";
6873
   --        /ADD_PROJECT_SEARCH_PATH=(directory[,...])
6874
   --
6875
   --   Add directories to the project search path.
6876
 
6877
   S_Xref_All     : aliased constant S := "/ALL_FILES "                    &
6878
                                            "-a";
6879
   --        /NOALL_FILES (D)
6880
   --        /ALL_FILES
6881
   --
6882
   --   If this switch is present, FIND and XREF will parse the read-only
6883
   --   files found in the library search path. Otherwise, these files will
6884
   --   be ignored. This option can be used to protect Gnat sources or your
6885
   --   own libraries from being parsed, thus making FIND and XREF much
6886
   --   faster, and their output much smaller.
6887
 
6888
   S_Xref_Deriv   : aliased constant S := "/DERIVED_TYPES "                &
6889
                                            "-d";
6890
   --        /NODERIVED_TYPES (D)
6891
   --        /DERIVED_TYPES
6892
   --
6893
   --   Output the parent type reference for each matching derived types.
6894
 
6895
   S_Xref_Ext     : aliased constant S := "/EXTERNAL_REFERENCE=" & '"'     &
6896
                                            "-X" & '"';
6897
   --        /EXTERNAL_REFERENCE="name=val"
6898
   --
6899
   --   Specifies an external reference to the project manager. Useful only if
6900
   --   /PROJECT_FILE is used.
6901
   --
6902
   --   Example:
6903
   --      /EXTERNAL_REFERENCE="DEBUG=TRUE"
6904
 
6905
   S_Xref_Follow  : aliased constant S := "/FOLLOW_LINKS_FOR_FILES "       &
6906
                                            "-eL";
6907
   --        /NOFOLLOW_LINKS_FOR_FILES (D)
6908
   --        /FOLLOW_LINKS_FOR_FILES
6909
   --
6910
   --    Follow links when parsing project files
6911
 
6912
   S_Xref_Full    : aliased constant S := "/FULL_PATHNAME "                &
6913
                                            "-f";
6914
   --        /NOFULL_PATHNAME (D)
6915
   --        /FULL_PATHNAME
6916
   --
6917
   --   If this switch is set, the output file names will be preceded by their
6918
   --   directory (if the file was found in the search path). If this switch
6919
   --   is not set, the directory will not be printed.
6920
 
6921
   S_Xref_Global  : aliased constant S := "/IGNORE_LOCALS "                &
6922
                                            "-g";
6923
   --        /NOIGNORE_LOCALS (D)
6924
   --        /IGNORE_LOCALS
6925
   --
6926
   --   If this switch is set, information is output only for library-level
6927
   --   entities, ignoring local entities. The use of this switch may
6928
   --   accelerate FIND and XREF.
6929
 
6930
   S_Xref_Mess    : aliased constant S := "/MESSAGES_PROJECT_FILE="        &
6931
                                            "DEFAULT "                     &
6932
                                               "-vP0 "                     &
6933
                                            "MEDIUM "                      &
6934
                                               "-vP1 "                     &
6935
                                            "HIGH "                        &
6936
                                               "-vP2";
6937
   --        /MESSAGES_PROJECT_FILE[=messages-option]
6938
   --
6939
   --   Specifies the "verbosity" of the parsing of project files.
6940
   --   messages-option may be one of the following:
6941
   --
6942
   --      DEFAULT (D)  No messages are output if there is no error or warning.
6943
   --
6944
   --      MEDIUM       A small number of messages are output.
6945
   --
6946
   --      HIGH         A great number of messages are output, most of them not
6947
   --                   being useful for the user.
6948
 
6949
   S_Xref_Nostinc : aliased constant S := "/NOSTD_INCLUDES "               &
6950
                                            "-nostdinc";
6951
   --        /NOSTD_INCLUDES
6952
   --
6953
   --   Do not look for sources in the system default directory.
6954
 
6955
   S_Xref_Nostlib : aliased constant S := "/NOSTD_LIBRARIES "              &
6956
                                            "-nostdlib";
6957
   --        /NOSTD_LIBRARIES
6958
   --
6959
   --   Do not look for library files in the system default directory.
6960
 
6961
   S_Xref_Object  : aliased constant S := "/OBJECT_SEARCH=*"               &
6962
                                            "-aO*";
6963
   --        /OBJECT_SEARCH=(directory,...)
6964
   --
6965
   --   When searching for library and object files, look in the specified
6966
   --   directories. The order in which library files are searched is the same
6967
   --   as for MAKE.
6968
 
6969
   S_Xref_Project : aliased constant S := "/PROJECT=@"                     &
6970
                                            "-p@";
6971
   --        /PROJECT=file
6972
   --
6973
   --   Specify a project file to use. By default, FIND and XREF will try to
6974
   --   locate a project file in the current directory.
6975
   --
6976
   --   If a project file is either specified or found by the tools, then the
6977
   --   content of the source directory and object directory lines are added
6978
   --   as if they had been specified respectively by /SOURCE_SEARCH and
6979
   --   /OBJECT_SEARCH.
6980
 
6981
   S_Xref_Prj     : aliased constant S := "/PROJECT_FILE=<"                &
6982
                                            "-P>";
6983
   --        /PROJECT_FILE=filename
6984
   --
6985
   --   Specifies the main project file to be used. The project files rooted
6986
   --   at the main project file will be parsed before doing any processing.
6987
   --   The source and object directories to be searched will be communicated
6988
   --   to gnatxref through logical names ADA_PRJ_INCLUDE_FILE and
6989
   --   ADA_PRJ_OBJECTS_FILE.
6990
 
6991
   S_Xref_Search  : aliased constant S := "/SEARCH=*"                      &
6992
                                            "-I*";
6993
   --        /SEARCH=(directory,...)
6994
   --
6995
   --   Equivalent to:
6996
   --           /OBJECT_SEARCH=(directory,...) /SOURCE_SEARCH=(directory,...)
6997
 
6998
   S_Xref_Source  : aliased constant S := "/SOURCE_SEARCH=*"               &
6999
                                            "-aI*";
7000
   --        /SOURCE_SEARCH=(directory,...)
7001
   --
7002
   --   When looking for source files also look in the specified directories.
7003
   --   The order in which source file search is undertaken is the same as for
7004
   --   MAKE.
7005
 
7006
   S_Xref_Subdirs : aliased constant S := "/SUBDIRS=<"                     &
7007
                                             "--subdirs=>";
7008
   --        /SUBDIRS=dir
7009
   --
7010
   --   The actual directories (object, exec, library, ...) are subdirectories
7011
   --   of the directory specified in the project file. If the subdirectory
7012
   --   does not exist, it is created automatically.
7013
 
7014
   S_Xref_Output  : aliased constant S := "/UNUSED "                       &
7015
                                            "-u";
7016
   --        /SOURCE_SEARCH=(directory,...)
7017
   --
7018
   --   When looking for source files also look in the specified directories.
7019
   --   The order in which source file search is undertaken is the same as for
7020
   --   MAKE.
7021
 
7022
   S_Xref_Tags    : aliased constant S := "/TAGS "                         &
7023
                                            "-v";
7024
   --        /NOTAGS (D)
7025
   --        /TAGS
7026
   --
7027
   --   Print a 'tags' file for vi.
7028
 
7029
   Xref_Switches : aliased constant Switches :=
7030
                     (S_Xref_Add     'Access,
7031
                      S_Xref_All     'Access,
7032
                      S_Xref_Deriv   'Access,
7033
                      S_Xref_Ext     'Access,
7034
                      S_Xref_Follow  'Access,
7035
                      S_Xref_Full    'Access,
7036
                      S_Xref_Global  'Access,
7037
                      S_Xref_Mess    'Access,
7038
                      S_Xref_Nostinc 'Access,
7039
                      S_Xref_Nostlib 'Access,
7040
                      S_Xref_Object  'Access,
7041
                      S_Xref_Project 'Access,
7042
                      S_Xref_Prj     'Access,
7043
                      S_Xref_Search  'Access,
7044
                      S_Xref_Source  'Access,
7045
                      S_Xref_Subdirs 'Access,
7046
                      S_Xref_Output  'Access,
7047
                      S_Xref_Tags    'Access);
7048
 
7049
end VMS_Data;

powered by: WebSVN 2.1.0

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