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).
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).
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.
The verbose tab of the compiler options dialog is shown in figure (6.26).
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).
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.
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)