mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 15:30:52 +02:00
IDE: cache macro FPCVER, TBuildManager.RescanCompilerDefines: clear before compute anything
git-svn-id: trunk@27558 -
This commit is contained in:
parent
84bb112a07
commit
185f09f6b7
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user