IDE: cache macro FPCVER, TBuildManager.RescanCompilerDefines: clear before compute anything

git-svn-id: trunk@27558 -
This commit is contained in:
mattias 2010-10-04 08:51:01 +00:00
parent 84bb112a07
commit 185f09f6b7

View File

@ -115,6 +115,9 @@ type
OverrideTargetCPU: string; OverrideTargetCPU: string;
OverrideLCLWidgetType: string; OverrideLCLWidgetType: string;
FUnitSetChangeStamp: integer; FUnitSetChangeStamp: integer;
// Macro FPCVer
FFPCVer: string;
FFPCVerChangeStamp: integer;
procedure Notification(AComponent: TComponent; Operation: TOperation); procedure Notification(AComponent: TComponent; Operation: TOperation);
override; override;
function OnGetBuildMacroValues(Options: TBaseCompilerOptions; function OnGetBuildMacroValues(Options: TBaseCompilerOptions;
@ -220,6 +223,7 @@ end;
constructor TBuildManager.Create(AOwner: TComponent); constructor TBuildManager.Create(AOwner: TComponent);
begin begin
FFPCVerChangeStamp:=InvalidParseStamp;
MainBuildBoss:=Self; MainBuildBoss:=Self;
inherited Create(AOwner); inherited Create(AOwner);
@ -571,6 +575,13 @@ var
begin begin
if ScanningCompilerDisabled then exit; if ScanningCompilerDisabled then exit;
if ClearCaches then begin
{ $IFDEF VerboseFPCSrcScan}
debugln(['TBuildManager.RescanCompilerDefines clear caches']);
{ $ENDIF}
CodeToolBoss.FPCDefinesCache.ConfigCaches.Clear;
CodeToolBoss.FPCDefinesCache.SourceCaches.Clear;
end;
if ResetBuildTarget then if ResetBuildTarget then
SetBuildTarget('','','',true); SetBuildTarget('','','',true);
@ -582,11 +593,10 @@ begin
TargetOS:=GetTargetOS(true); TargetOS:=GetTargetOS(true);
TargetCPU:=GetTargetCPU(true); TargetCPU:=GetTargetCPU(true);
CompilerFilename:=EnvironmentOptions.CompilerFilename; CompilerFilename:=EnvironmentOptions.CompilerFilename;
FPCSrcDir:=EnvironmentOptions.GetFPCSourceDirectory; FPCSrcDir:=EnvironmentOptions.GetFPCSourceDirectory; // needs FPCVer macro
{$IFDEF VerboseFPCSrcScan} {$IFDEF VerboseFPCSrcScan}
debugln(['TMainIDE.RescanCompilerDefines A ', debugln(['TMainIDE.RescanCompilerDefines A ',
' ClearCaches=',ClearCaches,
' CompilerFilename=',CompilerFilename, ' CompilerFilename=',CompilerFilename,
' TargetOS=',TargetOS, ' TargetOS=',TargetOS,
' TargetCPU=',TargetCPU, ' TargetCPU=',TargetCPU,
@ -595,14 +605,6 @@ begin
'']); '']);
{$ENDIF} {$ENDIF}
if ClearCaches then begin
{ $IFDEF VerboseFPCSrcScan}
debugln(['TBuildManager.RescanCompilerDefines clear caches']);
{ $ENDIF}
CodeToolBoss.FPCDefinesCache.ConfigCaches.Clear;
CodeToolBoss.FPCDefinesCache.SourceCaches.Clear;
end;
UnitSetCache:=CodeToolBoss.FPCDefinesCache.FindUnitSet( UnitSetCache:=CodeToolBoss.FPCDefinesCache.FindUnitSet(
CompilerFilename,TargetOS,TargetCPU,'',FPCSrcDir,true); CompilerFilename,TargetOS,TargetCPU,'',FPCSrcDir,true);
@ -639,8 +641,8 @@ begin
AddTemplate(ADefTempl,false,lisNOTECouldNotCreateDefineTemplateForFreePascal); AddTemplate(ADefTempl,false,lisNOTECouldNotCreateDefineTemplateForFreePascal);
// create compiler macros for the lazarus sources // create compiler macros for the lazarus sources
if CodeToolBoss.DefineTree.FindDefineTemplateByName(StdDefTemplLazarusSrcDir,true if CodeToolBoss.DefineTree.FindDefineTemplateByName(StdDefTemplLazarusSrcDir,
)=nil true)=nil
then begin then begin
ADefTempl:=CreateLazarusSourceTemplate( ADefTempl:=CreateLazarusSourceTemplate(
'$('+ExternalMacroStart+'LazarusDir)', '$('+ExternalMacroStart+'LazarusDir)',
@ -1346,13 +1348,15 @@ end;
function TBuildManager.MacroFuncFPCVer(const Param: string; const Data: PtrInt; function TBuildManager.MacroFuncFPCVer(const Param: string; const Data: PtrInt;
var Abort: boolean): string; var Abort: boolean): string;
var
function Compute: string;
var
FPCVersion, FPCRelease, FPCPatch: integer; FPCVersion, FPCRelease, FPCPatch: integer;
TargetOS: String; TargetOS: String;
TargetCPU: String; TargetCPU: String;
CompilerFilename: String; CompilerFilename: String;
ConfigCache: TFPCTargetConfigCache; ConfigCache: TFPCTargetConfigCache;
begin begin
Result:={$I %FPCVERSION%}; // Version.Release.Patch Result:={$I %FPCVERSION%}; // Version.Release.Patch
if CodeToolBoss<>nil then begin if CodeToolBoss<>nil then begin
// fetch the FPC version from the current compiler // fetch the FPC version from the current compiler
@ -1374,6 +1378,18 @@ begin
ConfigCache.GetFPCVer(FPCVersion,FPCRelease,FPCPatch); ConfigCache.GetFPCVer(FPCVersion,FPCRelease,FPCPatch);
Result:=IntToStr(FPCVersion)+'.'+IntToStr(FPCRelease)+'.'+IntToStr(FPCPatch); Result:=IntToStr(FPCVersion)+'.'+IntToStr(FPCRelease)+'.'+IntToStr(FPCPatch);
end; end;
end;
begin
if FFPCVerChangeStamp<>CompilerParseStamp then
begin
FFPCVer:=Compute;
FFPCVerChangeStamp:=CompilerParseStamp;
{$IFDEF VerboseFPCSrcScan}
debugln(['TBuildManager.MacroFuncFPCVer ',FFPCVer]);
{$ENDIF}
end;
Result:=FFPCVer;
end; end;
function TBuildManager.MacroFuncParams(const Param: string; const Data: PtrInt; function TBuildManager.MacroFuncParams(const Param: string; const Data: PtrInt;