From c958cb6b961ac7c3c6a9f24d15d60179e78e90ad Mon Sep 17 00:00:00 2001 From: michael Date: Sat, 5 Jun 1999 10:54:03 +0000 Subject: [PATCH] + Updated compiler options --- docs/user.tex | 108 +++++++++++++++++++++++++++++++------------------- 1 file changed, 67 insertions(+), 41 deletions(-) diff --git a/docs/user.tex b/docs/user.tex index 9c72c3c50d..e7a07a3d67 100644 --- a/docs/user.tex +++ b/docs/user.tex @@ -888,7 +888,8 @@ following: \item[-l] This option tells the compiler to print the \fpc logo on standard output. It also gives you the \fpc version number. \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} \end{description} @@ -942,18 +943,12 @@ compiler). \item [-Fexxx] This option tells the compiler to write errors, etc. to the file in \file{xxx}. \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 to the linker. \olabel{Fl} \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 -\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} \item[-Foxxx] Adds \file{xxx} to the object file path. This path is used 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 will override the default messages. \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} \item [-FUxxx] Tells the compiler to write units in directory \var{xxx} instead of the current directory. \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 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} % Options controlling the kind of output. \subsection{Options controlling the kind of output.} for more information on these options, see also \progref \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. \item [-al] \olabel{al} Tells the compiler to include the sourcecode lines in the assembler file as comments. This feature is still experimental, and 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 : \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{nasmelf} : a ELF32 file (\linux only) 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{tasm} : An obj file using the Borland \file{tasm} assembler. \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 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 [-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. +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 to conditionally compile parts of your code. \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[r] keep certain variables in registers (experimental, use with caution). -\item[u] uncertain optimizations +\item[u] Uncertain optimizations \item[1] Level 1 optimizations (quick optimizations). \item[2] Level 2 optimizations (\var{-O1} plus some slower optimizations). \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} \item[1] optimize for 386/486 \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. 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 -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: \begin{itemize} \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{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. \end{itemize} \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)} for more information on these options, see also \progref \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} -\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. \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 [-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, 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. -\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 [-Sm] \olabel{Sm} Support C-style macros. \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} \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} ppudump [options] foo.ppu \end{verbatim}