t_wasm.pas 1.5 KB

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