1 Index: utils/fpdoc/dw_html.pp
2 ===================================================================
3 --- fpcsrc/utils/fpdoc/dw_html.pp (revision 32373)
4 +++ fpcsrc/utils/fpdoc/dw_html.pp (revision 32374)
9 - WriteXMLFile(B.ClassTree,'tree.xml');
10 + // WriteXMLFile(B.ClassTree,'tree.xml');
12 E:=B.ClassTree.DocumentElement;
14 Index: utils/fpdoc/mkfpdoc.pp
15 ===================================================================
16 --- fpcsrc/utils/fpdoc/mkfpdoc.pp (revision 32373)
17 +++ fpcsrc/utils/fpdoc/mkfpdoc.pp (revision 32374)
20 TFPDocCreator = Class(TComponent)
22 + FBaseDescrDir: String;
23 + FBaseInputDir: String;
24 FCurPackage : TFPDocPackage;
25 FProcessedUnits : TStrings;
26 FOnLog: TPasParserLogHandler;
29 function GetOptions: TEngineOptions;
30 function GetPackages: TFPDocPackages;
31 + procedure SetBaseDescrDir(AValue: String);
32 + procedure SetBaseInputDir(AValue: String);
34 + Function FixInputFile(Const AFileName : String) : String;
35 + Function FixDescrFile(Const AFileName : String) : String;
36 Procedure DoBeforeEmitNote(Sender : TObject; Note : TDomElement; Var EmitNote : Boolean); virtual;
37 procedure HandleOnParseUnit(Sender: TObject; const AUnitName: String; out AInputFile, OSTarget, CPUTarget: String);
38 procedure SetVerbose(AValue: Boolean); virtual;
41 Property Options : TEngineOptions Read GetOptions;
42 Property Packages : TFPDocPackages Read GetPackages;
43 + // When set, they will be prepended to non-absolute filenames.
44 + Property BaseInputDir : String Read FBaseInputDir Write SetBaseInputDir;
45 + Property BaseDescrDir : String Read FBaseDescrDir Write SetBaseDescrDir;
53 -procedure TFPDocCreator.DoLog(const Msg: String);
54 +Procedure TFPDocCreator.DoLog(Const Msg: String);
56 If Assigned(OnLog) then
60 -procedure TFPDocCreator.DoLog(const Fmt: String; Args: array of const);
61 +procedure TFPDocCreator.DoLog(Const Fmt: String; Args: Array of Const);
63 DoLog(Format(Fmt,Args));
66 SplitInputFIleOption(S,UN,Opts);
67 if CompareText(ChangeFileExt(ExtractFileName(Un),''),AUnitName)=0 then
70 + AInputFile:=FixInputFile(UN)+' '+Opts;
71 OSTarget:=FProject.Options.OSTarget;
72 CPUTarget:=FProject.Options.CPUTarget;
73 FProcessedUnits.Add(UN);
75 Result:=FProject.Packages;
78 -procedure TFPDocCreator.DoBeforeEmitNote(Sender: TObject; Note: TDomElement;
79 - var EmitNote: Boolean);
80 +Function TFPDocCreator.FixInputFile(Const AFileName: String): String;
83 + If Result='' then exit;
84 + if (ExtractFileDrive(Result)='') and (Result[1]<>PathDelim) then
85 + Result:=BaseInputDir+Result;
88 +Function TFPDocCreator.FixDescrFile(Const AFileName: String): String;
91 + If Result='' then exit;
92 + if (ExtractFileDrive(Result)='') and (Result[1]<>PathDelim) then
93 + Result:=BaseDescrDir+Result;
96 +procedure TFPDocCreator.SetBaseDescrDir(AValue: String);
98 + if FBaseDescrDir=AValue then Exit;
99 + FBaseDescrDir:=AValue;
100 + If FBaseDescrDir<>'' then
101 + FBaseDescrDir:=IncludeTrailingPathDelimiter(FBaseDescrDir);
104 +procedure TFPDocCreator.SetBaseInputDir(AValue: String);
106 + if FBaseInputDir=AValue then Exit;
107 + FBaseInputDir:=AValue;
108 + If FBaseInputDir<>'' then
109 + FBaseInputDir:=IncludeTrailingPathDelimiter(FBaseInputDir);
112 +Procedure TFPDocCreator.DoBeforeEmitNote(Sender: TObject; Note: TDomElement;
113 + Var EmitNote: Boolean);
118 -constructor TFPDocCreator.Create(AOwner: TComponent);
119 +Constructor TFPDocCreator.Create(AOwner: TComponent);
121 inherited Create(AOwner);
122 FProject:=TFPDocProject.Create(Self);
124 FProcessedUnits:=TStringList.Create;
127 -destructor TFPDocCreator.Destroy;
128 +Destructor TFPDocCreator.Destroy;
130 FreeAndNil(FProcessedUnits);
131 FreeAndNil(FProject);
133 Engine.WriteContentFile(APackage.ContentFile);
136 -procedure TFPDocCreator.CreateDocumentation(APackage: TFPDocPackage; ParseOnly : Boolean);
137 +Procedure TFPDocCreator.CreateDocumentation(APackage: TFPDocPackage;
138 + ParseOnly: Boolean);
143 Engine.ReadContentFile(Arg, Cmd);
145 for i := 0 to APackage.Descriptions.Count - 1 do
146 - Engine.AddDocFile(APackage.Descriptions[i],Options.donttrim);
147 + Engine.AddDocFile(FixDescrFile(APackage.Descriptions[i]),Options.donttrim);
148 Engine.SetPackageName(APackage.Name);
149 Engine.Output:=APackage.Output;
150 Engine.OnLog:=Self.OnLog;
151 @@ -216,10 +258,11 @@
152 for i := 0 to APackage.Inputs.Count - 1 do
154 SplitInputFileOption(APackage.Inputs[i],Cmd,Arg);
155 + Cmd:=FixInputFIle(Cmd);
156 if FProcessedUnits.IndexOf(Cmd)=-1 then
158 FProcessedUnits.Add(Cmd);
159 - ParseSource(Engine, APackage.Inputs[i], Options.OSTarget, Options.CPUTarget);
160 + ParseSource(Engine,Cmd+' '+Arg, Options.OSTarget, Options.CPUTarget);
163 on e: EParserError do
168 -procedure TFPDocCreator.CreateProjectFile(Const AFileName: string);
169 +Procedure TFPDocCreator.CreateProjectFile(Const AFileName: string);
171 With TXMLFPDocOptions.Create(Self) do
177 -procedure TFPDocCreator.LoadProjectFile(const AFileName: string);
178 +Procedure TFPDocCreator.LoadProjectFile(Const AFileName: string);
180 With TXMLFPDocOptions.Create(self) do
182 Index: utils/fpdoc/fpdoc.pp
183 ===================================================================
184 --- fpcsrc/utils/fpdoc/fpdoc.pp (revision 32373)
185 +++ fpcsrc/utils/fpdoc/fpdoc.pp (revision 32374)
189 Writeln(Format(SCmdLineHelp,[ExtractFileName(Paramstr(0))]));
190 + Writeln(SUsageOption008);
191 + Writeln(SUsageOption009);
192 Writeln(SUsageOption010);
193 Writeln(SUsageOption020);
194 Writeln(SUsageOption030);
196 AddToFileList(SelectedPackage.Descriptions, Arg)
197 else if (Cmd = '--descr-dir') then
198 AddDirToFileList(SelectedPackage.Descriptions, Arg, '*.xml')
199 + else if (Cmd = '--base-descr-dir') then
200 + FCreator.BaseDescrDir:=Arg
201 else if (Cmd = '-f') or (Cmd = '--format') then
205 FCreator.Options.Language := Arg
206 else if (Cmd = '-i') or (Cmd = '--input') then
207 AddToFileList(SelectedPackage.Inputs, Arg)
208 + else if (Cmd = '--base-input-dir') then
209 + FCreator.BaseInputDir:=Arg
210 else if (Cmd = '--input-dir') then
212 AddDirToFileList(SelectedPackage.Inputs, Arg,'*.pp');
213 Index: utils/fpdoc/dglobals.pp
214 ===================================================================
215 --- fpcsrc/utils/fpdoc/dglobals.pp (revision 32373)
216 +++ fpcsrc/utils/fpdoc/dglobals.pp (revision 32374)
218 SCopyright2 = '(c) 2005 - 2012 various FPC contributors';
220 SCmdLineHelp = 'Usage: %s [options]';
221 + SUsageOption008 = '--base-descr-dir=DIR prefix all description files with this directory';
222 + SUsageOption009 = '--base-input-dir=DIR prefix all input files with this directory';
223 SUsageOption010 = '--content Create content file for package cross-references';
224 SUsageOption020 = '--cputarget=value Set the target CPU for the scanner.';
225 SUsageOption030 = '--descr=file use file as description file, e.g.: ';