home | help
fpc.cfg(5)		     FPC configuration file		      fpc.cfg(5)

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 spec-
     ified 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.  Every-
     thing  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  configura-
     tion 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 encoun-
		   tered, 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 encoun-
		   tered, 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, af-
		   ter 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, oth-
	    erwise /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,  possi-
	    bly 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 use-
		   ful 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 cur-
		   rent file.

		   This can be useful if you want to have a particular	configu-
		   ration  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 al-
		   ways 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  (nor-
     mally the latest release  and the lastest developpers snapshot.

SEE ALSO
     fpc(1)

FPC				22 february 2002		      fpc.cfg(5)

home | help