diff --git a/install/man/man1/fpc.1 b/install/man/man1/fpc.1 new file mode 100644 index 0000000000..a15ccbf965 --- /dev/null +++ b/install/man/man1/fpc.1 @@ -0,0 +1,567 @@ +.TH fpc 1 "18 nov 2000" "Free Pascal" "Free Pascal Compiler" +.SH NAME +fpc \- Free Pascal Compiler (FPC) binary + +.SH SYNOPSIS + +.B "fpc [options] [sourcefile]" +.BR + +.SH DESCRIPTION +This binary is the main binary of the +.I Free Pascal Compiler (FPC) +which is a +.I Turbo Pascal +and +.I Delphi (2.0) +compatible standalone (non GCC frontend) multitarget Pascal compiler. +.PP +The compiler uses +.BR LD (1) +and can use +.BR AS (1) +(see parameter \-Aas, but also has its own binary object writer. +.PP +The current main targets are +.I Go32V2 +(Dos DJGPP extender), +.I Freebsd, +.I Linux, +.I OS/2 +and +.I Win32. +The other targets (M68K compilers for Atari and Amiga) are based on older +versions of the compiler. +.PP +This manpage is meant for quick\-reference only. FPC comes with a great (600+ pages) +manual, which is updated constantly, while this man page can be out of date. + +.SH Version number + +Right now the compiler uses versionnumbers like 0.99.12 and 0.99.13. After +the 1.0 release this will change to 1.0 and 1.1. Both version naming types have +in common that if the last number is even (0.99.12, 1.0), it is stable, and the last number odd +is a dialy changing development version.(0.99.13, 1.1) just like the kernel. +Fixes to releases will be named 0.99.12-x with x a number (e.g. 0.99.12-1) +.PP +Version 0.99.5 however is a stable release. It was made before the even/odd version +naming system was introduced. + +.SH Usage + +The compilation proces is started by typing +.I fpc +followed by a sourcefile name (normally with .pas or .pp extension). Before processing the actual processing of the source file, +.BR ppc386.cfg (5) +the configuration file of the i386 compiler is read which contains the location of the +RTL, other packages (API, FCL, FreeVision), and optionally default values for some +switches. See the separate manpage of +.BR ppc386.cfg (5) +for more information. + +.SH Options + +.PP +General options + +.TP +.BI \-h +if you specify this option, the compiler outputs a list of all options, +and exits after that. +.TP +.BI \-? +idem as \-h, but waiting after every screenfull for the enter key. +.TP +.BI \-i +This option tells the compiler to print the copyright information. + You can give it an option, as -ixxx} where "xxx" can be one of the +following: +.RS +.TP +.I D +Returns the compiler date. +.TP +.I V +Returns the compiler version. +.TP +.I SO +Returns the compiler OS. +.TP +.I SP +Returns the compiler processor. +.TP +.I TO +Returns the target OS. +.TP +.I TP +Returns the target Processor. +.RE +.TP +.I -l +This option tells the compiler to print the +.I FPC +logo on standard output. It also gives you the +.I FPC +version number. +.TP +.I -n +Tells the compiler not to read the configuration file +.BR ppc386.cfg (5) + +.PP +Options for getting feedback +.TP +.BI \-v xxx +Be verbose. "xxx" is a combination of the following: +.RS +.TP +.I e +Tells the compiler to show only errors. This option is on by default. +.TP +.I i +Tells the compiler to show some general information. +.TP +.I w +Tells the compiler to issue warnings. +.TP +.I n +Tells the compiler to issue notes. +.TP +.I h +Tells the compiler to issue hints. +.TP +.I l +Tells the compiler to show the line numbers as it processes a +file. Numbers are shown per 100. +.TP +.I u +Tells the compiler to print the names of the files it opens. +.TP +.I t +Tells the compiler to print the names of the files it tries +to open. +.TP +.I p +Tells the compiler to print the names of procedures and +functions as it is processing them. +.TP +.I c +Tells the compiler to warn you when it processes a +conditional. +.TP +.I m +Tells the compiler to write which macros are defined. +.TP +.I d +Tells the compiler to write other debugging info. +.TP +.I a +Tells the compiler to write all possible info. (this is the +same as specifying all options) +.TP +.I 0 +Tells the compiler to write no messages. This is useful when +you want to override the default setting in the configuration file. +.TP +.I b +Tells the compiler to show all procedure declarations if an +overloaded function error occurs. +.TP +.I x +Tells the compiler to output some executable info (for Win32 +platform only). +.TP +.I r +Rhide/GCC compatibility mode: formats the error differently, so they +are understood by RHIDE. +.RE +.PP +Options concerning files and directories +.TP +.BI -e xxx +tells the compiler that +.I xxx +is the directory where it can find the executables as (the assembler) and +ld (the linker). +.TP +.BI \-FD +same as +.I \-e. +.TP +.BI \-Fe xxx +This option tells the compiler to write errors, etc. to +the file +.I xxx +. +.TP +.BI \-Fg xxx +(linux only, obsolete) +.I xxx + specifies the path where the compiler can find the +.I GNU C +library. This is superseded by the +.I \-Fl +option. +.TP +.BI \-Fi xxx +adds +.I xxx +to the path where the compiler searches for its include files. +.TP +.BI \-Fl xxx +Adds +.I xxx +to the library searching path, and is passe to the linker. +.TP +.BI \-FL xxx +( Linux only) Tells the compiler to use +.I xxx +as the dynamic linker. Default this is /lib/ld-linux.so.2, or +lib/ld-linux.so.1, depending on which one is found. +.TP +.BI \-Fo xxx +Adds +.I xxx + to the object file path. This path is used +when looking for files that need to be linked in. +.TP +.BI \-Fr xxx +tells the compiler that +.I xxx +contains the compiler messages. Default the compiler has built-in +messages. Specifying this option will override the default messages. +(useful if you want to use a language other than the default language). +.TP +.BI \-Fu xxx +Adds +.I xxx +to the unit path. +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 +.I xxx +\. +.TP +.BI \-FU xxx +Tells the compiler to write units in directory +.I xxx +instead of the current directory. +.TP +.BI \-I xxx +Add +.I xxx +to the include file search path. +This path is used when looking for include files. +.TP +.BI \-P +uses pipes instead of files when assembling. This may speed up +the compiler on OS/2 and Linux. Only with assemblers (such as +.I GNU AS +) that support piping. +.TP +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 "xxx." + +.PP Options controlling the kind of output +for more information on these options, see also the programmers manual. +.TP +.BI \-a +Tells the compiler not to delete the assembler file. +This also counts for the (possibly) generated batch script. +.TP +.BI \-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. +.TP +.BI -A xxx +specifies what kind of assembler should be generated . Here +.I xxx +is one of the following : +.RS +.TP +.I AS +A unix .o (object) file, using +.I GNU AS +.TP +.I nasmcoff +a coff file using the +.I nasm +assembler. +.TP +.I nasmelf +a ELF32 file (LINUX only) using the +.I nasm +assembler. +.TP +.I nasmonj +a obj file using the +.I nasm +assembler. +.TP +.I masm +An obj file using the Microsoft +.I masm +assembler. +.TP +.I tasm +An obj file using the Borland +.I tasm +assembler. +.RE + +.TP +.BI \-CD +Create dynamic library. +.TP +.BI \-Ch xxx +Reserves +.I xxx +bytes heap. +.I xxx +should be between 1024 and 67107840. +.TP +.BI \-Ci +Generate Input/Output checking code. +.TP +.BI \-Cn +Omit the linking stage. +.TP +.BI \-Co +Generate Integer overflow checking code. +.TP +.BI \-Cr +Generate Range checking code. +.TP +.BI \-Cs xxx +Set stack size to +.I xxx +bytes. +.TP +.BI \-CS +Create static library. +.TP +.BI \-Ct +generate stack checking code. +.TP +.BI \-Cx +Use smartlinking when compiling and linking units. +.TP +.BI \-d xxx +Define the symbol name +.I xxx +This can be used to conditionally compile parts of your code. + +.TP +.BI \-E +Same as -Cn. +.TP +.BI \-g +Generate debugging information for debugging with +.I GDB + +.TP +.BI \-gg +idem as +.B -g. +.TP +.BI \-gd +generate debugging info for dbx. +.TP +.BI \-gh +use the heaptrc unit (see the units part of the FPC manual). +.TP +.BI \-O xxx +optimize the compiler's output; +.I xxx +can have one of the following values : +.RS +.TP +.I g +optimize for size, try to generate smaller code. +.TP +.I G +optimize for time, try to generate faster code (default). +.TP +.I r +keep certain variables in registers (experimental, use with caution). +.TP +.I u +uncertain optimizations +.TP +.I 1 +Level 1 optimizations (quick optimizations). +.TP +.I 2 +Level 2 optimizations (-O1 plus some slower optimizations). +.TP +.I 3 +Level 3 optimizations (-O2 plus -Ou). +.TP +.I Pn +Specify processor : n can be one of +.RS +.TP +.I 1 +optimize for 386/486 +.TP +.I 2 +optimize for Pentium/PentiumMMX (tm) +.TP +.I 3 +optimizations for PentiumPro / P-II / Cyrix 6x86 / K6 (tm) +.RE + +The exact effect of these effects can be found in the programmers part of the manual. +.RE +.TP +.BI \-o xxx +Tells the compiler to use +.I xxx +as the name of the output file (executable). Only with programs. +.TP +.BI \-pg +Generate profiler code for gprof. +.TP +.BI \-s +Tells the compiler not to call the assembler and linker. +Instead, the compiler writes a script, PPAS.BAT under DOS, or +ppas.sh under Linux, which can then be executed to produce an +executable. +.TP +.BI \-T xxx +Specifies the target operating system. +.I xxx +can be one of the following: +.RS +.TP +.I GO32V1 +DOS and version 1 of the DJ DELORIE extender (no longer maintained). +.TP +.I GO32V2 +DOS and version 2 of the DJ DELORIE extender. +.TP +.I LINUX +Linux. +.TP +.I OS2 +OS/2 (2.x) (this is still under development). +.TP +.I WIN32 +Windows 32 bit. +.RE +.TP +.BI -u xxx +undefine the symbol +.I xxx +\. This is the opposite of the +.B \-d +option. +.TP +.BI \-u xxx +Undefine symbol +.I xxx +\. +.TP +.BI \-X x +Executable options. These tell the compiler what +kind of executable should be generated. the parameter +.I x +can be one of the following: +.RS +.TP +.I c +(Linux only, obsolete) Link with the C library. You should only use this when +you start to port Free Pascal to another operating system. +.TP +.I D +Link with dynamic libraries (defines the FPC_LINK_DYNAMIC symbol) +.TP +.I s +Strip the symbols from the executable. +.TP +.I S +Link with static libraries (defines th FPC_LINK_STATIC symbol) +.RE + +.PP +Options concerning the sources (language options) +for more information on these options, see also Programmers Manual +.TP +.BI \-R xxx +Specifies what assembler you use in your "asm" assembler code +blocks. Here +.I xxx +is one of the following: +.RS +.TP +.I att +Asm blocks contain AT&T assembler. +.TP +.I intel +Asm blocks contain Intel assembler. +.TP +.I direct +Asm blocks should be copied as-is in the assembler +file. +.RE +.TP +.BI \-S2 +Switch on Delphi 2 extensions. +.TP +.BI \-Sc +Support C-style operators, i.e. *=, +=, /= and -=. +.TP +.BI \-Sd +tells the compiler to dispose asmlists. This uses less memory, +but is slower. +.TP +.BI \-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 reached, and then it stops. With this switch, +the compiler will stop after the first error. +.TP +.BI \-Sg +Support the label and goto commands. +.TP +.BI \-Si +Support C++ style INLINE. +.TP +.BI \-Sm +Support C-style macros. +.TP +.BI \-So +Try to be Borland TP 7.0 compatible (no function +overloading etc.). +.TP +.BI \-Sp +Try to be +.I GPC (GNU Pascal Compiler) +compatible. +.TP +.BI \-Ss +The name of constructors must be "init", and the +name of destructors should be "done". +.TP +.BI \-St +Allow the "static" keyword in objects. +.TP +.BI \-Un +Do not check the unit name. Normally, the unit name +is the same as the filename. This option allows both to be different. +.TP +.BI \-Us +Compile a system unit. This option causes the +compiler to define only some very basic types. + +.SH SEE ALSO +.BR ppc386.cfg (5) +.BR ppdep (1) +.BR ppudump (1) +.BR ppumove (1) +.BR ptop (1) +.BR h2pas (1) +.BR ld (1) +.BR as (1)