t_wasm.pas 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  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. Result := true;
  33. //Result:=inherited MakeSharedLibrary;
  34. end;
  35. { texportlibwasm }
  36. procedure texportlibwasm.preparelib(const s: string);
  37. begin
  38. //nothing to happen. wasm files are modules
  39. end;
  40. procedure texportlibwasm.exportprocedure(hp: texported_item);
  41. var
  42. nm : TSymStr;
  43. begin
  44. nm := tprocdef(tprocsym(hp.sym).ProcdefList[0]).mangledname;
  45. current_asmdata.asmlists[al_exports].Concat(tai_impexp.create(hp.name^, nm, ie_Func));
  46. end;
  47. procedure texportlibwasm.exportvar(hp: texported_item);
  48. begin
  49. //inherited exportvar(hp);
  50. end;
  51. procedure texportlibwasm.generatelib;
  52. begin
  53. //inherited generatelib;
  54. end;
  55. initialization
  56. RegisterTarget(system_wasm_info);
  57. RegisterExport(system_wasm_wasm32, texportlibwasm);
  58. RegisterLinker(ld_wasm, tlinkerwasm);
  59. end.