diff --git a/ide/basebuildmanager.pas b/ide/basebuildmanager.pas index 0fa733c73d..69c760a332 100644 --- a/ide/basebuildmanager.pas +++ b/ide/basebuildmanager.pas @@ -66,6 +66,7 @@ type procedure RescanCompilerDefines(ResetBuildTarget, ClearCaches, WaitTillDone, Quiet: boolean); virtual; abstract; + function CompilerOnDiskChanged: boolean; virtual; abstract; function CheckAmbiguousSources(const AFilename: string; Compiling: boolean): TModalResult; virtual; abstract; diff --git a/ide/buildmanager.pas b/ide/buildmanager.pas index ee83edf71e..ba789119df 100644 --- a/ide/buildmanager.pas +++ b/ide/buildmanager.pas @@ -165,6 +165,7 @@ type procedure UpdateEnglishErrorMsgFilename; procedure RescanCompilerDefines(ResetBuildTarget, ClearCaches, WaitTillDone, Quiet: boolean); override; + function CompilerOnDiskChanged: boolean; override; procedure LoadFPCDefinesCaches; procedure SaveFPCDefinesCaches; property UnitSetCache: TFPCUnitSetCache read FUnitSetCache write SetUnitSetCache; @@ -750,6 +751,17 @@ begin end; end; +function TBuildManager.CompilerOnDiskChanged: boolean; +var + CfgCache: TFPCTargetConfigCache; +begin + Result:=false; + if UnitSetCache=nil then exit; + CfgCache:=UnitSetCache.GetConfigCache(false); + if CfgCache=nil then exit; + Result:=CfgCache.NeedsUpdate; +end; + procedure TBuildManager.LoadFPCDefinesCaches; var aFilename: String; diff --git a/ide/main.pp b/ide/main.pp index eb101a3129..339876b9ac 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -12402,6 +12402,9 @@ begin Result:=DebugBoss.DoStopProject; if Result<>mrOk then exit; end; + + if MainBuildBoss.CompilerOnDiskChanged then + MainBuildBoss.RescanCompilerDefines(false,false,false,false); end; function TMainIDE.OnRunExternalTool(Tool: TIDEExternalToolOptions): TModalResult;