IDE: fixed command line help

git-svn-id: trunk@42496 -
This commit is contained in:
mattias 2013-08-25 16:43:04 +00:00
parent fc3240996d
commit 02345b4e6a
2 changed files with 33 additions and 17 deletions

View File

@ -1015,17 +1015,22 @@ function TCompilerOptReader.ReadAndParseOptions: TModalResult;
var var
Lines: TStringList; Lines: TStringList;
ParsedTarget: String; ParsedTarget: String;
t: array[0..5] of TDateTime;
i: Integer;
begin begin
OptionIdCounter := 0; OptionIdCounter := 0;
fErrorMsg := ''; fErrorMsg := '';
t[0]:=Now;
if fCompilerExecutable = '' then if fCompilerExecutable = '' then
fCompilerExecutable := 'fpc'; // Let's hope "fpc" is found in PATH. fCompilerExecutable := 'fpc'; // Let's hope "fpc" is found in PATH.
ParsedTarget := '-T$(TargetOS) -P$(TargetCPU)'; ParsedTarget := '-T$(TargetOS) -P$(TargetCPU)';
if not GlobalMacroList.SubstituteStr(ParsedTarget) then if not GlobalMacroList.SubstituteStr(ParsedTarget) then
raise Exception.CreateFmt('ReadAndParseOptions: Cannot substitute macros "%s".', raise Exception.CreateFmt('ReadAndParseOptions: Cannot substitute macros "%s".',
[ParsedTarget]); [ParsedTarget]);
t[1]:=Now;
// FPC with option -i // FPC with option -i
Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -i'); Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -i');
t[2]:=Now;
try try
if Lines = Nil then Exit(mrCancel); if Lines = Nil then Exit(mrCancel);
Result := ParseI(Lines); Result := ParseI(Lines);
@ -1033,14 +1038,21 @@ begin
finally finally
Lines.Free; Lines.Free;
end; end;
t[3]:=Now;
// FPC with option -h // FPC with option -h
Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -h'); Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -h');
t[4]:=Now;
try try
if Lines = Nil then Exit(mrCancel); if Lines = Nil then Exit(mrCancel);
Result := ParseH(Lines); Result := ParseH(Lines);
finally finally
Lines.Free; Lines.Free;
end; end;
t[5]:=Now;
debugln(['TCompilerOptReader.ReadAndParseOptions ']);
for i:=1 to high(t) do begin
debugln([' ',i,' ',round((t[i]-t[i-1])*86400*1000)]);
end;
end; end;
function TCompilerOptReader.FilterOptions(aFilter: string; aOnlySelected: Boolean): Boolean; function TCompilerOptReader.FilterOptions(aFilter: string; aOnlySelected: Boolean): Boolean;
@ -1203,6 +1215,7 @@ begin
fReader.ErrorMsg := 'Error parsing options: '+E.Message; fReader.ErrorMsg := 'Error parsing options: '+E.Message;
end; end;
fReadTime := Now-StartTime; fReadTime := Now-StartTime;
debugln(['TCompilerOptThread.Execute ',round(fReadTime*86400*1000)]);
end; end;

View File

@ -1064,34 +1064,37 @@ var
procedure AddHelp(Args: array of const); procedure AddHelp(Args: array of const);
var var
i: Integer; i: Integer;
s: String;
begin begin
s:='';
for i := Low(Args) to High(Args) do for i := Low(Args) to High(Args) do
begin begin
case Args[i].VType of case Args[i].VType of
vtInteger: AHelp.Add(dbgs(Args[i].vinteger)); vtInteger: s+=dbgs(Args[i].vinteger);
vtInt64: AHelp.Add(dbgs(Args[i].VInt64^)); vtInt64: s+=dbgs(Args[i].VInt64^);
vtQWord: AHelp.Add(dbgs(Args[i].VQWord^)); vtQWord: s+=dbgs(Args[i].VQWord^);
vtBoolean: AHelp.Add(dbgs(Args[i].vboolean)); vtBoolean: s+=dbgs(Args[i].vboolean);
vtExtended: AHelp.Add(dbgs(Args[i].VExtended^)); vtExtended: s+=dbgs(Args[i].VExtended^);
{$ifdef FPC_CURRENCY_IS_INT64} {$ifdef FPC_CURRENCY_IS_INT64}
// fpc 2.x has troubles in choosing the right dbgs() // fpc 2.x has troubles in choosing the right dbgs()
// so we convert here // so we convert here
vtCurrency: AHelp.Add(dbgs(int64(Args[i].vCurrency^)/10000, 4)); vtCurrency: s+=dbgs(int64(Args[i].vCurrency^)/10000, 4);
{$else} {$else}
vtCurrency: AHelp.Add(dbgs(Args[i].vCurrency^)); vtCurrency: s+=dbgs(Args[i].vCurrency^);
{$endif} {$endif}
vtString: AHelp.Add(Args[i].VString^); vtString: s+=Args[i].VString^;
vtAnsiString: AHelp.Add(AnsiString(Args[i].VAnsiString)); vtAnsiString: s+=AnsiString(Args[i].VAnsiString);
vtChar: AHelp.Add(Args[i].VChar); vtChar: s+=Args[i].VChar;
vtPChar: AHelp.Add(Args[i].VPChar); vtPChar: s+=Args[i].VPChar;
vtPWideChar: AHelp.Add(Args[i].VPWideChar); vtPWideChar: s+=Args[i].VPWideChar;
vtWideChar: AHelp.Add(Args[i].VWideChar{%H-}); vtWideChar: s+=Args[i].VWideChar{%H-};
vtWidestring: AHelp.Add(WideString(Args[i].VWideString){%H-}); vtWidestring: s+=WideString(Args[i].VWideString){%H-};
vtObject: AHelp.Add(DbgSName(Args[i].VObject)); vtObject: s+=DbgSName(Args[i].VObject);
vtClass: AHelp.Add(DbgSName(Args[i].VClass)); vtClass: s+=DbgSName(Args[i].VClass);
vtPointer: AHelp.Add(Dbgs(Args[i].VPointer)); vtPointer: s+=Dbgs(Args[i].VPointer);
end; end;
end; end;
AHelp.Add(s);
end; end;
procedure WriteHelp(const AText: string); procedure WriteHelp(const AText: string);