fpmake: create pas2js.cfg, added missing package dirs

This commit is contained in:
mattias 2019-03-03 12:53:46 +00:00
parent 8ffc23e173
commit 5d1e874c9e

View File

@ -3,6 +3,20 @@ program fpmake;
uses {$ifdef unix}cthreads,{$endif} sysutils, fpmkunit; uses {$ifdef unix}cthreads,{$endif} sysutils, fpmkunit;
function FilenameIsAbsolute(const TheFilename: string):boolean;
begin
{$IFDEF WINDOWS}
// windows
Result:=((length(TheFilename)>=2) and (TheFilename[1] in ['A'..'Z','a'..'z'])
and (TheFilename[2]=':'))
or ((length(TheFilename)>=2)
and (TheFilename[1]='\') and (TheFilename[2]='\'));
{$ELSE}
// unix
Result:=(TheFilename<>'') and (TheFilename[1]='/');
{$ENDIF}
end;
Procedure CreateConfigFile(CfgFile,BaseDir : String); Procedure CreateConfigFile(CfgFile,BaseDir : String);
Var Var
@ -32,31 +46,32 @@ begin
end; end;
if (BaseDir<>'') then if (BaseDir<>'') then
BaseDir:=ExcludeTrailingPathDelimiter(BaseDir); BaseDir:=ExcludeTrailingPathDelimiter(BaseDir);
if (BaseDir<>'') then
BaseDir:=ExcludeLeadingPathDelimiter(BaseDir);
Addln('#'); Addln('#');
Addln('# Minimal config file for pas2js compiler'); Addln('# Minimal config file for pas2js compiler');
Addln('#'); Addln('#');
Addln('# not yet implemented: -d is the same as #DEFINE'); Addln('# -d is the same as #DEFINE');
Addln('# not yet implemented: -u is the same as #UNDEF'); Addln('# -u is the same as #UNDEF');
Addln('#'); Addln('#');
Addln('# Write always a nice logo ;)'); Addln('# Write always a nice logo ;)');
Addln('-l'); Addln('-l');
Addln(''); Addln('');
Addln('# Display Hints, Warnings and Notes'); Addln('# Display Warnings, Notes and Hints');
Addln('-vwnh'); Addln('-vwnh');
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('-Fu$CfgDir/'+BASEDIR+'/rtl'); if FilenameIsAbsolute(BaseDir) then
Addln('-Fu$CfgDir/'+BASEDIR+'/fcl-base'); Addln('-Fu'+BaseDir+'/*')
Addln('-Fu$CfgDir/'+BASEDIR+'/fcl-db'); else
Addln('-Fu$CfgDir/'+BASEDIR+'/fpcunit'); Addln('-Fu$CfgDir/'+ExcludeLeadingPathDelimiter(BaseDir)+'/*');
Addln(''); Addln('');
Addln('#IFDEF nodejs'); Addln('#IFDEF nodejs');
Addln('-Jirtl.js'); Addln('-Jirtl.js');
Addln('#ENDIF'); Addln('#ENDIF');
Addln(''); Addln('');
Addln('# Put all generated JavaScript into one file');
Addln('-Jc');
Addln('');
Addln('# end.'); Addln('# end.');
Close(F); Close(F);
end; end;
@ -108,7 +123,7 @@ end;
Var Var
P : TPackage; P : TPackage;
UnitDir,DemoDir,BD : String; UnitDir,DemoDir,BD: String;
begin begin
With Installer do With Installer do
@ -120,7 +135,7 @@ begin
P.Description := 'Convert pascal sources to javascript.'; P.Description := 'Convert pascal sources to javascript.';
P.Email := 'michael@freepascal.org'; P.Email := 'michael@freepascal.org';
P.NeedLibC:= false; P.NeedLibC:= false;
P.Version:='3.1.1'; P.Version:='3.3.1';
P.SourcePath.Add('compiler/utils/pas2js'); P.SourcePath.Add('compiler/utils/pas2js');
P.UnitPath.Add('compiler/utils/pas2js'); P.UnitPath.Add('compiler/utils/pas2js');
P.UnitPath.Add('compiler/packages/pastojs/src'); P.UnitPath.Add('compiler/packages/pastojs/src');
@ -175,33 +190,43 @@ begin
P.Targets.AddImplicitUnit('webidltopas',False).ResourceStrings:=True; P.Targets.AddImplicitUnit('webidltopas',False).ResourceStrings:=True;
// Determine unit files location // Determine unit files location
BD:=IncludeTrailingPathDelimiter(P.GetBinOutputDir(Defaults.BuildCPU,Defaults.BuildOS)); BD:=IncludeTrailingPathDelimiter(P.GetBinOutputDir(Defaults.BuildCPU,Defaults.BuildOS));
UnitDir:=ExcludeTrailingPathDelimiter(Defaults.UnitInstallDir);
UnitDir:=ExcludeTrailingPathDelimiter(ExtractFilePath(UnitDir));
UnitDir:=ExcludeTrailingPathDelimiter(ExtractFilePath(UnitDir));
UnitDir:=ExtractFilePath(UnitDir);
UnitDir:=UnitDir+'pas2js'+PathDelim;
Case Installer.RunMode of Case Installer.RunMode of
rmCompile,rmBuild:
begin
if not FileExists(BD+'pas2js.cfg') then
CreateConfigFile(BD+'pas2js.cfg',SetDirSeparators('../../packages'));
end;
rmInstall,rmArchive,rmZipInstall: rmInstall,rmArchive,rmZipInstall:
begin begin
// UnitDir = some\path\units\i386-win32\..\..\..\pas2js\
UnitDir:=ExcludeTrailingPathDelimiter(Defaults.UnitInstallDir);
UnitDir:=ExcludeTrailingPathDelimiter(ExtractFilePath(UnitDir));
UnitDir:=ExcludeTrailingPathDelimiter(ExtractFilePath(UnitDir));
UnitDir:=ExtractFilePath(UnitDir);
UnitDir:=UnitDir+'pas2js'+PathDelim;
// Config file // Config file
// Create config file // Create config file
CreateConfigFile(BD+'pas2js.cfg',ExtractRelativePath(IncludeTrailingPathDelimiter(Defaults.BinInstallDir),IncludeTrailingPathDelimiter(UnitDir))); CreateConfigFile(BD+'pas2js.cfg',ExtractRelativePath(IncludeTrailingPathDelimiter(Defaults.BinInstallDir),IncludeTrailingPathDelimiter(UnitDir)));
P.InstallFiles.Add(BD+'pas2js.cfg',Defaults.BinInstallDir); P.InstallFiles.Add(BD+'pas2js.cfg',Defaults.BinInstallDir);
P.InstallFiles.Add('compiler/utils/pas2js/dist/rtl.js',IncludeTrailingPathDelimiter(UnitDir)+'rtl'); P.InstallFiles.Add('compiler/utils/pas2js/dist/rtl.js',IncludeTrailingPathDelimiter(UnitDir)+'rtl');
AddPackageFiles(P.InstallFiles,'rtl',UnitDir); AddPackageFiles(P.InstallFiles,'chartjs',UnitDir);
AddPackageFiles(P.InstallFiles,'dataabstract',UnitDir);
AddPackageFiles(P.InstallFiles,'fcl-base',UnitDir); AddPackageFiles(P.InstallFiles,'fcl-base',UnitDir);
AddPackageFiles(P.InstallFiles,'fcl-db',UnitDir); AddPackageFiles(P.InstallFiles,'fcl-db',UnitDir);
AddPackageFiles(P.InstallFiles,'fpcunit',UnitDir); AddPackageFiles(P.InstallFiles,'fpcunit',UnitDir);
AddPackageFiles(P.InstallFiles,'jspdf',UnitDir);
AddPackageFiles(P.InstallFiles,'nodejs',UnitDir);
AddPackageFiles(P.InstallFiles,'rtl',UnitDir);
// Demo files // Demo files
DemoDir:=IncludeTrailingPathDelimiter(Defaults.ExamplesInstallDir); DemoDir:=IncludeTrailingPathDelimiter(Defaults.ExamplesInstallDir);
AddDemoFiles(P.InstallFiles,'rtl',DemoDir);
AddDemoFiles(P.InstallFiles,'fcldb',DemoDir); AddDemoFiles(P.InstallFiles,'fcldb',DemoDir);
AddDemoFiles(P.InstallFiles,'fpcunit',DemoDir); AddDemoFiles(P.InstallFiles,'fpcunit',DemoDir);
AddDemoFiles(P.InstallFiles,'fpreport',DemoDir); AddDemoFiles(P.InstallFiles,'fpreport',DemoDir);
AddDemoFiles(P.InstallFiles,'hotreload',DemoDir); AddDemoFiles(P.InstallFiles,'hotreload',DemoDir);
AddDemoFiles(P.InstallFiles,'jquery',DemoDir); AddDemoFiles(P.InstallFiles,'jquery',DemoDir);
AddDemoFiles(P.InstallFiles,'rtl',DemoDir);
end; end;
rmClean: rmDistClean:
if FileExists(BD+'pas2js.cfg') then if FileExists(BD+'pas2js.cfg') then
P.CleanFiles.Add(BD+'pas2js.cfg'); P.CleanFiles.Add(BD+'pas2js.cfg');
end; end;