1{$IFNDEF JEDI_INC}
2{$DEFINE JEDI_INC}
3
4{******************************************************************************}
5{                                                                              }
6{  The contents of this file are subject to the Mozilla Public License         }
7{  Version 1.1 (the "License"); you may not use this file except in            }
8{  compliance with the License. You may obtain a copy of the License at        }
9{  http://www.mozilla.org/MPL/                                                 }
10{                                                                              }
11{  Software distributed under the License is distributed on an "AS IS" basis,  }
12{  WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License    }
13{  for the specific language governing rights and limitations under the        }
14{  License.                                                                    }
15{                                                                              }
16{  The Original Code is: jedi.inc.                                             }
17{  The Initial Developer of the Original Code is Project JEDI                  }
18{  http://www.delphi-jedi.org                                                  }
19{                                                                              }
20{  Alternatively, the contents of this file may be used under the terms of     }
21{  the GNU Lesser General Public License (the  "LGPL License"), in which case  }
22{  the provisions of the LGPL License are applicable instead of those above.   }
23{  If you wish to allow use of your version of this file only under the terms  }
24{  of the LGPL License and not to allow others to use your version of this     }
25{  file under the MPL, indicate your decision by deleting the provisions       }
26{  above and replace them with the notice and other provisions required by     }
27{  the LGPL License. If you do not delete the provisions above, a recipient    }
28{  may use your version of this file under either the MPL or the LGPL License. }
29{                                                                              }
30{  For more information about the LGPL:                                        }
31{  http://www.gnu.org/copyleft/lesser.html                                     }
32{                                                                              }
33{******************************************************************************}
34{                                                                              }
35{  This file defines various generic compiler directives used in different     }
36{  libraries, e.g. in the JEDI Code Library (JCL) and JEDI Visual Component    }
37{  Library Library (J-VCL). The directives in this file are of generic nature  }
38{  and consist mostly of mappings from the VERXXX directives defined by        }
39{  Delphi, C++ Builder and FPC to friendly names such as DELPHI5 and           }
40{  SUPPORTS_WIDESTRING. These friendly names are subsequently used in the      }
41{  libraries to test for compiler versions and/or whether the compiler         }
42{  supports certain features (such as widestrings or 64 bit integers. The      }
43{  libraries provide an additional, library specific, include file. For the    }
44{  JCL e.g. this is jcl.inc. These files should be included in source files    }
45{  instead of this file (which is pulled in automatically).                    }
46{                                                                              }
47{******************************************************************************}
48
49// Last modified: $Date: 2007/04/05 10:30:32 $
50// For history see end of file
51
52(*
53
54- Development environment directives
55
56  This file defines two directives to indicate which development environment the
57  library is being compiled with. Currently this can either be Delphi, Kylix,
58  C++ Builder or FPC.
59
60  Directive           Description
61  ------------------------------------------------------------------------------
62  DELPHI              Defined if compiled with Delphi
63  KYLIX               Defined if compiled with Kylix
64  DELPHICOMPILER      Defined if compiled with Delphi or Kylix/Delphi
65  BCB                 Defined if compiled with C++ Builder
66  CPPBUILDER          Defined if compiled with C++ Builder (alias for BCB)
67  BCBCOMPILER         Defined if compiled with C++ Builder or Kylix/C++
68  DELPHILANGUAGE      Defined if compiled with Delphi, Kylix or C++ Builder
69  BORLAND             Defined if compiled with Delphi, Kylix or C++ Builder
70  FPC                 Defined if compiled with FPC
71
72- Platform Directives
73
74  Platform directives are not all explicitly defined in this file, some are
75  defined by the compiler itself. They are listed here only for completeness.
76
77  Directive           Description
78  ------------------------------------------------------------------------------
79  WIN32               Defined when target platform is 32 bit Windows
80  WIN64               Defined when target platform is 64 bit Windows
81  MSWINDOWS           Defined when target platform is 32 bit Windows
82  LINUX               Defined when target platform is Linux
83  UNIX                Defined when target platform is Unix-like (including Linux)
84
85- Architecture directives. These are auto-defined by FPC
86  CPU32 and CPU64 are mostly for generic pointer size dependant differences rather
87  than for a specific architecture.
88
89  CPU386              Defined when target platform is x86 (win32)
90  CPUx86_64           Defined when target platform is x86_64 (win64)
91  CPU32               Defined when target is 32-bit
92  CPU64	              Defined when target is 64-bit
93
94- Visual library Directives
95
96  The following directives indicate for a visual library. In a Delphi/BCB
97  (Win32) application you need to define the VisualCLX symbol in the project
98  options, if  you want to use the VisualCLX library. Alternatively you can use
99  the IDE expert, which is distributed with the JCL to do this automatically.
100
101  Directive           Description
102  ------------------------------------------------------------------------------
103  VCL                 Defined for Delphi/BCB (Win32) exactly if VisualCLX is not defined
104  VisualCLX           Defined for Kylix; needs to be defined for Delphi/BCB to
105                      use JCL with VisualCLX applications.
106
107
108- Other cross-platform related defines
109
110  These symbols are intended to help in writing portable code.
111
112  Directive           Description
113  ------------------------------------------------------------------------------
114  PUREPASCAL          Code is machine-independent (as opposed to assembler code)
115  Win32API            Code is specific for the Win32 API;
116                      use instead of "{$IFNDEF CLR} {$IFDEF MSWINDOWS}" constructs
117
118
119- Delphi Versions
120
121  The following directives are direct mappings from the VERXXX directives to a
122  friendly name of the associated compiler. These directives are only defined if
123  the compiler is Delphi (ie DELPHI is defined).
124
125  Directive           Description
126  ------------------------------------------------------------------------------
127  DELPHI1             Defined when compiling with Delphi 1
128  DELPHI2             Defined when compiling with Delphi 2
129  DELPHI3             Defined when compiling with Delphi 3
130  DELPHI4             Defined when compiling with Delphi 4
131  DELPHI5             Defined when compiling with Delphi 5
132  DELPHI6             Defined when compiling with Delphi 6
133  DELPHI7             Defined when compiling with Delphi 7
134  DELPHI8             Defined when compiling with Delphi 8
135  DELPHI2005          Defined when compiling with Delphi 2005
136  DELPHI9             Alias for DELPHI2005
137  DELPHI10            Defined when compiling with Delphi Personality of BDS 4.0
138  DELPHI11            Defined when compiling with Delphi for Win32 2007
139  DELPHI1_UP          Defined when compiling with Delphi 1 or higher
140  DELPHI2_UP          Defined when compiling with Delphi 2 or higher
141  DELPHI3_UP          Defined when compiling with Delphi 3 or higher
142  DELPHI4_UP          Defined when compiling with Delphi 4 or higher
143  DELPHI5_UP          Defined when compiling with Delphi 5 or higher
144  DELPHI6_UP          Defined when compiling with Delphi 6 or higher
145  DELPHI7_UP          Defined when compiling with Delphi 7 or higher
146  DELPHI8_UP          Defined when compiling with Delphi 8 or higher
147  DELPHI2005_UP       Defined when compiling with Delphi 2005 or higher
148  DELPHI9_UP          Alias for DELPHI2005_UP
149  DELPHI10_UP         Defined when compiling with Delphi Personality of BDS 4.0 or higher
150  DELPHI11_UP         Defined when compiling with Delphi for Win32 2007 or higher
151
152
153- Kylix Versions
154
155  The following directives are direct mappings from the VERXXX directives to a
156  friendly name of the associated compiler. These directives are only defined if
157  the compiler is Kylix (ie KYLIX is defined).
158
159  Directive           Description
160  ------------------------------------------------------------------------------
161  KYLIX1              Defined when compiling with Kylix 1
162  KYLIX2              Defined when compiling with Kylix 2
163  KYLIX3              Defined when compiling with Kylix 3
164  KYLIX1_UP           Defined when compiling with Kylix 1 or higher
165  KYLIX2_UP           Defined when compiling with Kylix 2 or higher
166  KYLIX3_UP           Defined when compiling with Kylix 3 or higher
167
168
169- Delphi Compiler Versions (Delphi / Kylix, not in BCB mode)
170
171  Directive           Description
172  ------------------------------------------------------------------------------
173  DELPHICOMPILER1      Defined when compiling with Delphi 1
174  DELPHICOMPILER2      Defined when compiling with Delphi 2
175  DELPHICOMPILER3      Defined when compiling with Delphi 3
176  DELPHICOMPILER4      Defined when compiling with Delphi 4
177  DELPHICOMPILER5      Defined when compiling with Delphi 5
178  DELPHICOMPILER6      Defined when compiling with Delphi 6 or Kylix 1, 2 or 3
179  DELPHICOMPILER7      Defined when compiling with Delphi 7
180  DELPHICOMPILER8      Defined when compiling with Delphi 8
181  DELPHICOMPILER9      Defined when compiling with Delphi 2005
182  DELPHICOMPILER10     Defined when compiling with Delphi Personality of BDS 4.0
183  DELPHICOMPILER11     Defined when compiling with Delphi for Win32 2007
184  DELPHICOMPILER1_UP   Defined when compiling with Delphi 1 or higher
185  DELPHICOMPILER2_UP   Defined when compiling with Delphi 2 or higher
186  DELPHICOMPILER3_UP   Defined when compiling with Delphi 3 or higher
187  DELPHICOMPILER4_UP   Defined when compiling with Delphi 4 or higher
188  DELPHICOMPILER5_UP   Defined when compiling with Delphi 5 or higher
189  DELPHICOMPILER6_UP   Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 or higher
190  DELPHICOMPILER7_UP   Defined when compiling with Delphi 7 or higher
191  DELPHICOMPILER8_UP   Defined when compiling with Delphi 8 or higher
192  DELPHICOMPILER9_UP   Defined when compiling with Delphi 2005
193  DELPHICOMPILER10_UP  Defined when compiling with Delphi Personality of BDS 4.0 or higher
194  DELPHICOMPILER11_UP  Defined when compiling with Delphi for Win32 2007 or higher
195
196
197- C++ Builder Versions
198
199  The following directives are direct mappings from the VERXXX directives to a
200  friendly name of the associated compiler. These directives are only defined if
201  the compiler is C++ Builder (ie BCB is defined).
202
203  Directive    Description
204  ------------------------------------------------------------------------------
205  BCB1         Defined when compiling with C++ Builder 1
206  BCB3         Defined when compiling with C++ Builder 3
207  BCB4         Defined when compiling with C++ Builder 4
208  BCB5         Defined when compiling with C++ Builder 5
209  BCB6         Defined when compiling with C++ Builder 6
210  BCB10        Defined when compiling with C++ Builder Personality of BDS 4.0
211  BCB1_UP      Defined when compiling with C++ Builder 1 or higher
212  BCB3_UP      Defined when compiling with C++ Builder 3 or higher
213  BCB4_UP      Defined when compiling with C++ Builder 4 or higher
214  BCB5_UP      Defined when compiling with C++ Builder 5 or higher
215  BCB6_UP      Defined when compiling with C++ Builder 6 or higher
216  BCB10_UP     Defined when compiling with C++ Builder Personality of BDS 4.0 or higher
217
218
219- Borland Developer Studio Versions
220
221  The following directives are direct mappings from the VERXXX directives to a
222  friendly name of the associated IDE. These directives are only defined if
223  the IDE is Borland Developer Studio Version 2 or above.
224
225  Note: Borland Developer Studio 2006 is marketed as Delphi 2006 or C++Builder 2006,
226  but those provide only different labels for identical content.
227
228  Directive    Description
229  ------------------------------------------------------------------------------
230  BDS          Defined when compiling with a Borland Developer Studio version's dcc32.exe
231  BDS2         Defined when compiling with BDS 2.0 (Delphi 8)
232  BDS3         Defined when compiling with BDS 3.0 (Delphi 2005)
233  BDS4         Defined when compiling with BDS 4.0 (Borland Developer Studio 2006)
234  BDS5         Defined when compiling with BDS 5.0 (Codegear RAD Studio 2007)
235  BDS2_UP      Defined when compiling with BDS 2.0 or higher
236  BDS3_UP      Defined when compiling with BDS 3.0 or higher
237  BDS4_UP      Defined when compiling with BDS 4.0 or higher
238  BDS5_UP      Defined when compiling with BDS 5.0 or higher
239
240- Compiler Versions
241
242  The following directives are direct mappings from the VERXXX directives to a
243  friendly name of the associated compiler. Unlike the DELPHI_X and BCB_X
244  directives, these directives are indepedent of the development environment.
245  That is, they are defined regardless of whether compilation takes place using
246  Delphi or C++ Builder.
247
248  Directive     Description
249  ------------------------------------------------------------------------------
250  COMPILER1      Defined when compiling with Delphi 1
251  COMPILER2      Defined when compiling with Delphi 2 or C++ Builder 1
252  COMPILER3      Defined when compiling with Delphi 3
253  COMPILER35     Defined when compiling with C++ Builder 3
254  COMPILER4      Defined when compiling with Delphi 4 or C++ Builder 4
255  COMPILER5      Defined when compiling with Delphi 5 or C++ Builder 5
256  COMPILER6      Defined when compiling with Delphi 6 or C++ Builder 6
257  COMPILER7      Defined when compiling with Delphi 7
258  COMPILER8      Defined when compiling with Delphi 8
259  COMPILER9      Defined when compiling with Delphi 9
260  COMPILER10     Defined when compiling with Delphi or C++ Builder Personalities of BDS 4.0
261  COMPILER11     Defined when compiling with Delphi for Win32 2007
262  COMPILER1_UP   Defined when compiling with Delphi 1 or higher
263  COMPILER2_UP   Defined when compiling with Delphi 2 or C++ Builder 1 or higher
264  COMPILER3_UP   Defined when compiling with Delphi 3 or higher
265  COMPILER35_UP  Defined when compiling with C++ Builder 3 or higher
266  COMPILER4_UP   Defined when compiling with Delphi 4 or C++ Builder 4 or higher
267  COMPILER5_UP   Defined when compiling with Delphi 5 or C++ Builder 5 or higher
268  COMPILER6_UP   Defined when compiling with Delphi 6 or C++ Builder 6 or higher
269  COMPILER7_UP   Defined when compiling with Delphi 7
270  COMPILER8_UP   Defined when compiling with Delphi 8
271  COMPILER9_UP   Defined when compiling with Delphi Personalities of BDS 3.0
272  COMPILER10_UP  Defined when compiling with Delphi or C++ Builder Personalities of BDS 4.0 or higher
273  COMPILER11_UP  Defined when compiling with Delphi for Win32 2007 ir higher
274
275
276- RTL Versions
277
278  Use e.g. following to determine the exact RTL version since version 14.0:
279    {$IFDEF CONDITIONALEXPRESSIONS}
280      {$IF Declared(RTLVersion) and (RTLVersion >= 14.2)}
281        // code for Delphi 6.02 or later, Kylix 2 or later, C++ Builder 6 or later
282        ...
283      {$IFEND}
284    {$ENDIF}
285
286  Directive     Description
287  ------------------------------------------------------------------------------
288  RTL80_UP      Defined when compiling with Delphi 1 or later
289  RTL90_UP      Defined when compiling with Delphi 2 or later
290  RTL93_UP      Defined when compiling with C++ Builder 1 or later
291  RTL100_UP     Defined when compiling with Delphi 3 or later
292  RTL110_UP     Defined when compiling with C++ Builder 3 or later
293  RTL120_UP     Defined when compiling with Delphi 4 or later
294  RTL125_UP     Defined when compiling with C++ Builder 4 or later
295  RTL130_UP     Defined when compiling with Delphi 5 or C++ Builder 5 or later
296  RTL140_UP     Defined when compiling with Delphi 6, Kylix 1, 2 or 3 or C++ Builder 6 or later
297  RTL150_UP     Defined when compiling with Delphi 7 or later
298  RTL160_UP     Defined when compiling with Delphi 8 or later
299  RTL170_UP     Defined when compiling with Delphi Personalities of BDS 3.0 or later
300  RTL180_UP     Defined when compiling with Delphi or C++ Builder Personalities of BDS 4.0 or later
301  RTL185_UP     Defined when compiling with Delphi for Win32 2007 or later
302
303
304- Feature Directives
305
306  The features directives are used to test if the compiler supports specific
307  features, such as method overloading, and adjust the sources accordingly. Use
308  of these directives is preferred over the use of the DELPHI and COMPILER
309  directives.
310
311  Directive              Description
312  ------------------------------------------------------------------------------
313  SUPPORTS_CONSTPARAMS          Compiler supports const parameters (D1+)
314  SUPPORTS_SINGLE               Compiler supports the Single type (D1+)
315  SUPPORTS_DOUBLE               Compiler supports the Double type (D1+)
316  SUPPORTS_EXTENDED             Compiler supports the Extended type (D1+)
317  SUPPORTS_CURRENCY             Compiler supports the Currency type (D2+)
318  SUPPORTS_THREADVAR            Compiler supports threadvar declarations (D2+)
319  SUPPORTS_OUTPARAMS            Compiler supports out parameters (D3+)
320  SUPPORTS_VARIANT              Compiler supports variant (D2+)
321  SUPPORTS_WIDECHAR             Compiler supports the WideChar type (D2+)
322  SUPPORTS_WIDESTRING           Compiler supports the WideString type (D3+/BCB3+)
323  SUPPORTS_INTERFACE            Compiler supports interfaces (D3+/BCB3+)
324  SUPPORTS_DISPINTERFACE        Compiler supports dispatch interfaces (D3+/BCB3+)
325  SUPPORTS_DISPID               Compiler supports dispatch ids (D3+/BCB3+/FPC)
326  SUPPORTS_EXTSYM               Compiler supports the $EXTERNALSYM directive (D4+/BCB3+)
327  SUPPORTS_NODEFINE             Compiler supports the $NODEFINE directive (D4+/BCB3+)
328  SUPPORTS_LONGWORD             Compiler supports the LongWord type (unsigned 32 bit) (D4+/BCB4+)
329  SUPPORTS_INT64                Compiler supports the Int64 type (D4+/BCB4+)
330  SUPPORTS_DYNAMICARRAYS        Compiler supports dynamic arrays (D4+/BCB4+)
331  SUPPORTS_DEFAULTPARAMS        Compiler supports default parameters (D4+/BCB4+)
332  SUPPORTS_OVERLOAD             Compiler supports overloading (D4+/BCB4+)
333  SUPPORTS_IMPLEMENTS           Compiler supports implements (D4+/BCB4+)
334  SUPPORTS_DEPRECATED           Compiler supports the deprecated directive (D6+/BCB6+)
335  SUPPORTS_PLATFORM             Compiler supports the platform directive (D6+/BCB6+)
336  SUPPORTS_LIBRARY              Compiler supports the library directive (D6+/BCB6+/FPC)
337  SUPPORTS_LOCAL                Compiler supports the local directive (D6+/BCB6+)
338  SUPPORTS_INLINE               Compiler supports the inline directive (D9+/FPC)
339  SUPPORTS_FOR_IN               Compiler supports for in loops (D9+)
340  SUPPORTS_NESTED_CONSTANTS     Compiler supports nested constants (D9+)
341  SUPPORTS_NESTED_TYPES         Compiler supports nested types (D9+)
342  SUPPORTS_ENHANCED_RECORDS     Compiler supports class [operator|function|procedure] for record types (D9.NET, D10+)
343  SUPPORTS_CLASS_FIELDS         Compiler supports class fields (D9.NET, D10+)
344  SUPPORTS_CLASS_HELPERS        Compiler supports class helpers (D9.NET, D10+)
345  SUPPORTS_CLASS_OPERATORS      Compiler supports class operators (D9.NET, D10+)
346  SUPPORTS_STRICT               Compiler supports strict keyword (D9.NET, D10+)
347  SUPPORTS_STATIC               Compiler supports static keyword (D9.NET, D10+)
348  SUPPORTS_FINAL                Compiler supports final keyword (D9.NET, D10+)
349  ACCEPT_DEPRECATED             Compiler supports or ignores the deprecated directive (D6+/BCB6+/FPC)
350  ACCEPT_PLATFORM               Compiler supports or ignores the platform directive (D6+/BCB6+/FPC)
351  ACCEPT_LIBRARY                Compiler supports or ignores the library directive (D6+/BCB6+)
352  SUPPORTS_CUSTOMVARIANTS       Compiler supports custom variants (D6+/BCB6+)
353  SUPPORTS_VARARGS              Compiler supports varargs (D6+/BCB6+)
354  SUPPORTS_ENUMVALUE            Compiler supports assigning ordinalities to values of enums (D6+/BCB6+)
355  SUPPORTS_DEPRECATED_WARNINGS  Compiler supports deprecated warnings (D6+/BCB6+)
356  SUPPORTS_LIBRARY_WARNINGS     Compiler supports library warnings (D6+/BCB6+)
357  SUPPORTS_PLATFORM_WARNINGS    Compiler supports platform warnings (D6+/BCB6+)
358  SUPPORTS_UNSAFE_WARNINGS      Compiler supports unsafe warnings (D7)
359  SUPPORTS_WEAKPACKAGEUNIT      Compiler supports the WEAKPACKAGEUNIT directive
360  SUPPORTS_COMPILETIME_MESSAGES Compiler supports the MESSAGE directive
361  HAS_UNIT_LIBC                 Unit Libc exists (Kylix, FPC on Linux/x86)
362  HAS_UNIT_RTLCONSTS            Unit RTLConsts exists (D6+/BCB6+/FPC)
363  HAS_UNIT_TYPES                Unit Types exists (D6+/BCB6+/FPC)
364  HAS_UNIT_VARIANTS             Unit Variants exists (D6+/BCB6+/FPC)
365  HAS_UNIT_STRUTILS             Unit StrUtils exists (D6+/BCB6+/FPC)
366  HAS_UNIT_DATEUTILS		Unit DateUtils exists (D6+/BCB6+/FPC)
367  XPLATFORM_RTL                 The RTL supports crossplatform function names (e.g. RaiseLastOSError) (D6+/BCB6+/FPC)
368
369
370- Compiler Settings
371
372  The compiler settings directives indicate whether a specific compiler setting
373  is in effect. This facilitates changing compiler settings locally in a more
374  compact and readible manner.
375
376  Directive              Description
377  ------------------------------------------------------------------------------
378  ALIGN_ON               Compiling in the A+ state (no alignment)
379  BOOLEVAL_ON            Compiling in the B+ state (complete boolean evaluation)
380  ASSERTIONS_ON          Compiling in the C+ state (assertions on)
381  DEBUGINFO_ON           Compiling in the D+ state (debug info generation on)
382  IMPORTEDDATA_ON        Compiling in the G+ state (creation of imported data references)
383  LONGSTRINGS_ON         Compiling in the H+ state (string defined as AnsiString)
384  IOCHECKS_ON            Compiling in the I+ state (I/O checking enabled)
385  WRITEABLECONST_ON      Compiling in the J+ state (typed constants can be modified)
386  LOCALSYMBOLS           Compiling in the L+ state (local symbol generation)
387  TYPEINFO_ON            Compiling in the M+ state (RTTI generation on)
388  OPTIMIZATION_ON        Compiling in the O+ state (code optimization on)
389  OPENSTRINGS_ON         Compiling in the P+ state (variable string parameters are openstrings)
390  OVERFLOWCHECKS_ON      Compiling in the Q+ state (overflow checing on)
391  RANGECHECKS_ON         Compiling in the R+ state (range checking on)
392  TYPEDADDRESS_ON        Compiling in the T+ state (pointers obtained using the @ operator are typed)
393  SAFEDIVIDE_ON          Compiling in the U+ state (save FDIV instruction through RTL emulation)
394  VARSTRINGCHECKS_ON     Compiling in the V+ state (type checking of shortstrings)
395  STACKFRAMES_ON         Compiling in the W+ state (generation of stack frames)
396  EXTENDEDSYNTAX_ON      Compiling in the X+ state (Delphi extended syntax enabled)
397*)
398
399{$DEFINE BORLAND}
400
401{ Set FreePascal to Delphi mode }
402{$IFDEF FPC}
403  {$MODE DELPHI}
404  {$IF DEFINED(CPUI386) OR DEFINED(CPUX86_64)}
405  {$ASMMODE Intel}
406  {$ENDIF CPUI386 OR CPUX86_64}
407  {$UNDEF BORLAND}
408   // FPC defines CPU* and Unix automatically
409{$ENDIF}
410
411{$IFDEF BORLAND}
412  {$IFDEF LINUX}
413    {$DEFINE KYLIX}
414  {$ENDIF LINUX}
415  {$DEFINE CPU386}  // For Borland compilers select the x86 compat assembler by default
416  {$DEFINE CPU32}   // Assume Borland compilers are 32-bit (rather than 64-bit)
417{$ENDIF BORLAND}
418
419{------------------------------------------------------------------------------}
420{ VERXXX to COMPILERX, DELPHIX and BCBX mappings                               }
421{------------------------------------------------------------------------------}
422
423{$IFDEF BORLAND}
424  {$IFDEF KYLIX}
425    {$I kylix.inc} // FPC incompatible stuff
426  {$ELSE ~KYLIX}
427
428    {$DEFINE UNKNOWN_COMPILER_VERSION}
429
430    {$IFDEF VER80}
431      {$DEFINE COMPILER1}
432      {$DEFINE DELPHI1}
433      {$DEFINE DELPHICOMPILER1}
434      {$DEFINE RTL80_UP}
435      {$UNDEF UNKNOWN_COMPILER_VERSION}
436    {$ENDIF}
437
438    {$IFDEF VER90}
439      {$DEFINE COMPILER2}
440      {$DEFINE DELPHI2}
441      {$DEFINE DELPHICOMPILER2}
442      {$DEFINE RTL90_UP}
443      {$UNDEF UNKNOWN_COMPILER_VERSION}
444    {$ENDIF}
445
446    {$IFDEF VER93}
447      {$DEFINE COMPILER2}
448      {$DEFINE BCB1}
449      {$DEFINE BCB}
450      {$DEFINE RTL93_UP}
451      {$UNDEF UNKNOWN_COMPILER_VERSION}
452    {$ENDIF}
453
454    {$IFDEF VER100}
455      {$DEFINE COMPILER3}
456      {$DEFINE DELPHI3}
457      {$DEFINE DELPHICOMPILER3}
458      {$DEFINE RTL100_UP}
459      {$UNDEF UNKNOWN_COMPILER_VERSION}
460    {$ENDIF}
461
462    {$IFDEF VER110}
463      {$DEFINE COMPILER35}
464      {$DEFINE BCB3}
465      {$DEFINE RTL110_UP}
466      {$UNDEF UNKNOWN_COMPILER_VERSION}
467    {$ENDIF}
468
469    {$IFDEF VER120}
470      {$DEFINE COMPILER4}
471      {$DEFINE DELPHI4}
472      {$DEFINE DELPHICOMPILER4}
473      {$DEFINE RTL120_UP}
474      {$UNDEF UNKNOWN_COMPILER_VERSION}
475    {$ENDIF}
476
477    {$IFDEF VER125}
478      {$DEFINE COMPILER4}
479      {$DEFINE BCB4}
480      {$DEFINE BCB}
481      {$DEFINE RTL125_UP}
482      {$UNDEF UNKNOWN_COMPILER_VERSION}
483    {$ENDIF}
484
485    {$IFDEF VER130}
486      {$DEFINE COMPILER5}
487      {$IFDEF BCB}
488        {$DEFINE BCB5}
489      {$ELSE}
490        {$DEFINE DELPHI5}
491        {$DEFINE DELPHICOMPILER5}
492      {$ENDIF}
493      {$DEFINE RTL130_UP}
494      {$UNDEF UNKNOWN_COMPILER_VERSION}
495    {$ENDIF}
496
497    {$IFDEF VER140}
498      {$DEFINE COMPILER6}
499      {$IFDEF BCB}
500        {$DEFINE BCB6}
501      {$ELSE}
502        {$DEFINE DELPHI6}
503        {$DEFINE DELPHICOMPILER6}
504      {$ENDIF}
505      {$DEFINE RTL140_UP}
506      {$UNDEF UNKNOWN_COMPILER_VERSION}
507    {$ENDIF}
508
509    {$IFDEF VER150}
510      {$DEFINE COMPILER7}
511      {$DEFINE DELPHI7}
512      {$DEFINE DELPHICOMPILER7}
513      {$DEFINE RTL150_UP}
514      {$UNDEF UNKNOWN_COMPILER_VERSION}
515    {$ENDIF}
516
517    {$IFDEF VER160}
518      {$DEFINE BDS2}
519      {$DEFINE BDS}
520      {$DEFINE COMPILER8}
521      {$DEFINE DELPHI8}
522      {$DEFINE DELPHICOMPILER8}
523      {$DEFINE RTL160_UP}
524      {$UNDEF UNKNOWN_COMPILER_VERSION}
525    {$ENDIF}
526
527    {$IFDEF VER170}
528      {$DEFINE BDS3}
529      {$DEFINE BDS}
530      {$DEFINE COMPILER9}
531      {$DEFINE DELPHI9}
532      {$DEFINE DELPHI2005} // synonym to DELPHI9
533      {$DEFINE DELPHICOMPILER9}
534      {$DEFINE RTL170_UP}
535      {$UNDEF UNKNOWN_COMPILER_VERSION}
536    {$ENDIF}
537
538    {$IFDEF VER180}
539      {$DEFINE BDS}
540      {$IFDEF VER185}
541        {$DEFINE BDS5}
542        {$DEFINE COMPILER11}
543        {$IFDEF BCB}
544          {$DEFINE BCB11}
545        {$ELSE}
546          {$DEFINE DELPHI11}
547          {$DEFINE DELPHICOMPILER11}
548        {$ENDIF}
549        {$DEFINE RTL185_UP}
550      {$ELSE ~~VER185}
551        {$DEFINE BDS4}
552        {$DEFINE COMPILER10}
553        {$IFDEF BCB}
554          {$DEFINE BCB10}
555        {$ELSE}
556          {$DEFINE DELPHI10}
557          {$DEFINE DELPHICOMPILER10}
558        {$ENDIF}
559        {$DEFINE RTL180_UP}
560      {$ENDIF ~VER185}
561      {$UNDEF UNKNOWN_COMPILER_VERSION}
562    {$ENDIF}
563
564    {$IFDEF UNKNOWN_COMPILER_VERSION} // adjust for newer version
565      {$DEFINE BDS5}
566      {$DEFINE BDS}
567      {$DEFINE COMPILER11}
568      {$DEFINE DELPHI11}
569      {$DEFINE DELPHICOMPILER11}
570      {$DEFINE RTL185_UP}
571      {$UNDEF UNKNOWN_COMPILER_VERSION}
572    {$ENDIF}
573
574  {$ENDIF ~KYLIX}
575
576  {$IFDEF BCB}
577    {$DEFINE CPPBUILDER}
578    {$DEFINE BCBCOMPILER}
579  {$ELSE ~BCB}
580    {$DEFINE DELPHI}
581    {$DEFINE DELPHICOMPILER}
582  {$ENDIF ~BCB}
583
584{$ENDIF BORLAND}
585
586{------------------------------------------------------------------------------}
587{ DELPHIX_UP from DELPHIX mappings                                             }
588{------------------------------------------------------------------------------}
589
590{$IFDEF DELPHI11} {$DEFINE DELPHI11_UP} {$ENDIF}
591{$IFDEF DELPHI10} {$DEFINE DELPHI10_UP} {$ENDIF}
592{$IFDEF DELPHI9}  {$DEFINE DELPHI9_UP}  {$ENDIF}
593{$IFDEF DELPHI8}  {$DEFINE DELPHI8_UP}  {$ENDIF}
594{$IFDEF DELPHI7}  {$DEFINE DELPHI7_UP}  {$ENDIF}
595{$IFDEF DELPHI6}  {$DEFINE DELPHI6_UP}  {$ENDIF}
596{$IFDEF DELPHI5}  {$DEFINE DELPHI5_UP}  {$ENDIF}
597{$IFDEF DELPHI4}  {$DEFINE DELPHI4_UP}  {$ENDIF}
598{$IFDEF DELPHI3}  {$DEFINE DELPHI3_UP}  {$ENDIF}
599{$IFDEF DELPHI2}  {$DEFINE DELPHI2_UP}  {$ENDIF}
600{$IFDEF DELPHI1}  {$DEFINE DELPHI1_UP}  {$ENDIF}
601
602{------------------------------------------------------------------------------}
603{ DELPHIX_UP from DELPHIX_UP mappings                                          }
604{------------------------------------------------------------------------------}
605
606{$IFDEF DELPHI11_UP} {$DEFINE DELPHI10_UP} {$ENDIF}
607{$IFDEF DELPHI10_UP} {$DEFINE DELPHI9_UP}  {$ENDIF}
608
609{$IFDEF DELPHI9_UP}
610  {$DEFINE DELPHI2005_UP} // synonym to DELPHI9_UP
611  {$DEFINE DELPHI8_UP}
612{$ENDIF}
613
614{$IFDEF DELPHI8_UP} {$DEFINE DELPHI7_UP} {$ENDIF}
615{$IFDEF DELPHI7_UP} {$DEFINE DELPHI6_UP} {$ENDIF}
616{$IFDEF DELPHI6_UP} {$DEFINE DELPHI5_UP} {$ENDIF}
617{$IFDEF DELPHI5_UP} {$DEFINE DELPHI4_UP} {$ENDIF}
618{$IFDEF DELPHI4_UP} {$DEFINE DELPHI3_UP} {$ENDIF}
619{$IFDEF DELPHI3_UP} {$DEFINE DELPHI2_UP} {$ENDIF}
620{$IFDEF DELPHI2_UP} {$DEFINE DELPHI1_UP} {$ENDIF}
621
622{------------------------------------------------------------------------------}
623{ BCBX_UP from BCBX mappings                                                   }
624{------------------------------------------------------------------------------}
625
626{$IFDEF BCB11} {$DEFINE BCB11_UP} {$ENDIF}
627{$IFDEF BCB10} {$DEFINE BCB10_UP} {$ENDIF}
628{$IFDEF BCB6}  {$DEFINE BCB6_UP}  {$ENDIF}
629{$IFDEF BCB5}  {$DEFINE BCB5_UP}  {$ENDIF}
630{$IFDEF BCB4}  {$DEFINE BCB4_UP}  {$ENDIF}
631{$IFDEF BCB3}  {$DEFINE BCB3_UP}  {$ENDIF}
632{$IFDEF BCB1}  {$DEFINE BCB1_UP}  {$ENDIF}
633
634{------------------------------------------------------------------------------}
635{ BCBX_UP from BCBX_UP mappings                                                }
636{------------------------------------------------------------------------------}
637
638{$IFDEF BCB11_UP} {$DEFINE BCB10_UP} {$ENDIF}
639{$IFDEF BCB10_UP} {$DEFINE BCB6_UP}  {$ENDIF}
640{$IFDEF BCB6_UP}  {$DEFINE BCB5_UP}  {$ENDIF}
641{$IFDEF BCB5_UP}  {$DEFINE BCB4_UP}  {$ENDIF}
642{$IFDEF BCB4_UP}  {$DEFINE BCB3_UP}  {$ENDIF}
643{$IFDEF BCB3_UP}  {$DEFINE BCB1_UP}  {$ENDIF}
644
645{------------------------------------------------------------------------------}
646{ BDSX_UP from BDSX mappings                                                   }
647{------------------------------------------------------------------------------}
648
649{$IFDEF BDS5} {$DEFINE BDS5_UP} {$ENDIF}
650{$IFDEF BDS4} {$DEFINE BDS4_UP} {$ENDIF}
651{$IFDEF BDS3} {$DEFINE BDS3_UP} {$ENDIF}
652{$IFDEF BDS2} {$DEFINE BDS2_UP} {$ENDIF}
653
654{------------------------------------------------------------------------------}
655{ BDSX_UP from BDSX_UP mappings                                                }
656{------------------------------------------------------------------------------}
657
658{$IFDEF BDS5_UP} {$DEFINE BDS4_UP} {$ENDIF}
659{$IFDEF BDS4_UP} {$DEFINE BDS3_UP} {$ENDIF}
660{$IFDEF BDS3_UP} {$DEFINE BDS2_UP} {$ENDIF}
661
662{------------------------------------------------------------------------------}
663{ DELPHICOMPILERX_UP from DELPHICOMPILERX mappings                             }
664{------------------------------------------------------------------------------}
665
666{$IFDEF DELPHICOMPILER11} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF}
667{$IFDEF DELPHICOMPILER10} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF}
668{$IFDEF DELPHICOMPILER9}  {$DEFINE DELPHICOMPILER9_UP}  {$ENDIF}
669{$IFDEF DELPHICOMPILER8}  {$DEFINE DELPHICOMPILER8_UP}  {$ENDIF}
670{$IFDEF DELPHICOMPILER7}  {$DEFINE DELPHICOMPILER7_UP}  {$ENDIF}
671{$IFDEF DELPHICOMPILER6}  {$DEFINE DELPHICOMPILER6_UP}  {$ENDIF}
672{$IFDEF DELPHICOMPILER5}  {$DEFINE DELPHICOMPILER5_UP}  {$ENDIF}
673{$IFDEF DELPHICOMPILER4}  {$DEFINE DELPHICOMPILER4_UP}  {$ENDIF}
674{$IFDEF DELPHICOMPILER3}  {$DEFINE DELPHICOMPILER3_UP}  {$ENDIF}
675{$IFDEF DELPHICOMPILER2}  {$DEFINE DELPHICOMPILER2_UP}  {$ENDIF}
676{$IFDEF DELPHICOMPILER1}  {$DEFINE DELPHICOMPILER1_UP}  {$ENDIF}
677
678{------------------------------------------------------------------------------}
679{ DELPHICOMPILERX_UP from DELPHICOMPILERX_UP mappings                          }
680{------------------------------------------------------------------------------}
681
682{$IFDEF DELPHICOMPILER11_UP} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF}
683{$IFDEF DELPHICOMPILER10_UP} {$DEFINE DELPHICOMPILER9_UP}  {$ENDIF}
684{$IFDEF DELPHICOMPILER9_UP}  {$DEFINE DELPHICOMPILER8_UP}  {$ENDIF}
685{$IFDEF DELPHICOMPILER8_UP}  {$DEFINE DELPHICOMPILER7_UP}  {$ENDIF}
686{$IFDEF DELPHICOMPILER8_UP}  {$DEFINE DELPHICOMPILER7_UP}  {$ENDIF}
687{$IFDEF DELPHICOMPILER7_UP}  {$DEFINE DELPHICOMPILER6_UP}  {$ENDIF}
688{$IFDEF DELPHICOMPILER6_UP}  {$DEFINE DELPHICOMPILER5_UP}  {$ENDIF}
689{$IFDEF DELPHICOMPILER5_UP}  {$DEFINE DELPHICOMPILER4_UP}  {$ENDIF}
690{$IFDEF DELPHICOMPILER4_UP}  {$DEFINE DELPHICOMPILER3_UP}  {$ENDIF}
691{$IFDEF DELPHICOMPILER3_UP}  {$DEFINE DELPHICOMPILER2_UP}  {$ENDIF}
692{$IFDEF DELPHICOMPILER2_UP}  {$DEFINE DELPHICOMPILER1_UP}  {$ENDIF}
693
694{------------------------------------------------------------------------------}
695{ COMPILERX_UP from COMPILERX mappings                                         }
696{------------------------------------------------------------------------------}
697
698{$IFDEF COMPILER11} {$DEFINE COMPILER11_UP} {$ENDIF}
699{$IFDEF COMPILER10} {$DEFINE COMPILER10_UP} {$ENDIF}
700{$IFDEF COMPILER9}  {$DEFINE COMPILER9_UP}  {$ENDIF}
701{$IFDEF COMPILER8}  {$DEFINE COMPILER8_UP}  {$ENDIF}
702{$IFDEF COMPILER7}  {$DEFINE COMPILER7_UP}  {$ENDIF}
703{$IFDEF COMPILER6}  {$DEFINE COMPILER6_UP}  {$ENDIF}
704{$IFDEF COMPILER5}  {$DEFINE COMPILER5_UP}  {$ENDIF}
705{$IFDEF COMPILER4}  {$DEFINE COMPILER4_UP}  {$ENDIF}
706{$IFDEF COMPILER35} {$DEFINE COMPILER35_UP} {$ENDIF}
707{$IFDEF COMPILER3}  {$DEFINE COMPILER3_UP}  {$ENDIF}
708{$IFDEF COMPILER2}  {$DEFINE COMPILER2_UP}  {$ENDIF}
709{$IFDEF COMPILER1}  {$DEFINE COMPILER1_UP}  {$ENDIF}
710
711{------------------------------------------------------------------------------}
712{ COMPILERX_UP from COMPILERX_UP mappings                                      }
713{------------------------------------------------------------------------------}
714
715{$IFDEF COMPILER11_UP} {$DEFINE COMPILER10_UP} {$ENDIF}
716{$IFDEF COMPILER10_UP} {$DEFINE COMPILER9_UP}  {$ENDIF}
717{$IFDEF COMPILER9_UP}  {$DEFINE COMPILER8_UP}  {$ENDIF}
718{$IFDEF COMPILER8_UP}  {$DEFINE COMPILER7_UP}  {$ENDIF}
719{$IFDEF COMPILER7_UP}  {$DEFINE COMPILER6_UP}  {$ENDIF}
720{$IFDEF COMPILER6_UP}  {$DEFINE COMPILER5_UP}  {$ENDIF}
721{$IFDEF COMPILER5_UP}  {$DEFINE COMPILER4_UP}  {$ENDIF}
722{$IFDEF COMPILER4_UP}  {$DEFINE COMPILER35_UP} {$ENDIF}
723{$IFDEF COMPILER35_UP} {$DEFINE COMPILER3_UP}  {$ENDIF}
724{$IFDEF COMPILER3_UP}  {$DEFINE COMPILER2_UP}  {$ENDIF}
725{$IFDEF COMPILER2_UP}  {$DEFINE COMPILER1_UP}  {$ENDIF}
726
727{------------------------------------------------------------------------------}
728{ RTLX_UP from RTLX_UP mappings                                                }
729{------------------------------------------------------------------------------}
730
731{$IFDEF RTL185_UP} {$DEFINE RTL180_UP} {$ENDIF}
732{$IFDEF RTL180_UP} {$DEFINE RTL170_UP} {$ENDIF}
733{$IFDEF RTL170_UP} {$DEFINE RTL160_UP} {$ENDIF}
734{$IFDEF RTL160_UP} {$DEFINE RTL150_UP} {$ENDIF}
735{$IFDEF RTL150_UP} {$DEFINE RTL145_UP} {$ENDIF}
736{$IFDEF RTL145_UP} {$DEFINE RTL142_UP} {$ENDIF}
737{$IFDEF RTL142_UP} {$DEFINE RTL140_UP} {$ENDIF}
738{$IFDEF RTL140_UP} {$DEFINE RTL130_UP} {$ENDIF}
739{$IFDEF RTL130_UP} {$DEFINE RTL125_UP} {$ENDIF}
740{$IFDEF RTL125_UP} {$DEFINE RTL120_UP} {$ENDIF}
741{$IFDEF RTL120_UP} {$DEFINE RTL110_UP} {$ENDIF}
742{$IFDEF RTL110_UP} {$DEFINE RTL100_UP} {$ENDIF}
743{$IFDEF RTL100_UP} {$DEFINE RTL93_UP}  {$ENDIF}
744{$IFDEF RTL93_UP}  {$DEFINE RTL90_UP}  {$ENDIF}
745{$IFDEF RTL90_UP}  {$DEFINE RTL80_UP}  {$ENDIF}
746
747{------------------------------------------------------------------------------}
748
749{$IFDEF DELPHICOMPILER}
750  {$DEFINE DELPHILANGUAGE}
751{$ENDIF}
752
753{$IFDEF BCBCOMPILER}
754  {$DEFINE DELPHILANGUAGE}
755{$ENDIF}
756
757{------------------------------------------------------------------------------}
758{ KYLIXX_UP from KYLIXX mappings                                               }
759{------------------------------------------------------------------------------}
760
761{$IFDEF KYLIX3} {$DEFINE KYLIX3_UP} {$ENDIF}
762{$IFDEF KYLIX2} {$DEFINE KYLIX2_UP} {$ENDIF}
763{$IFDEF KYLIX1} {$DEFINE KYLIX1_UP} {$ENDIF}
764
765{------------------------------------------------------------------------------}
766{ KYLIXX_UP from KYLIXX_UP mappings                                            }
767{------------------------------------------------------------------------------}
768
769{$IFDEF KYLIX3_UP} {$DEFINE KYLIX2_UP} {$ENDIF}
770{$IFDEF KYLIX2_UP} {$DEFINE KYLIX1_UP} {$ENDIF}
771
772{------------------------------------------------------------------------------}
773{ Map COMPILERX_UP to friendly feature names                                   }
774{------------------------------------------------------------------------------}
775
776{$IFDEF FPC}
777  {$IFDEF  VER1_0}
778     Please use FPC 2.0 or later to compile this.
779  {$ELSE}
780    {$DEFINE SUPPORTS_OUTPARAMS}
781    {$DEFINE SUPPORTS_WIDECHAR}
782    {$DEFINE SUPPORTS_WIDESTRING}
783    {$IFDEF HASINTF}
784      {$DEFINE SUPPORTS_INTERFACE}
785    {$ENDIF}
786    {$IFDEF HASVARIANT}
787      {$DEFINE SUPPORTS_VARIANT}
788    {$ENDIF}
789    {$IFDEF FPC_HAS_TYPE_SINGLE}
790      {$DEFINE SUPPORTS_SINGLE}
791    {$ENDIF}
792    {$IFDEF FPC_HAS_TYPE_DOUBLE}
793      {$DEFINE SUPPORTS_DOUBLE}
794    {$ENDIF}
795    {$IFDEF FPC_HAS_TYPE_EXTENDED}
796      {$DEFINE SUPPORTS_EXTENDED}
797    {$ENDIF}
798    {$IFDEF HASCURRENCY}
799      {$DEFINE SUPPORTS_CURRENCY}
800    {$ENDIF}
801    {$DEFINE SUPPORTS_THREADVAR}
802    {$DEFINE SUPPORTS_CONSTPARAMS}
803    {$DEFINE SUPPORTS_LONGWORD}
804    {$DEFINE SUPPORTS_INT64}
805    {$DEFINE SUPPORTS_DYNAMICARRAYS}
806    {$DEFINE SUPPORTS_DEFAULTPARAMS}
807    {$DEFINE SUPPORTS_OVERLOAD}
808    {$DEFINE ACCEPT_DEPRECATED}  // 2.2 also gives warnings
809    {$DEFINE ACCEPT_PLATFORM}    // 2.2 also gives warnings
810    {$DEFINE ACCEPT_LIBRARY}
811    {$DEFINE SUPPORTS_EXTSYM}
812    {$DEFINE SUPPORTS_NODEFINE}
813
814    {$DEFINE SUPPORTS_CUSTOMVARIANTS}
815    {$DEFINE SUPPORTS_VARARGS}
816    {$DEFINE SUPPORTS_ENUMVALUE}
817    {$IFDEF LINUX}
818      {$DEFINE HAS_UNIT_LIBC}
819    {$ENDIF LINUX}
820    {$DEFINE HAS_UNIT_TYPES}
821    {$DEFINE HAS_UNIT_VARIANTS}
822    {$DEFINE HAS_UNIT_STRUTILS}
823    {$DEFINE HAS_UNIT_DATEUTILS}
824    {$DEFINE HAS_UNIT_RTLCONSTS}
825
826    {$DEFINE XPLATFORM_RTL}
827
828    {$IFDEF VER2_2}
829      {$DEFINE SUPPORTS_DISPINTERFACE}
830      {$DEFINE SUPPORTS_IMPLEMENTS}
831      {$DEFINE SUPPORTS_DISPID}
832    {$ELSE}
833      {$UNDEF SUPPORTS_DISPINTERFACE}
834      {$UNDEF SUPPORTS_IMPLEMENTS}
835    {$endif}
836    {$UNDEF SUPPORTS_UNSAFE_WARNINGS}
837  {$ENDIF}
838{$ENDIF FPC}
839
840{$IFDEF COMPILER1_UP}
841  {$DEFINE SUPPORTS_CONSTPARAMS}
842  {$DEFINE SUPPORTS_SINGLE}
843  {$DEFINE SUPPORTS_DOUBLE}
844  {$DEFINE SUPPORTS_EXTENDED}
845{$ENDIF COMPILER1_UP}
846
847{$IFDEF COMPILER2_UP}
848  {$DEFINE SUPPORTS_CURRENCY}
849  {$DEFINE SUPPORTS_THREADVAR}
850  {$DEFINE SUPPORTS_VARIANT}
851  {$DEFINE SUPPORTS_WIDECHAR}
852{$ENDIF COMPILER2_UP}
853
854{$IFDEF COMPILER3_UP}
855  {$DEFINE SUPPORTS_OUTPARAMS}
856  {$DEFINE SUPPORTS_WIDESTRING}
857  {$DEFINE SUPPORTS_INTERFACE}
858  {$DEFINE SUPPORTS_DISPINTERFACE}
859  {$DEFINE SUPPORTS_DISPID}
860  {$DEFINE SUPPORTS_WEAKPACKAGEUNIT}
861{$ENDIF COMPILER3_UP}
862
863{$IFDEF COMPILER35_UP}
864  {$DEFINE SUPPORTS_EXTSYM}
865  {$DEFINE SUPPORTS_NODEFINE}
866{$ENDIF COMPILER35_UP}
867
868{$IFDEF COMPILER4_UP}
869  {$DEFINE SUPPORTS_LONGWORD}
870  {$DEFINE SUPPORTS_INT64}
871  {$DEFINE SUPPORTS_DYNAMICARRAYS}
872  {$DEFINE SUPPORTS_DEFAULTPARAMS}
873  {$DEFINE SUPPORTS_OVERLOAD}
874  {$DEFINE SUPPORTS_IMPLEMENTS}
875{$ENDIF COMPILER4_UP}
876
877{$IFDEF COMPILER6_UP}
878  {$DEFINE SUPPORTS_DEPRECATED}
879  {$DEFINE SUPPORTS_LIBRARY}
880  {$DEFINE SUPPORTS_PLATFORM}
881  {$DEFINE SUPPORTS_LOCAL}
882  {$DEFINE ACCEPT_DEPRECATED}
883  {$DEFINE ACCEPT_PLATFORM}
884  {$DEFINE ACCEPT_LIBRARY}
885  {$DEFINE SUPPORTS_DEPRECATED_WARNINGS}
886  {$DEFINE SUPPORTS_LIBRARY_WARNINGS}
887  {$DEFINE SUPPORTS_PLATFORM_WARNINGS}
888  {$DEFINE SUPPORTS_CUSTOMVARIANTS}
889  {$DEFINE SUPPORTS_VARARGS}
890  {$DEFINE SUPPORTS_ENUMVALUE}
891  {$DEFINE SUPPORTS_COMPILETIME_MESSAGES}
892{$ENDIF COMPILER6_UP}
893
894{$IFDEF COMPILER7_UP}
895  {$DEFINE SUPPORTS_UNSAFE_WARNINGS}
896{$ENDIF COMPILER7_UP}
897
898{$IFDEF COMPILER9_UP}
899  {$DEFINE SUPPORTS_FOR_IN}
900  {$DEFINE SUPPORTS_INLINE}
901  {$DEFINE SUPPORTS_NESTED_CONSTANTS}
902  {$DEFINE SUPPORTS_NESTED_TYPES}
903  {$IFDEF CLR}
904    {$DEFINE SUPPORTS_ENHANCED_RECORDS}
905    {$DEFINE SUPPORTS_CLASS_FIELDS}
906    {$DEFINE SUPPORTS_CLASS_HELPERS}
907    {$DEFINE SUPPORTS_CLASS_OPERATORS}
908    {$DEFINE SUPPORTS_STRICT}
909    {$DEFINE SUPPORTS_STATIC}
910    {$DEFINE SUPPORTS_FINAL}
911  {$ENDIF CLR}
912{$ENDIF COMPILER9_UP}
913
914{$IFDEF COMPILER10_UP}
915  {$DEFINE SUPPORTS_ENHANCED_RECORDS}
916  {$DEFINE SUPPORTS_CLASS_FIELDS}
917  {$DEFINE SUPPORTS_CLASS_HELPERS}
918  {$DEFINE SUPPORTS_CLASS_OPERATORS}
919  {$DEFINE SUPPORTS_STRICT}
920  {$DEFINE SUPPORTS_STATIC}
921  {$DEFINE SUPPORTS_FINAL}
922{$ENDIF COMPILER10_UP}
923
924{$IFDEF RTL140_UP}
925  {$IFDEF LINUX}
926    {$DEFINE HAS_UNIT_LIBC}
927  {$ENDIF LINUX}
928  {$DEFINE HAS_UNIT_RTLCONSTS}
929  {$DEFINE HAS_UNIT_TYPES}
930  {$DEFINE HAS_UNIT_VARIANTS}
931  {$DEFINE HAS_UNIT_STRUTILS}
932  {$DEFINE HAS_UNIT_DATEUTILS}
933  {$DEFINE XPLATFORM_RTL}
934{$ENDIF RTL140_UP}
935
936{------------------------------------------------------------------------------}
937{ Cross-platform related defines                                               }
938{------------------------------------------------------------------------------}
939
940{$IFNDEF CPU386}
941  {$DEFINE PUREPASCAL}
942{$ENDIF}
943
944{$IFDEF WIN32}
945  {$DEFINE MSWINDOWS} // predefined for D6+/BCB6+
946  {$DEFINE Win32API}
947{$ENDIF}
948
949{$IFDEF DELPHILANGUAGE}
950  {$IFDEF LINUX}
951    {$DEFINE UNIX}
952  {$ENDIF}
953
954  {$IFNDEF CONSOLE}
955    {$IFDEF LINUX}
956      {$DEFINE VisualCLX}
957    {$ENDIF}
958    {$IFNDEF VisualCLX}
959      {$DEFINE VCL}
960    {$ENDIF}
961  {$ENDIF ~CONSOLE}
962{$ENDIF DELPHILANGUAGE}
963
964{------------------------------------------------------------------------------}
965{ Compiler settings                                                            }
966{------------------------------------------------------------------------------}
967
968{$IFOPT A+} {$DEFINE ALIGN_ON} {$ENDIF}
969{$IFOPT B+} {$DEFINE BOOLEVAL_ON} {$ENDIF}
970{$IFDEF COMPILER2_UP}
971  {$IFOPT C+} {$DEFINE ASSERTIONS_ON} {$ENDIF}
972{$ENDIF}
973{$IFOPT D+} {$DEFINE DEBUGINFO_ON} {$ENDIF}
974{$IFOPT G+} {$DEFINE IMPORTEDDATA_ON} {$ENDIF}
975{$IFDEF COMPILER2_UP}
976  {$IFOPT H+} {$DEFINE LONGSTRINGS_ON} {$ENDIF}
977{$ENDIF}
978
979// Hints
980{$IFOPT I+} {$DEFINE IOCHECKS_ON} {$ENDIF}
981{$IFDEF COMPILER2_UP}
982  {$IFOPT J+} {$DEFINE WRITEABLECONST_ON} {$ENDIF}
983{$ENDIF}
984{$IFOPT L+} {$DEFINE LOCALSYMBOLS} {$ENDIF}
985{$IFOPT M+} {$DEFINE TYPEINFO_ON} {$ENDIF}
986{$IFOPT O+} {$DEFINE OPTIMIZATION_ON} {$ENDIF}
987{$IFOPT P+} {$DEFINE OPENSTRINGS_ON} {$ENDIF}
988{$IFOPT Q+} {$DEFINE OVERFLOWCHECKS_ON} {$ENDIF}
989{$IFOPT R+} {$DEFINE RANGECHECKS_ON} {$ENDIF}
990
991// Real compatibility
992{$IFOPT T+} {$DEFINE TYPEDADDRESS_ON} {$ENDIF}
993{$IFOPT U+} {$DEFINE SAFEDIVIDE_ON} {$ENDIF}
994{$IFOPT V+} {$DEFINE VARSTRINGCHECKS_ON} {$ENDIF}
995{$IFOPT W+} {$DEFINE STACKFRAMES_ON} {$ENDIF}
996
997// Warnings
998{$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF}
999
1000// for Delphi/BCB trial versions remove the point from the line below
1001{.$UNDEF SUPPORTS_WEAKPACKAGEUNIT}
1002
1003{$ENDIF ~JEDI_INC}
1004