platform.inc 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. {***************[ PLATFORM INCLUDE UNIT ]******************}
  2. { }
  3. { System independent INCLUDE file to sort PLATFORMS }
  4. { }
  5. { Parts Copyright (c) 1997 by Balazs Scheidler }
  6. { [email protected] }
  7. { }
  8. { Parts Copyright (c) 1999, 2000 by Leon de Boer }
  9. { [email protected] - primary e-mail address }
  10. { [email protected] - backup e-mail address }
  11. { }
  12. {****************[ THIS CODE IS FREEWARE ]*****************}
  13. { }
  14. { This sourcecode is released for the purpose to }
  15. { promote the pascal language on all platforms. You may }
  16. { redistribute it and/or modify with the following }
  17. { DISCLAIMER. }
  18. { }
  19. { This SOURCE CODE is distributed "AS IS" WITHOUT }
  20. { WARRANTIES AS TO PERFORMANCE OF MERCHANTABILITY OR }
  21. { ANY OTHER WARRANTIES WHETHER EXPRESSED OR IMPLIED. }
  22. { }
  23. {*****************[ SUPPORTED PLATFORMS ]******************}
  24. { 16 and 32 Bit compilers }
  25. { DOS - Turbo Pascal 7.0 + (16 Bit) }
  26. { DPMI - Turbo Pascal 7.0 + (16 Bit) }
  27. { - FPC 0.9912+ (GO32V2) (32 Bit) }
  28. { WINDOWS - Turbo Pascal 7.0 + (16 Bit) }
  29. { - Delphi 1.0+ (16 Bit) }
  30. { WIN95/NT - Delphi 2.0+ (32 Bit) }
  31. { - Virtual Pascal 2.0+ (32 Bit) }
  32. { - Speedsoft Sybil 2.0+ (32 Bit) }
  33. { - FPC 0.9912+ (32 Bit) }
  34. { WIN64 - FPC 2.4.3 (64 Bit) }
  35. { OS2 - Virtual Pascal 1.0+ (32 Bit) }
  36. { - C'T patch to BP (16 Bit) }
  37. { LINUX - FPC 0.9912+ (32 Bit) }
  38. { LINUX - FPC 2.4.3 (64 Bit) }
  39. { LINUX - FPC 2.4.3 (64 Bit) }
  40. { }
  41. {******************[ REVISION HISTORY ]********************}
  42. { Version Date Who Fix }
  43. { ------- -------- --- ---------------------------- }
  44. { 0.1 02 Jul 97 Bazsi Initial implementation }
  45. { 0.2 28 Aug 97 LdB Fixed OS2 platform sort }
  46. { 0.3 29 Aug 97 LdB Added assembler type changes }
  47. { 0.4 29 Aug 97 LdB OS_DOS removed from WINDOWS }
  48. { 0.5 23 Oct 97 LdB Delphi & speed compilers }
  49. { 0.6 05 May 98 LdB Virtual Pascal 2.0 added }
  50. { 0.7 19 May 98 LdB Delphi 2/3 definitions added }
  51. { 0.8 06 Aug 98 CEC FPC only support fixed WIN32 }
  52. { 0.9 10 Aug 98 LdB BP_VMTLink def/Undef added }
  53. { 1.0 27 Aug 98 LdB Atari, Mac etc not undef dos }
  54. { 1.1 25 Oct 98 PfV Delphi 4 definitions added }
  55. { 1.2 06 Jun 99 LdB Sybil 2.0 support added }
  56. { 1.3 13 Jun 99 LdB Sybil 2.0 undef BP_VMT link }
  57. { 1.31 03 Nov 99 LdB FPC windows defines WIN32 }
  58. { 1.32 04 Nov 99 LdB Delphi 5 definitions added }
  59. { 1.33 16 Oct 00 LdB WIN32/WIN16 defines added }
  60. { 1.34 02 May 02 MvdV FreeBSD, NetBSD, OS_UNIX }
  61. { 1.35 28 Nov 10 PM 64 bit OS Linux, Win64, FreeBSD }
  62. { 1.36 22 Mar 15 PM 64 bit OS DragonFly }
  63. {**********************************************************}
  64. { ****************************************************************************
  65. This include file defines some conditional defines to allow us to select
  66. the compiler/platform/target in a consequent way.
  67. OS_XXXX The operating system used (XXXX may be one of:
  68. DOS, OS2, Linux, Windows, Go32)
  69. PPC_XXXX The compiler used: BP, FPK, Virtual, Speed
  70. BIT_XX The number of bits of the target platform: 16 or 32
  71. PROC_XXXX The mode of the target processor (Real or Protected)
  72. This shouldn't be used, except for i386 specific parts.
  73. ASM_XXXX This is the assembler type: BP, ISO-ANSI, FPK
  74. ****************************************************************************
  75. This is how the IFDEF and UNDEF statements below should translate.
  76. PLATFORM SYSTEM COMPILER COMP ID CPU MODE BITS ASSEMBLER
  77. -------- ------ -------- ------- -------- ---- ---------
  78. DOS OS_DOS BP/TP7 PPC_BP PROC_Real BIT_16 ASM_BP
  79. DPMI OS_DOS BP/TP7 PPC_BP PROC_Protected BIT_16 ASM_BP
  80. FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
  81. LINUX OS_LINUX FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
  82. LINUX OS_LINUX FPC PPC_FPC PROC_Protected BIT_64 ASM_FPC
  83. OS_UNIX
  84. FREEBSD OS_FREEBSD FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
  85. FREEBSD OS_FREEBSD FPC PPC_FPC PROC_Protected BIT_64 ASM_FPC
  86. OS_UNIX
  87. DRAGONFLY OS_DRAGONFLYBSD FPC PPC_FPC PROC_Protected BIT_64 ASM_FPC
  88. OS_UNIX
  89. OPENBSD OS_OPENBSD FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
  90. OS_UNIX
  91. NETBSD OS_NETBSD FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
  92. OS_UNIX
  93. WINDOWS OS_WINDOWS BP/TP7 PPC_BP PROC_Protected BIT_16 ASM_BP
  94. DELPHI PPC_DELPHI PROC_Protected BIT_16 ASM_BP
  95. DELPHI2 PPC_DELPHI2 PROC_Protected BIT_16 ASM_BP
  96. OS_WIN16 FPC PPC_FPC PROC_Protected BIT_16 ASM_FPC
  97. WIN95/NT OS_WINDOWS DELPHI2 PPC_DELPHI2 PROC_Protected BIT_32 ASM_BP
  98. DELPHI3 PPC_DELPHI3 PROC_Protected BIT_32 ASM_BP
  99. DELPHI4 PPC_DELPHI3 PROC_Protected BIT_32 ASM_BP
  100. DELPHI5 PPC_DELPHI3 PROC_Protected BIT_32 ASM_BP
  101. VIRTUAL PPC_VIRTUAL PROC_Protected BIT 32 ASM_BP
  102. SYBIL2 PPC_SPEED PROC_Protected BIT_32 ASM_BP
  103. FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
  104. WINDOWS 64-BITS FPC PPC_FPC PROC_Protected BIT_64 ASM_FPC
  105. OS2 OS_OS2 BPOS2 PPC_BPOS2 PROC_Protected BIT_16 ASM_BP
  106. VIRTUAL PPC_VIRTUAL PROC_Protected BIT_32 ASM_BP
  107. SPEED PPC_SPEED PROC_Protected BIT_32 ASM_BP
  108. SYBIL2 PPC_SPEED PROC_Protected BIT_32 ASM_BP
  109. FPC PPC_FPC PROC_Protected BIT_32 ASM_FPC
  110. ****************************************************************************}
  111. {****************************************************************************
  112. FOR ALL COMPILERS BP_VMTLink defined but FPC and Delphi3/Delphi4 undefine it
  113. ****************************************************************************}
  114. {****************************************************************************
  115. FOR FPC THESE ARE THE TRANSLATIONS
  116. PLATFORM SYSTEM COMPILER HANDLE SIZE ASM CPU
  117. -------- ------ -------- ----------- ---- ---
  118. DOS OS_DOS,OS_GO32 FPC 32-bit AT&T CPU86
  119. WIN16 OS_WIN16 FPC 16-bit Intel CPU86
  120. WIN32 OS_WINDOWS FPC 32-bit AT&T ----
  121. LINUX OS_LINUX,OS_UNIX FPC 32-bit AT&T ----
  122. FREEBSD OS_FREEBSD,OS_UNIX FPC 32-bit AT&T ----
  123. OPENBSD OS_OPENBSD,OS_UNIX FPC 32-bit AT&T ----
  124. NETBSD OS_NETBSD,OS_UNIX FPC 32-bit AT&T ----
  125. OS2 OS_OS2 FPC ????? AT&T CPU86
  126. ATARI OS_ATARI FPC 32-bit Internal CPU68
  127. MACOS OS_MAC FPC ????? Internal CPU68
  128. AMIGA OS_AMIGA FPC 32-bit Internal CPU68
  129. DRAGONFLY OS_DRAGONFLYBSD,OS_UNIX FPC 32-bit AT&T ----
  130. ****************************************************************************}
  131. {---------------------------------------------------------------------------}
  132. { Initial assume BORLAND 16 BIT DOS COMPILER - Updated 27Aug98 LdB }
  133. {---------------------------------------------------------------------------}
  134. {$DEFINE OS_DOS}
  135. {$DEFINE PROC_Real}
  136. {$DEFINE BIT_16}
  137. {$DEFINE PPC_BP}
  138. {$DEFINE ASM_BP}
  139. {$DEFINE BP_VMTLink}
  140. {$DEFINE CPU86}
  141. {---------------------------------------------------------------------------}
  142. { FPC 32 BIT COMPILER changes ASM, 32 bits etc - Updated 27Aug98 LdB }
  143. { FPC 64 BIT COMPILER added - Update 28Nov2010 PM }
  144. {---------------------------------------------------------------------------}
  145. {$IFDEF FPC}
  146. {$mode fpc}
  147. {$UNDEF PROC_Real}
  148. {$DEFINE PROC_Protected}
  149. {$IFNDEF CPU16}
  150. {$UNDEF BIT_16}
  151. {$IFDEF CPU64}
  152. {$UNDEF BIT_32}
  153. {$DEFINE BIT_64}
  154. {$ELSE}
  155. {$DEFINE BIT_32}
  156. {$UNDEF BIT_64}
  157. {$ENDIF}
  158. {$ENDIF}
  159. {$UNDEF PPC_BP}
  160. {$DEFINE PPC_FPC}
  161. {$UNDEF ASM_BP}
  162. {$DEFINE ASM_FPC}
  163. {$UNDEF BP_VMTLink}
  164. {$DEFINE Use_API}
  165. {$DEFINE NO_WINDOW}
  166. {$ENDIF}
  167. {---------------------------------------------------------------------------}
  168. { FPC LINUX COMPILER changes operating system - Updated 27Aug98 LdB }
  169. { Note: Other linux compilers would need to change other details }
  170. {---------------------------------------------------------------------------}
  171. {$IFDEF LINUX}
  172. {$UNDEF OS_DOS}
  173. {$DEFINE OS_LINUX}
  174. {$DEFINE OS_UNIX}{$ENDIF}
  175. {$IFDEF FreeBSD}
  176. {$UNDEF OS_DOS}
  177. {$DEFINE OS_FREEBSD}
  178. {$DEFINE OS_UNIX}
  179. {$ENDIF}
  180. {$IFDEF DRAGONFLY}
  181. {$UNDEF OS_DOS}
  182. {$DEFINE OS_DRAGONFLYBSD}
  183. {$DEFINE OS_UNIX}
  184. {$ENDIF}
  185. {$IFDEF OPENBSD}
  186. {$UNDEF OS_DOS}
  187. {$DEFINE OS_OPENBSD}
  188. {$DEFINE OS_UNIX}
  189. {$ENDIF}
  190. {$IFDEF NETBSD}
  191. {$UNDEF OS_DOS}
  192. {$DEFINE OS_NETBSD}
  193. {$DEFINE OS_UNIX}
  194. {$ENDIF}
  195. {$IFDEF Darwin}
  196. {$UNDEF OS_DOS}
  197. {$DEFINE OS_DARWIN}
  198. {$DEFINE OS_UNIX}
  199. {$ENDIF}
  200. {$IFDEF SOLARIS}
  201. {$UNDEF OS_DOS}
  202. {$DEFINE OS_SOLARIS}
  203. {$DEFINE OS_UNIX}
  204. {$ENDIF}
  205. {$IFDEF BEOS}
  206. {$UNDEF OS_DOS}
  207. {$DEFINE OS_BEOS}
  208. {$DEFINE OS_UNIX}
  209. {$ENDIF}
  210. {$IFDEF AIX}
  211. {$UNDEF OS_DOS}
  212. {$DEFINE OS_AIX}
  213. {$DEFINE OS_UNIX}
  214. {$ENDIF}
  215. {------------------------------------------------}
  216. { FPC Netware COMPILER changes operating system }
  217. {------------------------------------------------}
  218. {$IFDEF Netware}
  219. {$UNDEF OS_DOS}
  220. {$DEFINE OS_NETWARE}
  221. {$IFDEF NETWARE_LIBC}
  222. {$DEFINE OS_NETWARE_LIBC}
  223. {$ELSE}
  224. {$DEFINE OS_NETWARE_CLIB}
  225. {$ENDIF}
  226. {$DEFINE HasSysMsgUnit}
  227. {$ENDIF}
  228. {---------------------------------------------------------------------------}
  229. { FPC GO32V2 COMPILER changes operating system - Updated 27Aug98 LdB }
  230. {---------------------------------------------------------------------------}
  231. {$IFDEF GO32V2}
  232. {$DEFINE OS_GO32}
  233. {$ENDIF}
  234. {---------------------------------------------------------------------------}
  235. { FPC high level COMPILER needs nested procvars }
  236. {---------------------------------------------------------------------------}
  237. {$IFDEF CPULLVM}
  238. {$DEFINE TYPED_LOCAL_CALLBACKS}
  239. {$ENDIF}
  240. {$IFDEF TYPED_LOCAL_CALLBACKS}
  241. {$MODESWITCH NESTEDPROCVARS}
  242. {$ENDIF}
  243. {---------------------------------------------------------------------------}
  244. { 32 BIT WINDOWS COMPILERS changes bit size - Updated 27Aug98 LdB }
  245. {---------------------------------------------------------------------------}
  246. {$IFDEF WIN32}
  247. {$IFNDEF WINDOWS}
  248. {$DEFINE WINDOWS}
  249. {$ENDIF}
  250. {$UNDEF BIT_16}
  251. {$DEFINE BIT_32}
  252. {$ENDIF}
  253. {---------------------------------------------------------------------------}
  254. { 64 BIT WINDOWS COMPILERS changes bit size - Updated 28Nov10 PM }
  255. {---------------------------------------------------------------------------}
  256. {$IFDEF WIN64}
  257. {$IFNDEF WINDOWS}
  258. {$DEFINE WINDOWS}
  259. {$ENDIF}
  260. {$UNDEF BIT_16}
  261. {$UNDEF BIT_32}
  262. {$DEFINE BIT_64}
  263. {$ENDIF}
  264. {---------------------------------------------------------------------------}
  265. { WINDOWS COMPILERS change op system and proc mode - Updated 03Nov99 LdB }
  266. {---------------------------------------------------------------------------}
  267. {$IFDEF WINDOWS}
  268. {$UNDEF OS_DOS}
  269. {$DEFINE OS_WINDOWS}
  270. {$UNDEF PROC_Real}
  271. {$DEFINE PROC_Protected}
  272. {$IFDEF FPC}
  273. {$IFDEF WIN16}
  274. {$UNDEF OS_WINDOWS}
  275. {$DEFINE OS_WIN16}
  276. {$ENDIF}
  277. // {$DEFINE WIN32}
  278. {$ENDIF}
  279. {$ENDIF}
  280. {---------------------------------------------------------------------------}
  281. { DELPHI1 COMPILER changes compiler type - Updated 27Aug98 LdB }
  282. {---------------------------------------------------------------------------}
  283. {$IFDEF VER80}
  284. {$UNDEF PPC_BP}
  285. {$DEFINE PPC_DELPHI}
  286. {$ENDIF}
  287. {---------------------------------------------------------------------------}
  288. { DELPHI2 COMPILER changes compiler type - Updated 27Aug98 LdB }
  289. {---------------------------------------------------------------------------}
  290. {$IFDEF VER90}
  291. {$UNDEF PPC_BP}
  292. {$DEFINE PPC_DELPHI}
  293. {$DEFINE PPC_DELPHI2}
  294. {$ENDIF}
  295. {---------------------------------------------------------------------------}
  296. { DELPHI3 COMPILER changes compiler type - Updated 27Aug98 LdB }
  297. {---------------------------------------------------------------------------}
  298. {$IFDEF VER100}
  299. {$UNDEF PPC_BP}
  300. {$DEFINE PPC_DELPHI}
  301. {$DEFINE PPC_DELPHI3}
  302. {$UNDEF BP_VMTLink}
  303. {$ENDIF}
  304. {---------------------------------------------------------------------------}
  305. { DELPHI4 COMPILER changes compiler type - Updated 25Oct98 pfv }
  306. {---------------------------------------------------------------------------}
  307. {$IFDEF VER120}
  308. {$UNDEF PPC_BP}
  309. {$DEFINE PPC_DELPHI}
  310. {$DEFINE PPC_DELPHI3}
  311. {$DEFINE PPC_DELPHI4}
  312. {$UNDEF BP_VMTLink}
  313. {$ENDIF}
  314. {---------------------------------------------------------------------------}
  315. { DELPHI5 COMPILER changes compiler type - Updated 04Nov99 pfv }
  316. {---------------------------------------------------------------------------}
  317. {$IFDEF VER130}
  318. {$UNDEF PPC_BP}
  319. {$DEFINE PPC_DELPHI}
  320. {$DEFINE PPC_DELPHI3}
  321. {$DEFINE PPC_DELPHI4}
  322. {$DEFINE PPC_DELPHI5}
  323. {$UNDEF BP_VMTLink
  324. }
  325. {$ENDIF}
  326. {---------------------------------------------------------------------------}
  327. { OS2 COMPILERS change compiler type and mode - Updated 27Aug98 LdB }
  328. { Note: Assumes BPOS2 16BIT OS2 patch except for FPC which undefines this }
  329. {---------------------------------------------------------------------------}
  330. {$IFDEF OS2}
  331. {$UNDEF OS_DOS}
  332. {$DEFINE OS_OS2}
  333. {$UNDEF PROC_Real}
  334. {$DEFINE PROC_Protected}
  335. {$UNDEF PPC_BP}
  336. {$DEFINE PPC_BPOS2}
  337. {$IFDEF FPC}
  338. {$UNDEF PPC_BPOS2}
  339. {$ENDIF}
  340. {$ENDIF}
  341. {---------------------------------------------------------------------------}
  342. { VIRTUAL PASCAL changes compiler type/32 bit - Updated 27Aug98 LdB }
  343. { Note: VP2 can compile win 32 code so changes op system as needed }
  344. {---------------------------------------------------------------------------}
  345. {$IFDEF VirtualPascal}
  346. {$UNDEF BIT_16}
  347. {$DEFINE BIT_32}
  348. {$IFDEF PPC_BPOS2}
  349. {$UNDEF PPC_BPOS2}
  350. {$ENDIF}
  351. {$DEFINE PPC_VIRTUAL}
  352. {$IFDEF WIN32}
  353. {$UNDEF PPC_BP}
  354. {$UNDEF OS_OS2}
  355. {$DEFINE OS_WINDOWS}
  356. {$ENDIF}
  357. {$ENDIF}
  358. {---------------------------------------------------------------------------}
  359. { SPEED COMPILER changes compiler type/32 bit - Updated 27Aug98 LdB }
  360. {---------------------------------------------------------------------------}
  361. {$IFDEF Speed}
  362. {$UNDEF BIT_16}
  363. {$DEFINE BIT_32}
  364. {$UNDEF PPC_BPOS2}
  365. {$DEFINE PPC_SPEED}
  366. {$UNDEF BP_VMTLink}
  367. {$ENDIF}
  368. {---------------------------------------------------------------------------}
  369. { FPC AMIGA COMPILER changes op system and CPU type - Updated 27Aug98 LdB }
  370. {---------------------------------------------------------------------------}
  371. {$IFDEF AMIGA}
  372. {$UNDEF OS_DOS}
  373. {$DEFINE OS_AMIGA}
  374. {$IFDEF CPU86}
  375. {$UNDEF CPU86}
  376. {$ENDIF}
  377. {$IFNDEF CPU68}
  378. {$DEFINE CPU68}
  379. {$ENDIF}
  380. {$ENDIF}
  381. { MorphOS has AmigaOS API, so define OS_AMIGA }
  382. {$IFDEF MORPHOS}
  383. {$UNDEF OS_DOS}
  384. {$DEFINE OS_AMIGA}
  385. {$IFDEF CPU86}
  386. {$UNDEF CPU86}
  387. {$ENDIF}
  388. {$IFNDEF CPUPPC}
  389. {$DEFINE CPUPPC}
  390. {$ENDIF}
  391. {$ENDIF}
  392. { AROS has AmigaOS API, so define OS_AMIGA }
  393. {$IFDEF AROS}
  394. {$UNDEF OS_DOS}
  395. {$DEFINE OS_AMIGA}
  396. {$ENDIF}
  397. {---------------------------------------------------------------------------}
  398. { FPC ATARI COMPILER changes op system and CPU type - Updated 27Aug98 LdB }
  399. {---------------------------------------------------------------------------}
  400. {$IFDEF ATARI}
  401. {$UNDEF OS_DOS}
  402. {$DEFINE OS_ATARI}
  403. {$IFDEF CPU86}
  404. {$UNDEF CPU86}
  405. {$ENDIF}
  406. {$IFNDEF CPU68}
  407. {$DEFINE CPU68}
  408. {$ENDIF}
  409. {$ENDIF}
  410. {---------------------------------------------------------------------------}
  411. { FPC MAC COMPILER changes op system and CPU type - Updated 27Aug98 LdB }
  412. {---------------------------------------------------------------------------}
  413. {$IFDEF MACOS}
  414. {$UNDEF OS_DOS}
  415. {$DEFINE OS_MAC}
  416. {$IFDEF CPU86}
  417. {$UNDEF CPU86}
  418. {$ENDIF}
  419. {$IFNDEF CPU68}
  420. {$DEFINE CPU68}
  421. {$ENDIF}
  422. {$ENDIF}
  423. {$IFDEF OS_DOS}
  424. {$DEFINE NO_WINDOW}
  425. {$ENDIF}
  426. {---------------------------------------------------------------------------}
  427. { WIN16 AND WIN32 set if in windows - Updated 16Oct2000 LdB }
  428. { WIN64 added - Update 28Nov2010 PM }
  429. {---------------------------------------------------------------------------}
  430. {$IFDEF OS_WINDOWS} { WINDOWS SYSTEM }
  431. {$IFDEF BIT_16}
  432. {$DEFINE WIN16} { 16 BIT WINDOWS }
  433. {$ENDIF}
  434. {$IFDEF BIT_32}
  435. {$DEFINE WIN32} { 32 BIT WINDOWS }
  436. {$ENDIF}
  437. {$IFDEF BIT_64}
  438. {$DEFINE WIN64} { 64 BIT WINDOWS }
  439. {$ENDIF}
  440. {$ENDIF}
  441. {---------------------------------------------------------------------------}
  442. { BIT_32_OR_MORE }
  443. {---------------------------------------------------------------------------}
  444. {$ifdef BIT_16}
  445. {$UNDEF BIT_32_OR_MORE}
  446. {$ELSE}
  447. {$DEFINE BIT_32_OR_MORE}
  448. {$ENDIF}
  449. {---------------------------------------------------------------------------}
  450. { FPC memory models }
  451. {---------------------------------------------------------------------------}
  452. {$ifdef FPC}
  453. {$ifdef CPUI8086}
  454. {$if defined(FPC_MM_TINY)}
  455. {$define FPC_X86_CODE_NEAR}
  456. {$define FPC_X86_DATA_NEAR}
  457. {$elseif defined(FPC_MM_SMALL)}
  458. {$define FPC_X86_CODE_NEAR}
  459. {$define FPC_X86_DATA_NEAR}
  460. {$elseif defined(FPC_MM_MEDIUM)}
  461. {$define FPC_X86_CODE_FAR}
  462. {$define FPC_X86_DATA_NEAR}
  463. {$elseif defined(FPC_MM_COMPACT)}
  464. {$define FPC_X86_CODE_NEAR}
  465. {$define FPC_X86_DATA_FAR}
  466. {$elseif defined(FPC_MM_LARGE)}
  467. {$define FPC_X86_CODE_FAR}
  468. {$define FPC_X86_DATA_FAR}
  469. {$elseif defined(FPC_MM_HUGE)}
  470. {$define FPC_X86_CODE_FAR}
  471. {$define FPC_X86_DATA_HUGE}
  472. {$else}
  473. {$fatal No memory model defined}
  474. {$endif}
  475. {$endif}
  476. {$endif}