Provided by: fp-compiler_2.4.0-2ubuntu4_i386 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)