Platform defines
From Lazarus wiki
│
English (en) │
français (fr) │
Useful tips before using platform defines
- Marco van de Voort: Development Tutorial (a.k.a Build FAQ) – general building guidelines
- Marco van de Voort: Creating a portable Pascal codebase. – general porting guidelines
- if you need to cast a pointer to an integer for arithmetic or you want to provide a spare field (like
tag
inTComponent
) that may be used to store a pointer, usePtrInt
as signed type, or betterPtrUInt
as unsigned type.
Architecture defines
Note: This is a copy of the official FPC documentation which is the authorative version for the stable FPC version.
define(s) | meaning |
---|---|
General | |
ENDIAN_BIG | big endian |
ENDIAN_LITTLE | little endian |
CPU16 | 16 bit CPU |
CPU32 | 32 bit CPU |
CPU64 | 64 bit CPU |
Specific | |
CPU86 | Intel 8086 and compatible (original PC) |
CPU87 | Intel 8086 and compatible (original PC) |
CPU386, CPUi386 | 386 and compatible (32 bit PC) |
CPUAMD64, CPUX86_64 | AMD64 or Intel 64-bit processor |
CPUIA64 | Intel itanium 64-bit processor |
CPU68 | Motorola 680x0 or compatible CPU |
CPU68K, CPUM68K | Motorola 680x0 or compatible CPU |
CPUM68020 | Motorola 68020 or compatible CPU |
CPUPOWERPC | PowerPC processor (32 or 64 bit) |
CPUPOWERPC32 | PowerPC processor (32 bit) |
CPUPOWERPC64 | PowerPC processor (64 bit) |
CPUSPARC, CPUSPARC32 | SPARC v7 or compatible |
CPUARM | ARM 32 bit processor |
CPUAVR | AVR 8/16-bit processor |
FPU | |
FPUSOFT | Software emulation of FPU (all types) |
FPUSSE64 | SSE64 FPU on Intel I386 and higher, AMD64. |
FPUSSE | SSE instructions on Intel I386 and higher. |
FPUSSE2 | SSE 2 instructions on Intel I386 and higher. |
FPUSSE3 | SSE 3 instructions on Intel I386 and higher, AMD64. |
FPULIBGCC | GCC library FPU emulation on ARM and M68K. |
FPU68881 | 68881 on M68K. |
FPUFPA | FPA on ARM. |
FPUFPA10 | FPA 10 on ARM. |
FPUFPA11 | FPA 11 on ARM. |
FPUVFP | VFP on ARM. |
FPUX87 | X87 FPU on Intel I386 and higher. |
FPUITANIUM | On Intel Itanium. |
FPUSTANDARD | On PowerPC (32/64 bit). |
FPUHARD | On Sparc. |
Operating system defines
In the following tree, you have to follow leaves to their respective roots, in order to determine all defines:
AMIGA
: Classic AmigaAROS
ATARI
: Atari TOSembedded
: EmbeddedGBA
: GameBoy AdvanceGO32V2
,DPMI
: MS-DOS (using go32v2 extender)MACOS
: Classic Macintosh (System 7 etc.)MSDOS
MS-DOS 16-bit real mode (defined since FPC version 2.7.1)NDS
: Nintendo DSOS2
: OS/2EMX
: emx
PALMOS
: PalmOS and Garnet OSSymbian
: Symbian OSUNIX
WINDOWS
: all Windows targetsMSWINDOWS
WIN32
: 32-bit WindowsWIN64
: 64-bit Windows
WINCE
,UNDER_CE
,UNICODE
: Windows CE, Windows mobile
Notes
UNICODE
was defined till FPC 3.0.0, see User changes 3.0 § “define UNICODE was changed to FPC_OS_UNICODE”.
See also
- Delphi Wikia article “FreePascal detection and versioning”
- Free Pascal Documentation: Appendix G: Compiler defines during compilation
Directives, definitions and conditionals definitions |
---|
global compiler directives • local compiler directives Conditional Compiler Options • Conditional compilation • Macros and Conditionals • Platform defines |