Command line Options

Free Pascal Compiler version 3.1.1 (2017/02/07)

 Put + after a boolean switch option to enable it, - to disable it.


 
  @<x>   Read compiler options from <x> in addition to the default fpc.cfg

  -a     The compiler does not delete the generated assembler file
      -a5        Don't generate Big Obj COFF files for GNU Binutils older than 2.25 (Windows, NativeNT)
      -al         List sourcecode lines in assembler file
      -an        List node info in assembler file (-dEXTDEBUG compiler)
      -ao        Add an extra option to external assembler call (ignored for internal)
      -ar         List register allocation/release info in assembler file
      -at         List temp allocation/release info in assembler file

  -A<x>  Output format:
      -Adefault         Use default assembler
      -Aas                 Assemble using GNU AS
      -Amacho          Mach-O (Darwin, Intel 32 bit) using internal writer
      -Anasm            Assemble using Nasm
      -Anasmcoff      COFF (Go32v2) file using Nasm
      -Anasmelf        ELF32 (Linux) file using Nasm
      -Anasmwin32   Win32 object file using Nasm
      -Anasmwdosx  Win32/WDOSX object file using Nasm
      -Anasmdarwin macho32 object file using Nasm (experimental)
      -Awasm            Obj file using Wasm (Watcom)
      -Anasmobj       Obj file using Nasm
      -Amasm           Obj file using Masm (Microsoft)
      -Atasm             Obj file using Tasm (Borland)
      -Aelf                 ELF (Linux) using internal writer
      -Acoff               COFF (Go32v2) using internal writer
      -Apecoff           PE-COFF (Win32) using internal writer
      -Ayasm            Assemble using Yasm (experimental)
  -b     Generate browser info
      -bl        Generate local symbol info
  -B     Build all modules

  -C<x>  Code generation options:
      -C3              Turn on ieee error checking for constants
      -Ca<x>        Select ABI; see fpc -i or fpc -ia for possible values
      -Cb              Generate code for a big-endian variant of the target architecture
      -Cc<x>        Set default calling convention to <x>
      -CD              Create also dynamic library (not supported)
      -Ce              Compilation with emulated floating point opcodes
      -Cf<x>        Select fpu instruction set to use; see fpc -i or fpc -if for possible values
      -CF<x>       Minimal floating point constant precision (default, 32, 64)
      -Cg              Generate PIC code
      -Ch<n>      <n> 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<x>       Select instruction set; see fpc -i or fpc -ic for possible values
      -CP<x>=<y>  packing settings
         -CPPACKSET=<y>          <y> set allocation: 0, 1 or DEFAULT or NORMAL, 2, 4 and 8
         -CPPACKENUM=<y>       <y> enum packing: 0, 1, 2 and 4 or DEFAULT or NORMAL
         -CPPACKRECORD=<y>   <y> record packing: 0 or DEFAULT or NORMAL, 1, 2, 4, 8, 16 and 32
      -Cr            Range checking
      -CR           Verify object method call validity
      -Cs<n>     Set stack checking size to <n>
      -Ct            Stack checking (for testing only, see manual)
      -CT<x>     Target-specific code generation options
         -CTcld           Emit a CLD instruction before using the x86 string instructions
      -CX           Create also smartlinked library

  -d<x>  Defines the symbol <x>
  -D     Generate a DEF file
      -Dd<x>     Set description to <x>
      -Dv<x>     Set DLL version to <x>
  -e<x>  Set path to executable
  -E     Same as -Cn
  -fPIC  Same as -Cg

  -F<x>  Set file names and paths:
      -Fa<x>[,y]   (for a program) load units <x> and [y] before uses is parsed
      -Fc<x>         Set input codepage to <x>
      -FC<x>         Set RC compiler binary name to <x>
      -Fd                Disable the compiler's internal directory cache
      -FD<x>         Set the directory where to search for compiler utilities
      -Fe<x>         Redirect error output to <x>
      -Ff<x>          Add <x> to framework path (Darwin only)
      -FE<x>         Set exe/unit output path to <x>
      -Fi<x>          Add <x> to include path
      -Fl<x>          Add <x> to library path
      -FL<x>         Use <x> as dynamic linker
      -Fm<x>        Load unicode conversion table from <x>.txt in the compiler dir
      -FM<x>        Set the directory where to search for unicode binary files
      -Fo<x>         Add <x> to object path
      -Fr<x>         Load error message file <x>
      -FR<x>        Set resource (.res) linker to <x>
      -Fu<x>        Add <x> to unit path
      -FU<x>        Set unit output path to <x>, overrides -FE
      -FW<x>       Store generated whole-program optimization feedback in <x>
      -Fw<x>        Load previously stored whole-program optimization feedback from <x>

  -g     Generate debug information (default format for target)
      -gc             Generate checks for pointers (experimental, only available on some targets, might generate false positive)
      -gh             Use heaptrace unit (for memory leak/corruption debugging)
      -gl              Use line info unit (show more info with backtraces)
      -go<x>      Set debug information options
         -godwarfsets                           Enable DWARF 'set' type debug information (breaks gdb < 6.5)
         -gostabsabsincludes               Store absolute/full include file paths in Stabs
         -godwarfmethodclassprefix    Prefix method names in DWARF with class name
         -godwarfcpp                            Simulate C++ debug information in DWARF
      -gp           Preserve case in stabs symbol names
      -gs           Generate Stabs debug information
      -gt           Trash local variables (to detect uninitialized uses; multiple 't' changes the trashing value)
      -gv          Generates programs traceable with Valgrind
      -gw          Generate DWARFv2 debug information (same as -gw2)
      -gw2        Generate DWARFv2 debug information
      -gw3        Generate DWARFv3 debug information
      -gw4        Generate DWARFv4 debug information (experimental)

  -i     Information
      -iD         Return compiler date
      -iSO       Return compiler OS
      -iSP       Return compiler host processor
      -iTO       Return target OS
      -iTP       Return target processor
      -iV         Return short compiler version
      -iW        Return full compiler version
      -ia         Return list of supported ABI targets
      -ic         Return list of supported CPU instruction sets
      -if          Return list of supported FPU instruction sets
      -ii          Return list of supported inline assembler modes
      -io         Return list of supported optimizations
      -ir          Return list of recognized compiler and RTL features
      -it          Return list of supported targets
      -iu         Return list of supported microcontroller types
      -iw         Return list of supported whole program optimizations

  -I<x>   Add <x> to include path
  -k<x>   Pass <x> to the linker
  -l          Write logo

  -M<x>  Set language mode to <x>
      -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
      -Miso                         ISO 7185 mode
      -Mextendedpascal    ISO 10206 mode
      -Mdelphiunicode       Delphi 2009 and later compatibility mode

  -n         Do not read the default config files
  -o<x>  Change the name of the executable produced to <x>

  -O<x>  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)
      -O4                  Level 4 optimizations (-O3 + optimizations which might have unexpected side effects)
      -Oa<x>=<y>   Set alignment
      -Oo[NO]<x>    Enable or disable optimizations; see fpc -i or fpc -io for possible values
      -Op<x>           Set target cpu for optimizing; see fpc -i or fpc -ic for possible values
      -OW<x>          Generate whole-program optimization feedback for optimization <x>; see fpc -i or fpc -iw for possible values
      -Ow<x>           Perform whole-program optimization <x>; see fpc -i or fpc -iw for possible values
      -Os                  Optimize for size rather than speed

  -pg    Generate profile code for gprof (defines FPC_PROFILE)
  -R<x>  Assembler reading style:
      -Rdefault   Use default assembler for target
      -Ratt          Read AT&T style assembler
      -Rintel       Read Intel style assembler

  -S<x>  Syntax options:
      -S2           Same as -Mobjfpc
      -Sc           Support operators like C (*=,+=,/= and -=)
      -Sa           Turn on assertions
      -Sd           Same as -Mdelphi
      -Se<x>     Error options. <x> is a combination of the following:
         <n> :     Compiler halts after the <n> errors (default is 1)
         w :         Compiler also halts after warnings
         n :          Compiler also halts after notes
         h :          Compiler also halts after hints
      -Sf            Enable certain features in compiler and RTL; see fpc -i or fpc -ir for possible values)
      -Sg           Enable LABEL and GOTO (default in -Mtp and -Mdelphi)
      -Sh           Use reference counted strings (ansistring by default) instead of shortstrings
      -Si            Turn on inlining of procedures/functions declared as "inline"
      -Sk           Load fpcylix unit
      -SI<x>     Set interface style to <x>
         -SIcom      COM compatible interface (default)
         -SIcorba   CORBA compatible interface
      -Sm          Support macros like C (global)
      -So           Same as -Mtp
      -Sr           Transparent file names in ISO mode
      -Ss           Constructor name must be init (destructor must be done)
      -Sv           Support vector processing (use CPU vector extensions if available)
      -Sx           Enable exception keywords (default in Delphi/ObjFPC modes)
      -Sy           @<pointer> returns a typed pointer, same as $T+

  -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<x>  Target operating system:
      -Tandroid      Android
      -Taros           AROS
      -Tbeos           BeOS
      -Tdarwin        Darwin/Mac OS X
      -Tembedded  Embedded
      -Temx            OS/2 via EMX (including EMX/RSX extender)
      -Tfreebsd      FreeBSD
      -Tgo32v2       Version 2 of DJ Delorie DOS extender
      -Thaiku          Haiku
      -Tiphonesim  iPhoneSimulator from iOS SDK 3.2+ (older versions: -Tdarwin)
      -Tlinux           Linux
      -Tnativent      Native NT API (experimental)
      -Tnetbsd        NetBSD
      -Tnetware      Novell Netware Module (clib)
      -Tnetwlibc      Novell Netware Module (libc)
      -Topenbsd      OpenBSD
      -Tos2              OS/2 / eComStation
      -Tsunos          SunOS/Solaris
      -Tsymbian      Symbian OS
      -Tsolaris         Solaris
      -Twatcom       Watcom compatible DOS extender
      -Twdosx         WDOSX DOS extender
      -Twin32         Windows 32 Bit
      -Twince         Windows CE

  -u<x>  Undefines the symbol <x>
  -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<x>  Be verbose. <x> 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
      s : Show time stamps                q : Show message numbers
      a : Show everything                  x : Show info about invoked tools
      b : Write file names messages   p : Write tree.log with parse tree with full path      
                                                     v : Write fpcdebug.txt with lots of debugging info
      z : Write output to stderr       
      m<x>,<y> : Do not show messages numbered <x> and <y>

  -W<x>  Target-specific options (targets)
      -WA           Specify native type application (Windows)
      -Wb           Create a bundle instead of a library (Darwin)
      -WB           Create a relocatable image (Windows, Symbian)
      -WB<x>     Set image base to <x> (Windows, Symbian)
      -WC           Specify console type application (EMX, OS/2, Windows)
      -WD           Use DEFFILE to export functions of DLL or EXE (Windows)
      -We           Use external resources (Darwin)
      -WF           Specify full-screen type application (EMX, OS/2)
      -WG           Specify graphic type application (EMX, OS/2, Windows)
      -Wi            Use internal resources (Darwin)
      -WI           Turn on/off the usage of import sections (Windows)
      -WM<x>    Minimum Mac OS X deployment version: 10.4, 10.5.1, ... (Darwin)
      -WN           Do not generate relocation code, needed for debugging (Windows)
      -WP<x>     Minimum iOS deployment version: 3.0, 5.0.1, ... (iphonesim)
      -WR           Generate relocation code (Windows)
      -WX           Enable executable stack (Linux)

  -X     Executable options:
      -X9          Generate linkerscript for GNU Binutils ld older than version 2.19.1 (Linux)
      -Xc          Pass --shared/-dynamic to the linker (BeOS, Darwin, FreeBSD, Linux)
      -Xd          Do not search default library path (sometimes required for cross-compiling when not using -XR)
      -Xe          Use external linker
      -Xf           Substitute pthread library name for linking (BSD)
      -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
      -XLA         Define library substitutions for linking
      -XLO         Define order of library linking
      -XLD          Exclude default order of standard libraries
      -Xm          Generate link map
      -XM<x>     Set the name of the 'main' program routine (default is 'main')
      -Xn            Use target system native linker instead of GNU ld (Solaris, AIX)
      -XP<x>     Prepend the binutils names with the prefix <x>
      -Xr<x>     Set the linker's rlink-path to <x> (needed for cross compile, see the ld manual for more information) (BeOS, Linux)
      -XR<x>     Prepend <x> 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)
      -Xv           Generate table for Virtual Entry calls
      -XV           Use VLink as external linker       (default on Amiga, MorphOS)
      -XX           Try to smartlink units             (defines FPC_LINK_SMART)

  -?     Show this help
  -h     Shows this help without waiting