Node:GPC Command Line Options, Next:GPC Options, Up:Invoking GPC

### GPC options besides those of GCC.

The following table lists the command line options GPC understands in addition to those understood by GCC.

`--classic-pascal-level-0`
  Reject conformant arrays and anything besides ISO 7185 Pascal.
`--standard-pascal-level-0`
  Synonym for `--classic-pascal-level-0`.
`--classic-pascal`
  Reject anything besides ISO 7185 Pascal.
`--standard-pascal`
  Synonym for `--classic-pascal`.
`--extended-pascal`
  Reject anything besides ISO 10206 Extended Pascal.
`--object-pascal`
  Reject anything besides (the implemented parts of) ANSI draft Object Pascal.
`--ucsd-pascal`
  Try to emulate UCSD Pascal.
`--borland-pascal`
  Try to emulate Borland Pascal, version 7.0.
`--delphi`
  Try to emulate Borland Pascal, version 7.0, with some Delphi extensions.
`--pascal-sc`
  Be strict about the implemented Pascal-SC extensions.
`--vax-pascal`
  Support (a few features of) VAX Pascal.
`--sun-pascal`
  Support (a few features of) Sun Pascal.
`--mac-pascal`
  Support (some features of) traditional Macintosh Pascal compilers.
`--gnu-pascal`
  Undo the effect of previous dialect options, allow all features again.
`--debug-tree`
  (For GPC developers.) Show the internal representation of a given tree node (name or address).
`--debug-gpi`
  (For GPC developers.) Show what is written to and read from GPI files (huge output!).
`--debug-automake`
  (For GPC developers.) Give additional information about the actions of automake.
`--debug-source`
  Output the source while it is processed.
`--no-debug-info`
  Inhibit `-g` options (temporary work-around, this option may disappear in the future).
`--progress-messages`
  Output source file names and line numbers while compiling.
`--no-progress-messages`
  Do not output source file names and line numbers while compiling (default).
`--progress-bar`
  Output number of processed lines while compiling.
`--progress-bar`
  Do not output number of processed lines while compiling (default).
`--autolink`
  Automatically link object files provided by units/modules or `{$L ...}` (default).
`--no-autolink`
  Do not automatically link object files provided by units/modules/`{$L ...}`.
`--automake`
  Automatically compile changed units/modules/`{$L ...}` files and link the object files provided.
`--no-automake`
  Same as `--no-autolink`.
`--autobuild`
  Automatically compile all units/modules/`{$L ...}` files and link the object files provided.
`--no-autobuild`
  Same as `--no-autolink`.
`--automake-gpc`
  Set the Pascal compiler invoked by automake.
`--automake-gcc`
  Set the C compiler invoked by automake.
`--automake-g++`
  Set the C++ compiler invoked by automake.
`--amtmpfile`
  (Internal switch used for automake).
`--maximum-field-alignment`
  Set the maximum field alignment in bits if `pack-struct` is in effect.
`--ignore-packed`
  Ignore `packed` in the source code (default in `--borland-pascal`).
`--no-ignore-packed`
  Do not ignore `packed` in the source code (default).
`--ignore-garbage-after-dot`
  Ignore anything after the terminating `.` (default in `--borland-pascal`).
`--no-ignore-garbage-after-dot`
  Complain about anything after the terminating `.` (default).
`--extended-syntax`
  Enable certain `dangerous` features such as ignoring function results, pointer arithmetic or using `CString`s as strings (same as `{$X+}`).
`--no-extended-syntax`
  Disable the dangerous features enabled by `--extended-syntax` (default; same as `{$X-}`).
`--short-circuit`
  Guarantee short-circuit Boolean evaluation (default; same as `{$B-}`).
`--no-short-circuit`
  Do not guarantee short-circuit Boolean evaluation (same as `{$B+}`).
`--mixed-comments`
  Allow comments like `{ ... *)` as required in ISO Pascal (default in ISO 7185/10206 Pascal mode).
`--no-mixed-comments`
  Ignore `{` and `}` within `(* ... *)` comments and vice versa (default).
`--nested-comments`
  Allow nested comments like `{ { } }` and `(* (* *) *)`.
`--no-nested-comments`
  Do not allow nested comments (default).
`--delphi-comments`
  Allow Delphi style `//` comments (default).
`--no-delphi-comments`
  Do not allow Delphi style `//` comments.
`--macros`
  Expand macros (default).
`--no-macros`
  Do not expand macros (default with `--ucsd-pascal`, `--borland-pascal` or `--delphi`).
`--ignore-function-results`
  Do not complain when a function is called like a procedure.
`--no-ignore-function-results`
  Complain when a function is called like a procedure (default).
`--truncate-strings`
  Truncate strings being assigned to other strings of too short capacity..
`--no-truncate-strings`
  Treat string assignments to other strings of too short capacity as errors..
`--exact-compare-strings`
  Do not blank-pad strings for comparisons.
`--no-exact-compare-strings`
  Blank-pad strings for comparisons.
`--double-quoted-strings`
  Allow strings enclosed in "\"..
`--no-double-quoted-strings`
  Do not allow strings enclosed in "\"..
`--longjmp-all-nonlocal-labels`
  Use `longjmp` for all nonlocal labels.
`--no-longjmp-all-nonlocal-labels`
  Use `longjmp` only for nonlocal labels in the main program (default).
`--io-checking`
  Do automatic run-time checks after I/O operations (same as `{$I+}`).
`--no-io-checking`
  Do not check I/O operations automatically (same as `{$I-}`).
`--read-base-specifier`
  In read statements, allow input base specifier `n#` (default).
`--no-read-base-specifier`
  In read statements, do not allow input base specifier `n#` (default in ISO 7185 Pascal).
`--read-hex`
  In read statements, allow hexadecimal input with `$` (default).
`--no-read-hex`
  In read statements, do not allow hexadecimal input with `$` (default in ISO 7185 Pascal).
`--read-white-space`
  In read statements, require whitespace after numbers.
`--no-read-white-space`
  In read statements, do not require whitespace after numbers (default).
`--write-clip-strings`
  In write statements, truncate strings exceeding their field width (`Write (SomeLongString : 3)`).
`--no-write-clip-strings`
  Do not truncate strings exceeding their field width.
`--write-real-blank`
  Output a blank in front of positive reals in exponential form (default).
`--no-write-real-blank`
  Do not output a blank in front of positive reals in exponential form.
`--write-capital-exponent`
  Write real exponents with a capital `E`.
`--no-write-capital-exponent`
  Write real exponents with a lowercase `e`.
`--transparent-file-names`
  Derive external file names from variable names.
`--no-transparent-file-names`
  Do not derive external file names from variable names (default).
`--field-widths`
  Comma-separated list of default field widths for Integer, Real, Boolean, LongInt, LongReal.
`--no-field-widths`
  Reset the default field widths.
`--pedantic`
  Reject everything not allowed in some dialect, e.g. redefinition of its keywords.
`--no-pedantic`
  Don't give pedantic warnings.
`--stack-checking`
  Enable stack checking (same as `{$S+}`).
`--no-stack-checking`
  Disable stack checking (same as `{$S-}`).
`--typed-address`
  Make the result of the address operator typed (same as `{$T+}`, default).
`--no-typed-address`
  Make the result of the address operator an untyped pointer (same as `{$T-}`).
`--enable-keyword`
  Enable a keyword, independently of dialect defaults.
`--disable-keyword`
  Disable a keyword, independently of dialect defaults.
`--assert`
  Enable assertion checking (default).
`--no-assert`
  Disable assertion checking.
`--setlimit`
  Define the range for `set of Integer` etc..
`--gpc-main`
  External name for the program's entry point (default: `main`).
`--interface-only`
  Compile only the interface part of a unit/module and exit (creates `.gpi` file, no `.o` file.
`--implementation-only`
  Do not produce a GPI file; only compile the implementation part.
`--executable-file-name`
  Name for the output file, if specified; otherwise derive from main source file name.
`--unit-path`
  Directories where to look for unit/module sources.
`--no-unit-path`
  Forget about directories where to look for unit/module sources.
`--object-path`
  Directories where to look for additional object (and source) files.
`--no-object-path`
  Forget about directories where to look for additional object (and source) files.
`--executable-path`
  Path where to create the executable file.
`--no-executable-path`
  Create the executable file in the directory where the main source is (default).
`--unit-destination-path`
  Path where to create object and GPI files of Pascal units.
`--no-unit-destination-path`
  Create object and GPI files of Pascal units in the current directory (default).
`--object-destination-path`
  Path where to create additional object files (e.g. of C files, not Pascal units).
`--no-object-destination-path`
  Create additional object files (e.g. of C files, not Pascal units) in the current directory (default).
`--no-default-paths`
  Do not add a default path to the unit and object path.
`--gpi-destination-path`
  (Internal switch used for automake).
`--uses`
  Add an implicit `uses` clause.
`--init-modules`
  Initialize the named modules in addition to those imported regularly; kind of a kludge.
`--cidefine`
  Define a case-insensitive macro.
`--csdefine`
  Define a case-sensitive macro.
`--big-endian`
  Tell GPC that the system is big-endian (for those targets where it can vary).
`--little-endian`
  Tell GPC that the system is little-endian (for those targets where it can vary).
`--print-needed-options`
  Print the needed options.
`-Wwarnings`
  Enable warnings (same as `{$W+}`).
`-Wno-warnings`
  Disable all warnings (same as `{$W-}`).
`-Widentifier-case`
  Warn about an identifier written with varying case.
`-Wno-identifier-case`
  Do not warn about an identifier written with varying case (default).
`-Widentifier-case-local`
  Warn about an identifier written with varying case within one program/module/unit.
`-Wno-identifier-case-local`
  Same as `-Wno-identifier-case`.
`-Winterface-file-name`
  Warn when a unit/module interface differs from the file name.
`-Wno-interface-file-name`
  Do not warn when a unit/module interface differs from the file name (default).
`-Wimplicit-abstract`
  Warn when an object type not declared `abstract` contains an abstract method (default).
`-Wno-implicit-abstract`
  Do not warn when an object type not `declared` abstract contains an abstract method.
`-Winherited-abstract`
  Warn when an abstract object type inherits from a non-abstract one (default).
`-Wno-inherited-abstract`
  Do not warn when an abstract object type inherits from a non-abstract one.
`-Wimplicit-io`
  Warn when `Input` or `Output` are used implicitly.
`-Wno-implicit-io`
  Do not warn when `Input` or `Output` are used implicitly (default).
`-Wfloat-equal`
  Warn about `=` and `<>` comparisons of real numbers.
`-Wno-float-equal`
  Do not warn about `=` and `<>` comparisons of real numbers.
`-Wtyped-const`
  Warn about misuse of typed constants as initialized variables (default).
`-Wno-typed-const`
  Do not warn about misuse of typed constants as initialized variables.
`-Wnear-far`
  Warn about use of useless `near` or `far` directives (default).
`-Wno-near-far`
  Do not warn about use of useless `near` or `far` directives.
`-Wunderscore`
  Warn about double/leading/trailing underscores in identifiers.
`-Wno-underscore`
  Do not warn about double/leading/trailing underscores in identifiers.
`-Wsemicolon`
  Warn about a semicolon after @samp{then}, @samp{else} or @samp{do} (default).
`-Wno-semicolon`
  Do not warn about a semicolon after @samp{then}, @samp{else} or @samp{do}.
`-Wlocal-external`
  Warn about local `external` declarations.
`-Wno-local-external`
  Do not warn about local `external` declarations.
`-Wmixed-comments`
  Warn about mixed comments like `{ ... *)`.
`-Wno-mixed-comments`
  Do not warn about mixed comments.
`-Wnested-comments`
  Warn about nested comments like `{ { } }`.
`-Wno-nested-comments`
  Do not warn about nested comments.