Compiler options:
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO OFF}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
...etc...
Compile-time feature flags & compiler version, and platform detection (these were snipped from the Graphics32 library):
(*
Symbol: NO_GENERIC_METACLASS_LISTS
-------------------------------
The C++ Builder linker has problems resolving ambiguities caused by
metaclass types because they all get mangled as TClass. As a result
of this the compiled object files end up containing duplicate
symbols, which in turn causes a LIB266 linker error.
Specifically we get into problems with TCustomClassList<T> where "T"
is a metaclass.
To work around the problem we define the NO_GENERIC_METACLASS_LISTS
for C++ Builder which causes us to use TClassList for all class types.
*)
{$if defined(BCB)}
{$define NO_GENERIC_METACLASS_LISTS}
{$ifend}
(*
Symbol: GENERIC_POINTERS
-------------------------------
Typed pointers to generic types are supported.
Older Delphi versions cannot resolve a pointer to a generic type correctly
and therefore must use plan untyped pointers instead.
Exact Delphi version is unknown but XE4 doesn't work and Delphi 10 does.
The symbol is defined for XE5 and later, and for FPC.
The exact version of Delphi that supports the feature is unknown at this
time.
*)
{$if defined(FPC)}
{$define GENERIC_POINTERS}
{$elseif (CompilerVersion > 25.0)}
{$define GENERIC_POINTERS}
{$ifend}