GR32_Compiler.inc 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794
  1. (* ***** BEGIN LICENSE BLOCK *****
  2. * Version: MPL 1.1 or LGPL 2.1 with linking exception
  3. *
  4. * The contents of this file are subject to the Mozilla Public License Version
  5. * 1.1 (the "License"); you may not use this file except in compliance with
  6. * the License. You may obtain a copy of the License at
  7. * http://www.mozilla.org/MPL/
  8. *
  9. * Software distributed under the License is distributed on an "AS IS" basis,
  10. * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11. * for the specific language governing rights and limitations under the
  12. * License.
  13. *
  14. * Alternatively, the contents of this file may be used under the terms of the
  15. * Free Pascal modified version of the GNU Lesser General Public License
  16. * Version 2.1 (the "FPC modified LGPL License"), in which case the provisions
  17. * of this license are applicable instead of those above.
  18. * Please see the file LICENSE.txt for additional information concerning this
  19. * license.
  20. *
  21. * The Original Code is Graphics32
  22. *
  23. * The Initial Developer of the Original Code is
  24. * Alex A. Denisov
  25. *
  26. * Portions created by the Initial Developer are Copyright (C) 2000-2009
  27. * the Initial Developer. All Rights Reserved.
  28. *
  29. * Contributor(s):
  30. * Andre Beckedorf <[email protected]>
  31. * Michael Hansen <[email protected]>
  32. * Christian Budde <[email protected]>
  33. *
  34. * ***** END LICENSE BLOCK ***** *)
  35. (*
  36. Available Compilers:
  37. --------------------
  38. COMPILERFPC - FPC (since version 2.6.0)
  39. COMPILER6 - Delphi 6
  40. COMPILER7 - Delphi 7
  41. COMPILER2005 - Delphi 2005
  42. COMPILER2006 - Delphi 2006 / BDS 2006
  43. COMPILER2007 - Delphi / RAD Studio 2007
  44. COMPILER2009 - Delphi 2009
  45. COMPILER2010 - Delphi 2010
  46. COMPILERXE1 - Delphi XE
  47. COMPILERXE2 - Delphi XE2
  48. COMPILERXE3 - Delphi XE3
  49. COMPILERXE4 - Delphi XE4
  50. COMPILERXE5 - Delphi XE5
  51. COMPILERXE6 - Delphi XE6
  52. COMPILERXE7 - Delphi XE7
  53. COMPILERXE8 - Delphi XE8
  54. COMPILERRX - Delphi RX
  55. COMPILERRX1 - Delphi RX1
  56. COMPILERRX2 - Delphi RX2 (10.2 Tokyo)
  57. Available Targets:
  58. ------------------
  59. TARGET_x86 - x86 (32-Bit)
  60. TARGET_x64 - x86 (64-Bit)
  61. TARGET_POWERPC - Power PC
  62. *)
  63. {$IFDEF FPC}
  64. {$DEFINE COMPILERFPC}
  65. {$ENDIF}
  66. {$IFDEF VER_LATEST} // adjust for newer version (always use latest version)
  67. {$DEFINE COMPILERRX2}
  68. {$IFNDEF BCB}
  69. {$DEFINE DELPHIRX2}
  70. {$ELSE}
  71. {$DEFINE BCBRX2}
  72. {$ENDIF}
  73. {$UNDEF VER_LATEST}
  74. {$ENDIF}
  75. {$IFDEF VER320}
  76. {$DEFINE COMPILERRX2}
  77. {$IFNDEF BCB}
  78. {$DEFINE DELPHIRX2}
  79. {$ELSE}
  80. {$DEFINE BCBRX2}
  81. {$ENDIF}
  82. {$ENDIF}
  83. {$IFDEF VER310}
  84. {$DEFINE COMPILERRX1}
  85. {$IFNDEF BCB}
  86. {$DEFINE DELPHIRX1}
  87. {$ELSE}
  88. {$DEFINE BCBRX1}
  89. {$ENDIF}
  90. {$ENDIF}
  91. {$IFDEF VER300}
  92. {$DEFINE COMPILERRX}
  93. {$IFNDEF BCB}
  94. {$DEFINE DELPHIRX}
  95. {$ELSE}
  96. {$DEFINE BCBRX}
  97. {$ENDIF}
  98. {$ENDIF}
  99. {$IFDEF VER290}
  100. {$DEFINE COMPILERXE8}
  101. {$IFNDEF BCB}
  102. {$DEFINE DELPHIXE8}
  103. {$ELSE}
  104. {$DEFINE BCBXE8}
  105. {$ENDIF}
  106. {$ENDIF}
  107. {$IFDEF VER280}
  108. {$DEFINE COMPILERXE7}
  109. {$IFNDEF BCB}
  110. {$DEFINE DELPHIXE7}
  111. {$ELSE}
  112. {$DEFINE BCBXE7}
  113. {$ENDIF}
  114. {$ENDIF}
  115. {$IFDEF VER270}
  116. {$DEFINE COMPILERXE6}
  117. {$IFNDEF BCB}
  118. {$DEFINE DELPHIXE6}
  119. {$ELSE}
  120. {$DEFINE BCBXE6}
  121. {$ENDIF}
  122. {$ENDIF}
  123. {$IFDEF VER260}
  124. {$DEFINE COMPILERXE5}
  125. {$IFNDEF BCB}
  126. {$DEFINE DELPHIXE5}
  127. {$ELSE}
  128. {$DEFINE BCBXE5}
  129. {$ENDIF}
  130. {$ENDIF}
  131. {$IFDEF VER250}
  132. {$DEFINE COMPILERXE4}
  133. {$IFNDEF BCB}
  134. {$DEFINE DELPHIXE4}
  135. {$ELSE}
  136. {$DEFINE BCBXE4}
  137. {$ENDIF}
  138. {$ENDIF}
  139. {$IFDEF VER240}
  140. {$DEFINE COMPILERXE3}
  141. {$IFNDEF BCB}
  142. {$DEFINE DELPHIXE3}
  143. {$ELSE}
  144. {$DEFINE BCBXE3}
  145. {$ENDIF}
  146. {$ENDIF}
  147. {$IFDEF VER230}
  148. {$DEFINE COMPILERXE2}
  149. {$IFNDEF BCB}
  150. {$DEFINE DELPHIXE2}
  151. {$ELSE}
  152. {$DEFINE BCBXE2}
  153. {$ENDIF}
  154. {$ENDIF}
  155. {$IFDEF VER220}
  156. {$DEFINE COMPILERXE1}
  157. {$IFNDEF BCB}
  158. {$DEFINE DELPHIXE1}
  159. {$ELSE}
  160. {$DEFINE BCBXE1}
  161. {$ENDIF}
  162. {$ENDIF}
  163. {$IFDEF VER210}
  164. {$DEFINE COMPILER2010}
  165. {$IFNDEF BCB}
  166. {$DEFINE DELPHI2010}
  167. {$ELSE}
  168. {$DEFINE BCB14}
  169. {$ENDIF}
  170. {$ENDIF}
  171. {$IFDEF VER200}
  172. {$DEFINE COMPILER2009}
  173. {$IFNDEF BCB}
  174. {$DEFINE DELPHI2009}
  175. {$ELSE}
  176. {$DEFINE BCB12}
  177. {$ENDIF}
  178. {$ENDIF}
  179. {$IFDEF VER185}
  180. {$DEFINE COMPILER2007}
  181. {$IFNDEF BCB}
  182. {$DEFINE DELPHI2007}
  183. {$ELSE}
  184. {$DEFINE BCB11}
  185. {$ENDIF}
  186. {$ENDIF}
  187. {$IFDEF VER180}
  188. {$DEFINE COMPILER2006}
  189. {$IFNDEF BCB}
  190. {$DEFINE DELPHI2006}
  191. {$ELSE}
  192. {$DEFINE BCB10}
  193. {$ENDIF}
  194. {$ENDIF}
  195. {$IFDEF VER170}
  196. {$DEFINE COMPILER2005}
  197. {$IFNDEF BCB}
  198. {$DEFINE DELPHI2005}
  199. {$ELSE}
  200. {$DEFINE BCB8}
  201. {$ENDIF}
  202. {$ENDIF}
  203. {$IFDEF VER150}
  204. {$DEFINE COMPILER7}
  205. {$IFNDEF BCB}
  206. {$DEFINE DELPHI7}
  207. {$ELSE}
  208. {$DEFINE BCB7}
  209. {$ENDIF}
  210. {$ENDIF}
  211. {$IFDEF VER140}
  212. {$DEFINE COMPILER6}
  213. {$IFNDEF BCB}
  214. {$DEFINE DELPHI6}
  215. {$ELSE}
  216. {$DEFINE BCB6}
  217. {$ENDIF}
  218. {$ENDIF}
  219. {$IFDEF COMPILERRX2}
  220. {$DEFINE COMPILERRX2_UP}
  221. {$DEFINE COMPILERRX1_UP}
  222. {$DEFINE COMPILERRX_UP}
  223. {$DEFINE COMPILERXE8_UP}
  224. {$DEFINE COMPILERXE7_UP}
  225. {$DEFINE COMPILERXE6_UP}
  226. {$DEFINE COMPILERXE5_UP}
  227. {$DEFINE COMPILERXE4_UP}
  228. {$DEFINE COMPILERXE3_UP}
  229. {$DEFINE COMPILERXE2_UP}
  230. {$DEFINE COMPILERXE1_UP}
  231. {$DEFINE COMPILER2010_UP}
  232. {$DEFINE COMPILER2009_UP}
  233. {$DEFINE COMPILER2007_UP}
  234. {$DEFINE COMPILER2006_UP}
  235. {$DEFINE COMPILER2005_UP}
  236. {$DEFINE COMPILER7_UP}
  237. {$DEFINE COMPILER6_UP}
  238. {$ENDIF}
  239. {$IFDEF COMPILERRX1}
  240. {$DEFINE COMPILERRX1_UP}
  241. {$DEFINE COMPILERRX_UP}
  242. {$DEFINE COMPILERXE8_UP}
  243. {$DEFINE COMPILERXE7_UP}
  244. {$DEFINE COMPILERXE6_UP}
  245. {$DEFINE COMPILERXE5_UP}
  246. {$DEFINE COMPILERXE4_UP}
  247. {$DEFINE COMPILERXE3_UP}
  248. {$DEFINE COMPILERXE2_UP}
  249. {$DEFINE COMPILERXE1_UP}
  250. {$DEFINE COMPILER2010_UP}
  251. {$DEFINE COMPILER2009_UP}
  252. {$DEFINE COMPILER2007_UP}
  253. {$DEFINE COMPILER2006_UP}
  254. {$DEFINE COMPILER2005_UP}
  255. {$DEFINE COMPILER7_UP}
  256. {$DEFINE COMPILER6_UP}
  257. {$ENDIF}
  258. {$IFDEF COMPILERRX}
  259. {$DEFINE COMPILERRX_UP}
  260. {$DEFINE COMPILERXE8_UP}
  261. {$DEFINE COMPILERXE7_UP}
  262. {$DEFINE COMPILERXE6_UP}
  263. {$DEFINE COMPILERXE5_UP}
  264. {$DEFINE COMPILERXE4_UP}
  265. {$DEFINE COMPILERXE3_UP}
  266. {$DEFINE COMPILERXE2_UP}
  267. {$DEFINE COMPILERXE1_UP}
  268. {$DEFINE COMPILER2010_UP}
  269. {$DEFINE COMPILER2009_UP}
  270. {$DEFINE COMPILER2007_UP}
  271. {$DEFINE COMPILER2006_UP}
  272. {$DEFINE COMPILER2005_UP}
  273. {$DEFINE COMPILER7_UP}
  274. {$DEFINE COMPILER6_UP}
  275. {$ENDIF}
  276. {$IFDEF COMPILERXE8}
  277. {$DEFINE COMPILERXE8_UP}
  278. {$DEFINE COMPILERXE7_UP}
  279. {$DEFINE COMPILERXE6_UP}
  280. {$DEFINE COMPILERXE5_UP}
  281. {$DEFINE COMPILERXE4_UP}
  282. {$DEFINE COMPILERXE3_UP}
  283. {$DEFINE COMPILERXE2_UP}
  284. {$DEFINE COMPILERXE1_UP}
  285. {$DEFINE COMPILER2010_UP}
  286. {$DEFINE COMPILER2009_UP}
  287. {$DEFINE COMPILER2007_UP}
  288. {$DEFINE COMPILER2006_UP}
  289. {$DEFINE COMPILER2005_UP}
  290. {$DEFINE COMPILER7_UP}
  291. {$DEFINE COMPILER6_UP}
  292. {$ENDIF}
  293. {$IFDEF COMPILERXE7}
  294. {$DEFINE COMPILERXE7_UP}
  295. {$DEFINE COMPILERXE6_UP}
  296. {$DEFINE COMPILERXE5_UP}
  297. {$DEFINE COMPILERXE4_UP}
  298. {$DEFINE COMPILERXE3_UP}
  299. {$DEFINE COMPILERXE2_UP}
  300. {$DEFINE COMPILERXE1_UP}
  301. {$DEFINE COMPILER2010_UP}
  302. {$DEFINE COMPILER2009_UP}
  303. {$DEFINE COMPILER2007_UP}
  304. {$DEFINE COMPILER2006_UP}
  305. {$DEFINE COMPILER2005_UP}
  306. {$DEFINE COMPILER7_UP}
  307. {$DEFINE COMPILER6_UP}
  308. {$ENDIF}
  309. {$IFDEF COMPILERXE6}
  310. {$DEFINE COMPILERXE6_UP}
  311. {$DEFINE COMPILERXE5_UP}
  312. {$DEFINE COMPILERXE4_UP}
  313. {$DEFINE COMPILERXE3_UP}
  314. {$DEFINE COMPILERXE2_UP}
  315. {$DEFINE COMPILERXE1_UP}
  316. {$DEFINE COMPILER2010_UP}
  317. {$DEFINE COMPILER2009_UP}
  318. {$DEFINE COMPILER2007_UP}
  319. {$DEFINE COMPILER2006_UP}
  320. {$DEFINE COMPILER2005_UP}
  321. {$DEFINE COMPILER7_UP}
  322. {$DEFINE COMPILER6_UP}
  323. {$ENDIF}
  324. {$IFDEF COMPILERXE5}
  325. {$DEFINE COMPILERXE5_UP}
  326. {$DEFINE COMPILERXE4_UP}
  327. {$DEFINE COMPILERXE3_UP}
  328. {$DEFINE COMPILERXE2_UP}
  329. {$DEFINE COMPILERXE1_UP}
  330. {$DEFINE COMPILER2010_UP}
  331. {$DEFINE COMPILER2009_UP}
  332. {$DEFINE COMPILER2007_UP}
  333. {$DEFINE COMPILER2006_UP}
  334. {$DEFINE COMPILER2005_UP}
  335. {$DEFINE COMPILER7_UP}
  336. {$DEFINE COMPILER6_UP}
  337. {$ENDIF}
  338. {$IFDEF COMPILERXE4}
  339. {$DEFINE COMPILERXE4_UP}
  340. {$DEFINE COMPILERXE3_UP}
  341. {$DEFINE COMPILERXE2_UP}
  342. {$DEFINE COMPILERXE1_UP}
  343. {$DEFINE COMPILER2010_UP}
  344. {$DEFINE COMPILER2009_UP}
  345. {$DEFINE COMPILER2007_UP}
  346. {$DEFINE COMPILER2006_UP}
  347. {$DEFINE COMPILER2005_UP}
  348. {$DEFINE COMPILER7_UP}
  349. {$DEFINE COMPILER6_UP}
  350. {$ENDIF}
  351. {$IFDEF COMPILERXE3}
  352. {$DEFINE COMPILERXE3_UP}
  353. {$DEFINE COMPILERXE2_UP}
  354. {$DEFINE COMPILERXE1_UP}
  355. {$DEFINE COMPILER2010_UP}
  356. {$DEFINE COMPILER2009_UP}
  357. {$DEFINE COMPILER2007_UP}
  358. {$DEFINE COMPILER2006_UP}
  359. {$DEFINE COMPILER2005_UP}
  360. {$DEFINE COMPILER7_UP}
  361. {$DEFINE COMPILER6_UP}
  362. {$ENDIF}
  363. {$IFDEF COMPILERXE2}
  364. {$DEFINE COMPILERXE2_UP}
  365. {$DEFINE COMPILERXE1_UP}
  366. {$DEFINE COMPILER2010_UP}
  367. {$DEFINE COMPILER2009_UP}
  368. {$DEFINE COMPILER2007_UP}
  369. {$DEFINE COMPILER2006_UP}
  370. {$DEFINE COMPILER2005_UP}
  371. {$DEFINE COMPILER7_UP}
  372. {$DEFINE COMPILER6_UP}
  373. {$ENDIF}
  374. {$IFDEF COMPILERXE1}
  375. {$DEFINE COMPILERXE1_UP}
  376. {$DEFINE COMPILER2010_UP}
  377. {$DEFINE COMPILER2009_UP}
  378. {$DEFINE COMPILER2007_UP}
  379. {$DEFINE COMPILER2006_UP}
  380. {$DEFINE COMPILER2005_UP}
  381. {$DEFINE COMPILER7_UP}
  382. {$DEFINE COMPILER6_UP}
  383. {$ENDIF}
  384. {$IFDEF COMPILER2010}
  385. {$DEFINE COMPILER2010_UP}
  386. {$DEFINE COMPILER2009_UP}
  387. {$DEFINE COMPILER2007_UP}
  388. {$DEFINE COMPILER2006_UP}
  389. {$DEFINE COMPILER2005_UP}
  390. {$DEFINE COMPILER7_UP}
  391. {$DEFINE COMPILER6_UP}
  392. {$ENDIF}
  393. {$IFDEF COMPILER2009}
  394. {$DEFINE COMPILER2009_UP}
  395. {$DEFINE COMPILER2007_UP}
  396. {$DEFINE COMPILER2006_UP}
  397. {$DEFINE COMPILER2005_UP}
  398. {$DEFINE COMPILER7_UP}
  399. {$DEFINE COMPILER6_UP}
  400. {$ENDIF}
  401. {$IFDEF COMPILER2007}
  402. {$DEFINE COMPILER2007_UP}
  403. {$DEFINE COMPILER2006_UP}
  404. {$DEFINE COMPILER2005_UP}
  405. {$DEFINE COMPILER7_UP}
  406. {$DEFINE COMPILER6_UP}
  407. {$ENDIF}
  408. {$IFDEF COMPILER2006}
  409. {$DEFINE COMPILER2006_UP}
  410. {$DEFINE COMPILER2005_UP}
  411. {$DEFINE COMPILER7_UP}
  412. {$DEFINE COMPILER6_UP}
  413. {$ENDIF}
  414. {$IFDEF COMPILER2005}
  415. {$DEFINE COMPILER2005_UP}
  416. {$DEFINE COMPILER7_UP}
  417. {$DEFINE COMPILER6_UP}
  418. {$ENDIF}
  419. {$IFDEF COMPILER7}
  420. {$DEFINE COMPILER7_UP}
  421. {$DEFINE COMPILER6_UP}
  422. {$ENDIF}
  423. {$IFDEF COMPILER6}
  424. {$DEFINE COMPILER6_UP}
  425. {$ENDIF}
  426. {$IFDEF COMPILERFPC}
  427. {$DEFINE PLATFORM_INDEPENDENT}
  428. {$MODE Delphi}
  429. {$ENDIF}
  430. {$IFDEF COMPILERXE2_UP}
  431. {$IFDEF TARGET_x64}
  432. {$EXCESSPRECISION OFF}
  433. {$ENDIF}
  434. {$ENDIF}
  435. {$IFNDEF COMPILER6_UP}
  436. {$IFNDEF COMPILERFPC}
  437. {
  438. +--------------------------------------------------------------------+
  439. | Graphics32 may only be installed to Delphi/C++Builder |
  440. | or Free Pascal / Lazarus |
  441. +--------------------------------------------------------------------+
  442. }
  443. {$ENDIF}
  444. {$ENDIF}
  445. (*
  446. Symbol INLININGSUPPORTED:
  447. -------------------------
  448. In later Delphi versions procedures and functions that do not contain
  449. assembler code can be inlined. This can be extremely useful for calls
  450. to a small portion of code in a loop. However, depending on the instruction
  451. cache size, this may or may not result in a performance boost compared to a
  452. call of assembler optimized code.
  453. *)
  454. {$IFDEF COMPILER2007_UP}
  455. // disabled prior Delphi versions due to a compiler bug
  456. // see (http://qc.embarcadero.com/wc/qcmain.aspx?d=41166)
  457. {$DEFINE INLININGSUPPORTED}
  458. {$ENDIF}
  459. {$IFDEF COMPILERFPC}
  460. {$DEFINE INLININGSUPPORTED}
  461. {$ENDIF}
  462. (*
  463. Symbol TARGET_* :
  464. Defines the processor platform (x86, x64 or PowerPC)
  465. *)
  466. {$IFDEF COMPILERFPC}
  467. // Set up internal CPU target directives according to FPC directives
  468. {$IFDEF CPU386}
  469. {$IFDEF CPUI386}
  470. // target is an Intel 80386 or later.
  471. {$DEFINE TARGET_x86}
  472. {$ASMMODE INTEL}
  473. {$ENDIF}
  474. {$IFDEF CPUX86_64}
  475. // target is a 64-bit processor (AMD or INTEL).
  476. {$DEFINE TARGET_x64}
  477. {$ASMMODE INTEL}
  478. {$ENDIF}
  479. {$IFDEF CPUPOWERPC}
  480. // target is a 32-bit PowerPC or compatible.
  481. // currently only indirect support, added here as example on how to add
  482. // future specific targets
  483. {$DEFINE TARGET_POWERPC}
  484. {$ENDIF}
  485. {$ENDIF}
  486. {$IFDEF CPUX86_64}
  487. // target is a 64-bit processor (AMD or INTEL).
  488. {$DEFINE TARGET_x64}
  489. {$ASMMODE INTEL}
  490. {$ENDIF}
  491. {$IFDEF CPUARM}
  492. // target is an ARM processor.
  493. {$DEFINE TARGET_ARM}
  494. {$ENDIF}
  495. {$ELSE}
  496. // check for XE2 64-Bit compiler define
  497. {$IFDEF CPUX64}
  498. {$DEFINE TARGET_x64}
  499. {$ELSE}
  500. // define default (delphi etc) target (32 bit Intel 80386 or later)
  501. {$DEFINE TARGET_x86}
  502. {$ENDIF}
  503. {$ENDIF}
  504. (*
  505. Symbol BITS_GETTER:
  506. -------------------
  507. *)
  508. {$IFDEF COMPILERFPC}
  509. // Widgetsets other then Windows will want to implement BITS_GETTER
  510. {$IFNDEF LCLWin32}
  511. {$DEFINE BITS_GETTER}
  512. {$ENDIF}
  513. {$ENDIF}
  514. (*
  515. Symbol PUREPASCAL:
  516. ------------------
  517. Forces GR32 into pure pascal mode.
  518. NOTE: Further work needed to make assembly routines FPC compatible.
  519. NOTE: The DARWIN target of Free Pascal generates PIC code by default
  520. Which isn't compatible with the current assembler, so force PUREPASCAL
  521. NOTE: Due to several issues with the Delphi X64 compiler, PUREPASCAL is
  522. defined. However, most of the assembler optimized code does already work.
  523. (for issues please see http://qc.embarcadero.com/wc/qcmain.aspx?d=98616
  524. and http://qc.embarcadero.com/wc/qcmain.aspx?d=98613)
  525. *)
  526. {$IFDEF COMPILERFPC}
  527. {-$DEFINE PUREPASCAL}
  528. {$ENDIF}
  529. {$IFDEF TARGET_x64}
  530. {-$DEFINE PUREPASCAL}
  531. {$ENDIF}
  532. {$IFDEF TARGET_ARM}
  533. {$DEFINE PUREPASCAL}
  534. {$DEFINE OMIT_MMX}
  535. {$DEFINE OMIT_SSE2}
  536. {$ENDIF}
  537. {$IFDEF DARWIN}
  538. {$DEFINE PUREPASCAL}
  539. {$ENDIF}
  540. (*
  541. Symbol BITS_GETTER:
  542. -------------------
  543. *)
  544. {$IFDEF COMPILERFPC}
  545. // Widgetsets other then Windows will want to implement BITS_GETTER
  546. {$IFNDEF LCLWin32}
  547. {$DEFINE BITS_GETTER}
  548. {$ENDIF}
  549. {$ENDIF}
  550. (*
  551. Symbol NATIVE_SINCOS:
  552. ---------------------
  553. Use native FPU function to retrieve SIN/COS values for a given argument
  554. NOTE: On older systems a native call is typically much faster than calling
  555. Sin() and Cos() from a higher level library (such as the math/system unit)
  556. separately. However, on 64-bit systems a call can be slower, due to
  557. additional conversion between XMM registers and the FPU
  558. *)
  559. {$IFDEF PUREPASCAL}
  560. {$DEFINE NATIVE_SINCOS}
  561. {$ENDIF}
  562. {$IFDEF TARGET_x64}
  563. {$DEFINE NATIVE_SINCOS}
  564. {$ENDIF}
  565. (*
  566. Symbol HAS_NATIVEINT:
  567. ---------------------
  568. With the latest compilers (Delphi XE1+ and FPC 2.6.0+) the type NativeInt
  569. is available which has the native size of the OS (32-Bit or 64-Bit). Thus,
  570. it can be used to perform pointer arithmetrics.
  571. NOTE: Please do not use simple Cardinal() or Integer() casts on pointers only
  572. *)
  573. {$IFDEF COMPILERXE1_UP}
  574. {$DEFINE HAS_NATIVEINT}
  575. {$ENDIF}
  576. {$IFDEF FPC}
  577. {$DEFINE HAS_NATIVEINT}
  578. {$ENDIF}
  579. (*
  580. Miscellaneous Defines:
  581. ---------------------- *)
  582. {$IFDEF COMPILER6}
  583. {$DEFINE EXT_PROP_EDIT}
  584. {$ENDIF}
  585. {$IFNDEF COMPILER2010_UP}
  586. {$DEFINE USETHREADRESUME}
  587. {$ENDIF}
  588. {$IFDEF COMPILERFPC}
  589. {$UNDEF USETHREADRESUME}
  590. {$ENDIF}
  591. {$IFDEF LINUX}
  592. {$IFNDEF FPC}
  593. {$DEFINE BITS_GETTER}
  594. {$ENDIF}
  595. {$DEFINE UNIX}
  596. {$ENDIF}
  597. {$IFNDEF FPC}
  598. {$IFNDEF LINUX}
  599. {$DEFINE Windows}
  600. {$ENDIF}
  601. {$ENDIF}
  602. {$R-}{$Q-} // switch off overflow and range checking
  603. {$IFDEF COMPILER6_UP}
  604. {$DEFINE EXT_PROP_EDIT}
  605. {$ENDIF}
  606. {$IFDEF COMPILER2010_UP}
  607. {$DEFINE SUPPORT_ENHANCED_RECORDS}
  608. {$ENDIF}
  609. {$IFNDEF COMPILERFPC}
  610. {$DEFINE SUPPORT_XPTHEMES} // enable support for windows xp themes
  611. {$ENDIF}
  612. (*
  613. Compatibility Symbols
  614. ---------------------
  615. These symbols are deprecated and will be removed in future releases.
  616. *)
  617. {$IFDEF COMPILER6_UP}
  618. {$DEFINE COMPILER6}
  619. {$ENDIF}
  620. {$IFDEF COMPILER7_UP}
  621. {$DEFINE COMPILER7}
  622. {$ENDIF}
  623. {$IFDEF COMPILER2005_UP}
  624. {$DEFINE COMPILER2005}
  625. {$ENDIF}
  626. {$IFDEF COMPILER2006}
  627. {$DEFINE COMPILER2006}
  628. {$ENDIF}
  629. {$IFDEF COMPILER2007_UP}
  630. {$DEFINE COMPILER2007}
  631. {$ENDIF}
  632. {$IFDEF COMPILER2009_UP}
  633. {$DEFINE COMPILER2009}
  634. {$ENDIF}
  635. {$IFDEF COMPILER2010_UP}
  636. {$DEFINE COMPILER2010}
  637. {$ENDIF}
  638. {$IFDEF COMPILERXE1_UP}
  639. {$DEFINE COMPILERXE1}
  640. {$ENDIF}
  641. {$IFDEF COMPILERXE2_UP}
  642. {$DEFINE COMPILERXE2}
  643. {$ENDIF}
  644. {$IFDEF COMPILERXE3_UP}
  645. {$DEFINE COMPILERXE3}
  646. {$ENDIF}
  647. {$IFDEF COMPILERXE4_UP}
  648. {$DEFINE COMPILERXE4}
  649. {$ENDIF}
  650. {$IFDEF COMPILERXE5_UP}
  651. {$DEFINE COMPILERXE5}
  652. {$ENDIF}
  653. {$IFDEF COMPILERXE6_UP}
  654. {$DEFINE COMPILERXE6}
  655. {$ENDIF}
  656. {$IFDEF COMPILERXE7_UP}
  657. {$DEFINE COMPILERXE7}
  658. {$ENDIF}
  659. {$IFDEF COMPILERXE8_UP}
  660. {$DEFINE COMPILERXE8}
  661. {$ENDIF}
  662. {$IFDEF COMPILERRX_UP}
  663. {$DEFINE COMPILERRX8}
  664. {$ENDIF}
  665. {$IFDEF COMPILERRX1_UP}
  666. {$DEFINE COMPILERRX1}
  667. {$ENDIF}
  668. {$IFDEF COMPILERRX2_UP}
  669. {$DEFINE COMPILERRX2}
  670. {$ENDIF}