releasecreator: added option fpcdir

This commit is contained in:
mattias 2024-01-19 10:35:03 +01:00
parent f00d79df31
commit 8a47a8d61a

View File

@ -41,6 +41,7 @@ type
Pas2jsVersion: string; Pas2jsVersion: string;
Simulate: boolean; Simulate: boolean;
SourceDir: string; // cloned git release SourceDir: string; // cloned git release
FPCDir: string;
Verbosity: integer; Verbosity: integer;
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
@ -96,7 +97,7 @@ begin
// quick check parameters // quick check parameters
ErrorMsg:=CheckOptions('hb:c:s:l:qvx', ['help', 'config:', ErrorMsg:=CheckOptions('hb:c:s:l:qvx', ['help', 'config:',
'builddir:', 'sourcedir:', 'quiet', 'verbose', 'execute', 'builddir:', 'sourcedir:', 'quiet', 'verbose', 'execute',
'fpcrelease:', 'fpcdevel:', 'fpc2:', 'fpc2target:', 'fpcrelease:', 'fpcdevel:', 'fpcdir:', 'fpc2:', 'fpc2target:',
'git:', 'make:', 'zip:']); 'git:', 'make:', 'zip:']);
if ErrorMsg<>'' then if ErrorMsg<>'' then
Err(ErrorMsg); Err(ErrorMsg);
@ -132,6 +133,7 @@ begin
SourceDir:=GetOption_Directory('s','sourcedir',nil); SourceDir:=GetOption_Directory('s','sourcedir',nil);
if SourceDir='' then if SourceDir='' then
Err('missing source directory'); Err('missing source directory');
FPCDir:=GetOption_Directory(' ','fpcdir',nil);
FPCReleaseFilename:=GetOption_Executable(' ','fpcrelease',nil); FPCReleaseFilename:=GetOption_Executable(' ','fpcrelease',nil);
FPCDevelFilename:=GetOption_Executable(' ','fpcdevel',nil); FPCDevelFilename:=GetOption_Executable(' ','fpcdevel',nil);
FPC2Filename:=GetOption_Executable(' ','fpc2',nil); FPC2Filename:=GetOption_Executable(' ','fpc2',nil);
@ -140,10 +142,16 @@ begin
MakeFilename:=GetOption_Executable(' ','make',@GetDefaultMake); MakeFilename:=GetOption_Executable(' ','make',@GetDefaultMake);
ZipFilename:=GetOption_Executable(' ','zip',@GetDefaultZip); ZipFilename:=GetOption_Executable(' ','zip',@GetDefaultZip);
if FPCDir='' then
FPCDir:=GetEnvironmentVariable('FPCDIR');
if FPCDir='' then
FPCDir:=SourceDir+'compiler'+PathDelim;
// write options // write options
if Verbosity>=0 then begin if Verbosity>=0 then begin
Log(etInfo,'SourceDir: "'+SourceDir+'"'); Log(etInfo,'SourceDir: "'+SourceDir+'"');
Log(etInfo,'BuildDir: "'+BuildDir+'"'); Log(etInfo,'BuildDir: "'+BuildDir+'"');
Log(etInfo,'FPCDir: "'+FPCDir+'"');
Log(etInfo,'FPCRelease: "'+FPCReleaseFilename+'"'); Log(etInfo,'FPCRelease: "'+FPCReleaseFilename+'"');
Log(etInfo,'FPCDevel: "'+FPCDevelFilename+'"'); Log(etInfo,'FPCDevel: "'+FPCDevelFilename+'"');
Log(etInfo,'FPC2: "'+FPC2Filename+'"'); Log(etInfo,'FPC2: "'+FPC2Filename+'"');
@ -163,6 +171,8 @@ begin
Err('BuildDir missing: "'+BuildDir+'"'); Err('BuildDir missing: "'+BuildDir+'"');
if not DirectoryExists(SourceDir) then if not DirectoryExists(SourceDir) then
Err('SourceDir missing: "'+SourceDir+'"'); Err('SourceDir missing: "'+SourceDir+'"');
if not DirectoryExists(FPCDir) then
Err('FPCDir missing: "'+FPCDir+'"');
CheckExecutable(FPCReleaseFilename,'fpcrelease'); CheckExecutable(FPCReleaseFilename,'fpcrelease');
CheckExecutable(FPCDevelFilename,'fpcdevel'); CheckExecutable(FPCDevelFilename,'fpcdevel');
if FPC2Filename<>'' then if FPC2Filename<>'' then
@ -216,8 +226,10 @@ begin
writeln; writeln;
writeln('Required parameters:'); writeln('Required parameters:');
writeln('-s <filename>, --sourcedir=<filename>: git directory of the pas2js release'); writeln('-s <filename>, --sourcedir=<filename>: git directory of the pas2js release');
writeln('--fpcdir=<filename>: Path of fpc devel sources.');
writeln(' Used for compiling pas2js and libpas2js.');
writeln('--fpcrelease=<filename>: Path of released version fpc executable.'); writeln('--fpcrelease=<filename>: Path of released version fpc executable.');
writeln(' Used for pas2js and libpas2js.'); writeln(' Used for compiling pas2js and libpas2js.');
writeln('--fpcdevel=<filename>: Path of development version fpc executable.'); writeln('--fpcdevel=<filename>: Path of development version fpc executable.');
writeln(' Used for compiling the other tools.'); writeln(' Used for compiling the other tools.');
writeln('--fpc2=<filename>: Path of a secondary fpc for building a second libpas2js.'); writeln('--fpc2=<filename>: Path of a secondary fpc for building a second libpas2js.');
@ -293,7 +305,7 @@ begin
sl:=TStringList.Create; sl:=TStringList.Create;
try try
// read pas2js version number from Pascal sources // read pas2js version number from Pascal sources
Filename:=SourceDir+SetDirSeparators('compiler/packages/pastojs/src/pas2jscompiler.pp'); Filename:=FPCDir+SetDirSeparators('packages/pastojs/src/pas2jscompiler.pp');
if Verbosity>0 then if Verbosity>0 then
Log(etInfo,'Reading version from "'+Filename+'" ...'); Log(etInfo,'Reading version from "'+Filename+'" ...');
if not FileExists(Filename) then if not FileExists(Filename) then
@ -326,7 +338,7 @@ begin
Log(etInfo,'Pas2js version is '+Pas2jsVersion); Log(etInfo,'Pas2js version is '+Pas2jsVersion);
// read version number from rtl.js // read version number from rtl.js
Filename:=SourceDir+SetDirSeparators('compiler/utils/pas2js/dist/rtl.js'); Filename:=FPCDir+SetDirSeparators('utils/pas2js/dist/rtl.js');
if Verbosity>0 then if Verbosity>0 then
Log(etInfo,'Reading version from "'+Filename+'" ...'); Log(etInfo,'Reading version from "'+Filename+'" ...');
if not FileExists(Filename) then if not FileExists(Filename) then
@ -360,11 +372,11 @@ procedure TPas2jsReleaseCreator.CheckForgottenWriteln;
end; end;
begin begin
Check(SourceDir+'compiler'+PathDelim+'packages'+PathDelim+'fcl-js'+PathDelim+'src'); Check(FPCDir+'packages'+PathDelim+'fcl-js'+PathDelim+'src');
Check(SourceDir+'compiler'+PathDelim+'packages'+PathDelim+'fcl-json'+PathDelim+'src'); Check(FPCDir+'packages'+PathDelim+'fcl-json'+PathDelim+'src');
Check(SourceDir+'compiler'+PathDelim+'packages'+PathDelim+'fcl-passrc'+PathDelim+'src'); Check(FPCDir+'packages'+PathDelim+'fcl-passrc'+PathDelim+'src');
Check(SourceDir+'compiler'+PathDelim+'packages'+PathDelim+'pastojs'+PathDelim+'src'); Check(FPCDir+'packages'+PathDelim+'pastojs'+PathDelim+'src');
Check(SourceDir+'compiler'+PathDelim+'utils'+PathDelim+'pas2js'); Check(FPCDir+'utils'+PathDelim+'pas2js');
end; end;
procedure TPas2jsReleaseCreator.ParseFPCTargetOption(const LongOpt: string; out procedure TPas2jsReleaseCreator.ParseFPCTargetOption(const LongOpt: string; out
@ -462,16 +474,15 @@ end;
procedure TPas2jsReleaseCreator.BuildTools(const TargetOS, TargetCPU: string); procedure TPas2jsReleaseCreator.BuildTools(const TargetOS, TargetCPU: string);
var var
WorkDir, SrcCompilerDir, PkgSrcDir, UnitOutDir, CurBinDir: String; WorkDir, PkgSrcDir, UnitOutDir, CurBinDir: String;
SharedParams, TheParams: TStringList; SharedParams, TheParams: TStringList;
begin begin
SharedParams:=TStringList.Create; SharedParams:=TStringList.Create;
TheParams:=TStringList.Create; TheParams:=TStringList.Create;
try try
SrcCompilerDir:=SourceDir+'compiler'+PathDelim; WorkDir:=FPCDir+'utils'+PathDelim+'pas2js';
WorkDir:=SrcCompilerDir+'utils'+PathDelim+'pas2js';
PkgSrcDir:=SrcCompilerDir+'packages'+PathDelim; PkgSrcDir:=FPCDir+'packages'+PathDelim;
SharedParams.Add('-Fu'+PkgSrcDir+'fcl-js'+PathDelim+'src'); SharedParams.Add('-Fu'+PkgSrcDir+'fcl-js'+PathDelim+'src');
SharedParams.Add('-Fu'+PkgSrcDir+'fcl-json'+PathDelim+'src'); SharedParams.Add('-Fu'+PkgSrcDir+'fcl-json'+PathDelim+'src');
SharedParams.Add('-Fu'+PkgSrcDir+'fcl-passrc'+PathDelim+'src'); SharedParams.Add('-Fu'+PkgSrcDir+'fcl-passrc'+PathDelim+'src');
@ -591,7 +602,7 @@ procedure TPas2jsReleaseCreator.CopyRTLjs;
var var
SrcFilename, DestFilename: String; SrcFilename, DestFilename: String;
begin begin
SrcFilename:=SourceDir+SetDirSeparators('compiler/utils/pas2js/dist/rtl.js'); SrcFilename:=FPCDir+SetDirSeparators('utils/pas2js/dist/rtl.js');
DestFilename:=BuildDir_Sources+SetDirSeparators('packages/rtl/src/rtl.js'); DestFilename:=BuildDir_Sources+SetDirSeparators('packages/rtl/src/rtl.js');
if Simulate then begin if Simulate then begin
Log(etInfo,'Simulate: Copying "'+SrcFilename+'" -> "'+DestFilename+'"'); Log(etInfo,'Simulate: Copying "'+SrcFilename+'" -> "'+DestFilename+'"');