IDE: do not recompile if only verbosity changed, for new messages: remove -vb and -v0 options, always pass -vbq

git-svn-id: trunk@45251 -
This commit is contained in:
mattias 2014-05-30 17:18:36 +00:00
parent 3dc847126b
commit 2f2073e7f4
4 changed files with 115 additions and 16 deletions

View File

@ -128,7 +128,9 @@ type
procedure SetPassLinkerOpt(const AValue: Boolean);
procedure SetRangeChecks(const AValue: Boolean);
procedure SetShowAll(const AValue: Boolean);
{$IFNDEF EnableNewExtTools}
procedure SetShowAllProcsOnError(const AValue: Boolean);
{$ENDIF}
procedure SetShowCompProc(const AValue: Boolean);
procedure SetShowCond(const AValue: Boolean);
procedure SetShowDebugInfo(const AValue: Boolean);
@ -140,7 +142,9 @@ type
procedure SetShowHintsForUnusedUnitsInMainSrc(const AValue: Boolean);
procedure SetShowLineNum(const AValue: Boolean);
procedure SetShowNotes(const AValue: Boolean);
{$IFNDEF EnableNewExtTools}
procedure SetShowNothing(const AValue: Boolean);
{$ENDIF}
procedure SetShowSummary(const AValue: Boolean);
procedure SetShowTriedFiles(const AValue: Boolean);
procedure SetShowUsedFiles(const AValue: Boolean);
@ -236,14 +240,18 @@ type
fShowGenInfo: Boolean;
fShowLineNum: Boolean;
fShowAll: Boolean;
{$IFNDEF EnableNewExtTools}
fShowAllProcsOnError: Boolean;
{$ENDIF}
fShowDebugInfo: Boolean;
fShowUsedFiles: Boolean;
fShowTriedFiles: Boolean;
fShowCompProc: Boolean;
fShowCond: Boolean;
fShowExecInfo: Boolean;
{$IFNDEF EnableNewExtTools}
fShowNothing: Boolean;
{$ENDIF}
fShowSummary: Boolean;
fShowHintsForUnusedUnitsInMainSrc: Boolean;
fShowHintsForSenderNotUsed: Boolean;
@ -397,8 +405,10 @@ type
property ShowHints: Boolean read fShowHints write SetShowHints; // -vh
property ShowGenInfo: Boolean read fShowGenInfo write SetShowGenInfo; // -vi
property ShowLineNum: Boolean read fShowLineNum write SetShowLineNum; // -vl
{$IFNDEF EnableNewExtTools}
property ShowAllProcsOnError: Boolean
read fShowAllProcsOnError write SetShowAllProcsOnError; // -vb
{$ENDIF}
property ShowAll: Boolean read fShowAll write SetShowAll; // -va
property ShowDebugInfo: Boolean read fShowDebugInfo write SetShowDebugInfo; // -vd
property ShowUsedFiles: Boolean read fShowUsedFiles write SetShowUsedFiles; // -vu
@ -406,7 +416,9 @@ type
property ShowCompProc: Boolean read fShowCompProc write SetShowCompProc; // -vp
property ShowCond: Boolean read fShowCond write SetShowCond; // -vc
property ShowExecInfo: Boolean read fShowExecInfo write SetShowExecInfo; // -vx
{$IFNDEF EnableNewExtTools}
property ShowNothing: Boolean read fShowNothing write SetShowNothing; // -v0
{$ENDIF}
property ShowSummary: Boolean read FShowSummary write SetShowSummary;
property ShowHintsForUnusedUnitsInMainSrc: Boolean
read fShowHintsForUnusedUnitsInMainSrc write SetShowHintsForUnusedUnitsInMainSrc;
@ -482,12 +494,14 @@ begin
IncreaseChangeStamp;
end;
{$IFNDEF EnableNewExtTools}
procedure TLazCompilerOptions.SetShowAllProcsOnError(const AValue: Boolean);
begin
if fShowAllProcsOnError=AValue then exit;
fShowAllProcsOnError:=AValue;
IncreaseChangeStamp;
end;
{$ENDIF}
procedure TLazCompilerOptions.SetShowCompProc(const AValue: Boolean);
begin
@ -567,12 +581,14 @@ begin
IncreaseChangeStamp;
end;
{$IFNDEF EnableNewExtTools}
procedure TLazCompilerOptions.SetShowNothing(const AValue: Boolean);
begin
if fShowNothing=AValue then exit;
fShowNothing:=AValue;
IncreaseChangeStamp;
end;
{$ENDIF}
procedure TLazCompilerOptions.SetShowSummary(const AValue: Boolean);
begin

View File

@ -1774,14 +1774,18 @@ begin
ShowGenInfo := aXMLConfig.GetValue(p+'Verbosity/ShowGenInfo/Value', true);
ShowLineNum := aXMLConfig.GetValue(p+'Verbosity/ShoLineNum/Value', false);
ShowAll := aXMLConfig.GetValue(p+'Verbosity/ShowAll/Value', false);
{$IFNDEF EnableNewExtTools}
ShowAllProcsOnError := aXMLConfig.GetValue(p+'Verbosity/ShowAllProcsOnError/Value', false);
{$ENDIF}
ShowDebugInfo := aXMLConfig.GetValue(p+'Verbosity/ShowDebugInfo/Value', false);
ShowUsedFiles := aXMLConfig.GetValue(p+'Verbosity/ShowUsedFiles/Value', false);
ShowTriedFiles := aXMLConfig.GetValue(p+'Verbosity/ShowTriedFiles/Value', false);
ShowCompProc := aXMLConfig.GetValue(p+'Verbosity/ShowCompProc/Value', false);
ShowCond := aXMLConfig.GetValue(p+'Verbosity/ShowCond/Value', false);
ShowExecInfo := aXMLConfig.GetValue(p+'Verbosity/ShowExecInfo/Value', false);
{$IFNDEF EnableNewExtTools}
ShowNothing := aXMLConfig.GetValue(p+'Verbosity/ShowNothing/Value', false);
{$ENDIF}
ShowSummary := aXMLConfig.GetValue(p+'Verbosity/ShowSummary/Value', false);
ShowHintsForUnusedUnitsInMainSrc := aXMLConfig.GetValue(p+'Verbosity/ShowHintsForUnusedUnitsInMainSrc/Value', false);
ShowHintsForSenderNotUsed := aXMLConfig.GetValue(p+'Verbosity/ShowHintsForSenderNotUsed/Value', false);
@ -1994,14 +1998,18 @@ begin
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowGenInfo/Value', ShowGenInfo,true);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShoLineNum/Value', ShowLineNum,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowAll/Value', ShowAll,false);
{$IFNDEF EnableNewExtTools}
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowAllProcsOnError/Value', ShowAllProcsOnError,false);
{$ENDIF}
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowDebugInfo/Value', ShowDebugInfo,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowUsedFiles/Value', ShowUsedFiles,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowTriedFiles/Value', ShowTriedFiles,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowCompProc/Value', ShowCompProc,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowCond/Value', ShowCond,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowExecInfo/Value', ShowExecInfo,false);
{$IFNDEF EnableNewExtTools}
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowNothing/Value', ShowNothing,false);
{$ENDIF}
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowSummary/Value', ShowSummary,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowHintsForUnusedUnitsInMainSrc/Value', ShowHintsForUnusedUnitsInMainSrc,false);
aXMLConfig.SetDeleteValue(p+'Verbosity/ShowHintsForSenderNotUsed/Value', ShowHintsForSenderNotUsed,false);
@ -3150,8 +3158,10 @@ begin
tempsw := tempsw + 'i';
if (ShowLineNum) then
tempsw := tempsw + 'l';
{$IFNDEF EnableNewExtTools}
if (ShowAllProcsOnError) then
tempsw := tempsw + 'b';
{$ENDIF}
if (ShowDebugInfo) then
tempsw := tempsw + 'd';
if (ShowUsedFiles) then
@ -3164,12 +3174,16 @@ begin
tempsw := tempsw + 'c';
if (ShowExecInfo) then
tempsw := tempsw + 'x';
{$IFNDEF EnableNewExtTools}
if ShowNothing then
tempsw := '0';
{$ENDIF}
if ShowAll or (ccloAddVerboseAll in Flags) then
tempsw := 'a';
{$IFDEF EnableNewExtTools}
tempsw := tempsw + 'bq'; // full file names and message ids
{$ENDIF}
if (tempsw <> '') then begin
tempsw := '-v' + tempsw;
@ -3492,14 +3506,18 @@ begin
fShowGenInfo := true;
fShowLineNum := false;
fShowAll := false;
{$IFNDEF EnableNewExtTools}
fShowAllProcsOnError := false;
{$ENDIF}
fShowDebugInfo := false;
fShowUsedFiles := false;
fShowTriedFiles := false;
fShowCompProc := false;
fShowCond := false;
fShowExecInfo := false;
{$IFNDEF EnableNewExtTools}
fShowNothing := false;
{$ENDIF}
fShowSummary := false;
fShowHintsForUnusedUnitsInMainSrc := false;
fShowHintsForSenderNotUsed := false;
@ -3612,14 +3630,18 @@ begin
fShowGenInfo := CompOpts.fShowGenInfo;
fShowLineNum := CompOpts.fShowLineNum;
fShowAll := CompOpts.fShowAll;
{$IFNDEF EnableNewExtTools}
fShowAllProcsOnError := CompOpts.fShowAllProcsOnError;
{$ENDIF}
fShowDebugInfo := CompOpts.fShowDebugInfo;
fShowUsedFiles := CompOpts.fShowUsedFiles;
fShowTriedFiles := CompOpts.fShowTriedFiles;
fShowCompProc := CompOpts.fShowCompProc;
fShowCond := CompOpts.fShowCond;
fShowCond := CompOpts.fShowExecInfo;
{$IFNDEF EnableNewExtTools}
fShowNothing := CompOpts.fShowNothing;
{$ENDIF}
fShowSummary := CompOpts.FShowSummary;
fShowHintsForUnusedUnitsInMainSrc := CompOpts.fShowHintsForUnusedUnitsInMainSrc;
fShowHintsForSenderNotUsed := CompOpts.fShowHintsForSenderNotUsed;
@ -3775,14 +3797,18 @@ begin
if Done(Tool.AddDiff('ShowGenInfo',fShowGenInfo,CompOpts.fShowGenInfo)) then exit;
if Done(Tool.AddDiff('ShowLineNum',fShowLineNum,CompOpts.fShowLineNum)) then exit;
if Done(Tool.AddDiff('ShowAll',fShowAll,CompOpts.fShowAll)) then exit;
{$IFNDEF EnableNewExtTools}
if Done(Tool.AddDiff('ShowAllProcsOnError',fShowAllProcsOnError,CompOpts.fShowAllProcsOnError)) then exit;
{$ENDIF}
if Done(Tool.AddDiff('ShowDebugInfo',fShowDebugInfo,CompOpts.fShowDebugInfo)) then exit;
if Done(Tool.AddDiff('ShowUsedFiles',fShowUsedFiles,CompOpts.fShowUsedFiles)) then exit;
if Done(Tool.AddDiff('ShowTriedFiles',fShowTriedFiles,CompOpts.fShowTriedFiles)) then exit;
if Done(Tool.AddDiff('ShowCompProc',fShowCompProc,CompOpts.fShowCompProc)) then exit;
if Done(Tool.AddDiff('ShowCond',fShowCond,CompOpts.fShowCond)) then exit;
if Done(Tool.AddDiff('ShowExecInfo',fShowExecInfo,CompOpts.fShowExecInfo)) then exit;
{$IFNDEF EnableNewExtTools}
if Done(Tool.AddDiff('ShowNothing',fShowNothing,CompOpts.fShowNothing)) then exit;
{$ENDIF}
if Done(Tool.AddDiff('ShowSummary',fShowSummary,CompOpts.fShowSummary)) then exit;
if Done(Tool.AddDiff('ShowHintsForUnusedUnitsInMainSrc',fShowHintsForUnusedUnitsInMainSrc,CompOpts.fShowHintsForUnusedUnitsInMainSrc)) then exit;
if Done(Tool.AddDiff('ShowHintsForSenderNotUsed',fShowHintsForSenderNotUsed,CompOpts.fShowHintsForSenderNotUsed)) then exit;

View File

@ -53,12 +53,16 @@ begin
Items.Add(dlgShowGeneralInfo + ' (-vi)');
Items.Add(dlgShowCompilingLineNumbers + ' (-vl)');
Items.Add(dlgShowCompiledProcedures + ' (-vp)');
{$IFNDEF EnableNewExtTools}
Items.Add(dlgShowFullFileNames + ' (-vb)');
{$ENDIF}
Items.Add(dlgShowConditionals + ' (-vc)');
Items.Add(dlgShowEverything + ' (-va)');
Items.Add(dlgShowExecutableInfo + ' (-vx)');
Items.Add(dlgShowSummary + ' ' + dlgPOIconDescNone);
{$IFNDEF EnableNewExtTools}
Items.Add(dlgShowNothing + ' (-v0)');
{$ENDIF}
Items.Add(dlgHintsUnused + ' ' + dlgPOIconDescNone);
Items.Add(dlgWriteFPCLogo + ' (-l)');
end;
@ -85,12 +89,16 @@ begin
Checked[i] := ShowGenInfo; i+=1;
Checked[i] := ShowLineNum; i+=1;
Checked[i] := ShowCompProc; i+=1;
{$IFNDEF EnableNewExtTools}
Checked[i] := ShowAllProcsOnError; i+=1;
{$ENDIF}
Checked[i] := ShowCond; i+=1;
Checked[i] := ShowAll; i+=1;
Checked[i] := ShowExecInfo; i+=1;
Checked[i] := ShowSummary; i+=1;
{$IFNDEF EnableNewExtTools}
Checked[i] := ShowNothing; i+=1;
{$ENDIF}
Checked[i] := ShowHintsForUnusedUnitsInMainSrc; i+=1;
Checked[i] := WriteFPCLogo; i+=1;
@ -116,12 +124,16 @@ begin
ShowGenInfo := Checked[i]; i+=1;
ShowLineNum := Checked[i]; i+=1;
ShowCompProc := Checked[i]; i+=1;
{$IFNDEF EnableNewExtTools}
ShowAllProcsOnError := Checked[i]; i+=1;
{$ENDIF}
ShowCond := Checked[i]; i+=1;
ShowAll := Checked[i]; i+=1;
ShowExecInfo := Checked[i]; i+=1;
ShowSummary := Checked[i]; i+=1;
{$IFNDEF EnableNewExtTools}
ShowNothing := Checked[i]; i+=1;
{$ENDIF}
ShowHintsForUnusedUnitsInMainSrc := Checked[i]; i+=1;
WriteFPCLogo := Checked[i]; i+=1;
StopAfterErrCount := StrToIntDef(edtErrorCnt.Text, 1);

View File

@ -413,6 +413,7 @@ function ExtractFPCParamsForBuildAll(const CompParams: string): string;
function ExtractSearchPathsFromFPCParams(const CompParams: string;
CreateReduced: boolean = false;
BaseDir: string = ''; MakeRelative: boolean = false): TStringList;
function RemoveFPCVerbosityParams(const CompParams: string): string;
implementation
@ -438,7 +439,16 @@ function ExtractFPCParamsForBuildAll(const CompParams: string): string;
{ Some compiler flags require a clean build -B, because the compiler
does not recompile/update some ppu itself.
Remove all flags that do not require build all:
-l -F -B -e -i -o -s -v }
-l logo
-F file name and paths
-B build all
-e executable
-i information
-o name of the executable
-s quick build option, do not call assembler and linker
-v verbosity
-X Executable
}
var
EndPos: Integer;
StartPos: integer;
@ -448,11 +458,11 @@ begin
while ReadNextFPCParameter(Result,EndPos,StartPos) do begin
if (Result[StartPos]='-') and (StartPos<length(Result)) then begin
case Result[StartPos+1] of
'l','F','B','e','i','o','s','v':
'l','F','B','e','i','o','s','v','X':
begin
while (StartPos>1) and (Result[StartPos-1] in [' ',#9]) do
dec(StartPos);
//DebugLn(['TLazPackageGraph.ExtractFPCParamsForBuildAll Removing: ',copy(Result,StartPos,EndPos-StartPos)]);
//DebugLn(['ExtractFPCParamsForBuildAll Removing: ',copy(Result,StartPos,EndPos-StartPos)]);
while (EndPos<=length(Result)) and (Result[EndPos] in [' ',#9]) do
inc(EndPos);
System.Delete(Result,StartPos,EndPos-StartPos);
@ -482,6 +492,7 @@ var
begin
while (EndPos<=length(Reduced)) and (Reduced[EndPos] in [' ',#9]) do
inc(EndPos);
//debugln(['DeleteOption "',copy(Reduced,StartPos,EndPos-StartPos),'"']);
System.Delete(Reduced,StartPos,EndPos-StartPos);
EndPos:=StartPos;
end;
@ -535,6 +546,34 @@ begin
AllPaths.Values['Reduced']:=Reduced;
end;
function RemoveFPCVerbosityParams(const CompParams: string): string;
{ Some compiler flags have no impact on the produced files.
Remove all flags that do not require a rebuild:
-l -B -i -v }
var
EndPos: Integer;
StartPos: integer;
begin
Result:=CompParams;
EndPos:=1;
while ReadNextFPCParameter(Result,EndPos,StartPos) do begin
if (Result[StartPos]='-') and (StartPos<length(Result)) then begin
case Result[StartPos+1] of
'l','B','i','v':
begin
while (StartPos>1) and (Result[StartPos-1] in [' ',#9]) do
dec(StartPos);
//DebugLn(['ExtractFPCVerbosityParams Removing: ',copy(Result,StartPos,EndPos-StartPos)]);
while (EndPos<=length(Result)) and (Result[EndPos] in [' ',#9]) do
inc(EndPos);
System.Delete(Result,StartPos,EndPos-StartPos);
EndPos:=StartPos;
end;
end;
end;
end;
end;
{ TLazPackageGraph }
procedure TLazPackageGraph.DoDependencyChanged(Dependency: TPkgDependency);
@ -3042,6 +3081,8 @@ var
AFilename: String;
CompilerFilename, CompilerParams, SrcFilename: string;
LFMFilename: String;
ReducedParams: String;
ReducedLastParams: String;
begin
Result:=mrYes;
{$IFDEF VerbosePkgCompile}
@ -3150,18 +3191,22 @@ begin
CurPaths.Free;
LastPaths.Free;
end;
end else if CompilerParams<>LastParams then begin
// package was compiled by Lazarus
DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler params changed for ',APackage.IDAsString);
DebugLn(' Old="',dbgstr(LastParams),'"');
DebugLn(' Now="',dbgstr(CompilerParams),'"');
DebugLn(' State file="',Stats^.StateFileName,'"');
Note+='Compiler parameters changed:'+LineEnding
+' Old="'+dbgstr(LastParams)+'"'+LineEnding
+' Now="'+dbgstr(CompilerParams)+'"'+LineEnding
+' State file="'+Stats^.StateFileName+'"'+LineEnding;
ConfigChanged:=true;
exit(mrYes);
end else begin
ReducedParams:=RemoveFPCVerbosityParams(CompilerParams);
ReducedLastParams:=RemoveFPCVerbosityParams(CompilerParams);
if ReducedParams<>ReducedLastParams then begin
// package was compiled by Lazarus
DebugLn('TLazPackageGraph.CheckIfCurPkgOutDirNeedsCompile Compiler params changed for ',APackage.IDAsString);
DebugLn(' Old="',dbgstr(ReducedLastParams),'"');
DebugLn(' Now="',dbgstr(ReducedParams),'"');
DebugLn(' State file="',Stats^.StateFileName,'"');
Note+='Compiler parameters changed:'+LineEnding
+' Old="'+dbgstr(ReducedLastParams)+'"'+LineEnding
+' Now="'+dbgstr(ReducedParams)+'"'+LineEnding
+' State file="'+Stats^.StateFileName+'"'+LineEnding;
ConfigChanged:=true;
exit(mrYes);
end;
end;
if (not Stats^.ViaMakefile)
and (CompilerFilename<>Stats^.CompilerFilename) then begin