t_wasm.pas 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. unit t_wasm;
  2. {$i fpcdefs.inc}
  3. interface
  4. uses
  5. systems,
  6. globtype,
  7. import, export, aasmdata, aasmcpu,
  8. fmodule, ogbase,
  9. symsym, symdef,
  10. link,
  11. i_wasm, tgcpu;
  12. type
  13. { texportlibwasm }
  14. texportlibwasm=class(texportlib)
  15. procedure preparelib(const s : string);override;
  16. procedure exportprocedure(hp : texported_item);override;
  17. procedure exportvar(hp : texported_item);override;
  18. procedure generatelib;override;
  19. end;
  20. { timportlibwasm }
  21. timportlibwasm = class(timportlib)
  22. procedure generatelib;override;
  23. end;
  24. { tlinkerjvm }
  25. tlinkerwasm=class(texternallinker)
  26. constructor Create;override;
  27. //function MakeExecutable:boolean;override;
  28. function MakeSharedLibrary:boolean;override;
  29. end;
  30. implementation
  31. { timportlibwasm }
  32. procedure timportlibwasm.generatelib;
  33. begin
  34. end;
  35. { tlinkerwasm }
  36. constructor tlinkerwasm.Create;
  37. begin
  38. inherited Create;
  39. end;
  40. function tlinkerwasm.MakeSharedLibrary: boolean;
  41. begin
  42. Result := true;
  43. //Result:=inherited MakeSharedLibrary;
  44. end;
  45. { texportlibwasm }
  46. procedure texportlibwasm.preparelib(const s: string);
  47. begin
  48. //nothing to happen. wasm files are modules
  49. end;
  50. procedure texportlibwasm.exportprocedure(hp: texported_item);
  51. var
  52. nm : TSymStr;
  53. begin
  54. nm := tprocdef(tprocsym(hp.sym).ProcdefList[0]).mangledname;
  55. current_asmdata.asmlists[al_exports].Concat(tai_impexp.create(hp.name^, nm, ie_Func));
  56. end;
  57. procedure texportlibwasm.exportvar(hp: texported_item);
  58. begin
  59. //inherited exportvar(hp);
  60. end;
  61. procedure texportlibwasm.generatelib;
  62. begin
  63. //inherited generatelib;
  64. end;
  65. initialization
  66. RegisterTarget(system_wasm_info);
  67. RegisterImport(system_wasm_wasm32, timportlibwasm);
  68. RegisterExport(system_wasm_wasm32, texportlibwasm);
  69. RegisterLinker(ld_wasm, tlinkerwasm);
  70. end.