mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-07-06 07:06:01 +02:00
lazbuild: fixed build macros when there is no project
git-svn-id: trunk@30801 -
This commit is contained in:
parent
d2f1a124fa
commit
8c4dbe5aaa
@ -132,6 +132,8 @@ type
|
|||||||
OverrideLCLWidgetType: string;
|
OverrideLCLWidgetType: string;
|
||||||
FUnitSetChangeStamp: integer;
|
FUnitSetChangeStamp: integer;
|
||||||
FFPCSrcScans: TFPCSrcScans;
|
FFPCSrcScans: TFPCSrcScans;
|
||||||
|
DefaultCfgVars: TCTCfgScriptVariables;
|
||||||
|
DefaultCfgVarsBuildMacroStamp: integer;
|
||||||
// Macro FPCVer
|
// Macro FPCVer
|
||||||
FFPCVer: string;
|
FFPCVer: string;
|
||||||
FFPCVerChangeStamp: integer;
|
FFPCVerChangeStamp: integer;
|
||||||
@ -245,6 +247,8 @@ end;
|
|||||||
|
|
||||||
constructor TBuildManager.Create(AOwner: TComponent);
|
constructor TBuildManager.Create(AOwner: TComponent);
|
||||||
begin
|
begin
|
||||||
|
DefaultCfgVars:=TCTCfgScriptVariables.Create;
|
||||||
|
DefaultCfgVarsBuildMacroStamp:=InvalidParseStamp;
|
||||||
FFPCVerChangeStamp:=InvalidParseStamp;
|
FFPCVerChangeStamp:=InvalidParseStamp;
|
||||||
MainBuildBoss:=Self;
|
MainBuildBoss:=Self;
|
||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
@ -266,6 +270,7 @@ begin
|
|||||||
LazConfMacroFunc:=nil;
|
LazConfMacroFunc:=nil;
|
||||||
OnBackupFileInteractive:=nil;
|
OnBackupFileInteractive:=nil;
|
||||||
FreeAndNil(InputHistories);
|
FreeAndNil(InputHistories);
|
||||||
|
FreeAndNil(DefaultCfgVars);
|
||||||
|
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
MainBuildBoss:=nil;
|
MainBuildBoss:=nil;
|
||||||
@ -1718,6 +1723,7 @@ end;
|
|||||||
|
|
||||||
function TBuildManager.OnGetBuildMacroValues(Options: TBaseCompilerOptions;
|
function TBuildManager.OnGetBuildMacroValues(Options: TBaseCompilerOptions;
|
||||||
IncludeSelf: boolean): TCTCfgScriptVariables;
|
IncludeSelf: boolean): TCTCfgScriptVariables;
|
||||||
|
{off $DEFINE VerboseBuildMacros}
|
||||||
|
|
||||||
procedure AddAllInherited(FirstDependency: TPkgDependency;
|
procedure AddAllInherited(FirstDependency: TPkgDependency;
|
||||||
AddTo: TCTCfgScriptVariables);
|
AddTo: TCTCfgScriptVariables);
|
||||||
@ -1778,29 +1784,42 @@ var
|
|||||||
s: String;
|
s: String;
|
||||||
aName: string;
|
aName: string;
|
||||||
aValue: String;
|
aValue: String;
|
||||||
|
MainMacroValues: TProjectBuildMacros;
|
||||||
begin
|
begin
|
||||||
Result:=nil;
|
Result:=nil;
|
||||||
if Options=nil then begin
|
if Options=nil then begin
|
||||||
// return the values of the active project
|
// return the values of the active project
|
||||||
if (Project1=nil) or (Project1.MacroValues=nil) then exit;
|
if (Project1<>nil) and (Project1.MacroValues<>nil) then begin
|
||||||
Result:=Project1.MacroValues.CfgVars;
|
MainMacroValues:=Project1.MacroValues;
|
||||||
if Project1.MacroValues.CfgVarsBuildMacroStamp=BuildMacroChangeStamp then
|
Result:=MainMacroValues.CfgVars;
|
||||||
|
if MainMacroValues.CfgVarsBuildMacroStamp=BuildMacroChangeStamp then
|
||||||
exit;
|
exit;
|
||||||
// rebuild project macros
|
// rebuild main macros
|
||||||
Result.Clear;
|
Result.Clear;
|
||||||
for i:=0 to Project1.MacroValues.Count-1 do begin
|
for i:=0 to MainMacroValues.Count-1 do begin
|
||||||
aName:=Project1.MacroValues.Names[i];
|
aName:=MainMacroValues.Names[i];
|
||||||
aValue:=Project1.MacroValues.ValueFromIndex(i);
|
aValue:=MainMacroValues.ValueFromIndex(i);
|
||||||
Result.Define(PChar(aName),aValue);
|
Result.Define(PChar(aName),aValue);
|
||||||
end;
|
end;
|
||||||
Project1.MacroValues.CfgVarsBuildMacroStamp:=BuildMacroChangeStamp;
|
MainMacroValues.CfgVarsBuildMacroStamp:=BuildMacroChangeStamp;
|
||||||
|
end else if DefaultCfgVars<>nil then begin
|
||||||
|
Result:=DefaultCfgVars;
|
||||||
|
if DefaultCfgVarsBuildMacroStamp=BuildMacroChangeStamp then
|
||||||
|
exit;
|
||||||
|
// rebuild main macros
|
||||||
|
Result.Clear;
|
||||||
|
DefaultCfgVarsBuildMacroStamp:=BuildMacroChangeStamp;
|
||||||
|
end else
|
||||||
|
exit;
|
||||||
|
|
||||||
// set overrides
|
// set overrides
|
||||||
Overrides:=GetBuildMacroOverrides;
|
Overrides:=GetBuildMacroOverrides;
|
||||||
try
|
try
|
||||||
for i:=0 to Overrides.Count-1 do
|
for i:=0 to Overrides.Count-1 do
|
||||||
Result.Values[Overrides.Names[i]]:=Overrides.ValueFromIndex[i];
|
Result.Values[Overrides.Names[i]]:=Overrides.ValueFromIndex[i];
|
||||||
//debugln(['TBuildManager.OnGetBuildMacroValues Overrides=',dbgstr(Overrides.Text)]);
|
{$IFDEF VerboseBuildMacros}
|
||||||
|
debugln(['TBuildManager.OnGetBuildMacroValues Overrides=',dbgstr(Overrides.Text)]);
|
||||||
|
{$ENDIF}
|
||||||
finally
|
finally
|
||||||
Overrides.Free;
|
Overrides.Free;
|
||||||
end;
|
end;
|
||||||
@ -1808,6 +1827,8 @@ begin
|
|||||||
// add the defaults
|
// add the defaults
|
||||||
// Note: see also ide/frames/compiler_buildmacro_options.pas procedure TCompOptBuildMacrosFrame.BuildMacrosTreeViewEdited
|
// Note: see also ide/frames/compiler_buildmacro_options.pas procedure TCompOptBuildMacrosFrame.BuildMacrosTreeViewEdited
|
||||||
if not Result.IsDefined('TargetOS') then begin
|
if not Result.IsDefined('TargetOS') then begin
|
||||||
|
s:='';
|
||||||
|
if Project1<>nil then
|
||||||
s:=Project1.CompilerOptions.TargetOS;
|
s:=Project1.CompilerOptions.TargetOS;
|
||||||
if s='' then
|
if s='' then
|
||||||
s:=GetDefaultTargetOS;
|
s:=GetDefaultTargetOS;
|
||||||
@ -1822,17 +1843,25 @@ begin
|
|||||||
Result.Values['SrcOS2']:=s;
|
Result.Values['SrcOS2']:=s;
|
||||||
end;
|
end;
|
||||||
if not Result.IsDefined('TargetCPU') then begin
|
if not Result.IsDefined('TargetCPU') then begin
|
||||||
|
s:='';
|
||||||
|
if Project1<>nil then
|
||||||
s:=Project1.CompilerOptions.TargetCPU;
|
s:=Project1.CompilerOptions.TargetCPU;
|
||||||
if s='' then
|
if s='' then
|
||||||
s:=GetDefaultTargetCPU;
|
s:=GetDefaultTargetCPU;
|
||||||
Result.Values['TargetCPU']:=s;
|
Result.Values['TargetCPU']:=s;
|
||||||
end;
|
end;
|
||||||
if Result.Values['LCLWidgetType']='' then begin
|
if Result.Values['LCLWidgetType']='' then begin
|
||||||
Result.Values['LCLWidgetType']:=
|
s:='';
|
||||||
Project1.CompilerOptions.GetEffectiveLCLWidgetType;
|
if Project1<>nil then
|
||||||
|
s:=Project1.CompilerOptions.GetEffectiveLCLWidgetType;
|
||||||
|
if s='' then
|
||||||
|
s:=LCLPlatformDirNames[GetDefaultLCLWidgetType];
|
||||||
|
Result.Values['LCLWidgetType']:=s;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//Result.WriteDebugReport('OnGetBuildMacroValues project values');
|
{$IFDEF VerboseBuildMacros}
|
||||||
|
Result.WriteDebugReport('OnGetBuildMacroValues project values');
|
||||||
|
{$ENDIF}
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1860,13 +1889,17 @@ begin
|
|||||||
// add macro values of self
|
// add macro values of self
|
||||||
if Values<>nil then
|
if Values<>nil then
|
||||||
Result.Assign(Values);
|
Result.Assign(Values);
|
||||||
//Result.WriteDebugReport('TPkgManager.OnGetBuildMacroValues before execute: '+dbgstr(Options.Conditionals),' ');
|
{$IFDEF VerboseBuildMacros}
|
||||||
|
Result.WriteDebugReport('TPkgManager.OnGetBuildMacroValues before execute: '+dbgstr(Options.Conditionals),' ');
|
||||||
|
{$ENDIF}
|
||||||
if not ParseOpts.MacroValues.Execute(Options.Conditionals) then begin
|
if not ParseOpts.MacroValues.Execute(Options.Conditionals) then begin
|
||||||
debugln(['TPkgManager.OnGetBuildMacroValues Error: ',ParseOpts.MacroValues.GetErrorStr(0)]);
|
debugln(['TPkgManager.OnGetBuildMacroValues Error: ',ParseOpts.MacroValues.GetErrorStr(0)]);
|
||||||
debugln(Options.Conditionals);
|
debugln(Options.Conditionals);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
//Result.WriteDebugReport('TPkgManager.OnGetBuildMacroValues executed: '+dbgstr(Options.Conditionals),' ');
|
{$IFDEF VerboseBuildMacros}
|
||||||
|
Result.WriteDebugReport('TPkgManager.OnGetBuildMacroValues executed: '+dbgstr(Options.Conditionals),' ');
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
// the macro values of the active project take precedence
|
// the macro values of the active project take precedence
|
||||||
SetProjectMacroValues;
|
SetProjectMacroValues;
|
||||||
|
Loading…
Reference in New Issue
Block a user