Platform defines

From Free Pascal wiki

English (en) français (fr)

Useful tips before using platform defines

Architecture defines

Note-icon.png

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. To check this information, refer to files in FPC sources: "compiler/systems/i_*.pas".

  • ATARI
  • DPMI: MS-DOS
    • GO32V2
    • WATCOM
  • embedded
  • HASAMIGA
    • AMIGA
      • AMIGA68K
      • AMIGAOS4
    • AROS
    • MorphOS
  • GBA: GameBoy Advance
  • Java
  • MACOS: Classic Macintosh (System 7 etc.)
  • MSDOS MS-DOS 16-bit real mode (defined since FPC version 2.7.1)
  • NATIVENT: NativeNT
  • NDS: Nintendo DS
  • NETWARE: NetWare
    • NETWARE_CLIB: NetWare with classic libc
    • NETWLIBC, NETWARE_LIBC: NetWare with modern libc
  • OS2: OS/2
    • EMX: emx
  • PALMOS: PalmOS and Garnet OS
  • Symbian: Symbian OS
  • UNIX
    • AIX
    • ANDROID
    • BEOS
      • HAIKU
    • BSD
      • DARWIN: macOS and iOS
        • iPhoneSim
      • DragonFly: DragonFlyBSD
      • FREEBSD: FreeBSD
      • NETBSD: NetBSD
      • OPENBSD: OpenBSD
    • LINUX
    • SUNOS
      • SOLARIS
    • QNX
  • WDOSX
  • Wii
  • WINDOWS: all Windows
    • MSWINDOWS
      • WIN16: 16-bit Windows 3.x
      • WIN32: 32-bit Windows
      • WIN64: 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

Directives, definitions and conditionals definitions
global compiler directives • local compiler directives

Conditional Compiler Options • Conditional compilation • Macros and Conditionals • Platform defines
$IF