> On 2022-04-13 00:34, denisgolovan via fpc-pascal wrote:

> Your comment about conditional defines goes in the right direction -
> basically:
> 
> 1) Separate your changes into parts affecting the compiler behaviour
> (e.g. the changes impacting the compiled structures and code, etc.) from
> changes needed because of the changed behaviour (i.e. use of your new
> features within the RTL and/or the compiler, modified versions of code
> working with the newly / differently compiled structures, etc.).
> 
> 2) Create a conditional define for your new changes - this new define
> would be enabled within the compiler behaviour affecting changes.
> 
> 3) Make your changes resulting from the changed behaviour (either in the
> RTL, or in the compiler) enabled only when the new conditional define is
> enabled.
> 
> If you do this, you should be able to use the standard makefiles without
> any changes (e.g. "make compiler_cycle", etc.).
> 
> Tomas

Ok. It's good then.
I'd like to know about the actual CYCLELEVEL logic implementation details.

So far I haven't found any explicit conditional define related to cycle levels.
I assume something like:

  {$IF not defined(FPC_CYCLELEVEL1) and not defined(FPC_CYCLELEVEL2) and not 
defined(FPC_CYCLELEVEL3)}                                                       
                         
    // previous version compiler builds our sources                             
                                                                                
                      
    def_system_macro('FPC_CYCLELEVEL1');                                        
                                                                                
                      
  {$ENDIF}                                                                      
                                                                                
                      
  {$IFDEF FPC_CYCLELEVEL1}                                                      
                                                                                
                      
    // CYCLELEVEL1 compiler builds our sources                                  
                                                                                
                      
    def_system_macro('FPC_CYCLELEVEL2');                                        
                                                                                
                      
  {$ENDIF}                                                                      
                                                                                
                      
  {$IFDEF FPC_CYCLELEVEL2}                                                      
                                                                                
                      
    // CYCLELEVEL2 compiler builds our sources                                  
                                                                                
                      
    def_system_macro('FPC_CYCLELEVEL3');                                        
                                                                                
                      
  {$ENDIF}                                                                      
                                                                                
                      
  {$IFDEF FPC_CYCLELEVEL3}                                                      
                                                                                
                      
    // CYCLELEVEL3 compiler builds our sources                                  
                                                                                
                      
    def_system_macro('FPC_CYCLELEVEL4');                                        
                                                                                
                      
  {$ENDIF}                                                                      
                                                                                
                      

... somewhere in options.pas should be enough. 
Or maybe there is already some existing / more reliable way?


-- Regards,
Denis Golovan
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to