Appendix A
Alphabetical listing of command line options

The following is an alphabetical listing of all command line options, as generated by the compiler:

Free Pascal Compiler version 2.3.1 [2008/06/02] for x86_64  
Copyright (c) 1993-2008 by Florian Klaempfl  
/usr/local/lib/fpc/2.3.1/ppcx64 [options]  [options]  
Put + after a boolean switch option to enable it, - to disable it  
  -a     The compiler doesn't delete the generated assembler file  
      -al        List sourcecode lines in assembler file  
      -an        List node info in assembler file  
      -ap        Use pipes instead of creating temporary assembler files  
      -ar        List register allocation/release info in assembler file  
      -at        List temp allocation/release info in assembler file  
  -A  Output format:  
      -Adefault  Use default assembler  
      -Aas       Assemble using GNU AS  
  -b     Generate browser info  
      -bl        Generate local symbol info  
  -B     Build all modules  
  -C  Code generation options:  
      -Ca     Select ABI, see fpc -i for possible values  
      -Cb        Generate big-endian code  
      -Cc     Set default calling convention to   
      -CD        Create also dynamic library (not supported)  
      -Ce        Compilation with emulated floating point opcodes  
      -Cf     Select fpu instruction set to use, see fpc -i for possible values  
      -CF     Minimal floating point constant precision (default, 32, 64)  
      -Cg        Generate PIC code  
      -Ch      bytes heap (between 1023 and 67107840)  
      -Ci        IO-checking  
      -Cn        Omit linking stage  
      -Co        Check overflow of integer operations  
      -CO        Check for possible overflow of integer operations  
      -Cp     Select instruction set, see fpc -i for possible values  
      -CP=  packing settings  
         -CPPACKSET=  set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 and 8  
      -Cr        Range checking  
      -CR        Verify object method call validity  
      -Cs     Set stack size to   
      -Ct        Stack checking  
      -CX        Create also smartlinked library  
  -d  Defines the symbol   
  -D     Generate a DEF file  
      -Dd     Set description to   
      -Dv     Set DLL version to   
  -e  Set path to executable  
  -E     Same as -Cn  
  -fPIC  Same as -Cg  
  -F  Set file names and paths:  
      -Fa[,y] (for a program) load units  and [y] before uses is parsed  
      -Fc     Set input codepage to   
      -FC     Set RC compiler binary name to   
      -FD     Set the directory where to search for compiler utilities  
      -Fe     Redirect error output to   
      -Ff     Add  to framework path (Darwin only)  
      -FE     Set exe/unit output path to   
      -Fi     Add  to include path  
      -Fl     Add  to library path  
      -FL     Use  as dynamic linker  
      -Fm     Load unicode conversion table from .txt in the compiler dir  
      -Fo     Add  to object path  
      -Fr     Load error message file   
      -FR     Set resource (.res) linker to   
      -Fu     Add  to unit path  
      -FU     Set unit output path to , overrides -FE  
  -g     Generate debug information (default format for target)  
      -gc        Generate checks for pointers  
      -gh        Use heaptrace unit (for memory leak/corruption debugging)  
      -gl        Use line info unit (show more info with backtraces)  
      -go     Set debug information options  
         -godwarfsets Enable Dwarf set debug information (breaks gdb < 6.5)  
      -gp        Preserve case in stabs symbol names  
      -gs        Generate stabs debug information  
      -gt        Trash local variables (to detect uninitialized uses)  
      -gv        Generates programs traceable with valgrind  
      -gw        Generate dwarf-2 debug information (same as -gw2)  
      -gw2       Generate dwarf-2 debug information  
      -gw3       Generate dwarf-3 debug information  
  -i     Information  
      -iD        Return compiler date  
      -iV        Return short compiler version  
      -iW        Return full compiler version  
      -iSO       Return compiler OS  
      -iSP       Return compiler host processor  
      -iTO       Return target OS  
      -iTP       Return target processor  
  -I  Add  to include path  
  -k  Pass  to the linker  
  -l     Write logo  
  -M  Set language mode to   
      -Mfpc      Free Pascal dialect (default)  
      -Mobjfpc   FPC mode with Object Pascal support  
      -Mdelphi   Delphi 7 compatibility mode  
      -Mtp       TP/BP 7.0 compatibility mode  
      -Mmacpas   Macintosh Pascal dialects compatibility mode  
  -n     Do not read the default config files  
  -N  Node tree optimizations  
      -Nu        Unroll loops  
  -o  Change the name of the executable produced to   
  -O  Optimizations:  
      -O-        Disable optimizations  
      -O1        Level 1 optimizations (quick and debugger friendly)  
      -O2        Level 2 optimizations (-O1 + quick optimizations)  
      -O3        Level 3 optimizations (-O2 + slow optimizations)  
      -Oa= Set alignment  
      -Oo[NO] Enable or disable optimizations, see fpc -i for possible values  
      -Op     Set target cpu for optimizing, see fpc -i for possible values  
      -Os        Optimize for size rather than speed  
  -pg    Generate profile code for gprof (defines FPC_PROFILE)  
  -R  Assembler reading style:  
      -Rdefault  Use default assembler for target  
  -S  Syntax options:  
      -S2        Same as -Mobjfpc  
      -Sc        Support operators like C (*=,+=,/= and -=)  
      -Sa        Turn on assertions  
      -Sd        Same as -Mdelphi  
      -Se     Error options.  is a combination of the following:  
          : Compiler halts after the  errors (default is 1)  
         w : Compiler also halts after warnings  
         n : Compiler also halts after notes  
         h : Compiler also halts after hints  
      -Sg        Enable LABEL and GOTO (default in -Mtp and -Mdelphi)  
      -Sh        Use ansistrings by default instead of shortstrings  
      -Si        Turn on inlining of procedures/functions declared as "inline"  
      -Sk        Load fpcylix unit  
      -SI     Set interface style to   
         -SIcom     COM compatible interface (default)  
         -SIcorba   CORBA compatible interface  
      -Sm        Support macros like C (global)  
      -So        Same as -Mtp  
      -Ss        Constructor name must be init (destructor must be done)  
      -St        Allow static keyword in objects  
      -Sx        Enable exception keywords (default in Delphi/ObjFPC modes)  
  -s     Do not call assembler and linker  
      -sh        Generate script to link on host  
      -st        Generate script to link on target  
      -sr        Skip register allocation phase (use with -alr)  
  -T  Target operating system:  
      -Tlinux    Linux  
  -u  Undefines the symbol   
  -U     Unit options:  
      -Un        Do not check where the unit name matches the file name  
      -Ur        Generate release unit files (never automatically recompiled)  
      -Us        Compile a system unit  
  -v  Be verbose.  is a combination of the following letters:  
      e : Show errors (default)       0 : Show nothing (except errors)  
      w : Show warnings               u : Show unit info  
      n : Show notes                  t : Show tried/used files  
      h : Show hints                  c : Show conditionals  
      i : Show general info           d : Show debug info  
      l : Show linenumbers            r : Rhide/GCC compatibility mode  
      a : Show everything             x : Executable info (Win32 only)  
      b : Write file names messages with full path  
      v : Write fpcdebug.txt with     p : Write tree.log with parse tree  
          lots of debugging info  
  -X     Executable options:  
      -Xc        Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Linux)  
      -Xd        Do not use standard library search path (needed for cross compile)  
      -Xe        Use external linker  
      -Xg        Create debuginfo in a separate file and add a debuglink section to executable  
      -XD        Try to link units dynamically      (defines FPC_LINK_DYNAMIC)  
      -Xi        Use internal linker  
      -Xm        Generate link map  
      -XM     Set the name of the 'main' program routine (default is 'main')  
      -XP     Prepend the binutils names with the prefix   
      -Xr     Set library search path to  (needed for cross compile) (BeOS, Linux)  
      -XR     Prepend  to all linker search paths (BeOS, Darwin, FreeBSD, Linux, Mac OS, Solaris)  
      -Xs        Strip all symbols from executable  
      -XS        Try to link units statically (default, defines FPC_LINK_STATIC)  
      -Xt        Link with static libraries (-static is passed to linker)  
      -XX        Try to smartlink units             (defines FPC_LINK_SMART)  
 
  -?     Show this help  
  -h     Shows this help without waiting