--- fpcupdeluxe_avr_original_2/lazarus/components/ideintf/compoptsintf.pas 2018-09-15 20:00:32.625115819 +0200 +++ fpcupdeluxe_ATmega328/lazarus/components/ideintf/compoptsintf.pas 2018-09-15 20:28:20.467258490 +0200 @@ -290,6 +290,8 @@ type function GetUnitPaths: String; virtual; abstract; function GetExecuteBeforeCommand: string; virtual; abstract; function GetExecuteAfterCommand: string; virtual; abstract; + function GetExecuteBeforeCompileReasons: TCompileReasons; virtual; abstract; + function GetExecuteAfterCompileReasons: TCompileReasons; virtual; abstract; procedure SetCompilerPath(const AValue: String); virtual; abstract; procedure SetConditionals(AValue: string); virtual; abstract; procedure SetCustomOptions(const AValue: string); virtual; abstract; @@ -310,6 +312,8 @@ type procedure SetUnitPaths(const AValue: String); virtual; abstract; procedure SetExecuteBeforeCommand(const ACommand: string); virtual; abstract; procedure SetExecuteAfterCommand(const ACommand: string); virtual; abstract; + procedure SetExecuteBeforeCompileReasons(ACompileReasons: TCompileReasons); virtual; abstract; + procedure SetExecuteAfterCompileReasons(ACompileReasons: TCompileReasons); virtual; abstract; public constructor Create(const TheOwner: TObject); virtual; destructor Destroy; override; @@ -456,6 +460,8 @@ type property CompilerPath: String read GetCompilerPath write SetCompilerPath; property ExecuteBeforeCommand: String read GetExecuteBeforeCommand write SetExecuteBeforeCommand; property ExecuteAfterCommand: String read GetExecuteAfterCommand write SetExecuteAfterCommand; + property ExecuteBeforeCompileReasons: TCompileReasons read GetExecuteBeforeCompileReasons write SetExecuteBeforeCompileReasons; + property ExecuteAfterCompileReasons: TCompileReasons read GetExecuteAfterCompileReasons write SetExecuteAfterCompileReasons; procedure SetAlternativeCompile(const Command: string; ScanFPCMsgs: boolean); virtual; abstract; // disable normal compile and call this instead end; --- fpcupdeluxe_avr_original_2/lazarus/ide/project.pp 2018-09-15 20:00:12.301006947 +0200 +++ fpcupdeluxe_ATmega328/lazarus/ide/project.pp 2018-09-16 16:19:17.909216697 +0200 @@ -528,8 +528,11 @@ type procedure SetUnitPaths(const AValue: string); override; procedure SetUnitOutputDir(const AValue: string); override; procedure SetConditionals(AValue: string); override; - function SubstituteProjectMacros(const s: string; - PlatformIndependent: boolean): string; + function SubstituteProjectMacros(const s: string; PlatformIndependent: boolean): string; + function GetExecuteBeforeCompileReasons: TCompileReasons; override; + function GetExecuteAfterCompileReasons: TCompileReasons; override; + procedure SetExecuteBeforeCompileReasons(ACompileReasons: TCompileReasons); override; + procedure SetExecuteAfterCompileReasons(ACompileReasons: TCompileReasons); override; public constructor Create(const AOwner: TObject); override; destructor Destroy; override; @@ -6210,6 +6213,34 @@ begin end; end; +function TProjectCompilerOptions.GetExecuteBeforeCompileReasons: TCompileReasons; +begin + if ExecuteAfter is TProjectCompilationToolOptions then begin + Result := TProjectCompilationToolOptions(ExecuteBefore).CompileReasons; + end; +end; + +function TProjectCompilerOptions.GetExecuteAfterCompileReasons: TCompileReasons; +begin + if ExecuteAfter is TProjectCompilationToolOptions then begin + Result := TProjectCompilationToolOptions(ExecuteAfter).CompileReasons; + end; +end; + +procedure TProjectCompilerOptions.SetExecuteBeforeCompileReasons(ACompileReasons: TCompileReasons); +begin + if ExecuteAfter is TProjectCompilationToolOptions then begin + TProjectCompilationToolOptions(ExecuteBefore).CompileReasons := ACompileReasons; + end; +end; + +procedure TProjectCompilerOptions.SetExecuteAfterCompileReasons(ACompileReasons: TCompileReasons); +begin + if ExecuteAfter is TProjectCompilationToolOptions then begin + TProjectCompilationToolOptions(ExecuteAfter).CompileReasons := ACompileReasons; + end; +end; + procedure TProjectCompilerOptions.Assign(Source: TPersistent); var ProjCompOptions: TProjectCompilerOptions;