Selaa lähdekoodia

* Dotted filenames for package pastojs

Michaël Van Canneyt 2 vuotta sitten
vanhempi
commit
81c6474e9f
45 muutettua tiedostoa jossa 345 lisäystä ja 27 poistoa
  1. 3 0
      packages/pastojs/namespaced/=Pas2Js.Logger.pp
  2. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.Base.pp
  3. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.Config.pp
  4. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.Files.pp
  5. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.Lib.pp
  6. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.Pcu.pp
  7. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.PostProcess.pp
  8. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.Transpile.pp
  9. 3 0
      packages/pastojs/namespaced/Pas2Js.Compiler.Transpiler.pp
  10. 3 0
      packages/pastojs/namespaced/Pas2Js.Filer.pp
  11. 3 0
      packages/pastojs/namespaced/Pas2Js.Files.Cache.pp
  12. 3 0
      packages/pastojs/namespaced/Pas2Js.Files.Fs.pp
  13. 3 0
      packages/pastojs/namespaced/Pas2Js.Files.Utils.pp
  14. 3 0
      packages/pastojs/namespaced/Pas2Js.Logger.pp
  15. 3 0
      packages/pastojs/namespaced/Pas2Js.Parser.pp
  16. 3 0
      packages/pastojs/namespaced/Pas2Js.Resources.Html.pp
  17. 3 0
      packages/pastojs/namespaced/Pas2Js.Resources.Js.pp
  18. 3 0
      packages/pastojs/namespaced/Pas2Js.Resources.Strings.pp
  19. 3 0
      packages/pastojs/namespaced/Pas2Js.Resources.pp
  20. 3 0
      packages/pastojs/namespaced/Pas2Js.SrcMap.pp
  21. 3 0
      packages/pastojs/namespaced/Pas2Js.UseAnalyzer.pp
  22. 3 0
      packages/pastojs/namespaced/Pas2Js.Utils.pp
  23. 22 0
      packages/pastojs/namespaces.lst
  24. 13 0
      packages/pastojs/src/fppas2js.pp
  25. 8 0
      packages/pastojs/src/fppjssrcmap.pp
  26. 29 11
      packages/pastojs/src/pas2jscompiler.pp
  27. 10 0
      packages/pastojs/src/pas2jscompilercfg.pp
  28. 11 0
      packages/pastojs/src/pas2jscompilerpp.pp
  29. 22 7
      packages/pastojs/src/pas2jsfilecache.pp
  30. 15 1
      packages/pastojs/src/pas2jsfiler.pp
  31. 20 1
      packages/pastojs/src/pas2jsfileutils.pp
  32. 2 2
      packages/pastojs/src/pas2jsfileutilsunix.inc
  33. 4 4
      packages/pastojs/src/pas2jsfileutilswin.inc
  34. 8 0
      packages/pastojs/src/pas2jsfs.pp
  35. 12 0
      packages/pastojs/src/pas2jsfscompiler.pp
  36. 7 0
      packages/pastojs/src/pas2jshtmlresources.pp
  37. 7 0
      packages/pastojs/src/pas2jsjsresources.pp
  38. 9 0
      packages/pastojs/src/pas2jslibcompiler.pp
  39. 19 0
      packages/pastojs/src/pas2jslogger.pp
  40. 12 0
      packages/pastojs/src/pas2jspcucompiler.pp
  41. 8 0
      packages/pastojs/src/pas2jspparser.pp
  42. 13 0
      packages/pastojs/src/pas2jsresources.pp
  43. 7 0
      packages/pastojs/src/pas2jsresstrfile.pp
  44. 9 0
      packages/pastojs/src/pas2jsuseanalyzer.pp
  45. 12 1
      packages/pastojs/src/pas2jsutils.pp

+ 3 - 0
packages/pastojs/namespaced/=Pas2Js.Logger.pp

@@ -0,0 +1,3 @@
+unit =Pas2Js.Logger;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jslogger.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.Base.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.Base;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jscompiler.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.Config.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.Config;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jscompilercfg.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.Files.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.Files;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsfscompiler.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.Lib.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.Lib;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jslibcompiler.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.Pcu.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.Pcu;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jspcucompiler.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.PostProcess.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.PostProcess;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jscompilerpp.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.Transpile.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.Transpile;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i fppas2js.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Compiler.Transpiler.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Compiler.Transpiler;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i fppas2js.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Filer.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Filer;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsfiler.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Files.Cache.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Files.Cache;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsfilecache.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Files.Fs.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Files.Fs;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsfs.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Files.Utils.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Files.Utils;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsfileutils.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Logger.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Logger;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jslogger.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Parser.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Parser;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jspparser.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Resources.Html.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Resources.Html;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jshtmlresources.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Resources.Js.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Resources.Js;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsjsresources.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Resources.Strings.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Resources.Strings;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsresstrfile.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Resources.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Resources;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsresources.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.SrcMap.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.SrcMap;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i fppjssrcmap.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.UseAnalyzer.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.UseAnalyzer;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsuseanalyzer.pp}

+ 3 - 0
packages/pastojs/namespaced/Pas2Js.Utils.pp

@@ -0,0 +1,3 @@
+unit Pas2Js.Utils;
+{$DEFINE FPC_DOTTEDUNITS}
+{$i pas2jsutils.pp}

+ 22 - 0
packages/pastojs/namespaces.lst

@@ -0,0 +1,22 @@
+src/pas2jscompilercfg.pp=namespaced/Pas2Js.Compiler.Config.pp
+{s*:src/}=namespaced/
+{i+:src/}
+src/pas2jsutils.pp=namespaced/Pas2Js.Utils.pp
+src/pas2jsresources.pp=namespaced/Pas2Js.Resources.pp
+src/pas2jspcucompiler.pp=namespaced/Pas2Js.Compiler.Pcu.pp
+src/pas2jspparser.pp=namespaced/Pas2Js.Parser.pp
+src/pas2jsfscompiler.pp=namespaced/Pas2Js.Compiler.Files.pp
+src/pas2jsuseanalyzer.pp=namespaced/Pas2Js.UseAnalyzer.pp
+src/pas2jsjsresources.pp=namespaced/Pas2Js.Resources.Js.pp
+src/pas2jsresstrfile.pp=namespaced/Pas2Js.Resources.Strings.pp
+src/pas2jslibcompiler.pp=namespaced/Pas2Js.Compiler.Lib.pp
+src/pas2jsfileutils.pp=namespaced/Pas2Js.Files.Utils.pp
+src/pas2jscompilerpp.pp=namespaced/Pas2Js.Compiler.PostProcess.pp
+src/fppas2js.pp=namespaced/Pas2Js.Compiler.Transpiler.pp
+src/fppjssrcmap.pp=namespaced/Pas2Js.SrcMap.pp
+src/pas2jshtmlresources.pp=namespaced/Pas2Js.Resources.Html.pp
+src/pas2jsfs.pp=namespaced/Pas2Js.Files.Fs.pp
+src/pas2jsfilecache.pp=namespaced/Pas2Js.Files.Cache.pp
+src/pas2jsfiler.pp=namespaced/Pas2Js.Filer.pp
+src/pas2jslogger.pp=namespaced/Pas2Js.Logger.pp
+src/pas2jscompiler.pp=namespaced/Pas2Js.Compiler.Base.pp

+ 13 - 0
packages/pastojs/src/fppas2js.pp

@@ -453,7 +453,9 @@ ToDos:
 Debugging this unit: -d<x>
 Debugging this unit: -d<x>
    VerbosePas2JS
    VerbosePas2JS
 *)
 *)
+{$IFNDEF FPC_DOTTEDUNITS}
 unit FPPas2Js;
 unit FPPas2Js;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 {$inline on}
 {$inline on}
@@ -471,6 +473,16 @@ unit FPPas2Js;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  {$ifdef pas2js}
+  {$else}
+  Fcl.AVLTree,
+  {$endif}
+  System.Classes, System.SysUtils, System.Math, System.Contnrs,
+  Js.Base, Js.Tree, Js.Writer,
+  Pascal.Tree, Pascal.Scanner, Pascal.ResolveEval, Pascal.Resolver;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   {$ifdef pas2js}
   {$ifdef pas2js}
   {$else}
   {$else}
@@ -479,6 +491,7 @@ uses
   Classes, SysUtils, math, contnrs,
   Classes, SysUtils, math, contnrs,
   jsbase, jstree, jswriter,
   jsbase, jstree, jswriter,
   PasTree, PScanner, PasResolveEval, PasResolver;
   PasTree, PScanner, PasResolveEval, PasResolver;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 // message numbers
 // message numbers
 const
 const

+ 8 - 0
packages/pastojs/src/fppjssrcmap.pp

@@ -18,15 +18,23 @@ Abstract:
 
 
 
 
 *)
 *)
+{$IFNDEF FPC_DOTTEDUNITS}
 unit FPPJsSrcMap;
 unit FPPJsSrcMap;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.SysUtils, System.Math,
+  Js.Writer, Js.Tree, Js.SrcMap, FpJson.Data, Pas2Js.Utils;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   SysUtils, math,
   SysUtils, math,
   jswriter, jstree, JSSrcMap, fpjson, Pas2JSUtils;
   jswriter, jstree, JSSrcMap, fpjson, Pas2JSUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 type
 type
   { TPas2JSSrcMap }
   { TPas2JSSrcMap }

+ 29 - 11
packages/pastojs/src/pas2jscompiler.pp

@@ -16,7 +16,9 @@ Compiler-ToDos:
   -Fa<x>[,y] (for a program) load units <x> and [y] before uses is parsed
   -Fa<x>[,y] (for a program) load units <x> and [y] before uses is parsed
   Add Windows macros, see InitMacros.
   Add Windows macros, see InitMacros.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2jsCompiler;
 unit Pas2jsCompiler;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
@@ -28,6 +30,21 @@ unit Pas2jsCompiler;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  {$IFDEF Pas2js}
+  JS,
+  {$ELSE}
+  System.RtlConsts,
+  {$ENDIF}
+  // !! No NdsApi.Filesystem units here.
+  System.Classes, System.SysUtils, System.Contnrs,
+  Js.Base, Js.Tree, Js.Writer, Js.SrcMap, FpJson.Data,
+  Pascal.Scanner, Pascal.Parser, Pascal.Tree, Pascal.Resolver, Pascal.ResolveEval, Pascal.UseAnalyzer,
+  Pas2Js.Utils,
+  Pas2Js.Resources.Strings, Pas2Js.Resources, Pas2Js.Resources.Html, Pas2Js.Resources.Js,
+  Pas2Js.Compiler.Transpiler, Pas2Js.SrcMap, Pas2Js.Logger, Pas2Js.Files.Fs, Pas2Js.Parser, Pas2Js.UseAnalyzer;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   {$IFDEF Pas2js}
   {$IFDEF Pas2js}
   JS,
   JS,
@@ -41,6 +58,7 @@ uses
   Pas2JSUtils,
   Pas2JSUtils,
   pas2jsresstrfile, pas2jsresources, pas2jshtmlresources, pas2jsjsresources,
   pas2jsresstrfile, pas2jsresources, pas2jshtmlresources, pas2jsjsresources,
   FPPas2Js, FPPJsSrcMap, Pas2jsLogger, Pas2jsFS, Pas2jsPParser, Pas2jsUseAnalyzer;
   FPPas2Js, FPPJsSrcMap, Pas2jsLogger, Pas2jsFS, Pas2jsPParser, Pas2jsUseAnalyzer;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 const
 const
   VersionMajor = 2;
   VersionMajor = 2;
@@ -1059,27 +1077,27 @@ begin
   Result:=DefaultPasToJSOptions;
   Result:=DefaultPasToJSOptions;
 
 
   if coUseStrict in Compiler.Options then
   if coUseStrict in Compiler.Options then
-    Include(Result,fppas2js.coUseStrict)
+    Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coUseStrict)
   else
   else
-    Exclude(Result,fppas2js.coUseStrict);
+    Exclude(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coUseStrict);
 
 
   if coEnumValuesAsNumbers in Compiler.Options then
   if coEnumValuesAsNumbers in Compiler.Options then
-    Include(Result,fppas2js.coEnumNumbers);
+    Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coEnumNumbers);
   if (coShortRefGlobals in Compiler.Options) or IsUnitReadFromPCU then
   if (coShortRefGlobals in Compiler.Options) or IsUnitReadFromPCU then
-    Include(Result,fppas2js.coShortRefGlobals);
+    Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coShortRefGlobals);
   if coObfuscateLocalIdentifiers in Compiler.Options then
   if coObfuscateLocalIdentifiers in Compiler.Options then
-    Include(Result,fppas2js.coObfuscateLocalIdentifiers);
+    Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coObfuscateLocalIdentifiers);
 
 
   if coLowerCase in Compiler.Options then
   if coLowerCase in Compiler.Options then
-    Include(Result,fppas2js.coLowerCase)
+    Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coLowerCase)
   else
   else
-    Exclude(Result,fppas2js.coLowerCase);
+    Exclude(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coLowerCase);
 
 
   case Compiler.RTLVersionCheck of
   case Compiler.RTLVersionCheck of
     rvcNone: ;
     rvcNone: ;
-    rvcMain: Include(Result,fppas2js.coRTLVersionCheckMain);
-    rvcSystem: Include(Result,fppas2js.coRTLVersionCheckSystem);
-    rvcUnit: Include(Result,fppas2js.coRTLVersionCheckUnit);
+    rvcMain: Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coRTLVersionCheckMain);
+    rvcSystem: Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coRTLVersionCheckSystem);
+    rvcUnit: Include(Result,{$IFDEF FPC_DOTTEDUNITS}Pas2Js.Compiler.Transpiler{$ELSE}fppas2js{$ENDIF}.coRTLVersionCheckUnit);
   end;
   end;
 end;
 end;
 
 
@@ -3356,7 +3374,7 @@ begin
   r(mtInfo,nRTLIdentifierChanged,sRTLIdentifierChanged);
   r(mtInfo,nRTLIdentifierChanged,sRTLIdentifierChanged);
   r(mtNote,nSkipNoConstResourcestring,sSkipNoConstResourcestring);
   r(mtNote,nSkipNoConstResourcestring,sSkipNoConstResourcestring);
   r(mtWarning,nUnknownOptimizationOption,sUnknownOptimizationOption);
   r(mtWarning,nUnknownOptimizationOption,sUnknownOptimizationOption);
-  Pas2jsPParser.RegisterMessages(Log);
+  {$IFDEF FPC_DOTTEDUNITS}Pas2js.Parser{$ELSE}Pas2jsPParser{$ENDIF}.RegisterMessages(Log);
 end;
 end;
 
 
 procedure TPas2jsCompiler.LoadConfig(CfgFilename: string);
 procedure TPas2jsCompiler.LoadConfig(CfgFilename: string);

+ 10 - 0
packages/pastojs/src/pas2jscompilercfg.pp

@@ -16,17 +16,27 @@
   Abstract:
   Abstract:
     Config file handling for compiler, depends on filesystem.
     Config file handling for compiler, depends on filesystem.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2JSCompilerCfg;
 unit Pas2JSCompilerCfg;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  {$IFDEF NodeJS}
+  node.fs,
+  {$ENDIF}
+  System.SysUtils, System.Classes, Pas2Js.Files.Utils, Pas2Js.Files.Fs, Pas2Js.Compiler.Base;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   {$IFDEF NodeJS}
   {$IFDEF NodeJS}
   node.fs,
   node.fs,
   {$ENDIF}
   {$ENDIF}
   SysUtils, Classes, Pas2jsFileUtils, Pas2JSFS, Pas2jsCompiler;
   SysUtils, Classes, Pas2jsFileUtils, Pas2JSFS, Pas2jsCompiler;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
   TPas2JSFileConfigSupport = Class(TPas2JSConfigSupport)
   TPas2JSFileConfigSupport = Class(TPas2JSConfigSupport)

+ 11 - 0
packages/pastojs/src/pas2jscompilerpp.pp

@@ -16,14 +16,21 @@
   Abstract:
   Abstract:
     Pas2JS compiler Postprocessor support. Can depend on filesystem.
     Pas2JS compiler Postprocessor support. Can depend on filesystem.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2JSCompilerPP;
 unit Pas2JSCompilerPP;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes, System.SysUtils, Pas2Js.Compiler.Base, Js.Writer, Pas2Js.SrcMap, System.Contnrs;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes, SysUtils, pas2jscompiler, jswriter, FPPJSSrcMap, contnrs;
   Classes, SysUtils, pas2jscompiler, jswriter, FPPJSSrcMap, contnrs;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
 
 
@@ -45,7 +52,11 @@ Type
 
 
 implementation
 implementation
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses System.Process, Pas2Js.Logger, Pas2Js.Utils, Pas2Js.Files.Utils;
+{$ELSE FPC_DOTTEDUNITS}
 uses process, pas2jslogger, pas2jsutils, pas2jsfileutils;
 uses process, pas2jslogger, pas2jsutils, pas2jsfileutils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 function TPas2JSFSPostProcessorSupport.CmdListAsStr(CmdList: TStrings): string;
 function TPas2JSFSPostProcessorSupport.CmdListAsStr(CmdList: TStrings): string;
 var
 var

+ 22 - 7
packages/pastojs/src/pas2jsfilecache.pp

@@ -16,7 +16,9 @@
   Abstract:
   Abstract:
     TPas2jsFileResolver extends TFileResolver and searches source files.
     TPas2jsFileResolver extends TFileResolver and searches source files.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2jsFileCache;
 unit Pas2jsFileCache;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
@@ -24,6 +26,18 @@ unit Pas2jsFileCache;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  {$IFDEF Pas2js}
+    {$IFDEF NodeJS}
+    JS, node.fs,
+    {$ENDIF}
+  {$ENDIF}
+  System.Classes, System.SysUtils,
+  FpJson.Data,
+  Pascal.Scanner, Pascal.Resolver, Pascal.UseAnalyzer,
+  Pas2Js.Logger, Pas2Js.Files.Utils, Pas2Js.Files.Fs, Pas2Js.Utils;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   {$IFDEF Pas2js}
   {$IFDEF Pas2js}
     {$IFDEF NodeJS}
     {$IFDEF NodeJS}
@@ -34,6 +48,7 @@ uses
   fpjson,
   fpjson,
   PScanner, PasResolver, PasUseAnalyzer,
   PScanner, PasResolver, PasUseAnalyzer,
   Pas2jsLogger, Pas2jsFileUtils, Pas2JSFS, Pas2JSUtils;
   Pas2jsLogger, Pas2jsFileUtils, Pas2JSFS, Pas2JSUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 
 
 type
 type
@@ -954,7 +969,7 @@ begin
       Filename:=ChompPathDelim(ResolveDots(Filename));
       Filename:=ChompPathDelim(ResolveDots(Filename));
       if not FilenameIsAbsolute(Filename) then
       if not FilenameIsAbsolute(Filename) then
         Filename:=WorkingDirectory+Filename;
         Filename:=WorkingDirectory+Filename;
-      Result:={$IFDEF pas2js}Node.FS{$ELSE}SysUtils{$ENDIF}.DirectoryExists(Filename);
+      Result:={$IFDEF pas2js}Node.FS{$ELSE}{$IFDEF FPC_DOTTEDUNITS}System.{$ENDIF}SysUtils{$ENDIF}.DirectoryExists(Filename);
       end;
       end;
     end;
     end;
 end;
 end;
@@ -968,7 +983,7 @@ begin
   if Info.Dir<>nil then
   if Info.Dir<>nil then
     Result:=Info.Dir.IndexOfFile(Info.ShortFilename)>=0
     Result:=Info.Dir.IndexOfFile(Info.ShortFilename)>=0
   else
   else
-    Result:={$IFDEF pas2js}Node.FS{$ELSE}SysUtils{$ENDIF}.FileExists(Info.Filename);
+    Result:={$IFDEF pas2js}Node.FS{$ELSE}{$IFDEF FPC_DOTTEDUNITS}System.{$ENDIF}SysUtils{$ENDIF}.FileExists(Info.Filename);
 end;
 end;
 
 
 function TPas2jsCachedDirectories.FileExistsI(var Filename: string): integer;
 function TPas2jsCachedDirectories.FileExistsI(var Filename: string): integer;
@@ -981,7 +996,7 @@ begin
   if not GetFileInfo(Info) then exit;
   if not GetFileInfo(Info) then exit;
   if Info.Dir=nil then
   if Info.Dir=nil then
   begin
   begin
-    if {$IFDEF pas2js}Node.FS{$ELSE}SysUtils{$ENDIF}.FileExists(Info.Filename) then
+    if {$IFDEF pas2js}Node.FS{$ELSE}{$IFDEF FPC_DOTTEDUNITS}System.{$ENDIF}SysUtils{$ENDIF}.FileExists(Info.Filename) then
       Result:=1;
       Result:=1;
   end
   end
   else
   else
@@ -1084,7 +1099,7 @@ begin
     {$ENDIF}
     {$ENDIF}
     Result:=TPas2jsCachedDirectory.Create(Dir,Self);
     Result:=TPas2jsCachedDirectory.Create(Dir,Self);
     FDirectories.Add(Result);
     FDirectories.Add(Result);
-    if DoReference then
+    if DoReference then 
       Result.Reference;
       Result.Reference;
     Result.Update;
     Result.Update;
   end else
   end else
@@ -1264,7 +1279,7 @@ end;
 
 
 procedure TPas2jsFilesCache.SetBaseDirectory(AValue: string);
 procedure TPas2jsFilesCache.SetBaseDirectory(AValue: string);
 begin
 begin
-  AValue:=Pas2jsFileUtils.ExpandDirectory(AValue);
+  AValue:={$IFDEF FPC_DOTTEDUNITS}Pas2js.Files.Utils{$ELSE}Pas2jsFileUtils{$ENDIF}.ExpandDirectory(AValue);
   if FBaseDirectory=AValue then Exit;
   if FBaseDirectory=AValue then Exit;
   FBaseDirectory:=AValue;
   FBaseDirectory:=AValue;
   DirectoryCache.WorkingDirectory:=BaseDirectory;
   DirectoryCache.WorkingDirectory:=BaseDirectory;
@@ -1583,7 +1598,7 @@ end;
 
 
 function TPas2jsFilesCache.SameFileName(const File1, File2: String): Boolean;
 function TPas2jsFilesCache.SameFileName(const File1, File2: String): Boolean;
 begin
 begin
-  Result:=Pas2jsFileUtils.CompareFilenames(File1,File2)=0;
+  Result:={$IFDEF FPC_DOTTEDUNITS}Pas2js.Files.Utils{$ELSE}Pas2jsFileUtils{$ENDIF}.CompareFilenames(File1,File2)=0;
 end;
 end;
 
 
 function TPas2jsFilesCache.File1IsNewer(const File1, File2: String): Boolean;
 function TPas2jsFilesCache.File1IsNewer(const File1, File2: String): Boolean;
@@ -1871,7 +1886,7 @@ function TPas2jsFilesCache.TryCreateRelativePath(const Filename,
   BaseDirectory: String; UsePointDirectory,
   BaseDirectory: String; UsePointDirectory,
   AlwaysRequireSharedBaseFolder: boolean; out RelPath: String): Boolean;
   AlwaysRequireSharedBaseFolder: boolean; out RelPath: String): Boolean;
 begin
 begin
-  Result:=Pas2jsFileUtils.TryCreateRelativePath(Filename, BaseDirectory,
+  Result:={$IFDEF FPC_DOTTEDUNITS}Pas2js.Files.Utils{$ELSE}Pas2jsFileUtils{$ENDIF}.TryCreateRelativePath(Filename, BaseDirectory,
     UsePointDirectory, AlwaysRequireSharedBaseFolder, RelPath);
     UsePointDirectory, AlwaysRequireSharedBaseFolder, RelPath);
 end;
 end;
 
 

+ 15 - 1
packages/pastojs/src/pas2jsfiler.pp

@@ -76,7 +76,9 @@ Todo:
 - when pcu is bad, unload and use src
 - when pcu is bad, unload and use src
 - replace GUID with crc
 - replace GUID with crc
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2JsFiler;
 unit Pas2JsFiler;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
@@ -86,6 +88,17 @@ unit Pas2JsFiler;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes, System.Types, System.SysUtils, System.Contnrs,
+  {$ifdef pas2js}
+  {$else}
+  System.ZLib.Zstream, Fcl.AVLTree,
+  {$endif}
+  FpJson.Data, FpJson.Parser, FpJson.Scanner,
+  Pascal.Tree, Pascal.Scanner, Pascal.Parser, Pascal.ResolveEval, Pascal.Resolver,
+  Pas2Js.Files.Utils, Pas2Js.Compiler.Transpiler, Pas2Js.Utils, Js.Base;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes, Types, SysUtils, contnrs,
   Classes, Types, SysUtils, contnrs,
   {$ifdef pas2js}
   {$ifdef pas2js}
@@ -95,6 +108,7 @@ uses
   fpjson, jsonparser, jsonscanner,
   fpjson, jsonparser, jsonscanner,
   PasTree, PScanner, PParser, PasResolveEval, PasResolver,
   PasTree, PScanner, PParser, PasResolveEval, PasResolver,
   Pas2jsFileUtils, FPPas2Js, Pas2JSUtils, jsbase;
   Pas2jsFileUtils, FPPas2Js, Pas2JSUtils, jsbase;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 const
 const
   PCUMagic = 'Pas2JSCache';
   PCUMagic = 'Pas2JSCache';
@@ -5010,7 +5024,7 @@ begin
     {$IFDEF VerbosePCUFiler}
     {$IFDEF VerbosePCUFiler}
     writeln('TPCUWriter.WritePCU create js');
     writeln('TPCUWriter.WritePCU create js');
     {$ENDIF}
     {$ENDIF}
-    Pas2jsFiler.WriteJSON(aJSON,TargetStream,Compressed);
+    {$IFDEF FPC_DOTTEDUNITS}Pas2js.Filer{$ELSE}Pas2jsFiler{$ENDIF}.WriteJSON(aJSON,TargetStream,Compressed);
     if Compressed then
     if Compressed then
       try
       try
         {$IFDEF VerbosePCUFiler}
         {$IFDEF VerbosePCUFiler}

+ 20 - 1
packages/pastojs/src/pas2jsfileutils.pp

@@ -16,7 +16,9 @@
   Abstract:
   Abstract:
     Low level file path handling.
     Low level file path handling.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2jsFileUtils;
 unit Pas2jsFileUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
@@ -24,6 +26,16 @@ unit Pas2jsFileUtils;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  {$IFDEF Unix}
+  UnixApi.Base,
+  {$ENDIF}
+  {$IFDEF Pas2JS}
+  JS, NodeJS, Node.FS,
+  {$ENDIF}
+  System.SysUtils, System.Classes, Pas2Js.Utils;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   {$IFDEF Unix}
   {$IFDEF Unix}
   BaseUnix,
   BaseUnix,
@@ -32,6 +44,7 @@ uses
   JS, NodeJS, Node.FS,
   JS, NodeJS, Node.FS,
   {$ENDIF}
   {$ENDIF}
   SysUtils, Classes, Pas2JSUtils;
   SysUtils, Classes, Pas2JSUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 function FilenameIsAbsolute(const aFilename: string):boolean;
 function FilenameIsAbsolute(const aFilename: string):boolean;
 function FilenameIsWinAbsolute(const aFilename: string):boolean;
 function FilenameIsWinAbsolute(const aFilename: string):boolean;
@@ -106,9 +119,15 @@ function UTF8ToConsole(const s: ansistring): ansistring;
 
 
 implementation
 implementation
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+{$IFDEF Windows}
+uses WinApi.Windows;
+{$ENDIF}
+{$ELSE FPC_DOTTEDUNITS}
 {$IFDEF Windows}
 {$IFDEF Windows}
 uses Windows;
 uses Windows;
 {$ENDIF}
 {$ENDIF}
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 var
 var
   EncodingValid: boolean = false;
   EncodingValid: boolean = false;
@@ -937,7 +956,7 @@ begin
   {$IFDEF Windows}
   {$IFDEF Windows}
   NonUTF8System:=true;
   NonUTF8System:=true;
   {$ELSE}
   {$ELSE}
-  NonUTF8System:=SysUtils.CompareText(DefaultTextEncoding,'UTF8')<>0;
+  NonUTF8System:={$IFDEF FPC_DOTTEDUNITS}System.{$ENDIF}SysUtils.CompareText(DefaultTextEncoding,'UTF8')<>0;
   {$ENDIF}
   {$ENDIF}
   {$ENDIF}
   {$ENDIF}
 
 

+ 2 - 2
packages/pastojs/src/pas2jsfileutilsunix.inc

@@ -157,7 +157,7 @@ end;
 
 
 function FileIsWritable(const AFilename: string): boolean;
 function FileIsWritable(const AFilename: string): boolean;
 begin
 begin
-  Result := BaseUnix.FpAccess(AFilename, BaseUnix.W_OK) = 0;
+  Result := {$IFDEF FPC_DOTTEDUNITS}UnixApi.Base{$ELSE}BaseUnix{$ENDIF}.FpAccess(AFilename, {$IFDEF FPC_DOTTEDUNITS}UnixApi.Base{$ELSE}BaseUnix{$ENDIF}.W_OK) = 0;
 end;
 end;
 
 
 function FileIsExecutable(const AFilename: string): boolean;
 function FileIsExecutable(const AFilename: string): boolean;
@@ -166,7 +166,7 @@ var
 begin
 begin
   // first check AFilename is not a directory and then check if executable
   // first check AFilename is not a directory and then check if executable
   Result:= (FpStat(AFilename,info{%H-})<>-1) and FPS_ISREG(info.st_mode) and
   Result:= (FpStat(AFilename,info{%H-})<>-1) and FPS_ISREG(info.st_mode) and
-           (BaseUnix.FpAccess(AFilename,BaseUnix.X_OK)=0);
+           ({$IFDEF FPC_DOTTEDUNITS}UnixApi.Base{$ELSE}BaseUnix{$ENDIF}.FpAccess(AFilename,{$IFDEF FPC_DOTTEDUNITS}UnixApi.Base{$ELSE}BaseUnix{$ENDIF}.X_OK)=0);
 end;
 end;
 
 
 function GetEnvironmentVariableCountPJ: Integer;
 function GetEnvironmentVariableCountPJ: Integer;

+ 4 - 4
packages/pastojs/src/pas2jsfileutilswin.inc

@@ -247,7 +247,7 @@ begin
   begin
   begin
     res := GetCurrentDirectoryW(0, nil);
     res := GetCurrentDirectoryW(0, nil);
     SetLength(SavedDir{%H-}, res);
     SetLength(SavedDir{%H-}, res);
-    res:=Windows.GetCurrentDirectoryW(res, @SavedDir[1]);
+    res:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetCurrentDirectoryW(res, @SavedDir[1]);
     SetLength(SavedDir,res);
     SetLength(SavedDir,res);
 
 
     D := WideChar(64 + DriveNr) + ':';
     D := WideChar(64 + DriveNr) + ':';
@@ -392,7 +392,7 @@ begin
   {$else}
   {$else}
   res:=GetCurrentDirectoryW(0, nil);
   res:=GetCurrentDirectoryW(0, nil);
   SetLength(w{%H-}, res);
   SetLength(w{%H-}, res);
-  res:=Windows.GetCurrentDirectoryW(res, @w[1]);
+  res:={$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetCurrentDirectoryW(res, @w[1]);
   SetLength(w, res);
   SetLength(w, res);
   Result:=UTF16ToUTF8(w);
   Result:=UTF16ToUTF8(w);
   {$endif}
   {$endif}
@@ -463,7 +463,7 @@ end;
 
 
 function FileGetAttrUTF8(const FileName: String): Longint;
 function FileGetAttrUTF8(const FileName: String): Longint;
 begin
 begin
-  Result:=Integer(Windows.GetFileAttributesW(PWideChar(UTF8Decode(FileName))));
+  Result:=Integer({$IFDEF FPC_DOTTEDUNITS}WinApi.{$ENDIF}Windows.GetFileAttributesW(PWideChar(UTF8Decode(FileName))));
 end;
 end;
 
 
 function FileIsWritable(const AFilename: string): boolean;
 function FileIsWritable(const AFilename: string): boolean;
@@ -512,7 +512,7 @@ end;
 
 
 function GetEnvironmentVariablePJ(const EnvVar: string): String;
 function GetEnvironmentVariablePJ(const EnvVar: string): String;
 begin
 begin
-  Result:=UTF16ToUTF8(SysUtils.GetEnvironmentVariable(UTF8ToUTF16(EnvVar)));
+  Result:=UTF16ToUTF8({$IFDEF FPC_DOTTEDUNITS}System.{$ENDIF}SysUtils.GetEnvironmentVariable(UTF8ToUTF16(EnvVar)));
 end;
 end;
 
 
 // AConsole - If false, it is the general system encoding,
 // AConsole - If false, it is the general system encoding,

+ 8 - 0
packages/pastojs/src/pas2jsfs.pp

@@ -19,16 +19,24 @@
     interacts with the filesystem.
     interacts with the filesystem.
     See Pas2JSFileCache for an actual implementation.
     See Pas2JSFileCache for an actual implementation.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2JSFS;
 unit Pas2JSFS;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 {$I pas2js_defines.inc}
 {$I pas2js_defines.inc}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  // No NdsApi.Filesystem-dependent units here !
+  System.Classes, System.SysUtils, Pascal.Scanner, FpJson.Data;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   // No filesystem-dependent units here !
   // No filesystem-dependent units here !
   Classes, SysUtils, PScanner, fpjson;
   Classes, SysUtils, PScanner, fpjson;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 const // Messages
 const // Messages
   nUsingPath = 104; sUsingPath = 'Using %s: "%s"';
   nUsingPath = 104; sUsingPath = 'Using %s: "%s"';

+ 12 - 0
packages/pastojs/src/pas2jsfscompiler.pp

@@ -16,12 +16,23 @@
   Abstract:
   Abstract:
     FileSystem aware compiler descendent. No support for PCU.
     FileSystem aware compiler descendent. No support for PCU.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2JSFSCompiler;
 unit Pas2JSFSCompiler;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.SysUtils,
+  Pascal.UseAnalyzer,
+  Pas2Js.SrcMap,
+  Pas2Js.Files.Cache, Pas2Js.Compiler.Base,
+  Pas2Js.Files.Fs,
+  Pas2Js.Files.Utils;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   SysUtils,
   SysUtils,
   PasUseAnalyzer,
   PasUseAnalyzer,
@@ -29,6 +40,7 @@ uses
   Pas2jsFileCache, Pas2jsCompiler,
   Pas2jsFileCache, Pas2jsCompiler,
   Pas2JSFS,
   Pas2JSFS,
   Pas2jsFileUtils;
   Pas2jsFileUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
 
 

+ 7 - 0
packages/pastojs/src/pas2jshtmlresources.pp

@@ -1,11 +1,18 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit pas2jshtmlresources;
 unit pas2jshtmlresources;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes, System.SysUtils, Pas2Js.Resources, Pas2Js.Files.Fs;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes, SysUtils, pas2jsResources, pas2jsFS;
   Classes, SysUtils, pas2jsResources, pas2jsFS;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
 
 

+ 7 - 0
packages/pastojs/src/pas2jsjsresources.pp

@@ -1,11 +1,18 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit pas2jsjsresources;
 unit pas2jsjsresources;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes, System.SysUtils, Pas2Js.Resources, Pas2Js.Files.Fs;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes, SysUtils, pas2jsResources, pas2jsFS;
   Classes, SysUtils, pas2jsResources, pas2jsFS;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
 
 

+ 9 - 0
packages/pastojs/src/pas2jslibcompiler.pp

@@ -13,7 +13,9 @@
 
 
  **********************************************************************
  **********************************************************************
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit pas2jslibcompiler;
 unit pas2jslibcompiler;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
@@ -23,10 +25,17 @@ unit pas2jslibcompiler;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.SysUtils, System.Classes, System.Math,
+  Pas2Js.SrcMap, Pas2Js.Files.Cache, Pas2Js.Compiler.Base, Pas2Js.Compiler.Pcu,
+  Pas2Js.Compiler.Config, Pas2Js.Compiler.PostProcess;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   SysUtils, Classes, Math,
   SysUtils, Classes, Math,
   FPPJsSrcMap, Pas2jsFileCache, Pas2JSCompiler, Pas2jsPCUCompiler,
   FPPJsSrcMap, Pas2jsFileCache, Pas2JSCompiler, Pas2jsPCUCompiler,
   Pas2JSCompilerCfg, Pas2JSCompilerPP;
   Pas2JSCompilerCfg, Pas2JSCompilerPP;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 { ---------------------------------------------------------------------
 { ---------------------------------------------------------------------
   Compiler descendant, usable in library
   Compiler descendant, usable in library

+ 19 - 0
packages/pastojs/src/pas2jslogger.pp

@@ -18,7 +18,9 @@
     Filtering messages by number and type.
     Filtering messages by number and type.
     Registering messages with number, pattern and type (error, warning, note, etc).
     Registering messages with number, pattern and type (error, warning, note, etc).
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2jsLogger;
 unit Pas2jsLogger;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 {$WARN 6018 off : Unreachable code}
 {$WARN 6018 off : Unreachable code}
@@ -26,6 +28,22 @@ unit Pas2jsLogger;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  {$IFDEF Pas2JS}
+  JS,
+  {$IFDEF NodeJS}
+  Node.FS,
+  {$ENDIF}
+  {$ENDIF}
+  Pas2Js.Utils,
+  {$IFDEF HASFILESYSTEM}
+  Pas2Js.Files.Utils,
+  {$ENDIF}
+  System.Types, System.Classes, System.SysUtils,
+  Pascal.Tree, Pascal.Scanner,
+  Js.Tree, Js.Base, Js.Writer, FpJson.Data;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   {$IFDEF Pas2JS}
   {$IFDEF Pas2JS}
   JS,
   JS,
@@ -40,6 +58,7 @@ uses
   Types, Classes, SysUtils,
   Types, Classes, SysUtils,
   PasTree, PScanner,
   PasTree, PScanner,
   jstree, jsbase, jswriter, fpjson;
   jstree, jsbase, jswriter, fpjson;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 const
 const
   ExitCodeErrorInternal = 1; // internal error
   ExitCodeErrorInternal = 1; // internal error

+ 12 - 0
packages/pastojs/src/pas2jspcucompiler.pp

@@ -16,7 +16,9 @@
   Abstract:
   Abstract:
     FileSystem aware compiler descendent with support for PCU files.
     FileSystem aware compiler descendent with support for PCU files.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2JSPCUCompiler;
 unit Pas2JSPCUCompiler;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
@@ -28,6 +30,15 @@ unit Pas2JSPCUCompiler;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.SysUtils, System.Classes,
+  Js.Tree,
+  Pascal.Tree, Pascal.Scanner, Pascal.ResolveEval,
+  Pas2Js.Compiler.Transpiler,
+  Pas2Js.Compiler.Base, Pas2Js.Files.Fs, Pas2Js.Compiler.Files, Pas2Js.Filer,
+  Pas2Js.Logger, Pas2Js.Files.Utils, Pas2Js.SrcMap;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   SysUtils, Classes,
   SysUtils, Classes,
   jstree,
   jstree,
@@ -35,6 +46,7 @@ uses
   FPPas2Js,
   FPPas2Js,
   Pas2jsCompiler, Pas2JSFS, Pas2JSFSCompiler, Pas2JsFiler,
   Pas2jsCompiler, Pas2JSFS, Pas2JSFSCompiler, Pas2JsFiler,
   Pas2jsLogger, Pas2jsFileUtils, FPPJsSrcMap;
   Pas2jsLogger, Pas2jsFileUtils, FPPJsSrcMap;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
 
 

+ 8 - 0
packages/pastojs/src/pas2jspparser.pp

@@ -16,7 +16,9 @@
   Abstract:
   Abstract:
     Extends the FCL Pascal parser for the language subset of pas2js.
     Extends the FCL Pascal parser for the language subset of pas2js.
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2jsPParser;
 unit Pas2jsPParser;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
@@ -24,9 +26,15 @@ unit Pas2jsPParser;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes, System.SysUtils, Pascal.Parser, Pascal.Scanner, Pascal.Tree, Pascal.Resolver, Pas2Js.Compiler.Transpiler,
+  Pas2Js.Logger;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes, SysUtils, PParser, PScanner, PasTree, PasResolver, fppas2js,
   Classes, SysUtils, PParser, PScanner, PasTree, PasResolver, fppas2js,
   Pas2jsLogger;
   Pas2jsLogger;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 const // Messages
 const // Messages
   nFinalizationNotSupported = 3001;
   nFinalizationNotSupported = 3001;

+ 13 - 0
packages/pastojs/src/pas2jsresources.pp

@@ -1,9 +1,21 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit pas2jsresources;
 unit pas2jsresources;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes, System.SysUtils,
+  {$IFDEF pas2js}
+  web,
+  {$ELSE}
+  System.Hash.Base64,
+  {$ENDIF}
+  Pas2Js.Files.Fs, Js.Tree;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes, SysUtils,
   Classes, SysUtils,
   {$IFDEF pas2js}
   {$IFDEF pas2js}
@@ -12,6 +24,7 @@ uses
   base64,
   base64,
   {$ENDIF}
   {$ENDIF}
   pas2jsfs, jsTree;
   pas2jsfs, jsTree;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
   TResourceScopeMode = (rmProgram,rmUnit);
   TResourceScopeMode = (rmProgram,rmUnit);

+ 7 - 0
packages/pastojs/src/pas2jsresstrfile.pp

@@ -1,11 +1,18 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit pas2jsresstrfile;
 unit pas2jsresstrfile;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.SysUtils, FpJson.Data;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   SysUtils, fpJSON;
   SysUtils, fpJSON;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 Type
 Type
 
 

+ 9 - 0
packages/pastojs/src/pas2jsuseanalyzer.pp

@@ -21,17 +21,26 @@ Works:
 - TPascalDescendantOfExt.Create marks class method NewInstance
 - TPascalDescendantOfExt.Create marks class method NewInstance
 
 
 }
 }
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2jsUseAnalyzer;
 unit Pas2jsUseAnalyzer;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 {$mode objfpc}{$H+}
 {$mode objfpc}{$H+}
 {$inline on}
 {$inline on}
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes,
+  Pascal.UseAnalyzer, Pascal.Tree, Pascal.Resolver,
+  Pas2Js.Compiler.Transpiler;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes,
   Classes,
   PasUseAnalyzer, PasTree, PasResolver,
   PasUseAnalyzer, PasTree, PasResolver,
   FPPas2Js;
   FPPas2Js;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 type
 type
 
 

+ 12 - 1
packages/pastojs/src/pas2jsutils.pp

@@ -1,4 +1,6 @@
+{$IFNDEF FPC_DOTTEDUNITS}
 unit Pas2JSUtils;
 unit Pas2JSUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 {
 {
     This file is part of the Free Component Library (FCL)
     This file is part of the Free Component Library (FCL)
     Copyright (c) 2018  Mattias Gaertner  [email protected]
     Copyright (c) 2018  Mattias Gaertner  [email protected]
@@ -22,8 +24,13 @@ unit Pas2JSUtils;
 
 
 interface
 interface
 
 
+{$IFDEF FPC_DOTTEDUNITS}
+uses
+  System.Classes, System.SysUtils;
+{$ELSE FPC_DOTTEDUNITS}
 uses
 uses
   Classes, SysUtils;
   Classes, SysUtils;
+{$ENDIF FPC_DOTTEDUNITS}
 
 
 function ChompPathDelim(const Path: string): string;
 function ChompPathDelim(const Path: string): string;
 function GetNextDelimitedItem(const List: string; Delimiter: Char;
 function GetNextDelimitedItem(const List: string; Delimiter: Char;
@@ -70,7 +77,11 @@ procedure SplitCmdLineParams(const Params: string; ParamList: TStrings;
 implementation
 implementation
 
 
 {$IFDEF Windows}
 {$IFDEF Windows}
+{$IFDEF FPC_DOTTEDUNITS}
+uses WinApi.Windows;
+{$ELSE FPC_DOTTEDUNITS}
 uses Windows;
 uses Windows;
+{$ENDIF FPC_DOTTEDUNITS}
 {$ENDIF}
 {$ENDIF}
 
 
 Var
 Var
@@ -332,7 +343,7 @@ begin
   {$IFDEF Windows}
   {$IFDEF Windows}
   gNonUTF8System:=true;
   gNonUTF8System:=true;
   {$ELSE}
   {$ELSE}
-  gNonUTF8System:=SysUtils.CompareText(DefaultTextEncoding,'UTF8')<>0;
+  gNonUTF8System:={$IFDEF FPC_DOTTEDUNITS}System.{$ENDIF}SysUtils.CompareText(DefaultTextEncoding,'UTF8')<>0;
   {$ENDIF}
   {$ENDIF}
   {$ENDIF}
   {$ENDIF}
 end;
 end;