GR32_Compiler.inc 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662
  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 (10 Seattle)
  55. COMPILERRX1 - Delphi RX1 (10.1 Berlin)
  56. COMPILERRX2 - Delphi RX2 (10.2 Tokyo)
  57. COMPILERRX3 - Delphi RX3 (10.3 Rio)
  58. COMPILERRX4 - Delphi RX4 (10.4 Sydney)
  59. COMPILERRX5 - Delphi 11 (Alexandria)
  60. Available Targets:
  61. ------------------
  62. TARGET_x86 - x86 (32-Bit)
  63. TARGET_x64 - x86 (64-Bit)
  64. TARGET_POWERPC - Power PC
  65. *)
  66. {$IFDEF FPC}
  67. {$DEFINE COMPILERFPC}
  68. {$DEFINE KNOWN_COMPILER}
  69. {$ENDIF}
  70. {$IFDEF VER350}
  71. {$DEFINE COMPILERRX5}
  72. {$DEFINE COMPILERRX5_UP}
  73. {$IFNDEF BCB}
  74. {$DEFINE DELPHIRX5}
  75. {$ELSE}
  76. {$DEFINE BCBRX5}
  77. {$ENDIF}
  78. {$DEFINE KNOWN_COMPILER}
  79. {$ENDIF}
  80. {$IFDEF VER340}
  81. {$DEFINE COMPILERRX4}
  82. {$DEFINE COMPILERRX4_UP}
  83. {$IFNDEF BCB}
  84. {$DEFINE DELPHIRX4}
  85. {$ELSE}
  86. {$DEFINE BCBRX4}
  87. {$ENDIF}
  88. {$DEFINE KNOWN_COMPILER}
  89. {$ENDIF}
  90. {$IFDEF VER330}
  91. {$DEFINE COMPILERRX3}
  92. {$DEFINE COMPILERRX3_UP}
  93. {$IFNDEF BCB}
  94. {$DEFINE DELPHIRX3}
  95. {$ELSE}
  96. {$DEFINE BCBRX3}
  97. {$ENDIF}
  98. {$DEFINE KNOWN_COMPILER}
  99. {$ENDIF}
  100. {$IFDEF VER320}
  101. {$DEFINE COMPILERRX2}
  102. {$DEFINE COMPILERRX2_UP}
  103. {$IFNDEF BCB}
  104. {$DEFINE DELPHIRX2}
  105. {$ELSE}
  106. {$DEFINE BCBRX2}
  107. {$ENDIF}
  108. {$DEFINE KNOWN_COMPILER}
  109. {$ENDIF}
  110. {$IFDEF VER310}
  111. {$DEFINE COMPILERRX1}
  112. {$DEFINE COMPILERRX1_UP}
  113. {$IFNDEF BCB}
  114. {$DEFINE DELPHIRX1}
  115. {$ELSE}
  116. {$DEFINE BCBRX1}
  117. {$ENDIF}
  118. {$DEFINE KNOWN_COMPILER}
  119. {$ENDIF}
  120. {$IFDEF VER300}
  121. {$DEFINE COMPILERRX}
  122. {$DEFINE COMPILERRX_UP}
  123. {$IFNDEF BCB}
  124. {$DEFINE DELPHIRX}
  125. {$ELSE}
  126. {$DEFINE BCBRX}
  127. {$ENDIF}
  128. {$DEFINE KNOWN_COMPILER}
  129. {$ENDIF}
  130. {$IFDEF VER290}
  131. {$DEFINE COMPILERXE8}
  132. {$DEFINE COMPILERXE8_UP}
  133. {$IFNDEF BCB}
  134. {$DEFINE DELPHIXE8}
  135. {$ELSE}
  136. {$DEFINE BCBXE8}
  137. {$ENDIF}
  138. {$DEFINE KNOWN_COMPILER}
  139. {$ENDIF}
  140. {$IFDEF VER280}
  141. {$DEFINE COMPILERXE7}
  142. {$DEFINE COMPILERXE7_UP}
  143. {$IFNDEF BCB}
  144. {$DEFINE DELPHIXE7}
  145. {$ELSE}
  146. {$DEFINE BCBXE7}
  147. {$ENDIF}
  148. {$DEFINE KNOWN_COMPILER}
  149. {$ENDIF}
  150. {$IFDEF VER270}
  151. {$DEFINE COMPILERXE6}
  152. {$DEFINE COMPILERXE6_UP}
  153. {$IFNDEF BCB}
  154. {$DEFINE DELPHIXE6}
  155. {$ELSE}
  156. {$DEFINE BCBXE6}
  157. {$ENDIF}
  158. {$DEFINE KNOWN_COMPILER}
  159. {$ENDIF}
  160. {$IFDEF VER260}
  161. {$DEFINE COMPILERXE5}
  162. {$DEFINE COMPILERXE5_UP}
  163. {$IFNDEF BCB}
  164. {$DEFINE DELPHIXE5}
  165. {$ELSE}
  166. {$DEFINE BCBXE5}
  167. {$ENDIF}
  168. {$DEFINE KNOWN_COMPILER}
  169. {$ENDIF}
  170. {$IFDEF VER250}
  171. {$DEFINE COMPILERXE4}
  172. {$DEFINE COMPILERXE4_UP}
  173. {$IFNDEF BCB}
  174. {$DEFINE DELPHIXE4}
  175. {$ELSE}
  176. {$DEFINE BCBXE4}
  177. {$ENDIF}
  178. {$DEFINE KNOWN_COMPILER}
  179. {$ENDIF}
  180. {$IFDEF VER240}
  181. {$DEFINE COMPILERXE3}
  182. {$DEFINE COMPILERXE3_UP}
  183. {$IFNDEF BCB}
  184. {$DEFINE DELPHIXE3}
  185. {$ELSE}
  186. {$DEFINE BCBXE3}
  187. {$ENDIF}
  188. {$DEFINE KNOWN_COMPILER}
  189. {$ENDIF}
  190. {$IFDEF VER230}
  191. {$DEFINE COMPILERXE2}
  192. {$DEFINE COMPILERXE2_UP}
  193. {$IFNDEF BCB}
  194. {$DEFINE DELPHIXE2}
  195. {$ELSE}
  196. {$DEFINE BCBXE2}
  197. {$ENDIF}
  198. {$DEFINE KNOWN_COMPILER}
  199. {$ENDIF}
  200. {$IFDEF VER220}
  201. {$DEFINE COMPILERXE1}
  202. {$DEFINE COMPILERXE1_UP}
  203. {$IFNDEF BCB}
  204. {$DEFINE DELPHIXE1}
  205. {$ELSE}
  206. {$DEFINE BCBXE1}
  207. {$ENDIF}
  208. {$DEFINE KNOWN_COMPILER}
  209. {$ENDIF}
  210. {$IFDEF VER210}
  211. {$DEFINE COMPILER2010}
  212. {$DEFINE COMPILER2010_UP}
  213. {$IFNDEF BCB}
  214. {$DEFINE DELPHI2010}
  215. {$ELSE}
  216. {$DEFINE BCB14}
  217. {$ENDIF}
  218. {$DEFINE KNOWN_COMPILER}
  219. {$ENDIF}
  220. {$IFDEF VER200}
  221. {$DEFINE COMPILER2009}
  222. {$DEFINE COMPILER2009_UP}
  223. {$IFNDEF BCB}
  224. {$DEFINE DELPHI2009}
  225. {$ELSE}
  226. {$DEFINE BCB12}
  227. {$ENDIF}
  228. {$DEFINE KNOWN_COMPILER}
  229. {$ENDIF}
  230. {$IFDEF VER185}
  231. {$DEFINE COMPILER2007}
  232. {$DEFINE COMPILER2007_UP}
  233. {$IFNDEF BCB}
  234. {$DEFINE DELPHI2007}
  235. {$ELSE}
  236. {$DEFINE BCB11}
  237. {$ENDIF}
  238. {$DEFINE KNOWN_COMPILER}
  239. {$ENDIF}
  240. {$IFDEF VER180}
  241. {$DEFINE COMPILER2006}
  242. {$DEFINE COMPILER2006_UP}
  243. {$IFNDEF BCB}
  244. {$DEFINE DELPHI2006}
  245. {$ELSE}
  246. {$DEFINE BCB10}
  247. {$ENDIF}
  248. {$DEFINE KNOWN_COMPILER}
  249. {$ENDIF}
  250. {$IFDEF VER170}
  251. {$DEFINE COMPILER2005}
  252. {$DEFINE COMPILER2005_UP}
  253. {$IFNDEF BCB}
  254. {$DEFINE DELPHI2005}
  255. {$ELSE}
  256. {$DEFINE BCB8}
  257. {$ENDIF}
  258. {$DEFINE KNOWN_COMPILER}
  259. {$ENDIF}
  260. {$IFDEF VER150}
  261. {$DEFINE COMPILER7}
  262. {$DEFINE COMPILER7_UP}
  263. {$IFNDEF BCB}
  264. {$DEFINE DELPHI7}
  265. {$ELSE}
  266. {$DEFINE BCB7}
  267. {$ENDIF}
  268. {$DEFINE KNOWN_COMPILER}
  269. {$ENDIF}
  270. {$IFDEF VER140}
  271. {$DEFINE COMPILER6}
  272. {$DEFINE COMPILER6_UP}
  273. {$IFNDEF BCB}
  274. {$DEFINE DELPHI6}
  275. {$ELSE}
  276. {$DEFINE BCB6}
  277. {$ENDIF}
  278. {$DEFINE KNOWN_COMPILER}
  279. {$ENDIF}
  280. {$IFNDEF KNOWN_COMPILER}
  281. // Unknown compiler - Assume newer than latest version
  282. {$Message Hint 'Unknown compiler version. Assuming compatible with last known version.'}
  283. // Keep the following updated to match the defines for the last known version.
  284. {$DEFINE COMPILERRX5}
  285. {$DEFINE COMPILERRX5_UP}
  286. {$IFNDEF BCB}
  287. {$DEFINE DELPHIRX5}
  288. {$ELSE}
  289. {$DEFINE BCBRX5}
  290. {$ENDIF}
  291. {$ELSE KNOWN_COMPILER}
  292. {$UNDEF KNOWN_COMPILER}
  293. {$ENDIF KNOWN_COMPILER}
  294. {$IFDEF COMPILERRX5_UP}
  295. {$DEFINE COMPILERRX4_UP}
  296. {$ENDIF}
  297. {$IFDEF COMPILERRX4_UP}
  298. {$DEFINE COMPILERRX3_UP}
  299. {$ENDIF}
  300. {$IFDEF COMPILERRX3_UP}
  301. {$DEFINE COMPILERRX2_UP}
  302. {$ENDIF}
  303. {$IFDEF COMPILERRX2_UP}
  304. {$DEFINE COMPILERRX1_UP}
  305. {$ENDIF}
  306. {$IFDEF COMPILERRX1_UP}
  307. {$DEFINE COMPILERRX_UP}
  308. {$ENDIF}
  309. {$IFDEF COMPILERRX_UP}
  310. {$DEFINE COMPILERXE8_UP}
  311. {$ENDIF}
  312. {$IFDEF COMPILERXE8_UP}
  313. {$DEFINE COMPILERXE7_UP}
  314. {$ENDIF}
  315. {$IFDEF COMPILERXE7_UP}
  316. {$DEFINE COMPILERXE6_UP}
  317. {$ENDIF}
  318. {$IFDEF COMPILERXE6_UP}
  319. {$DEFINE COMPILERXE5_UP}
  320. {$ENDIF}
  321. {$IFDEF COMPILERXE5_UP}
  322. {$DEFINE COMPILERXE4_UP}
  323. {$ENDIF}
  324. {$IFDEF COMPILERXE4_UP}
  325. {$DEFINE COMPILERXE3_UP}
  326. {$ENDIF}
  327. {$IFDEF COMPILERXE3_UP}
  328. {$DEFINE COMPILERXE2_UP}
  329. {$ENDIF}
  330. {$IFDEF COMPILERXE2_UP}
  331. {$DEFINE COMPILERXE1_UP}
  332. {$ENDIF}
  333. {$IFDEF COMPILERXE1_UP}
  334. {$DEFINE COMPILER2010_UP}
  335. {$ENDIF}
  336. {$IFDEF COMPILER2010_UP}
  337. {$DEFINE COMPILER2009_UP}
  338. {$ENDIF}
  339. {$IFDEF COMPILER2009_UP}
  340. {$DEFINE COMPILER2007_UP}
  341. {$ENDIF}
  342. {$IFDEF COMPILER2007_UP}
  343. {$DEFINE COMPILER2006_UP}
  344. {$ENDIF}
  345. {$IFDEF COMPILER2006_UP}
  346. {$DEFINE COMPILER2005_UP}
  347. {$ENDIF}
  348. {$IFDEF COMPILER2005_UP}
  349. {$DEFINE COMPILER7_UP}
  350. {$ENDIF}
  351. {$IFDEF COMPILER7_UP}
  352. {$DEFINE COMPILER6_UP}
  353. {$ENDIF}
  354. {$IFDEF COMPILERFPC}
  355. {$MODE Delphi}
  356. {$DEFINE PLATFORM_INDEPENDENT}
  357. {$DEFINE FPC_HAS_CONSTREF}
  358. {$DEFINE HAS_NATIVEINT}
  359. {$DEFINE NATIVE_SINCOS}
  360. {$DEFINE USESTACKALLOC}
  361. {$IFNDEF WINDOWS}
  362. {$DEFINE RGBA_FORMAT}
  363. {$ENDIF}
  364. {$IF DEFINED(CPUx86_64)}
  365. {$DEFINE PUREPASCAL}
  366. {$ELSEIF DEFINED(CPUi386)}
  367. {$ELSE}
  368. {$DEFINE PUREPASCAL}
  369. {$IFEND}
  370. {$ENDIF COMPILERFPC}
  371. {$IFNDEF COMPILERXE2_UP}
  372. {$IFNDEF COMPILERFPC}
  373. {$Message Fatal 'Graphics32 only supports Delphi/BCB XE2 (or higher) or Free Pascal / Lazarus'}
  374. {$ENDIF}
  375. {$ENDIF}
  376. {$IFDEF COMPILERXE2_UP}
  377. {$IFDEF TARGET_x64}
  378. {$EXCESSPRECISION OFF}
  379. {$ENDIF}
  380. {$ENDIF}
  381. (*
  382. Symbol INLININGSUPPORTED:
  383. -------------------------
  384. In later Delphi versions procedures and functions that do not contain
  385. assembler code can be inlined. This can be extremely useful for calls
  386. to a small portion of code in a loop. However, depending on the instruction
  387. cache size, this may or may not result in a performance boost compared to a
  388. call of assembler optimized code.
  389. *)
  390. {$IFDEF COMPILER2007_UP}
  391. // disabled prior Delphi versions due to a compiler bug
  392. // see (http://qc.embarcadero.com/wc/qcmain.aspx?d=41166)
  393. {$DEFINE INLININGSUPPORTED}
  394. {$ENDIF}
  395. {$IFDEF COMPILERFPC}
  396. {$DEFINE INLININGSUPPORTED}
  397. {$ENDIF}
  398. (*
  399. Symbol TARGET_* :
  400. Defines the processor platform (x86, x64 or PowerPC)
  401. *)
  402. {$IFDEF COMPILERFPC}
  403. // Set up internal CPU target directives according to FPC directives
  404. {$IFDEF CPU386}
  405. {$IFDEF CPUI386}
  406. // target is an Intel 80386 or later.
  407. {$DEFINE TARGET_x86}
  408. {$ASMMODE INTEL}
  409. {$ENDIF}
  410. {$IFDEF CPUX86_64}
  411. // target is a 64-bit processor (AMD or INTEL).
  412. {$DEFINE TARGET_x64}
  413. {$ASMMODE INTEL}
  414. {$ENDIF}
  415. {$IFDEF CPUPOWERPC}
  416. // target is a 32-bit PowerPC or compatible.
  417. // currently only indirect support, added here as example on how to add
  418. // future specific targets
  419. {$DEFINE TARGET_POWERPC}
  420. {$ENDIF}
  421. {$ENDIF}
  422. {$IFDEF CPUX86_64}
  423. // target is a 64-bit processor (AMD or INTEL).
  424. {$DEFINE TARGET_x64}
  425. {$ASMMODE INTEL}
  426. {$ENDIF}
  427. {$IFDEF CPUARM}
  428. // target is an ARM processor.
  429. {$DEFINE TARGET_ARM}
  430. {$ENDIF}
  431. {$ELSE COMPILERFPC}
  432. // check for XE2 64-Bit compiler define
  433. {$IFDEF CPUX64}
  434. {$DEFINE TARGET_x64}
  435. {$ELSE}
  436. // define default (delphi etc) target (32 bit Intel 80386 or later)
  437. {$DEFINE TARGET_x86}
  438. {$ENDIF}
  439. {$ENDIF COMPILERFPC}
  440. (*
  441. Symbol PUREPASCAL:
  442. ------------------
  443. Forces GR32 into pure pascal mode.
  444. NOTE: Further work needed to make assembly routines FPC compatible.
  445. NOTE: The DARWIN target of Free Pascal generates PIC code by default
  446. Which isn't compatible with the current assembler, so force PUREPASCAL
  447. NOTE: Due to several issues with the Delphi X64 compiler, PUREPASCAL is
  448. defined. However, most of the assembler optimized code does already work.
  449. (for issues please see http://qc.embarcadero.com/wc/qcmain.aspx?d=98616
  450. and http://qc.embarcadero.com/wc/qcmain.aspx?d=98613)
  451. *)
  452. {$IFDEF COMPILERFPC}
  453. {-$DEFINE PUREPASCAL}
  454. {$ENDIF}
  455. {$IFDEF TARGET_x64}
  456. {-$DEFINE PUREPASCAL}
  457. {$ENDIF}
  458. {$IFDEF TARGET_ARM}
  459. {$DEFINE PUREPASCAL}
  460. {$DEFINE OMIT_MMX}
  461. {$DEFINE OMIT_SSE2}
  462. {$ENDIF}
  463. {$IFDEF DARWIN}
  464. {$DEFINE PUREPASCAL}
  465. {$ENDIF}
  466. (*
  467. Symbol BITS_GETTER:
  468. -------------------
  469. *)
  470. {$IFDEF COMPILERFPC}
  471. // Widgetsets other then Windows will want to implement BITS_GETTER
  472. {$IFNDEF LCLWin32}
  473. {$DEFINE BITS_GETTER}
  474. {$ENDIF}
  475. {$ENDIF}
  476. (*
  477. Symbol NATIVE_SINCOS:
  478. ---------------------
  479. Use native FPU function to retrieve SIN/COS values for a given argument
  480. NOTE: On older systems a native call is typically much faster than calling
  481. Sin() and Cos() from a higher level library (such as the math/system unit)
  482. separately. However, on 64-bit systems a call can be slower, due to
  483. additional conversion between XMM registers and the FPU
  484. *)
  485. {$IFDEF PUREPASCAL}
  486. {$DEFINE NATIVE_SINCOS}
  487. {$ENDIF}
  488. {$IFDEF TARGET_x64}
  489. {$DEFINE NATIVE_SINCOS}
  490. {$ENDIF}
  491. (*
  492. Symbol HAS_NATIVEINT:
  493. ---------------------
  494. With the latest compilers (Delphi XE1+ and FPC 2.6.0+) the type NativeInt
  495. is available which has the native size of the OS (32-Bit or 64-Bit). Thus,
  496. it can be used to perform pointer arithmetrics.
  497. NOTE: Please do not use simple Cardinal() or Integer() casts on pointers only
  498. *)
  499. {$IFDEF COMPILERXE1_UP}
  500. {$DEFINE HAS_NATIVEINT}
  501. {$ENDIF}
  502. {$IFDEF FPC}
  503. {$DEFINE HAS_NATIVEINT}
  504. {$ENDIF}
  505. (*
  506. Miscellaneous Defines:
  507. ---------------------- *)
  508. {$IFDEF COMPILER6}
  509. {$DEFINE EXT_PROP_EDIT}
  510. {$ENDIF}
  511. {$IFNDEF COMPILER2010_UP}
  512. {$DEFINE USETHREADRESUME}
  513. {$ENDIF}
  514. {$IFDEF COMPILERFPC}
  515. {$UNDEF USETHREADRESUME}
  516. {$DEFINE LOADFROMSTREAM}
  517. {$ENDIF}
  518. {$IFDEF LINUX}
  519. {$IFNDEF FPC}
  520. {$DEFINE BITS_GETTER}
  521. {$ENDIF}
  522. {$DEFINE UNIX}
  523. {$ENDIF}
  524. {$IFNDEF FPC}
  525. {$IFNDEF LINUX}
  526. {$DEFINE Windows}
  527. {$ENDIF}
  528. {$ENDIF}
  529. {$R-}{$Q-} // switch off overflow and range checking
  530. {$IFDEF COMPILER6_UP}
  531. {$DEFINE EXT_PROP_EDIT}
  532. {$ENDIF}
  533. {$IFDEF COMPILER2005_UP}
  534. {$DEFINE HasParentBackground}
  535. {$ENDIF}
  536. {$IFDEF COMPILER2010_UP}
  537. {$DEFINE SUPPORT_ENHANCED_RECORDS}
  538. {$ENDIF}
  539. {$IFDEF COMPILERRX2_UP}
  540. {$DEFINE LOADFROMSTREAM}
  541. {$ENDIF}
  542. {$IFNDEF COMPILERFPC}
  543. {$DEFINE SUPPORT_XPTHEMES} // enable support for windows xp themes
  544. {$ENDIF}