123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- unit pkgfpmake;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils,pkghandler;
- type
- { TFPMakeCompiler }
- TFPMakeCompiler = Class(TPackagehandler)
- Private
- Procedure CompileFPMake;
- Public
- Function Execute(const Args:TActionArgs):boolean;override;
- end;
- { TFPMakeRunner }
- TFPMakeRunner = Class(TPackagehandler)
- Protected
- Function RunFPMake(const Command:string):Integer;
- end;
- { TFPMakeRunnerBuild }
- TFPMakeRunnerBuild = Class(TFPMakeRunner)
- Public
- Function Execute(const Args:TActionArgs):boolean;override;
- end;
- { TFPMakeRunnerInstall }
- TFPMakeRunnerInstall = Class(TFPMakeRunner)
- Public
- Function Execute(const Args:TActionArgs):boolean;override;
- end;
- implementation
- uses
- pkgoptions,
- pkgglobals,
- pkgmessages;
- { TFPMakeCompiler }
- Procedure TFPMakeCompiler.CompileFPMake;
- Var
- O,C : String;
- FPMakeBin,
- FPMakeSrc : string;
- HaveFpmake : boolean;
- begin
- SetCurrentDir(PackageBuildPath);
- { Check for fpmake source }
- FPMakeBin:='fpmake'+ExeExt;
- FPMakeSrc:='fpmake.pp';
- HaveFpmake:=FileExists(FPMakeSrc);
- If Not HaveFPMake then
- begin
- HaveFPMake:=FileExists('fpmake.pas');
- If HaveFPMake then
- FPMakeSrc:='fpmake.pas';
- end;
- { Need to compile fpmake executable? }
- if not FileExists(FPMakeBin) or
- (FileAge(FPMakeBin)<FileAge(FPMakeSrc)) then
- begin
- if Not HaveFPMake then
- Error(SErrMissingFPMake);
- { Call compiler }
- C:=Defaults.Compiler;
- O:=FPmakeSrc;
- If ExecuteProcess(C,O)<>0 then
- Error(SErrFailedToCompileFPCMake)
- end
- else
- Log(vCommands,SLogNotCompilingFPMake);
- end;
- function TFPMakeCompiler.Execute(const Args:TActionArgs):boolean;
- begin
- {$warning TODO Check arguments}
- CompileFPMake;
- result:=true;
- end;
- { TFPMakeRunner }
- Function TFPMakeRunner.RunFPMake(const Command:string) : Integer;
- Var
- I : integer;
- FPMakeBin : string;
- begin
- FPMakeBin:='fpmake'+ExeExt;
- SetCurrentDir(PackageBuildPath);
- Result:=ExecuteProcess(FPMakeBin,Command);
- end;
- function TFPMakeRunnerBuild.Execute(const Args:TActionArgs):boolean;
- begin
- result:=(RunFPMake('--build')=0);
- end;
- function TFPMakeRunnerInstall.Execute(const Args:TActionArgs):boolean;
- begin
- result:=(RunFPMake('--install')=0);
- end;
- initialization
- RegisterPkgHandler('compilefpmake',TFPMakeCompiler);
- RegisterPkgHandler('fpmakebuild',TFPMakeRunnerBuild);
- RegisterPkgHandler('fpmakeinstall',TFPMakeRunnerInstall);
- end.
|