Skip to content

Commit efd15c3

Browse files
committed
fix(INC-generator) OR_LATER defines were not being cascaded to previous versions
closes #9 To be released in 1.1.0
1 parent def1d9d commit efd15c3

2 files changed

Lines changed: 150 additions & 0 deletions

File tree

generated/DELPHI_COMPILER_VERSIONS.inc

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,123 @@
303303
{$DEFINE CD_DELPHI_PACKAGE_VERSION_370}
304304
{$ENDIF}
305305

306+
{ ---------------------------------------------------------------------------
307+
_OR_LATER cascade
308+
Propagates version tokens downward so CD_DELPHI_X_OR_LATER is defined for
309+
all compilers at version X and above, not only the exact version X.
310+
--------------------------------------------------------------------------- }
311+
312+
{$IFDEF CD_DELPHI_13_OR_LATER}
313+
{$DEFINE CD_DELPHI_12_OR_LATER}
314+
{$DEFINE CD_DELPHI_ATHENS_OR_LATER}
315+
{$ENDIF}
316+
317+
{$IFDEF CD_DELPHI_12_OR_LATER}
318+
{$DEFINE CD_DELPHI_11_OR_LATER}
319+
{$DEFINE CD_DELPHI_ALEXANDRIA_OR_LATER}
320+
{$ENDIF}
321+
322+
{$IFDEF CD_DELPHI_11_OR_LATER}
323+
{$DEFINE CD_DELPHI_10_4_OR_LATER}
324+
{$DEFINE CD_DELPHI_SYDNEY_OR_LATER}
325+
{$ENDIF}
326+
327+
{$IFDEF CD_DELPHI_10_4_OR_LATER}
328+
{$DEFINE CD_DELPHI_10_3_OR_LATER}
329+
{$DEFINE CD_DELPHI_RIO_OR_LATER}
330+
{$ENDIF}
331+
332+
{$IFDEF CD_DELPHI_10_3_OR_LATER}
333+
{$DEFINE CD_DELPHI_10_2_OR_LATER}
334+
{$DEFINE CD_DELPHI_TOKYO_OR_LATER}
335+
{$ENDIF}
336+
337+
{$IFDEF CD_DELPHI_10_2_OR_LATER}
338+
{$DEFINE CD_DELPHI_10_1_OR_LATER}
339+
{$DEFINE CD_DELPHI_BERLIN_OR_LATER}
340+
{$ENDIF}
341+
342+
{$IFDEF CD_DELPHI_10_1_OR_LATER}
343+
{$DEFINE CD_DELPHI_10_OR_LATER}
344+
{$DEFINE CD_DELPHI_SEATTLE_OR_LATER}
345+
{$ENDIF}
346+
347+
{$IFDEF CD_DELPHI_10_OR_LATER}
348+
{$DEFINE CD_DELPHI_XE8_OR_LATER}
349+
{$ENDIF}
350+
351+
{$IFDEF CD_DELPHI_XE8_OR_LATER}
352+
{$DEFINE CD_DELPHI_XE7_OR_LATER}
353+
{$ENDIF}
354+
355+
{$IFDEF CD_DELPHI_XE7_OR_LATER}
356+
{$DEFINE CD_DELPHI_XE6_OR_LATER}
357+
{$ENDIF}
358+
359+
{$IFDEF CD_DELPHI_XE6_OR_LATER}
360+
{$DEFINE CD_DELPHI_XE5_OR_LATER}
361+
{$ENDIF}
362+
363+
{$IFDEF CD_DELPHI_XE5_OR_LATER}
364+
{$DEFINE CD_DELPHI_XE4_OR_LATER}
365+
{$ENDIF}
366+
367+
{$IFDEF CD_DELPHI_XE4_OR_LATER}
368+
{$DEFINE CD_DELPHI_XE3_OR_LATER}
369+
{$ENDIF}
370+
371+
{$IFDEF CD_DELPHI_XE3_OR_LATER}
372+
{$DEFINE CD_DELPHI_XE2_OR_LATER}
373+
{$ENDIF}
374+
375+
{$IFDEF CD_DELPHI_XE2_OR_LATER}
376+
{$DEFINE CD_DELPHI_XE_OR_LATER}
377+
{$ENDIF}
378+
379+
{$IFDEF CD_DELPHI_XE_OR_LATER}
380+
{$DEFINE CD_DELPHI_2010_OR_LATER}
381+
{$ENDIF}
382+
383+
{$IFDEF CD_DELPHI_2010_OR_LATER}
384+
{$DEFINE CD_DELPHI_2009_OR_LATER}
385+
{$ENDIF}
386+
387+
{$IFDEF CD_DELPHI_2009_OR_LATER}
388+
{$DEFINE CD_DELPHI_2007_OR_LATER}
389+
{$ENDIF}
390+
391+
{$IFDEF CD_DELPHI_2007_OR_LATER}
392+
{$DEFINE CD_DELPHI_2006_OR_LATER}
393+
{$ENDIF}
394+
395+
{$IFDEF CD_DELPHI_2006_OR_LATER}
396+
{$DEFINE CD_DELPHI_2005_OR_LATER}
397+
{$ENDIF}
398+
399+
{$IFDEF CD_DELPHI_2005_OR_LATER}
400+
{$DEFINE CD_DELPHI_7_OR_LATER}
401+
{$ENDIF}
402+
403+
{$IFDEF CD_DELPHI_7_OR_LATER}
404+
{$DEFINE CD_DELPHI_6_OR_LATER}
405+
{$ENDIF}
406+
407+
{$IFDEF CD_DELPHI_6_OR_LATER}
408+
{$DEFINE CD_DELPHI_5_OR_LATER}
409+
{$ENDIF}
410+
411+
{$IFDEF CD_DELPHI_5_OR_LATER}
412+
{$DEFINE CD_DELPHI_4_OR_LATER}
413+
{$ENDIF}
414+
415+
{$IFDEF CD_DELPHI_4_OR_LATER}
416+
{$DEFINE CD_DELPHI_3_OR_LATER}
417+
{$ENDIF}
418+
419+
{$IFDEF CD_DELPHI_3_OR_LATER}
420+
{$DEFINE CD_DELPHI_2_OR_LATER}
421+
{$ENDIF}
422+
306423
{ ---------------------------------------------------------------------------
307424
Capabilities
308425
- Range-guarded using *_OR_LATER tokens to avoid repetition.

tools/generate-delphi-compiler-versions-inc.ps1

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -308,6 +308,39 @@ if ($lastPkgTok) {
308308
Emit '{$ENDIF}'
309309
Emit
310310

311+
# ---------------- _OR_LATER cascade ----------------
312+
# Each version's _OR_LATER tokens are only set inside its own {$IFDEF VERxxx} block.
313+
# This cascade propagates them downward so that, e.g., CD_DELPHI_2_OR_LATER is
314+
# defined for any compiler from Delphi 2 onwards, not just when compiling on Delphi 2.
315+
# Runs newest-to-oldest so each step can rely on the one above it already being set.
316+
317+
Emit '{ ---------------------------------------------------------------------------'
318+
Emit ' _OR_LATER cascade'
319+
Emit ' Propagates version tokens downward so CD_DELPHI_X_OR_LATER is defined for'
320+
Emit ' all compilers at version X and above, not only the exact version X.'
321+
Emit ' --------------------------------------------------------------------------- }'
322+
Emit
323+
324+
for ($i = $versionCount - 1; $i -ge 1; $i--) {
325+
$curr = $versions[$i]
326+
$prev = $versions[$i - 1]
327+
328+
$currToks = @(Get-DefinesForProductName ([string]$curr.productName))
329+
$prevToks = @(Get-DefinesForProductName ([string]$prev.productName))
330+
331+
if ($currToks.Length -eq 0 -or $prevToks.Length -eq 0) { continue }
332+
333+
# Trigger on the first (numeric/primary) token of the current version
334+
$trigger = 'CD_DELPHI_' + $currToks[0] + '_OR_LATER'
335+
336+
Emit ('{$IFDEF ' + $trigger + '}')
337+
foreach ($tok in $prevToks) {
338+
Emit (' {$DEFINE CD_DELPHI_' + $tok + '_OR_LATER}')
339+
}
340+
Emit '{$ENDIF}'
341+
Emit
342+
}
343+
311344
# ---------------- Capabilities section (range guarded, optimistic for open-ended) ----------------
312345

313346
# Collect all platforms/buildsystems present in dataset

0 commit comments

Comments
 (0)