systems.inc 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. {
  2. Copyright (c) 1998-2008 by Florian Klaempfl
  3. This include contains the enumeration
  4. information about the target systems supported
  5. (these are not processor specific)
  6. This program is free software; you can redistribute it and/or modify
  7. iu under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2 of the License, or
  9. (at your option) any later version.
  10. This program is distributed in the hope that it will be useful,
  11. but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  13. GNU General Public License for more details.
  14. You should have received a copy of the GNU General Public License
  15. along with this program; if not, write to the Free Software
  16. Foundation, Inc., 675 Mass Ave, Cambridge- MA 02139, USA.
  17. ****************************************************************************
  18. }
  19. type
  20. tendian = (endian_little,endian_big);
  21. (*
  22. IMPORTANT NOTE:
  23. The value of this enumeration is stored in PPU files.
  24. Therefore adding new CPU targets should not change the
  25. values of the pre-existing targets. (CEC)
  26. FURTHERMORE : Make sure that this branch values, are
  27. consistant with the main branch version always.
  28. *)
  29. tsystemcpu=
  30. (
  31. cpu_no, { 0 }
  32. cpu_i386, { 1 }
  33. cpu_m68k, { 2 }
  34. obsolete_cpu_alpha, { 3 }
  35. cpu_powerpc, { 4 }
  36. cpu_sparc, { 5 }
  37. obsolete_cpu_vm, { 6 }
  38. obsolete_cpu_ia64, { 7 }
  39. cpu_x86_64, { 8 }
  40. cpu_mipseb, { 9 }
  41. cpu_arm, { 10 }
  42. cpu_powerpc64, { 11 }
  43. cpu_avr, { 12 }
  44. cpu_mipsel, { 13 }
  45. cpu_jvm, { 14 }
  46. cpu_i8086, { 15 }
  47. cpu_aarch64, { 16 }
  48. cpu_wasm32, { 17 }
  49. cpu_sparc64, { 18 }
  50. cpu_riscv32, { 19 }
  51. cpu_riscv64, { 20 }
  52. cpu_xtensa, { 21 }
  53. cpu_z80, { 22 }
  54. cpu_mips64, { 23 }
  55. cpu_mips64el, { 24 }
  56. cpu_loongarch64, { 25 }
  57. cpu_mos6502 { 26 }
  58. );
  59. tasmmode= (asmmode_none
  60. { standard assembler (cpu dependant) with full parsing }
  61. ,asmmode_standard
  62. ,asmmode_i386_att
  63. ,asmmode_i386_intel
  64. ,asmmode_ppc_gas
  65. ,asmmode_ppc_motorola
  66. ,asmmode_arm_gas
  67. ,asmmode_sparc_gas
  68. ,asmmode_x86_64_gas
  69. ,asmmode_m68k_mot
  70. ,asmmode_x86_64_intel
  71. ,asmmode_x86_64_att
  72. ,asmmode_avr_gas
  73. ,asmmode_i8086_intel
  74. ,asmmode_i8086_att
  75. ,asmmode_arm_gas_unified
  76. ,asmmode_xtensa_gas
  77. );
  78. (* IMPORTANT NOTE:
  79. the integer value of this enum is stored in PPU
  80. files to recognize the target, so if you add new targets
  81. allways add them at end PM
  82. FURTHERMORE : Make sure that this branch values are
  83. consistant with the main branch version always. (CEC)
  84. *)
  85. type
  86. tsystem =
  87. (
  88. system_none, { 0 }
  89. obsolete_system_i386_GO32V1,{ 1 }
  90. system_i386_GO32V2, { 2 }
  91. system_i386_linux, { 3 }
  92. system_i386_OS2, { 4 }
  93. system_i386_Win32, { 5 }
  94. system_i386_freebsd, { 6 }
  95. system_m68k_Amiga, { 7 }
  96. system_m68k_Atari, { 8 }
  97. system_m68k_macosclassic, { 9 }
  98. system_m68k_linux, { 10 }
  99. system_m68k_PalmOS, { 11 }
  100. obsolete_system_alpha_linux,{ 12 }
  101. system_powerpc_linux, { 13 }
  102. system_powerpc_macosclassic,{ 14 }
  103. system_i386_solaris, { 15 }
  104. system_i386_beos, { 16 }
  105. system_i386_netbsd, { 17 }
  106. system_m68k_netbsd, { 18 }
  107. system_i386_Netware, { 19 }
  108. obsolete_system_i386_qnx, { 20 }
  109. system_i386_wdosx, { 21 }
  110. system_sparc_solaris, { 22 }
  111. system_sparc_linux, { 23 }
  112. system_i386_openbsd, { 24 }
  113. obsolete_system_m68k_openbsd,{ 25 }
  114. system_x86_64_linux, { 26 }
  115. system_powerpc_darwin, { 27 }
  116. system_i386_EMX, { 28 }
  117. system_powerpc_netbsd, { 29 }
  118. system_powerpc_openbsd, { 30 }
  119. system_arm_linux, { 31 }
  120. system_i386_watcom, { 32 }
  121. system_powerpc_MorphOS, { 33 }
  122. system_x86_64_freebsd, { 34 }
  123. system_i386_netwlibc, { 35 }
  124. system_powerpc_Amiga, { 36 }
  125. system_x86_64_win64, { 37 }
  126. system_arm_wince, { 38 }
  127. obsolete_system_ia64_win64,{ 39 }
  128. system_i386_wince, { 40 }
  129. system_x86_6432_linux, { 41 }
  130. system_arm_gba, { 42 }
  131. system_powerpc64_linux, { 43 }
  132. system_i386_darwin, { 44 }
  133. system_arm_palmos, { 45 }
  134. system_powerpc64_darwin, { 46 }
  135. system_arm_nds, { 47 }
  136. system_i386_embedded, { 48 }
  137. system_m68k_embedded, { 49 }
  138. obsolete_system_alpha_embedded,{ 50 }
  139. system_powerpc_embedded, { 51 }
  140. system_sparc_embedded, { 52 }
  141. obsolete_system_vm_embedded,{ 53 }
  142. obsolete_system_ia64_embedded,{ 54 }
  143. system_x86_64_embedded, { 55 }
  144. obsolete_system_mips_embedded, { 56 } { duplicate of system_mipseb_embedded, 81 }
  145. system_arm_embedded, { 57 }
  146. system_powerpc64_embedded, { 58 }
  147. system_i386_symbian, { 59 }
  148. system_arm_symbian, { 60 }
  149. system_x86_64_darwin, { 61 }
  150. system_avr_embedded, { 62 }
  151. system_i386_haiku, { 63 }
  152. system_arm_ios, { 64 }
  153. system_x86_64_solaris, { 65 }
  154. system_mipseb_linux, { 66 }
  155. system_mipsel_linux, { 67 }
  156. system_i386_nativent, { 68 }
  157. system_i386_iphonesim, { 69 }
  158. system_powerpc_wii, { 70 }
  159. system_x86_64_openbsd, { 71 }
  160. system_x86_64_netbsd, { 72 }
  161. system_powerpc_aix, { 73 }
  162. system_powerpc64_aix, { 74 }
  163. system_jvm_java32, { 75 }
  164. system_jvm_android32, { 76 }
  165. system_arm_android, { 77 }
  166. system_i386_android, { 78 }
  167. system_i8086_msdos, { 79 }
  168. system_mipsel_android, { 80 }
  169. system_mipseb_embedded, { 81 }
  170. system_mipsel_embedded, { 82 }
  171. system_i386_aros, { 83 }
  172. system_x86_64_aros, { 84 }
  173. system_x86_64_dragonfly, { 85 }
  174. system_aarch64_ios, { 86 }
  175. system_x86_64_iphonesim, { 87 }
  176. system_aarch64_linux, { 88 }
  177. system_i8086_win16, { 89 }
  178. system_i8086_embedded, { 90 }
  179. system_arm_aros, { 91 }
  180. system_wasm32_embedded, { 92 }
  181. system_sparc64_linux, { 93 }
  182. system_sparc64_solaris, { 94 }
  183. system_arm_netbsd, { 95 }
  184. system_riscv32_linux, { 96 }
  185. system_riscv64_linux, { 97 }
  186. system_riscv64_embedded, { 98 }
  187. system_riscv32_embedded, { 99 }
  188. system_aarch64_android, { 100 }
  189. system_x86_64_android, { 101 }
  190. system_x86_64_haiku, { 102 }
  191. system_xtensa_embedded, { 103 }
  192. system_xtensa_freertos, { 104 }
  193. system_xtensa_linux, { 105 }
  194. system_arm_freertos, { 106 }
  195. system_aarch64_win64, { 107 }
  196. system_z80_embedded, { 108 }
  197. system_z80_zxspectrum, { 109 }
  198. system_z80_msxdos, { 110 }
  199. system_aarch64_darwin, { 111 }
  200. system_z80_amstradcpc, { 112 }
  201. system_m68k_sinclairql, { 113 }
  202. system_wasm32_wasip1, { 114 }
  203. system_aarch64_freebsd, { 115 }
  204. system_aarch64_embedded, { 116 }
  205. system_mips64_linux, { 117 }
  206. system_mips64el_linux, { 118 }
  207. system_riscv32_freertos, { 119 }
  208. system_loongarch64_linux, { 120 }
  209. system_aarch64_iphonesim, { 121 }
  210. system_m68k_human68k, { 122 }
  211. system_mipsel_ps1, { 123 }
  212. system_wasm32_wasip1threads,{ 124 }
  213. system_wasm32_wasip2, { 125 }
  214. system_mos6502_embedded { 126 }
  215. );
  216. type
  217. tasm = (as_none
  218. ,as_default
  219. ,as_gas { standard gnu assembler }
  220. ,as_i386_as_aout
  221. ,as_i386_nasmcoff
  222. ,as_i386_nasmwin32
  223. ,as_i386_nasmwdosx
  224. ,as_i386_nasmelf
  225. ,as_i386_nasmobj
  226. ,as_i386_nasmbeos
  227. ,as_i386_tasm
  228. ,as_i386_masm
  229. ,as_i386_wasm
  230. ,as_i386_coff
  231. ,as_i386_pecoff
  232. ,as_i386_elf32
  233. ,as_i386_pecoffwdosx
  234. ,as_m68k_mit
  235. ,as_powerpc_mpw
  236. ,as_darwin
  237. ,as_i386_macho
  238. ,as_x86_64_masm
  239. ,as_x86_64_pecoff
  240. ,as_i386_pecoffwince
  241. ,as_arm_pecoffwince
  242. ,as_x86_64_elf64
  243. ,as_sparc_elf32
  244. ,as_ggas { gnu assembler called "gas" instead of "as" }
  245. ,as_i386_nasmhaiku
  246. ,as_powerpc_vasm
  247. ,as_i386_nlmcoff
  248. ,as_powerpc_xcoff
  249. ,as_jvm_jasmin
  250. ,as_yasm
  251. ,as_i386_nasm
  252. ,as_i386_nasmdarwin
  253. ,as_x86_64_nasm
  254. ,as_x86_64_nasmwin64
  255. ,as_x86_64_nasmelf
  256. ,as_x86_64_nasmdarwin
  257. ,as_i8086_nasm
  258. ,as_i8086_nasmobj
  259. ,as_gas_powerpc_xcoff
  260. ,as_powerpc_gas_macosclassic
  261. ,as_arm_elf32
  262. ,as_i8086_omf
  263. ,as_clang_asdarwin { machine code assembler in Darwin as style assembled by clang }
  264. ,as_solaris_as
  265. ,as_m68k_vasm
  266. ,as_m68k_as_aout
  267. ,as_wasm32_binaryen
  268. ,as_powerpc_gas_legacy { for systems with very old GAS versions only, which don't support eg. named sections }
  269. ,as_clang_llvm
  270. ,as_clang_gas { machine code assembler in gas style assembled by clang }
  271. ,as_z80asm
  272. ,as_sdcc_sdasz80
  273. ,as_z80_vasm
  274. ,as_z80_rel
  275. ,as_wasm32_wabt
  276. ,as_wasm32_wasa
  277. ,as_wasm32_llvm_mc_v10 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 10 }
  278. ,as_wasm32_llvm_mc_v11 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 11 }
  279. ,as_wasm32_llvm_mc_v12 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 12 }
  280. ,as_wasm32_llvm_mc_v13 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 13 }
  281. ,as_wasm32_llvm_mc_v14 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 14 }
  282. ,as_wasm32_llvm_mc_v15 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 15 }
  283. ,as_wasm32_llvm_mc_v16 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 16 }
  284. ,as_wasm32_llvm_mc_v17 { WebAssembly code assembled by llvm-mc (llvm machine code playground) from LLVM 17 }
  285. ,as_wasm32_llvm_mc { WebAssembly code assembled by llvm-mc (llvm machine code playground) from the latest stable LLVM version (18 or later) }
  286. ,as_arm_vasm
  287. ,as_wasm32_wasm
  288. ,as_clang_llvm_darwin
  289. ,as_m68k_elf32
  290. ,as_win64_gas
  291. ,as_sdcc_sdas6500
  292. );
  293. tlink = (ld_none,
  294. ld_aix, { external linkers (one per OS, handles all CPUs) }
  295. ld_amiga,
  296. ld_aros,
  297. ld_atari,
  298. ld_android,
  299. ld_beos,
  300. ld_bsd,
  301. ld_darwin,
  302. ld_embedded,
  303. ld_emx,
  304. ld_gba,
  305. ld_go32v2,
  306. ld_haiku,
  307. ld_jvm,
  308. ld_linux,
  309. ld_morphos,
  310. ld_mpw,
  311. ld_msdos,
  312. ld_nds,
  313. ld_netwlibc,
  314. ld_netware,
  315. ld_os2,
  316. ld_palmos,
  317. ld_solaris,
  318. ld_watcom,
  319. ld_wdosx,
  320. ld_wii,
  321. ld_windows,
  322. ld_win16,
  323. ld_int_go32v2, { implemented internal linkers }
  324. ld_int_linux,
  325. ld_int_nativent,
  326. ld_int_netware,
  327. ld_int_windows,
  328. ld_int_msdos,
  329. ld_int_win16,
  330. ld_int_zxspectrum,
  331. ld_int_msxdos,
  332. ld_int_wasi,
  333. ld_freertos,
  334. ld_zxspectrum,
  335. ld_msxdos,
  336. ld_amstradcpc,
  337. ld_sinclairql,
  338. ld_wasi,
  339. ld_human68k,
  340. ld_ps1
  341. );
  342. tar = (ar_none
  343. ,ar_gnu_ar
  344. ,ar_mpw_ar
  345. ,ar_gnu_ar_scripted
  346. ,ar_gnu_gar
  347. ,ar_watcom_wlib_omf
  348. ,ar_watcom_wlib_omf_scripted
  349. ,ar_sdcc_sdar
  350. ,ar_sdcc_sdar_scripted
  351. );
  352. tres = (res_none
  353. ,res_gnu_windres,res_watcom_wrc_os2
  354. ,res_m68k_palmos,res_m68k_mpw
  355. ,res_powerpc_mpw,res_elf,res_xcoff
  356. ,res_win64_gorc, res_macho, res_ext
  357. ,res_jvm_raw,res_wasm
  358. );
  359. tresinfoflags = (res_external_file,res_arch_in_file_name
  360. ,res_single_file,res_no_compile);
  361. tdbg = (dbg_none
  362. ,dbg_stabs,dbg_stabx,dbg_dwarf2,dbg_dwarf3,dbg_dwarf4,dbg_jasmin
  363. ,dbg_codeview,dbg_llvm
  364. );
  365. tscripttype = (script_none
  366. ,script_dos,script_unix,script_amiga,
  367. script_mpw,
  368. script_fpcres
  369. );
  370. tabi = (abi_default
  371. ,abi_powerpc_sysv,abi_powerpc_aix,abi_powerpc_darwin,abi_powerpc_elfv2
  372. ,abi_eabi,abi_armeb,abi_eabihf
  373. ,abi_old_win32_gnu
  374. ,abi_aarch64_darwin
  375. ,abi_riscv_ilp32
  376. ,abi_riscv_ilp32f
  377. ,abi_riscv_ilp32d
  378. ,abi_riscv_ilp32e
  379. ,abi_riscv_lp64
  380. ,abi_riscv_lp64f
  381. ,abi_riscv_lp64d
  382. ,abi_riscv_lp64q
  383. { stack is aligned and all room for parameters is reserved on
  384. entry, but depending on the calling convention, the parameters
  385. may still be removed by the callee (and then the stack needs to
  386. be restored by the caller) }
  387. ,abi_i386_dynalignedstack
  388. ,abi_xtensa_windowed
  389. ,abi_xtensa_call0
  390. ,abi_mips_o32
  391. ,abi_mips_n32
  392. ,abi_mips_o64
  393. ,abi_mips_n64
  394. ,abi_loongarch_lp64s
  395. ,abi_loongarch_lp64f
  396. ,abi_loongarch_lp64d
  397. ,abi_loongarch_lp32s
  398. ,abi_loongarch_lp32f
  399. ,abi_loongarch_lp32d
  400. );
  401. tcgbackend = (
  402. { default FPC code generator }
  403. cg_fpc
  404. { LLVM code generator }
  405. , cg_llvm
  406. );
  407. const
  408. abi_powerpc_elfv1 = abi_powerpc_sysv;