This appendix describes the possible defines when compiling programs using Free Pascal. A brief explanation of the define, and when it is used is also given.
| Define | description |
| FPC_LINK_DYNAMIC | Defined when the output will be linked dynamically. |
| This is defined when using the -XD compiler switch. | |
| FPC_LINK_STATIC | Defined when the output will be linked statically. |
| This is the default mode. | |
| FPC_LINK_SMART | Defined when the output will be smartlinked. |
| This is defined when using the -XX compiler switch. | |
| FPC_PROFILE | Defined when profiling code is added to program. |
| This is defined when using the -pg compiler switch. | |
| FPK | Always defined for Free Pascal. |
| FPC | Always defined for Free Pascal. |
| VER1 | Always defined for Free Pascal version 1.x.x. |
| VER1_0 | Always defined for Free Pascal version 1.0.x. |
| ENDIAN_LITTLE | Defined when the Free Pascal target is a little-endian processor |
| (80x86, Alpha, ARM). | |
| ENDIAN_BIG | Defined when the Free Pascal target is a big-endian processor |
| (680x0, PowerPC, SPARC, MIPS). | |
| FPC_DELPHI | Free Pascal is in Delphi mode, either using compiler switch -Sd or |
| using the $MODE DELPHI directive. | |
| FPC_OBJFPC | Free Pascal is in Delphi mode, either using compiler switch -S2 or |
| using the $MODE OBJFPC directive. | |
| FPC_TP | Free Pascal is in Turbo Pascal mode, either using compiler switch -So or |
| using the $MODE TP directive. | |
| FPC_GPC | Free Pascal is in GNU Pascal mode, either using compiler switch -Sp or |
| using the $MODE GPC directive. |
Remark: The ENDIAN_LITTLE and ENDIAN_BIG defines were added starting from Free Pascal version 1.0.5.
| Define | When defined? |
| CPU86 | Free Pascal target is an Intel 80x86 or compatible. |
| CPU87 | Free Pascal target is an Intel 80x86 or compatible. |
| CPUI386 | Free Pascal target is an Intel 80386 or later. |
| CPU68k | Free Pascal target is a Motorola 680x0 or compatible. |
| CPUM68020 | Free Pascal target is a Motorola 68020 or later. |
| CPU68 | Free Pascal target is a Motorola 680x0 or compatible. |
| CPUSPARC | Free Pascal target is a SPARC v7 or compatible. |
| CPUALPHA | Free Pascal target is an Alpha AXP or compatible. |
| CPUPOWERPC | Free Pascal target is a 32-bit PowerPC or compatible. |
| Target operating system | Defines |
| linux | LINUX, UNIX |
| freebsd | FREEBSD, BSD, UNIX |
| netbsd | NETBSD, BSD, UNIX |
| sunos | SUNOS, SOLARIS, UNIX |
| go32v2 | GO32V2, DPMI |
| os2 | OS2 |
| Windows 32-bit | WIN32 |
| Classic Amiga | AMIGA |
| Atari TOS | ATARI |
| Classic Macintosh | MAC |
| PalmOS | PALMOS |
| BeOS | BEOS, UNIX |
| QNX RTP | QNX, UNIX |
Remark: The UNIX define was added starting from Free Pascal version 1.0.5. The BSD operating systems no longer define LINUX starting with version 1.0.7.
«««< prog.htex