Browse Source

+ Updated compiler options

michael 26 years ago
parent
commit
c958cb6b96
1 changed files with 67 additions and 41 deletions
  1. 67 41
      docs/user.tex

+ 67 - 41
docs/user.tex

@@ -888,7 +888,8 @@ following:
 \item[-l] This option tells the compiler to print the \fpc logo on standard
 \item[-l] This option tells the compiler to print the \fpc logo on standard
 output. It also gives you the \fpc version number.
 output. It also gives you the \fpc version number.
 \olabel{l}
 \olabel{l}
-\item [-n] Tells the compiler not to read the configuration file.
+\item [-n] Tells the compiler not to read default the configuration file.
+You can still pass a configuration file with the \var{@} option.
 \olabel{n}
 \olabel{n}
 \end{description}
 \end{description}
 
 
@@ -942,18 +943,12 @@ compiler).
 \item [-Fexxx] This option tells the compiler to write errors, etc. to
 \item [-Fexxx] This option tells the compiler to write errors, etc. to
 the file in \file{xxx}.
 the file in \file{xxx}.
 \olabel{Fe}
 \olabel{Fe}
-\item [-Fgxxx] (\linux only, obsolete) \file{xxx} specifies the path where the compiler
-can find the \gnu C library. This is superseded by the \var{-Fl} option.
-\olabel{Fg}
-\item [-Fixxx] adds \var{xxx} to the path where the compiler searches for
-its include files.
-\olabel{Fi}
 \item [-Flxxx] Adds \var{xxx} to the library searching path, and is passed
 \item [-Flxxx] Adds \var{xxx} to the library searching path, and is passed
 to the linker.
 to the linker.
 \olabel{Fl}
 \olabel{Fl}
 \item[-FLxxx] (\linux only) Tells the compiler to use \file{xxx} as the
 \item[-FLxxx] (\linux only) Tells the compiler to use \file{xxx} as the
 dynamic linker. Default this is \file{/lib/ld-linux.so.2}, or
 dynamic linker. Default this is \file{/lib/ld-linux.so.2}, or
-\file{lib/ld-linux.so.1}, depending on which one is found.
+\file{lib/ld-linux.so.1}, depending on which one is found first.
 \olabel{FL}
 \olabel{FL}
 \item[-Foxxx] Adds \file{xxx} to the object file path. This path is used
 \item[-Foxxx] Adds \file{xxx} to the object file path. This path is used
 when looking for files that need to be linked in.
 when looking for files that need to be linked in.
@@ -962,52 +957,73 @@ when looking for files that need to be linked in.
 messages. Default the compiler ahs built-in messages. Specifying this option
 messages. Default the compiler ahs built-in messages. Specifying this option
 will override the default messages.
 will override the default messages.
 \olabel{Fr}
 \olabel{Fr}
-\item [-Fuxxx] Idem as \var{-Up}: Add \file{xxx} to the object path.
+\item [-Fuxxx] Add \file{xxx} to the unit path. Units are loaded from the
+current directory if they exist, and then in the unit path. You must {\em
+always} supply the unit path to the system unit.
 \olabel{Fu}
 \olabel{Fu}
 \item [-FUxxx] Tells the compiler to write units in directory \var{xxx}
 \item [-FUxxx] Tells the compiler to write units in directory \var{xxx}
 instead of the current directory.
 instead of the current directory.
 \item [-Ixxx] \olabel{I} Add \file{xxx} to the include file search path.
 \item [-Ixxx] \olabel{I} Add \file{xxx} to the include file search path.
-This path is used when looking for include files.
+This path is used when looking for include files. This option is obsolite,
+use \var{-Fi} instead.
 \item [-P] uses pipes instead of files when assembling. This may speed up
 \item [-P] uses pipes instead of files when assembling. This may speed up
 the compiler on \ostwo and \linux. Only with assemblers (such as \gnu
 the compiler on \ostwo and \linux. Only with assemblers (such as \gnu
-\file{as}) that support piping..
-\item [-Upxxx] \olabel{Up} Tells the compiler to add \file{xxx} to the path where to find
-units. \\
-By default, the compiler only searches for units in the current directory
-and the directory where the compiler itself resides. This option tells the
-compiler also to look in the directory \file{xxx}.
+\file{as}) that support piping...
 \end{description}
 \end{description}
 
 
 % Options controlling the kind of output.
 % Options controlling the kind of output.
 \subsection{Options controlling the kind of output.}
 \subsection{Options controlling the kind of output.}
 for more information on these options, see also \progref
 for more information on these options, see also \progref
 \begin{description}
 \begin{description}
-\item [-a] \olabel{a} Tells the compiler not to delete the assembler file.
+\item [-a] \olabel{a} Tells the compiler not to delete the assembler files
+it generates (not when using the internal assembler).
 This also counts for the (possibly) generated batch script.
 This also counts for the (possibly) generated batch script.
 \item [-al] \olabel{al} Tells the compiler to include the sourcecode lines
 \item [-al] \olabel{al} Tells the compiler to include the sourcecode lines
 in the assembler file as comments. This feature is still experimental, and
 in the assembler file as comments. This feature is still experimental, and
 should be used with caution.
 should be used with caution.
-\item [-Axxx] \olabel{A}specifies what kind of assembler should be generated . Here
+\item[-ar] \olabel{ar} tells the compiler to list register allocation and 
+release info in the assembler file. This is primarily intended for debugging
+the code generated bythe compiler.
+\item[-at] \olabel{at} tells the compiler to list information about
+temporary allocations and deallocations in the assembler file.
+\item [-Axxx] \olabel{A} specifies what kind of assembler should be generated . Here
 \var{xxx} is one of the following :
 \var{xxx} is one of the following :
 \begin{itemize}
 \begin{itemize}
-\item \textbf{o} : A unix .o (object) file, using \gnu \file{as}.
+\item \textbf{o} : A unix coff object file, using the \gnu assembler \file{as}.
 \item \textbf{nasmcoff} : a coff file using the \file{nasm} assembler.
 \item \textbf{nasmcoff} : a coff file using the \file{nasm} assembler.
 \item \textbf{nasmelf} : a ELF32 file (\linux only) using the \file{nasm} assembler.
 \item \textbf{nasmelf} : a ELF32 file (\linux only) using the \file{nasm} assembler.
 \item \textbf{nasmonj} : a obj file  using the \file{nasm} assembler.
 \item \textbf{nasmonj} : a obj file  using the \file{nasm} assembler.
 \item \textbf{masm} : An obj file using the Microsoft \file{masm} assembler.
 \item \textbf{masm} : An obj file using the Microsoft \file{masm} assembler.
 \item \textbf{tasm} : An obj file using the Borland \file{tasm} assembler.
 \item \textbf{tasm} : An obj file using the Borland \file{tasm} assembler.
 \end{itemize}
 \end{itemize}
-\item [-CD] Create dynamic library.
+\item[-B] \olabel{B} tells the compiler to re-compile all used units, even
+if the unit sources didn't change since the last compilation.
+\item[-b] \olabel{b} tells the compiler to generate browser info. This information can
+be used by an Integrated Development Environment (IDE) to provide information 
+on classes, objects, procedures, types  and variables in a unit.
+\item[-bl] \olabel{bl} is the same as \var{-b} but also generates
+information about local variables, types and procedures.
+\item [-CD] Create a dynamic library. This is used to transform units into
+dynamically linkable libraries on \linux.
 \item [-Chxxx] \olabel {Ch} Reserves \var{xxx} bytes heap. \var{xxx} should
 \item [-Chxxx] \olabel {Ch} Reserves \var{xxx} bytes heap. \var{xxx} should
 be between 1024 and 67107840.
 be between 1024 and 67107840.
-\item [-Ci] \olabel{Ci} Generate Input/Output checking code.
-\item [-Cn] \olabel{Cn} Omit the linking stage.
-\item [-Co] \olabel{Co} Generate Integer overflow checking code.
-\item [-Cr] \olabel{Cr} Generate Range checking code.
+\item [-Ci] \olabel{Ci} Generate Input/Output checking code. In case some
+input/output code of your program returns an error status, the program will
+exit with a run-time error. Which error is generated depends on the I/O error.
+\item [-Cn] \olabel{Cn} Omit the linking stage. 
+\item [-Co] \olabel{Co} Generate Integer overflow checking code. In case of
+integer errors, a run-time error will be generated by your program.
+\item [-Cr] \olabel{Cr} Generate Range checking code. In case your program
+acesses an array element with an invalid index, or if it increases an
+enumerated type beyond it's scope, a run-time error will be generated.
 \item [-Csxxx] \olabel{Cs} Set stack size to \var{xxx}.
 \item [-Csxxx] \olabel{Cs} Set stack size to \var{xxx}.
 \item [-CS] \olabel{CS} Create static library.
 \item [-CS] \olabel{CS} Create static library.
-\item [-Ct] \olabel{Ct} generate stack checking code.
+\item [-Ct] \olabel{Ct} generate stack checking code. In case your program
+performs a faulty stack operation, a run-rime error will be generated.
 \item [-Cx] \olabel{Cx} Use smartlinking when compiling and linking units.
 \item [-Cx] \olabel{Cx} Use smartlinking when compiling and linking units.
+smartlinking will only link in the code parts that are actually needed by
+the program. All unused code is left out. This can lead to substantially
+smaller binaries.
 \item [-dxxx] \olabel{d} Define the symbol name \var{xxx}. This can be used
 \item [-dxxx] \olabel{d} Define the symbol name \var{xxx}. This can be used
 to conditionally compile parts of your code.
 to conditionally compile parts of your code.
 \item {-E} \olabel{E} Same as \var{-Cn}.
 \item {-E} \olabel{E} Same as \var{-Cn}.
@@ -1023,11 +1039,11 @@ of the following values :
 \item[G] optimize for time, try to generate faster code (default).
 \item[G] optimize for time, try to generate faster code (default).
 \item[r] keep certain variables in registers (experimental, use with
 \item[r] keep certain variables in registers (experimental, use with
 caution).
 caution).
-\item[u] uncertain optimizations
+\item[u] Uncertain optimizations
 \item[1] Level 1 optimizations (quick optimizations).
 \item[1] Level 1 optimizations (quick optimizations).
 \item[2] Level 2 optimizations (\var{-O1} plus some slower optimizations).
 \item[2] Level 2 optimizations (\var{-O1} plus some slower optimizations).
 \item[3] Level 3 optimizations (\var{-O2} plus \var{-Ou}).
 \item[3] Level 3 optimizations (\var{-O2} plus \var{-Ou}).
-\item[Pn] Specify processor: \var{n} can be one of
+\item[Pn] (Intel only) Specify processor: \var{n} can be one of
 \begin{description}
 \begin{description}
 \item[1] optimize for 386/486
 \item[1] optimize for 386/486
 \item[2] optimize for Pentium/PentiumMMX (tm)
 \item[2] optimize for Pentium/PentiumMMX (tm)
@@ -1041,14 +1057,15 @@ file (executable). Only with programs.
 \item [-s] \olabel{s} Tells the compiler not to call the assembler and linker.
 \item [-s] \olabel{s} Tells the compiler not to call the assembler and linker.
 Instead, the compiler writes a script, \file{PPAS.BAT} under \dos, or
 Instead, the compiler writes a script, \file{PPAS.BAT} under \dos, or
 \file{ppas.sh} under \linux, which can then be executed to produce an
 \file{ppas.sh} under \linux, which can then be executed to produce an
-executable.
-\item[-Txxx] \olabel{T}Specifies the target operating system. \var{xxx} can be one of
+executable. This can be used to speed up the compiling process or to debug
+the compiler's output.
+\item[-Txxx] \olabel{T} Specifies the target operating system. \var{xxx} can be one of
 the following:
 the following:
 \begin{itemize}
 \begin{itemize}
 \item \textbf{GO32V1} : \dos and version 1 of the DJ DELORIE extender (no longer maintained).
 \item \textbf{GO32V1} : \dos and version 1 of the DJ DELORIE extender (no longer maintained).
 \item \textbf{GO32V2} : \dos and version 2 of the DJ DELORIE extender.
 \item \textbf{GO32V2} : \dos and version 2 of the DJ DELORIE extender.
 \item \textbf{LINUX} : \linux.
 \item \textbf{LINUX} : \linux.
-\item \textbf{OS2} : OS/2 (2.x) (this is still under development).
+\item \textbf{OS2} : OS/2 (2.x) using the \var{EMX} extender.
 \item \textbf{WIN32} : Windows 32 bit.
 \item \textbf{WIN32} : Windows 32 bit.
 \end{itemize}
 \end{itemize}
 \item [-uxxx] \olabel{u} undefine the symbol \var{xxx}. This is the opposite
 \item [-uxxx] \olabel{u} undefine the symbol \var{xxx}. This is the opposite
@@ -1078,24 +1095,33 @@ can be one of the following:
 \subsection{Options concerning the sources (language options)}
 \subsection{Options concerning the sources (language options)}
 for more information on these options, see also \progref
 for more information on these options, see also \progref
 \begin{description}
 \begin{description}
-\item [-Rxxx] \olabel{R} Specifies what assembler you use in your \var{asm} assembler code
-blocks. Here \var{xxx} is one of the following:
+\item [-Rxxx] \olabel{R} Specifies what kind of assembler you use in 
+your \var{asm} assembler code blocks. Here \var{xxx} is one of the following:
 \begin{description}
 \begin{description}
-\item [att\ ] \var{asm} blocks contain AT\&T assembler.
-\item [intel] \var{asm} blocks contain Intel assembler.
-\item [direct] \var{asm} blocks should be copied as-is in the assembler
+\item [att\ ] \var{asm} blocks contain AT\&T-style  assembler. 
+This is the default style. 
+\item [intel] \var{asm} blocks contain Intel-style assembler.
+\item [direct] \var{asm} blocks should be copied as-is in the assembler,
+only replacing certain variables.
 file.
 file.
 \end{description}
 \end{description}
-\item [-S2] \olabel{Stwo} Switch on Delphi 2 extensions.
+\item [-S2] \olabel{Stwo} Switch on Delphi 2 extensions.  This is different
+from \var{-Sd} because some \fpc constructs are still available to you.
 \item [-Sc] \olabel{Sc} Support C-style operators, i.e. \var{*=, +=, /= and
 \item [-Sc] \olabel{Sc} Support C-style operators, i.e. \var{*=, +=, /= and
 -=}.
 -=}.
-\item [-Sd] tells the compiler to dispose asmlists. This uses less memory,
-but is slower.
+\item [-Sd] Tells the compiler to be Delphi compatible. This is more strict
+than the \var{-S2} option, since some \var{fpc} extensions are switched off.
 \item [-Se] \olabel{Se} The compiler stops after the first error. Normally,
 \item [-Se] \olabel{Se} The compiler stops after the first error. Normally,
 the compiler tries to continue compiling after an error, until 50 errors are
 the compiler tries to continue compiling after an error, until 50 errors are
-reached, or a fatal error is reachd, and then it stops. With this switch,
+reached, or a fatal error is reached, and then it stops. With this switch,
 the compiler will stop after the first error.
 the compiler will stop after the first error.
-\item [-Sg] \olabel{Sg} Support the \var{label} and \var{goto} commands.
+\item [-Sg] \olabel{Sg} Support the \var{label} and \var{goto} commands. By
+default these are not supported. You must also specify this option if you
+use labels in assembler statements. (if you use the \var{AT\&T} style
+assember)
+\item [-Sh] Use ansistrings by default for strings. If this keyword is
+specified, the compiler will interpret the \var{string} keyword as a
+ansistring. Otherwise it is supposed to be a short strings (TP style).
 \item [-Si] \olabel{Si} Support \var{C++} style INLINE.
 \item [-Si] \olabel{Si} Support \var{C++} style INLINE.
 \item [-Sm] \olabel{Sm} Support C-style macros.
 \item [-Sm] \olabel{Sm} Support C-style macros.
 \item [-So] \olabel{So} Try to be Borland TP 7.0 compatible (no function
 \item [-So] \olabel{So} Try to be Borland TP 7.0 compatible (no function
@@ -1549,7 +1575,7 @@ programs and units. Here we list these programs and units.
 \subsection{ppudump program}
 \subsection{ppudump program}
 
 
 \file{ppudump} is a program which shows the contents of a \fpc unit. It
 \file{ppudump} is a program which shows the contents of a \fpc unit. It
-is distributed with the compiler you can just issue the following command
+is distributed with the compiler. You can just issue the following command
 \begin{verbatim}
 \begin{verbatim}
   ppudump [options] foo.ppu
   ppudump [options] foo.ppu
 \end{verbatim}
 \end{verbatim}