Sign in Join
Wiki copytemporary

Revision 1 of 3, by Kai Burghardt on 4-1-2021. The page as it is now.

Platform defines

Useful tips before using platform defines

Architecture defines

Note: This is a copy of the official FPC documentation which is the authorative version for the stable FPC version.

<table> <thead> <tr> <th>define(s)</th> <th>meaning</th> </tr> </thead> <tbody> <tr> <td colspan="2">General</td> </tr> <tr> <td>ENDIAN_BIG</td> <td>big endian</td> </tr> <tr> <td>ENDIAN_LITTLE</td> <td>little endian</td> </tr> <tr> <td>CPU16</td> <td>16 bit CPU</td> </tr> <tr> <td>CPU32</td> <td>32 bit CPU</td> </tr> <tr> <td>CPU64</td> <td>64 bit CPU</td> </tr> <tr> <td colspan="2">Specific</td> </tr> <tr> <td>CPU86</td> <td>Intel 8086 and compatible (original PC)</td> </tr> <tr> <td>CPU87</td> <td>Intel 8086 and compatible (original PC)</td> </tr> <tr> <td>CPU386, CPUi386</td> <td>386 and compatible (32 bit PC)</td> </tr> <tr> <td>CPUAMD64, CPUX86_64</td> <td>AMD64 or Intel 64-bit processor</td> </tr> <tr> <td>CPUIA64</td> <td>Intel itanium 64-bit processor</td> </tr> <tr> <td>CPU68</td> <td>Motorola 680x0 or compatible CPU</td> </tr> <tr> <td>CPU68K, CPUM68K</td> <td>Motorola 680x0 or compatible CPU</td> </tr> <tr> <td>CPUM68020</td> <td>Motorola 68020 or compatible CPU</td> </tr> <tr> <td>CPUPOWERPC</td> <td>PowerPC processor (32 or 64 bit)</td> </tr> <tr> <td>CPUPOWERPC32</td> <td>PowerPC processor (32 bit)</td> </tr> <tr> <td>CPUPOWERPC64</td> <td>PowerPC processor (64 bit)</td> </tr> <tr> <td>CPUSPARC, CPUSPARC32</td> <td>SPARC v7 or compatible</td> </tr> <tr> <td>CPUARM</td> <td>ARM 32 bit processor</td> </tr> <tr> <td>CPUAARCH64</td> <td>ARM 64 bit processor</td> </tr> <tr> <td>CPUAVR</td> <td>AVR 8/16-bit processor</td> </tr> <tr> <td colspan="2">FPU</td> </tr> <tr> <td>FPUSOFT</td> <td>Software emulation of FPU (all types)</td> </tr> <tr> <td>FPUSSE64</td> <td>SSE64 FPU on Intel I386 and higher, AMD64.</td> </tr> <tr> <td>FPUSSE</td> <td>SSE instructions on Intel I386 and higher.</td> </tr> <tr> <td>FPUSSE2</td> <td>SSE 2 instructions on Intel I386 and higher.</td> </tr> <tr> <td>FPUSSE3</td> <td>SSE 3 instructions on Intel I386 and higher, AMD64.</td> </tr> <tr> <td>FPULIBGCC</td> <td>GCC library FPU emulation on ARM and M68K.</td> </tr> <tr> <td>FPU68881</td> <td>68881 on M68K.</td> </tr> <tr> <td>FPUFPA</td> <td>FPA on ARM.</td> </tr> <tr> <td>FPUFPA10</td> <td>FPA 10 on ARM.</td> </tr> <tr> <td>FPUFPA11</td> <td>FPA 11 on ARM.</td> </tr> <tr> <td>FPUVFP</td> <td>VFP on ARM.</td> </tr> <tr> <td>FPUX87</td> <td>X87 FPU on Intel I386 and higher.</td> </tr> <tr> <td>FPUITANIUM</td> <td>On Intel Itanium.</td> </tr> <tr> <td>FPUSTANDARD</td> <td>On PowerPC (32/64 bit).</td> </tr> <tr> <td>FPUHARD</td> <td>On Sparc.</td> </tr> <tr> <td></td> <td></td> </tr> </tbody> </table>

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".

Notes

UNICODE was defined till FPC 3.0.0, see User changes 3.0 § “define UNICODE was changed to FPC_OS_UNICODE”.

See also


From the Free Pascal wiki, page "Platform defines", as it stood on 2021-04-01 after a change by Kai Burghardt, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.