Provided by: fp-compiler-3.0.4_3.0.4+dfsg-18ubuntu2_amd64 bug

NAME

       fpc.cfg  -  Free  Pascal  Compiler (FPC) configuration file, name derived from Free Pascal
       Compiler.

DESCRIPTION

       This is the main configuration file of the Free Pascal Compiler (FPC)

       All commandline options of the compiler (described in fpc(1) ) can be specified in fpc.cfg

       When the configuration file is found, it is read, and the lines it  contains  are  treated
       like  you  typed  them  on  the  command  line  see  fpc(1)  with  some  extra  condtional
       possibilities.

SYNTAX

       You can specify comments in the configuration file with the # sign.  Everything from the #
       on will be ignored, unless it is one of the keywords (see below).

       The compiler looks for the fpc.cfg file in the following places :

            - Under Linux and unix
                 - The current directory.
                 - Home directory, looks for .fpc.cfg
                 - The directory specified in the environment
                      variable PPC_CONFIG_PATH, and if it's not
                      set under compilerdir/../etc.
                 - If it is not yet found: in /etc.

            - Under all other OSes:
                 - The current directory.
                 - The directory specified in the environment
                      variable  PPC_CONFIG_PATH.
                 - The directory where the compiler binary is.

       When  the  compiler has finished reading the configuration file, it continues to treat the
       command line options.

       One of the command-line options  allows  you  to  specify  a  second  configuration  file:
       Specifying  @foo on the command line will use file foo instead of fpc.cfg and read further
       options from there. When the compiler has finished reading  this  file,  it  continues  to
       process the command line.

       The  configuration  file  allows  some kind of preprocessing. It understands the following
       directives, which you should place on the first column of a line :

            #IFDEF
            #IFNDEF
            #ELSE
            #ENDIF
            #DEFINE
            #UNDEF
            #WRITE
            #INCLUDE
            #SECTION
       They work the same way as their $...  directive counterparts in Pascal:

       #IFDEF

              Syntax #IFDEF name

                     Lines following #IFDEF are skipped read if the keyword "name"  following  it
                     is not defined.

                     They  are  read  until  the  keywords #ELSE or #ENDIF are encountered, after
                     which normal processing is resumed.

              Example
                     #IFDEF VER0_99_12
                     -Fu/usr/lib/fpc/0.99.12/rtl
                     #ENDIF

              In the above example, /usr/lib/fpc/0.99.12/rtl will be added to the path if  you're
              compiling with version 0.99.12 of the compiler.

       #IFNDEF

              Syntax #IFNDEF name

                     Lines  following  #IFDEF are skipped read if the keyword "name" following it
                     is defined.

                     They are read until the keywords #ELSE  or  #ENDIF  are  encountered,  after
                     which normal processing is resumed.

              Example
                     #IFNDEF VER0_99_12
                     -Fu/usr/lib/fpc/0.99.13/rtl
                     #ENDIF

              In  the above example, /usr/lib/fpc/0.99.13/rtl will be added to the path if you're
              NOT compiling with version 0.99.12 of the compiler.

       #ELSE

              Syntax #ELSE

                     #ELSE  can  be  specified  after  a  #IFDEF  or  #IFNDEF  directive  as   an
                     alternative.  Lines following #ELSE are skipped read if the preceding #IFDEF
                     #IFNDEF was accepted.

                     They are skipped until the keyword #ENDIF is encountered, after which normal
                     processing is resumed.

              Example

                     #IFDEF VER0_99_12
                     -Fu/usr/lib/fpc/0.99.12/rtl
                     #ELSE
                     -Fu/usr/lib/fpc/0.99.13/rtl
                     #ENDIF

              In  the above example, /usr/lib/fpc/0.99.12/rtl will be added to the path if you're
              compiling with version 0.99.12 of the compiler, otherwise  /usr/lib/fpc/0.99.13/rtl
              will be added to the path.

       #ENDIF

              Syntax #ENDIF

              #ENDIF marks the end of a block that started with #IF(N)DEF, possibly with an #ELSE
              between it.

       #DEFINE

              Syntax #DEFINE name

              #DEFINE defines a new keyword. This has the same effect as a "-dname"  command-line
              option.

       #UNDEF

              Syntax #UNDEF name

                     #UNDEF  un-defines  a  keyword if it existed.  This has the same effect as a
                     "-uname" command-line option.

       #WRITE

              Syntax #WRITE Message Text

                     #WRITE writes "Message Text" to the screen.  This can be useful  to  display
                     warnings if certain options are set.

              Example
                     #IFDEF DEBUG
                     #WRITE Setting debugging ON...
                     -g
                     #ENDIF

              if "DEBUG is defined, this will produce a line

              Setting debugging ON...

              and will then switch on debugging information in the compiler.

       #INCLUDE

              Syntax #INCLUDE filename

                     #INCLUDE  instructs  the  compiler to read the contents of "filename" before
                     continuing to process options in the current file.

                     This can be useful if you want to have a particular configuration file for a
                     project  (or,  under  Unix  like  systems  (such  as  Linux),  in  your home
                     directory), but  still want to have the global options that  are  set  in  a
                     global configuration file.

              Example
                     #IFDEF LINUX
                       #INCLUDE /etc/fpc.cfg
                     #ELSE
                       #IFDEF GO32V2
                         #INCLUDE c:\pp\bin\fpc.cfg
                       #ENDIF
                     #ENDIF

              This  will  include /etc/fpc.cfg if you're on a unix like machine (like linux), and
              will include c:\pp\bin\fpc.cfg on a dos machine.

       #SECTION

              Syntax #SECTION name

                     The #SECTION directive acts as a #IFDEF directive, only it  doesn't  require
                     an  #ENDIF  directive.  the  special  name  COMMON always exists, i.e. lines
                     following #SECTION COMMON are always read.

Example

       A standard block often used in (the Linux version of) fpc.cfg is

       -vwhin
       #IFDEF VER0_99_12
        #IFDEF FPC_LINK_STATIC
         -Fu/usr/lib/fpc/0.99.12/rtl/static
         -Fu/usr/lib/fpc/0.99.12/units/static
        #ENDIF
        #IFDEF FPC_LINK_DYNAMIC
         -Fu/usr/lib/fpc/0.99.12/rtl/shared
         -Fu/usr/lib/fpc/0.99.12/units/shared
        #ENDIF
        -Fu/usr/lib/fpc/0.99.12/rtl
        -Fu/usr/lib/fpc/0.99.12/units
       #ENDIF

       The block is copied into the fpc.cfg file for each version you use  (normally  the  latest
       release  and the lastest developpers snapshot.

SEE ALSO

       fpc(1)