diff --git a/docs/html/build_lcl_docs.lpr b/docs/html/build_lcl_docs.lpr index 61070f2cd7..e003329926 100644 --- a/docs/html/build_lcl_docs.lpr +++ b/docs/html/build_lcl_docs.lpr @@ -20,15 +20,14 @@ var FPCDocsPath: String; OutFormat: String; ShowCmd: Boolean; - RTLPrefix: String; - FCLPrefix: String; + UsedPkgs: TStringList; // e.g. 'rtl','fcl', 'lazutils' WarningsCount: Integer; Verbosity: integer = 0; const PackageName = 'lcl'; - XMLSrcDir = '..'+PathDelim+'..'+PathDelim+'xml'+PathDelim+'lcl'+PathDelim; - PasSrcDir = '..'+PathDelim+'..'+PathDelim+'lcl'+PathDelim; + XMLSrcDir = '..'+PathDelim+'..'+PathDelim+'xml'+PathDelim+PackageName+PathDelim; + PasSrcDir = '..'+PathDelim+'..'+PathDelim+PackageName+PathDelim; InputFileList = 'inputfile.txt'; FPDocParams = ' --content='+PackageName+'.xct' + ' --package='+PackageName @@ -49,8 +48,8 @@ begin Writeln(' --css-file (CHM format only) CSS file to be used by fpdoc'); Writeln(' for the layout of the help pages. Default is "',CSSFile,'"'); WriteLn(' --fpdoc The full path to fpdoc to use. Default is "',fpdoc,'"'); - WriteLn(' --fpcdocs The directory that contains the fcl and rtl .xct files.'); - WriteLn(' Use this to make help that contains links to the rtl and fcl'); + WriteLn(' --fpcdocs The directory that contains the required .xct files.'); + WriteLn(' Use this to make help that contains links to rtl and fcl'); WriteLn(' --footer Filename of a file to use a footer used in the generated pages.'); WriteLn(' --help Show this message'); WriteLn(' --arg Passes value to fpdoc as an arg. Use this option as'); @@ -61,7 +60,7 @@ begin WriteLn(' --verbose be more verbose'); WriteLn; WriteLn('The following are environment variables that will override the above params if set:'); - WriteLn(' FPDOCFORMAT, FPDOCPARAMS, FPDOC, FPDOCFOOTER, FPCDOCS, RTLLINKPREFIX, FCLLINKPREFIX'); + WriteLn(' FPDOCFORMAT, FPDOCPARAMS, FPDOC, FPDOCFOOTER, FPCDOCS, RTLLINKPREFIX, FCLLINKPREFIX, LINKPREFIX, ...'); WriteLn; Halt(0); end; @@ -124,12 +123,14 @@ begin end; procedure InitVars; +var + Pkg, Prefix: String; begin // see if any are set or set them to a default value GetEnvDef(OutFormat, OutFormat, 'FPDOCFORMAT'); GetEnvDef(EnvParams, '', 'FPDOCPARAMS'); - GetEnvDef(fpdoc, fpdoc, 'FPDOC'); + GetEnvDef(fpdoc, fpdoc, 'FPDOC'); GetEnvDef(fpdocfooter, '', 'FPDOCFOOTER'); fpdocfooter:=TrimFilename(fpdocfooter); @@ -142,39 +143,32 @@ begin if FPCDocsPath <> '' then begin - if OutFormat = 'html' then + for Pkg in UsedPkgs do begin - GetEnvDef(RTLPrefix, '../rtl/', 'RTLLINKPREFIX'); - GetEnvDef(FCLPrefix, '../fcl/', 'FCLLINKPREFIX'); - end - else if OutFormat = 'chm' then - begin - GetEnvDef(RTLPrefix, 'ms-its:rtl.chm::/', 'RTLLINKPREFIX'); - GetEnvDef(FCLPrefix, 'ms-its:fcl.chm::/', 'FCLLINKPREFIX'); - end - else - begin - GetEnvDef(RTLPrefix, '', 'RTLLINKPREFIX'); - GetEnvDef(FCLPrefix, '', 'FCLLINKPREFIX'); + Prefix:=''; + if OutFormat = 'html' then + Prefix:='../'+Lowercase(Pkg)+'/' + else if OutFormat = 'chm' then + Prefix:='ms-its:'+LowerCase(Pkg)+'.chm::/' + else + Prefix:=''; + GetEnvDef(Prefix, Prefix, UpperCase(Pkg)+'LINKPREFIX'); + + ArgParams+=' --import='+TrimFilename(FPCDocsPath+PathDelim+LowerCase(Pkg)+'.xct'); + if Prefix<>'' then + ArgParams+=','+Prefix; end; - - if (RTLPrefix<>'') and (RTLPrefix[1]<>',') then - RTLPrefix := ','+RTLPrefix; - if (FCLPrefix<>'') and (FCLPrefix[1]<>',') then - FCLPrefix := ','+FCLPrefix; - ArgParams:=ArgParams+ ' --import='+TrimFilename(FPCDocsPath+PathDelim+'rtl.xct')+RTLPrefix - + ' --import='+TrimFilename(FPCDocsPath+PathDelim+'fcl.xct')+FCLPrefix; end; if OutFormat='chm' then begin if CSSFile='' then CSSFile:='..'+PathDelim+'fpdoc.css'; //css file is chm only - ArgParams:=ArgParams+' --output='+ ChangeFileExt(PackageName, '.chm') - +' --auto-toc --auto-index --make-searchable' - +' --css-file='+CSSFile+' '; + ArgParams+=' --output='+ ChangeFileExt(PackageName, '.chm') + +' --auto-toc --auto-index --make-searchable' + +' --css-file='+CSSFile+' '; end; - ArgParams:=ArgParams+' --format='+OutFormat+' '; + ArgParams+=' --format='+OutFormat+' '; end; procedure AddFilesToList(Dir: String; Ext: String; List: TStrings); @@ -203,7 +197,7 @@ begin FindCloseUTF8(FRec); end; -function FileInPath(FileName: String): Boolean; +function FileInEnvPATH(FileName: String): Boolean; var FullFilename: String; begin @@ -262,9 +256,9 @@ begin Exit; end; {$IFDEF MSWINDOWS}fpdoc := ChangeFileExt(fpdoc,'.exe');{$ENDIF} - if not FileInPath(fpdoc) then + if not FileInEnvPATH(fpdoc) then begin - WriteLn('Error: fpdoc cannot be found. Please add the directory it is in to the PATH ', + WriteLn('Error: fpdoc cannot be found. Please add its location to the PATH ', 'or set it with --fpdoc path',PathDelim,'to',PathDelim,'fpdoc'{$IFDEF MSWINDOWS},'.exe'{$ENDIF}); Halt(1); end; @@ -291,6 +285,10 @@ begin end; begin + UsedPkgs:=TStringList.Create; + UsedPkgs.Add('rtl'); + UsedPkgs.Add('fcl'); + ReadOptions; if Not DirectoryExistsUTF8(PackageName) then begin @@ -300,5 +298,7 @@ begin InitVars; MakeFileList; Run; + + UsedPkgs.Free; end.