make_bindings.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import optparse
  2. import sys
  3. import os
  4. import string
  5. import types
  6. import c_tools
  7. import doxymlparser
  8. import sip_tools
  9. import swig_tools
  10. from common import *
  11. if __name__ == "__main__":
  12. option_dict = {
  13. "output_dir" : ("output", "Directory to output bindings to"),
  14. "sip" : (True, "Produce SIP bindings"),
  15. "swig" : (True, "Produce SWIG bindings."),
  16. "c" : (True, "Produce C wrappers."),
  17. }
  18. parser = optparse.OptionParser(usage="usage: %prog <doxyml files to parse>\n" , version="%prog 1.0")
  19. for opt in option_dict:
  20. default = option_dict[opt][0]
  21. action = "store"
  22. if type(default) == types.BooleanType:
  23. action = "store_true"
  24. parser.add_option("--" + opt, default=default, action=action, dest=opt, help=option_dict[opt][1])
  25. options, arguments = parser.parse_args()
  26. if len(arguments) < 1:
  27. parser.print_usage()
  28. sys.exit(1)
  29. doxyparse = doxymlparser.DoxyMLParser()
  30. for arg in arguments:
  31. doxyparse.parse(arg)
  32. if options.sip:
  33. builder = sip_tools.SIPBuilder(doxyparse, options.output_dir)
  34. builder.make_bindings()
  35. if options.swig:
  36. builder = swig_tools.SWIGBuilder(doxyparse, options.output_dir)
  37. builder.make_bindings()
  38. if options.c:
  39. builder = c_tools.CBuilder(doxyparse, options.output_dir)
  40. builder.make_bindings()