1
0

gen_box2d.py 810 B

123456789101112131415161718192021222324252627282930
  1. import pcpp
  2. import pycparser
  3. from c_bind import Library, set_vmath_converter, set_enum_converters
  4. from c_bind.meta import Header
  5. import os
  6. path = '../3rd/box2d/include/box2d/box2d.h'
  7. code = pcpp.CmdPreprocessor([None, path, '-o', 'tmp.h', '--line-directive', '-I', 'libc_include', '-I', '../3rd/box2d/include'])
  8. ast = pycparser.parse_file('tmp.h')
  9. os.remove('tmp.h')
  10. header = Header()
  11. header.build(ast)
  12. header.remove_types({'b2Timer', 'b2DebugDraw'})
  13. header.remove_functions({'b2CreateTimer', 'b2Hash', 'b2DefaultDebugDraw'})
  14. lib = Library.from_header('box2d', header)
  15. set_vmath_converter('b2Vec2', 'vec2')
  16. set_vmath_converter('b2Vec3', 'vec3')
  17. set_enum_converters([enum.name for enum in lib.enums])
  18. lib.build(
  19. includes=['box2d/box2d.h'],
  20. glue_dir='../src',
  21. stub_dir='../include/typings'
  22. )