IDE: Increment build number only once when building many modes at one go. Patch from Sandro Cumerlato.

git-svn-id: trunk@48687 -
This commit is contained in:
juha 2015-04-09 16:37:04 +00:00
parent 00c7ba3737
commit 5341fd0bed
3 changed files with 16 additions and 8 deletions

View File

@ -247,7 +247,8 @@ type
function DoPublishProject(Flags: TSaveFlags;
ShowDialog: boolean): TModalResult; virtual; abstract;
function DoBuildProject(const AReason: TCompileReason;
Flags: TProjectBuildFlags): TModalResult; virtual; abstract;
Flags: TProjectBuildFlags;
FinalizeResources: boolean): TModalResult; virtual; abstract;
function GetProjectFileForProjectEditor(AEditor: TSourceEditorInterface): TLazProjectFile; virtual; abstract;
function DoCallProjectChangedHandler(HandlerType: TLazarusIDEHandlerType;
AProject: TLazProject): TModalResult;

View File

@ -775,7 +775,8 @@ type
function DoWarnAmbiguousFiles: TModalResult;
function DoSaveForBuild(AReason: TCompileReason): TModalResult; override;
function DoBuildProject(const AReason: TCompileReason;
Flags: TProjectBuildFlags): TModalResult; override;
Flags: TProjectBuildFlags;
FinalizeResources: boolean = True): TModalResult; override;
function UpdateProjectPOFile(AProject: TProject): TModalResult;
function DoAbortBuild(Interactive: boolean): TModalResult;
procedure DoCompile;
@ -6487,7 +6488,7 @@ begin
end;
function TMainIDE.DoBuildProject(const AReason: TCompileReason;
Flags: TProjectBuildFlags): TModalResult;
Flags: TProjectBuildFlags; FinalizeResources: boolean): TModalResult;
var
SrcFilename: string;
ToolBefore: TProjectCompilationToolOptions;
@ -6784,7 +6785,8 @@ begin
end;
end;
Project1.ProjResources.DoAfterBuild(AReason, Project1.IsVirtual);
if FinalizeResources then
Project1.ProjResources.DoAfterBuild(AReason, Project1.IsVirtual);
finally
// check sources
DoCheckFilesOnDisk;

View File

@ -4021,13 +4021,13 @@ function TLazSourceFileManager.BuildManyModes(): Boolean;
var
ModeCnt: Integer;
function BuildOneMode: Boolean;
function BuildOneMode(LastMode: boolean): Boolean;
begin
Inc(ModeCnt);
DebugLn('');
DebugLn(Format('Building mode %d: %s ...', [ModeCnt, Project1.ActiveBuildMode.Identifier]));
DebugLn('');
Result := MainIDE.DoBuildProject(crBuild,[]) = mrOK;
Result := MainIDE.DoBuildProject(crBuild, [], LastMode) = mrOK;
end;
var
@ -4035,6 +4035,7 @@ var
md, ActiveMode: TProjectBuildMode;
BuildActiveMode: Boolean;
i: Integer;
LastMode: boolean;
begin
Result := False;
ModeCnt := 0;
@ -4057,12 +4058,16 @@ begin
end;
// Build first the active mode so we don't have to switch many times.
if BuildActiveMode then
if not BuildOneMode then Exit;
begin
LastMode := (ModeList.Count=0);
if not BuildOneMode(LastMode) then Exit;
end;
// Build rest of the modes.
for i := 0 to ModeList.Count-1 do
begin
LastMode := (i=(ModeList.Count-1));
Project1.ActiveBuildMode := TProjectBuildMode(ModeList[i]);
if not BuildOneMode then Exit;
if not BuildOneMode(LastMode) then Exit;
end;
// Switch back to original mode.
Project1.ActiveBuildMode := ActiveMode;