Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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
       specified in fpc.cfg

       When the	configuration file is found, it	is read, and the lines it con-
       tains  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 key-
       words (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  con-
       tinues to treat the command line	options.

       One of the command-line options allows you to specify a second configu-
       ration  file: Specifying	@foo on	the command line will use file foo in-
       stead 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	under-
       stands 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  en-
		     countered,	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  com-
	      piler.

       #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  en-
		     countered,	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	direc-
		     tive  as  an  alternative.	  Lines	 following  #ELSE  are
		     skipped  read  if	the  preceding	#IFDEF #IFNDEF was ac-
		     cepted.

		     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 com-
	      piler, 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 con-
		     figuration	file for a project (or,	under Unix  like  sys-
		     tems (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 ma-
	      chine.

       #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  COM-
		     MON 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)

FPC			       22 february 2002			    fpc.cfg(5)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fpc.cfg&sektion=5&manpath=FreeBSD+Ports+14.3.quarterly>

home | help