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