program fpmake; {$mode objfpc} {$H+} uses fpmkunit, Classes, SysUtils; {$define ALLPACKAGES} {$include config.inc} var P: TPackage; be: TBuildEngine; i: integer; procedure CreateClassChart(Sender: TObject); var i: integer; APackage: TPackage; T: TTarget; cmdOpts: string; Cmd: string; begin APackage := TPackage(Sender); cmdOpts := '--format=graphviz --output=nvwidgets.dot'; for i := 0 to APackage.Targets.Count - 1 do begin T := APackage.Targets.TargetItems[i]; if T.TargetType = ttFPDoc then //check if a documentation target is given cmdOpts := cmdOpts + ' --input=' + be.AddPathPrefix(APackage, T.Directory + T.Name + T.Extension); end; //execute fpclasschart Cmd := ExeSearch('fpclasschart', GetEnvironmentvariable('PATH')); if Cmd = '' then Cmd := 'fpclasschart'; //writeln(cmdOpts); ExecuteProcess(Cmd, cmdOpts); //create the graphviz chart Cmd := ExeSearch('dot', GetEnvironmentvariable('PATH')); if Cmd = '' then Cmd := 'dot'; ExecuteProcess(Cmd, '-Tpng nvwidgets.dot -o./fpdoc/images/nvwidgets.png'); //remove the dot file DeleteFile('nvwidgets.dot'); end; {$include fpmake_proc.inc} begin {$include fpmake_add.inc} with Installer do begin be := BuildEngine; //create nvwidgets package P := AddPackage('nvidia-widgets'); P.FPDocFormat := [ffHtml, ffCHM]; P.BeforeDocProc := @CreateClassChart; //later add --footer-date="mmm dd yyyy" P.FPDocSwitches := '--auto-index --auto-toc --make-searchable --css-file=./fpdoc/fpdoc.css --image-url=fpdoc/images/'; //base source files P.Targets.AddFPDoc('./src/nvtypes.pas', './fpdoc/nvtypes.xml'); P.Targets.AddFPDoc('./src/nvpainter.pas', './fpdoc/nvpainter.xml'); P.Targets.AddFPDoc('./src/nvcontext.pas', './fpdoc/nvcontext.xml'); P.Targets.AddFPDoc('./src/nvbasefont.pas', './fpdoc/nvbasefont.xml'); //contexts P.Targets.AddFPDoc('./src/glut/nvglutcontext.pas', './fpdoc/nvglutcontext.xml'); //painters P.Targets.AddFPDoc('./src/gl/nvglpainter.pas', './fpdoc/nvglpainter.xml'); P.Targets.AddFPDoc('./src/gl/nvshaderutils.pas', './fpdoc/nvshaderutils.xml'); //fonts P.Targets.AddFPDoc('./src/gl/glfreetype.pas', './fpdoc/glfreetype.xml'); P.Targets.AddFPDoc('./src/gl/glfreetypefont.pas', './fpdoc/glfreetypefont.xml'); P.Targets.AddFPDoc('./src/glut/glutbitmapfont.pas', './fpdoc/glutbitmapfont.xml'); Run; end; end.