123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287 |
- .TH fpc.cfg 5 "22 february 2002" FPC "FPC configuration file"
- .SH NAME
- fpc.cfg \- Free Pascal Compiler (FPC) configuration file, name derived from Free Pascal Compiler.
- .SH DESCRIPTION
- This is the main configuration file of the
- .I Free Pascal Compiler (FPC)
- .PP
- All commandline options of the compiler (described in
- .BR 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
- .BR fpc (1)
- with some extra condtional possibilities.
- .SH 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 :
- .PP
- \ \fI\- Under Linux and unix\fP
- .br
- \ \ \- The current directory.
- .br
- \ \ \- Home directory, looks for .fpc.cfg
- .br
- \ \ \- The directory specified in the environment
- .br
- \ \ variable PPC\_CONFIG\_PATH, and if it's not
- .br
- \ \ set under compilerdir/../etc.
- .br
- \ \ \- If it is not yet found: in /etc.
- .PP
- \ \fI- Under all other OSes:\fP
- .br
- \ \ \- The current directory.
- .br
- \ \ \- The directory specified in the environment
- .br
- \ \ variable PPC\_CONFIG\_PATH.
- .br
- \ \ \- The directory where the compiler binary is.
- .br
- .PP
- 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 :
- .PP
- \ #IFDEF
- .br
- \ #IFNDEF
- .br
- \ #ELSE
- .br
- \ #ENDIF
- .br
- \ #DEFINE
- .br
- \ #UNDEF
- .br
- \ #WRITE
- .br
- \ #INCLUDE
- .br
- \ #SECTION
- .br
- They work the same way as their $... directive counterparts in Pascal:
- .IP \fI#IFDEF\fP
- .RS
- .IP \fISyntax\fP
- #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.
- .IP \fIExample\fP
- #IFDEF VER0_99_12
- .br
- \-Fu/usr/lib/fpc/0.99.12/rtl
- .br
- #ENDIF
- .br
- .PP
- 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.
- .RE
- .IP \fI#IFNDEF\fP
- .RS
- .IP \fISyntax\fP
- #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.
- .IP \fIExample\fP
- #IFNDEF VER0_99_12
- .br
- -Fu/usr/lib/fpc/0.99.13/rtl
- .br
- #ENDIF
- .PP
- 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.
- .RE
- .IP \fI#ELSE\fP
- .RS
- .IP \fISyntax\fP
- #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.
- .IP \fIExample\fP
- #IFDEF VER0_99_12
- .br
- -Fu/usr/lib/fpc/0.99.12/rtl
- .br
- #ELSE
- .br
- -Fu/usr/lib/fpc/0.99.13/rtl
- .br
- #ENDIF
- .br
- .PP
- 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.
- .RE
- .IP \fI#ENDIF\fP
- .RS
- .IP \fISyntax\fP
- #ENDIF
- .PP
- #ENDIF marks the end of a block that started with #IF(N)DEF,
- possibly with an #ELSE between it.
- .RE
- .IP \fI#DEFINE\fP
- .RS
- .IP \fISyntax\fP
- #DEFINE name
- .PP
- #DEFINE defines a new keyword. This has the same effect as a
- "\-dname" command\-line option.
- .RE
- .IP \fI#UNDEF\fP
- .RS
- .IP \fISyntax\fP
- #UNDEF name
- #UNDEF un-defines a keyword if it existed.
- This has the same effect as a "-uname" command-line option.
- .RE
- .IP \fI#WRITE\fP
- .RS
- .IP \fISyntax\fP
- #WRITE Message Text
- #WRITE writes "Message Text" to the screen.
- This can be useful to display warnings if certain options are set.
- .IP \fIExample\fP
- #IFDEF DEBUG
- .br
- #WRITE Setting debugging ON...
- .br
- -g
- .br
- #ENDIF
- .br
- .PP
- if "DEBUG is defined, this will produce a line
- Setting debugging ON...
- and will then switch on debugging information in the compiler.
- .RE
- .IP \fI#INCLUDE\fP
- .RS
- .IP \fISyntax\fP
- #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.
- .IP \fIExample\fP
- #IFDEF LINUX
- .br
- #INCLUDE /etc/fpc.cfg
- .br
- #ELSE
- .br
- #IFDEF GO32V2
- .br
- #INCLUDE c:\\pp\\bin\\fpc.cfg
- .br
- #ENDIF
- .br
- #ENDIF
- .br
- .PP
- 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.
- .RE
- .IP \fI#SECTION\fP
- .RS
- .IP \fISyntax\fP
- #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.
- .RE
- .SH Example
- A standard block often used in (the Linux version of) fpc.cfg is
- -vwhin
- .br
- #IFDEF VER0_99_12
- .br
- #IFDEF FPC_LINK_STATIC
- .br
- \-Fu/usr/lib/fpc/0.99.12/rtl/static
- .br
- \-Fu/usr/lib/fpc/0.99.12/units/static
- .br
- #ENDIF
- .br
- #IFDEF FPC_LINK_DYNAMIC
- .br
- \-Fu/usr/lib/fpc/0.99.12/rtl/shared
- .br
- \-Fu/usr/lib/fpc/0.99.12/units/shared
- .br
- #ENDIF
- .br
- \-Fu/usr/lib/fpc/0.99.12/rtl
- .br
- \-Fu/usr/lib/fpc/0.99.12/units
- .br
- #ENDIF
- .PP
- The block is copied into the fpc.cfg file for each version you use (normally
- the latest release and the lastest developpers
- snapshot.
- .SH SEE ALSO
- .BR fpc (1)
|