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