gen_all.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import os, argparse, gen_nim, gen_zig, gen_odin, gen_rust, gen_d, gen_jai, gen_c3, shutil
  2. parser = argparse.ArgumentParser()
  3. parser.add_argument("--zig-tiger-style", action="store_true", help="Enable zig tiger style mode.")
  4. args = parser.parse_args()
  5. tasks = [
  6. [ '../sokol_log.h', 'slog_', [] ],
  7. [ '../sokol_gfx.h', 'sg_', [] ],
  8. [ '../sokol_app.h', 'sapp_', [] ],
  9. [ '../sokol_glue.h', 'sglue_', ['sg_'] ],
  10. [ '../sokol_time.h', 'stm_', [] ],
  11. [ '../sokol_audio.h', 'saudio_', [] ],
  12. [ '../util/sokol_gl.h', 'sgl_', ['sg_'] ],
  13. [ '../util/sokol_debugtext.h', 'sdtx_', ['sg_'] ],
  14. [ '../util/sokol_shape.h', 'sshape_', ['sg_'] ],
  15. ]
  16. # Jai
  17. gen_jai.prepare()
  18. for task in tasks:
  19. [c_header_path, main_prefix, dep_prefixes] = task
  20. gen_jai.gen(c_header_path, main_prefix, dep_prefixes)
  21. # Odin
  22. gen_odin.prepare()
  23. for task in tasks:
  24. [c_header_path, main_prefix, dep_prefixes] = task
  25. gen_odin.gen(c_header_path, main_prefix, dep_prefixes)
  26. # Nim
  27. gen_nim.prepare()
  28. for task in tasks:
  29. [c_header_path, main_prefix, dep_prefixes] = task
  30. gen_nim.gen(c_header_path, main_prefix, dep_prefixes)
  31. # Zig
  32. zig_tasks = [
  33. *tasks,
  34. [ '../sokol_fetch.h', 'sfetch_', [] ],
  35. [ '../util/sokol_imgui.h', 'simgui_', ['sg_', 'sapp_'] ],
  36. ]
  37. gen_zig.prepare()
  38. for task in zig_tasks:
  39. [c_header_path, main_prefix, dep_prefixes] = task
  40. gen_zig.gen(c_header_path, main_prefix, dep_prefixes, {"tiger-style": args.zig_tiger_style})
  41. # D
  42. d_tasks = [
  43. *tasks,
  44. [ '../sokol_args.h', 'sargs_', [] ],
  45. [ '../sokol_fetch.h', 'sfetch_', [] ],
  46. [ '../util/sokol_memtrack.h', 'smemtrack_', [] ],
  47. [ '../util/sokol_imgui.h', 'simgui_', ['sg_', 'sapp_'] ],
  48. ]
  49. # check if nuklear.h is available and copy it
  50. if os.path.exists('../tests/ext/nuklear.h'):
  51. d_tasks.append([ '../util/sokol_nuklear.h', 'snk_', ['sg_', 'sapp_'] ])
  52. if os.path.exists('sokol-d'):
  53. shutil.copy('../tests/ext/nuklear.h', 'sokol-d/src/sokol/c/nuklear.h')
  54. gen_d.prepare()
  55. for task in d_tasks:
  56. [c_header_path, main_prefix, dep_prefixes] = task
  57. gen_d.gen(c_header_path, main_prefix, dep_prefixes)
  58. # drop nuklear.h if copied (after generated D files)
  59. if os.path.exists('sokol-d/src/sokol/c/nuklear.h'):
  60. os.remove('sokol-d/src/sokol/c/nuklear.h')
  61. # Rust
  62. gen_rust.prepare()
  63. for task in tasks:
  64. [c_header_path, main_prefix, dep_prefixes] = task
  65. gen_rust.gen(c_header_path, main_prefix, dep_prefixes)
  66. # C3
  67. gen_c3.prepare()
  68. for task in tasks:
  69. [c_header_path, main_prefix, dep_prefixes] = task
  70. gen_c3.gen(c_header_path, main_prefix, dep_prefixes)