fpcmake: started using FPCDIR

This commit is contained in:
mattias 2024-01-19 12:18:21 +01:00
parent a3b066e747
commit 20a957dcac
2 changed files with 54 additions and 46 deletions

View File

@ -106,13 +106,14 @@ begin
Addln('# If you don''t want so much verbosity use'); Addln('# If you don''t want so much verbosity use');
Addln('#-vw'); Addln('#-vw');
Addln(''); Addln('');
Addln('# Allow C-operators');
Addln('-Sc');
Addln('');
Addln('#IFDEF FPC_SUBTARGET_NAMESPACED'); Addln('#IFDEF FPC_SUBTARGET_NAMESPACED');
AddPath('-Fu',BaseDir,'namespaced'); AddPath('-Fu',BaseDir,'*/namespaced');
AddPath('-Fi',BaseDir,'src'); AddPath('-Fi',BaseDir,'*/src');
// needed for system unit.
AddPath('-Fu',BaseDir+'rtl'+PathDelim+'src','');
AddLn('#else'); AddLn('#else');
AddPath('-Fu',BaseDir,'src'); AddPath('-Fu',BaseDir,'*/src');
AddLn('#endif'); AddLn('#endif');
if rtl_js_dir<>'' then if rtl_js_dir<>'' then
AddPath('-Fu',rtl_js_dir,''); AddPath('-Fu',rtl_js_dir,'');
@ -178,8 +179,15 @@ Var
P : TPackage; P : TPackage;
UnitDir,DemoDir,BD, TmpCfg, TmpCfg2: String; UnitDir,DemoDir,BD, TmpCfg, TmpCfg2: String;
T: TTarget; T: TTarget;
FPCSrcDir: String;
begin begin
FPCSrcDir:=GetEnvironmentVariable('FPCDIR');
if FPCSrcDir<>'' then
FPCSrcDir:=IncludeTrailingPathDelimiter(ExpandFileName(FPCSrcDir));
if FPCSrcDir='' then
FPCSrcDir:=IncludeTrailingPathDelimiter(GetCurrentDir)+'compiler'+PathDelim;
With Installer do With Installer do
begin begin
P:=AddPackage('pas2js'); P:=AddPackage('pas2js');
@ -190,26 +198,26 @@ begin
P.Email := 'michael@freepascal.org'; P.Email := 'michael@freepascal.org';
P.NeedLibC:= false; P.NeedLibC:= false;
P.Version:='3.3.1'; P.Version:='3.3.1';
P.SourcePath.Add('compiler/utils/pas2js'); P.SourcePath.Add(FPCSrcDir+'utils/pas2js');
P.UnitPath.Add('compiler/utils/pas2js'); P.UnitPath.Add(FPCSrcDir+'utils/pas2js');
P.UnitPath.Add('compiler/packages/pastojs/src'); P.UnitPath.Add(FPCSrcDir+'packages/pastojs/src');
P.UnitPath.Add('compiler/packages/fcl-passrc/src'); P.UnitPath.Add(FPCSrcDir+'packages/fcl-passrc/src');
P.UnitPath.Add('compiler/packages/fcl-js/src'); P.UnitPath.Add(FPCSrcDir+'packages/fcl-js/src');
P.UnitPath.Add('compiler/packages/fcl-json/src'); P.UnitPath.Add(FPCSrcDir+'packages/fcl-json/src');
{$IF FPC_FULLVERSION>=30301} {$IF FPC_FULLVERSION>=30301}
P.UnitPath.Add('compiler/packages/fcl-base/src'); P.UnitPath.Add(FPCSrcDir+'packages/fcl-base/src');
P.UnitPath.Add('compiler/packages/fcl-web/src/base'); P.UnitPath.Add(FPCSrcDir+'packages/fcl-web/src/base');
P.UnitPath.Add('compiler/packages/fcl-net/src'); P.UnitPath.Add(FPCSrcDir+'packages/fcl-net/src');
P.IncludePath.Add('compiler/packages/fcl-net/src/unix',AllUnixOSes); P.IncludePath.Add(FPCSrcDir+'packages/fcl-net/src/unix',AllUnixOSes);
P.IncludePath.Add('compiler/packages/fcl-net/src/win',AllWindowsOSes); P.IncludePath.Add(FPCSrcDir+'packages/fcl-net/src/win',AllWindowsOSes);
P.IncludePath.Add('compiler/packages/fcl-net/src/os2',[EMX]); P.IncludePath.Add(FPCSrcDir+'packages/fcl-net/src/os2',[EMX]);
P.IncludePath.Add('compiler/packages/fcl-net/src/amiga',[morphos]); P.IncludePath.Add(FPCSrcDir+'packages/fcl-net/src/amiga',[morphos]);
P.IncludePath.Add('compiler/packages/fcl-net/src/$(OS)',AllOSes-AllWindowsOSes-AllUnixOSes-[EMX]); P.IncludePath.Add(FPCSrcDir+'packages/fcl-net/src/$(OS)',AllOSes-AllWindowsOSes-AllUnixOSes-[EMX]);
P.UnitPath.Add('compiler/packages/fcl-base/src'); P.UnitPath.Add(FPCSrcDir+'packages/fcl-base/src');
P.IncludePath.Add('compiler/packages/fcl-base/src/dummy'); P.IncludePath.Add(FPCSrcDir+'packages/fcl-base/src/dummy');
P.UnitPath.Add('compiler/packages/webidl/src'); P.UnitPath.Add(FPCSrcDir+'packages/webidl/src');
{$ENDIF} {$ENDIF}
P.IncludePath.Add('compiler/packages/pastojs/src'); P.IncludePath.Add(FPCSrcDir+'packages/pastojs/src');
P.Dependencies.Clear; P.Dependencies.Clear;
Defaults.Options.Add('-Sc'); Defaults.Options.Add('-Sc');
P.Targets.AddProgram('pas2js.pp'); P.Targets.AddProgram('pas2js.pp');
@ -264,14 +272,14 @@ begin
{$ELSE} {$ELSE}
BD:=IncludeTrailingPathDelimiter(P.GetBinOutputDir(Defaults.BuildCPU,Defaults.BuildOS)); BD:=IncludeTrailingPathDelimiter(P.GetBinOutputDir(Defaults.BuildCPU,Defaults.BuildOS));
{$ENDIF} {$ENDIF}
TmpCfg:='compiler/utils/pas2js/dist/pas2js.cfg'; TmpCfg:=FPCSrcDir+'utils/pas2js/dist/pas2js.cfg';
TmpCfg2:='compiler/utils/pas2js/dist/pas2js-namespaced.cfg'; TmpCfg2:=FPCSrcDir+'utils/pas2js/dist/pas2js-namespaced.cfg';
Case Installer.RunMode of Case Installer.RunMode of
rmCompile,rmBuild: rmCompile,rmBuild:
begin begin
if not FileExists(BD+'pas2js.cfg') then if not FileExists(BD+'pas2js.cfg') then
CreateConfigFile(BD+'pas2js.cfg',SetDirSeparators('../../packages'), CreateConfigFile(BD+'pas2js.cfg',SetDirSeparators('../../packages'),
SetDirSeparators('../../compiler/utils/pas2js/dist/')); SetDirSeparators(FPCSrcDir+'utils/pas2js/dist/'));
if not FileExists(BD+'pas2js-namespaced.cfg') then if not FileExists(BD+'pas2js-namespaced.cfg') then
CreateNameSpacedConfigFile(BD+'pas2js-namespaced.cfg'); CreateNameSpacedConfigFile(BD+'pas2js-namespaced.cfg');
end; end;
@ -289,7 +297,7 @@ begin
CreateNamespacedConfigFile(TmpCfg2); CreateNamespacedConfigFile(TmpCfg2);
P.InstallFiles.Add(TmpCfg,Defaults.BinInstallDir); P.InstallFiles.Add(TmpCfg,Defaults.BinInstallDir);
P.InstallFiles.Add(TmpCfg2,Defaults.BinInstallDir); P.InstallFiles.Add(TmpCfg2,Defaults.BinInstallDir);
P.InstallFiles.Add('compiler/utils/pas2js/dist/rtl.js',IncludeTrailingPathDelimiter(UnitDir)+'rtl'); P.InstallFiles.Add(FPCSrcDir+'utils/pas2js/dist/rtl.js',IncludeTrailingPathDelimiter(UnitDir)+'rtl');
AddPackageFiles(P.InstallFiles,'chartjs',UnitDir); AddPackageFiles(P.InstallFiles,'chartjs',UnitDir);
AddPackageFiles(P.InstallFiles,'dataabstract',UnitDir); AddPackageFiles(P.InstallFiles,'dataabstract',UnitDir);
AddPackageFiles(P.InstallFiles,'fcl-base',UnitDir); AddPackageFiles(P.InstallFiles,'fcl-base',UnitDir);

View File

@ -41,7 +41,7 @@ type
Pas2jsVersion: string; Pas2jsVersion: string;
Simulate: boolean; Simulate: boolean;
SourceDir: string; // cloned git release SourceDir: string; // cloned git release
FPCDir: string; FPCSrcDir: string;
Verbosity: integer; Verbosity: integer;
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
@ -133,7 +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); FPCSrcDir:=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);
@ -142,16 +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 if FPCSrcDir='' then
FPCDir:=GetEnvironmentVariable('FPCDIR'); FPCSrcDir:=GetEnvironmentVariable('FPCDIR');
if FPCDir='' then if FPCSrcDir='' then
FPCDir:=SourceDir+'compiler'+PathDelim; FPCSrcDir:=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,'FPCDir: "'+FPCSrcDir+'"');
Log(etInfo,'FPCRelease: "'+FPCReleaseFilename+'"'); Log(etInfo,'FPCRelease: "'+FPCReleaseFilename+'"');
Log(etInfo,'FPCDevel: "'+FPCDevelFilename+'"'); Log(etInfo,'FPCDevel: "'+FPCDevelFilename+'"');
Log(etInfo,'FPC2: "'+FPC2Filename+'"'); Log(etInfo,'FPC2: "'+FPC2Filename+'"');
@ -171,8 +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 if not DirectoryExists(FPCSrcDir) then
Err('FPCDir missing: "'+FPCDir+'"'); Err('FPCDir missing: "'+FPCSrcDir+'"');
CheckExecutable(FPCReleaseFilename,'fpcrelease'); CheckExecutable(FPCReleaseFilename,'fpcrelease');
CheckExecutable(FPCDevelFilename,'fpcdevel'); CheckExecutable(FPCDevelFilename,'fpcdevel');
if FPC2Filename<>'' then if FPC2Filename<>'' then
@ -305,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:=FPCDir+SetDirSeparators('packages/pastojs/src/pas2jscompiler.pp'); Filename:=FPCSrcDir+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
@ -338,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:=FPCDir+SetDirSeparators('utils/pas2js/dist/rtl.js'); Filename:=FPCSrcDir+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
@ -372,11 +372,11 @@ procedure TPas2jsReleaseCreator.CheckForgottenWriteln;
end; end;
begin begin
Check(FPCDir+'packages'+PathDelim+'fcl-js'+PathDelim+'src'); Check(FPCSrcDir+'packages'+PathDelim+'fcl-js'+PathDelim+'src');
Check(FPCDir+'packages'+PathDelim+'fcl-json'+PathDelim+'src'); Check(FPCSrcDir+'packages'+PathDelim+'fcl-json'+PathDelim+'src');
Check(FPCDir+'packages'+PathDelim+'fcl-passrc'+PathDelim+'src'); Check(FPCSrcDir+'packages'+PathDelim+'fcl-passrc'+PathDelim+'src');
Check(FPCDir+'packages'+PathDelim+'pastojs'+PathDelim+'src'); Check(FPCSrcDir+'packages'+PathDelim+'pastojs'+PathDelim+'src');
Check(FPCDir+'utils'+PathDelim+'pas2js'); Check(FPCSrcDir+'utils'+PathDelim+'pas2js');
end; end;
procedure TPas2jsReleaseCreator.ParseFPCTargetOption(const LongOpt: string; out procedure TPas2jsReleaseCreator.ParseFPCTargetOption(const LongOpt: string; out
@ -480,9 +480,9 @@ begin
SharedParams:=TStringList.Create; SharedParams:=TStringList.Create;
TheParams:=TStringList.Create; TheParams:=TStringList.Create;
try try
WorkDir:=FPCDir+'utils'+PathDelim+'pas2js'; WorkDir:=FPCSrcDir+'utils'+PathDelim+'pas2js';
PkgSrcDir:=FPCDir+'packages'+PathDelim; PkgSrcDir:=FPCSrcDir+'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');
@ -601,7 +601,7 @@ procedure TPas2jsReleaseCreator.CopyRTLjs;
var var
SrcFilename, DestFilename: String; SrcFilename, DestFilename: String;
begin begin
SrcFilename:=FPCDir+SetDirSeparators('utils/pas2js/dist/rtl.js'); SrcFilename:=FPCSrcDir+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+'"');