Compiler options

[next] [prev] [prev-tail] [tail] [up]

#### 6.11.4 Compiler options

The menu ”Options—Compiler” allow the setting of options that affect the compilers behavior. When this menu item is chosen, a dialog pops up that displays several tabs.

There are six tabs:

Syntax
  Here options can be set that affect the various syntax aspects of the code. They correspond mostly to the -S option on the command line (section 5.1.5, page 119).
Code generation
  These options control the generated code; they are mostly concerned with the -C and -X command line options.
Verbose
  These set the verbosity of the compiler when compiling. The messages of the compiler are shown in the compiler messages window (can be called with F12).
Browser
  Options concerning the generated browser information. Browser information needs to be generated for the symbol browser to work.
Assembler
  Options concerning the reading of assembler blocks (-R on the command line) and the generated assembler (-A on the command line)
Processor
  Here the target processor can be selected.

On each tab page, there are two entry boxes: the first for Conditional defines and the second for additional compiler arguments. The symbols, and arguments, should be separated with semi-colons.

The syntax tab of the compiler options dialog is shown in figure (6.23).

Figure 6.23: The syntax options tab

In the syntax options dialog, the following options can be set:

Stop after first error
  when checked, the compiler stops after the first error. Normally the compiler continues compiling till a fatal error is reached. (-Se (see page 121) on the command line)
Allow label and goto
  Allow the use of label declarations and goto statements (-Sg (see page 122) on the command line).
Enable macros
  Allow the use of macros (-Sm (see page 123)).
Allow inline
  Allow the use of inlined functions (-Sc (see page 121) on the command line).
Include assertion code
  Include Assert statements in the code.
Load kylix compat. unit
  Load the Kylix compatibility unit.
Allow STATIC in objects
  Allow the Static modifier for object methods (-St (see page 123) on the command line)
C-like operators
  Allows the use of some extended operators such as +=, -= etc. (-Sc (see page 121) on the command line).
Compiler mode
  select the appropriate compiler mode:
  Free Pascal Dialect
    The default Free Pascal compiler mode (FPC).
  Object pascal extensions on
    Enables the use of classes and exceptions (-Sd (see page 121) on the command line).
  Turbo pascal compatible
    Try to be more Turbo Pascal compatible (-So (see page 123) on the command line).
  Delphi compatible
    Try to be more Delphi compatible (-Sd (see page 121) on the command line).
  Macintosh Pascal dialect
    Try to be Macintosh pascal compatible.

The code generation tab of the compiler options dialog is shown in figure (6.24).

Figure 6.24: The code generation options tab

In the code generation dialog, the following options can be set:

Run-time checks
  Controls what run-time checking code is generated. If such a check fails, a run-time error is generated. The following checking code can be generated:
  Range checking
    Checks the results of enumeration and subset type operations (-Cr (see page 111) command line option).
  Stack checking
    Checks whether the stack limit is not reached (-Cs (see page 111) command line option).
  I/O checking
    Checks the result of IO operations (-Ci (see page 111) command line option).
  Integer overflow checking
    Checks the result of integer operations (-Co (see page 111) command line option).
  Object method call checking
    Check the validity of the method pointer prior to calling it.
  Position independent code
    Generate PIC code.
  Create smartlinkable units
    Create smartlinkable units.
Optimizations
  What optimizations should be used when compiling:
  Generate faster code
    Corresponds to the -OG command line option.
  Generate smaller code
    Corresponds to the -Og command line option.

More information on these switches can be found in section 5.1.4, page 109.

The processor tab of the compiler options dialog is shown in figure (6.25).

In the processor dialog, the target processor can be set. The compiler can use different optimizations for different processors.

Figure 6.25: The processor selection tab

The verbose tab of the compiler options dialog is shown in figure (6.26).

Figure 6.26: The verbosity options tab

In this dialog, the following verbosity options can be set (on the command line: -v (see page 105)):

Warnings
  Generate warnings. Corresponds to -vw on the command line.
Notes
  Generate notes. Corresponds to -vn on the command line.
Hints
  Generate hints. Corresponds to -vh on the command line.
General info
  Generate general information. Corresponds to -vi on the command line.
User,tried info
  Generate information on used and tried files. Corresponds to -vut on the command line.
All
  Switch on full verbosity. Corresponds to -va on the command line.
Show all procedures if error
  If an error using overloaded procedure occurs, show all procedures. Corresponds to -vb on the command line.

The browser tab of the compiler options dialog is shown in figure (6.27).

Figure 6.27: The browser options tab

In this dialog, the browser options can be set:

No browser
  (default) No browser information is generated by the compiler.
Only global browser
  Browser information is generated for global symbols only, i.e. symbols defined not in a procedure or function (-b on the command line)
Local and global browser
  Browser information is generated for all symbols, i.e. also for symbols that are defined in procedures or functions (-bl on the command line)

Remark If no browser information is generated, the symbol browser of the IDE will not work.

The assembler tab of the compiler options dialog is shown in figure (6.28). The actual dialog may vary, as it depends on the target CPU the IDE was compiled for.

Figure 6.28: The assembler options tab

In this dialog, the assembler reader and writer options can be set:

Assembler reader
  This permits setting the style of the assembler blocks in the sources:
  AT&T assembler
    The assembler is written in AT&T style assembler (-Ratt on the command line).
  Intel style assembler
    The assembler is written in Intel style assembler blocks (-Rintel on the command line).

  remark that this option is global, but locally the assembler style can be changed with compiler directives.

Assembler info
  When writing assembler files, this option decides which extra information is written to the assembler file in comments:
  List source
    The source lines are written to the assembler files together with the generated assembler (-al on the command line).
  List register allocation
    The compiler’s internal register allocation/deallocation information is written to the assembler file (-ar on the command line).
  List temp allocation
    The temporary register allocation/deallocation is written to the assembler file. (-at on the command line).
  List node allocation
    The node allocation/deallocation is written to the assembler file. (-an on the command line).
  use pipe with assembler
    use a pipe on unix systems when feeding the assembler code to an external assembler.

  The latter three of these options are mainly useful for debugging the compiler itself, it should rarely be necessary to use these.

Assembler output
  This option tells the compiler what assembler output should be generated.
  Use default output
    This depends on the target.
  Use GNU as
    Assemble using gnu as (-Aas on the command line).
  Use NASM coff
    Produce NASM coff assembler (go32v2, -Anasmcoff on the command line)
  Use NASM elf
    Produce NASM elf assembler (linux, -Anasmelf on the command line).
  Use NASM obj
    Produce NASM obj assembler (-Anasmobj on the command line).
  Use MASM
    Produce MASM (Microsoft assembler) assembler (-Amasm on the command line).
  Use TASM
    Produce TASM (Turbo Assembler) assembler (-Atasm on the command line).
  Use coff
    Write binary coff files directly using the internal assembler (go32v2, -Acoff on the command line).
  Use pecoff
    Write binary pecoff files files directly using the internal writer. (Win32)

[next] [prev] [prev-tail] [front] [up]