Exemple #1
0
        dest="show_long_errors", help="Display long error messages " \
            "instead of abbreviating error messages.")
    op.add_option('', "--no-macro-warnings", action="store_false", default=True,
        dest="show_macro_warnings", help="Do not print macro warnings.")

    op.set_defaults(**ctypesgencore.options.default_values)
    
    (options, args) = op.parse_args(list(sys.argv[1:]))
    options.headers = args

    # Figure out what names will be defined by imported Python modules
    options.other_known_names = find_names_in_modules(options.modules)
    
    # Required parameters
    if len(args) < 1:
        msgs.error_message('No header files specified', cls='usage')
        sys.exit(1)

    if options.output is None:
        msgs.error_message('No output file specified', cls='usage')
        sys.exit(1)

    if len(options.libraries) == 0:
        msgs.warning_message('No libraries specified', cls='usage')
    
    # Step 1: Parse
    descriptions=ctypesgencore.parser.parse(options.headers,options)
    
    # Step 2: Process
    ctypesgencore.processor.process(descriptions,options)
    
Exemple #2
0
        default=True,
        dest="show_macro_warnings",
        help="Do not print macro warnings.",
    )

    op.set_defaults(**ctypesgencore.options.default_values)

    (options, args) = op.parse_args(list(sys.argv[1:]))
    options.headers = args

    # Figure out what names will be defined by imported Python modules
    options.other_known_names = find_names_in_modules(options.modules)

    # Required parameters
    if len(args) < 1:
        msgs.error_message("No header files specified", cls="usage")
        sys.exit(1)

    if len(options.libraries) == 0:
        msgs.warning_message("No libraries specified", cls="usage")

    # Check output language
    printer = None
    if options.output_language == "python":
        printer = ctypesgencore.printer_python.WrapperPrinter
    elif options.output_language == "json":
        printer = ctypesgencore.printer_json.WrapperPrinter
    else:
        msgs.error_message("No such output language `" + options.output_language + "'", cls="usage")
        sys.exit(1)
Exemple #3
0
                  action="store_false",
                  default=True,
                  dest="show_macro_warnings",
                  help="Do not print macro warnings.")

    op.set_defaults(**ctypesgencore.options.default_values)

    (options, args) = op.parse_args(list(sys.argv[1:]))
    options.headers = args

    # Figure out what names will be defined by imported Python modules
    options.other_known_names = find_names_in_modules(options.modules)

    # Required parameters
    if len(args) < 1:
        msgs.error_message('No header files specified', cls='usage')
        sys.exit(1)

    if options.output is None:
        msgs.error_message('No output file specified', cls='usage')
        sys.exit(1)

    if len(options.libraries) == 0:
        msgs.warning_message('No libraries specified', cls='usage')

    # Check output language
    printer = None
    if options.output_language == "python":
        printer = ctypesgencore.printer.WrapperPrinter
    elif options.output_language == "json":
        printer = ctypesgencore.printer_json.WrapperPrinter
        dest="show_long_errors", help="Display long error messages " \
            "instead of abbreviating error messages.")
    op.add_option('', "--no-macro-warnings", action="store_false", default=True,
        dest="show_macro_warnings", help="Do not print macro warnings.")

    op.set_defaults(**ctypesgencore.options.default_values)

    (options, args) = op.parse_args(list(sys.argv[1:]))
    options.headers = args

    # Figure out what names will be defined by imported Python modules
    options.other_known_names = find_names_in_modules(options.modules)

    # Required parameters
    if len(args) < 1:
        msgs.error_message('No header files specified', cls='usage')
        sys.exit(1)

    if len(options.libraries) == 0:
        msgs.warning_message('No libraries specified', cls='usage')

    # Check output language
    printer = None
    if options.output_language == "python":
        printer = (ctypesgencore.printer_python.WrapperPrinter
                   if hasattr(ctypesgencore, 'printer_python')
                   else ctypesgencore.printer.WrapperPrinter)
    elif options.output_language == "json":
        printer = ctypesgencore.printer_json.WrapperPrinter
    else:
        msgs.error_message("No such output language `" + options.output_language + "'", cls='usage')
Exemple #5
0
 def handle_pp_error(self, message):
     # Called by PreprocessorParser
     error_message("%s: %s" % (self.options.cpp, message), cls="cparser")
Exemple #6
0
 def handle_error(self, message, filename, lineno):
     # Called by CParser
     error_message("%s:%d: %s" % (filename, lineno, message), cls="cparser")
Exemple #7
0
def main(givenargs):
    usage = 'usage: %prog [options] /path/to/header.h ...'
    op = optparse.OptionParser(usage=usage)

    # Parameters
    op.add_option('-o',
                  '--output',
                  dest='output',
                  metavar='FILE',
                  help='write wrapper to FILE [default stdout]')
    op.add_option('-l',
                  '--library',
                  dest='libraries',
                  action='append',
                  default=[],
                  metavar='LIBRARY',
                  help='link to LIBRARY')
    op.add_option(
        '',
        '--include',
        dest='other_headers',
        action='append',
        default=[],
        metavar='HEADER',
        help='include system header HEADER (e.g. stdio.h or stdlib.h)')
    op.add_option('-m',
                  '--module',
                  '--link-module',
                  action='append',
                  dest='modules',
                  metavar='MODULE',
                  default=[],
                  help='use symbols from Python module MODULE')
    op.add_option('-I',
                  '--includedir',
                  dest='include_search_paths',
                  action='append',
                  default=[],
                  metavar='INCLUDEDIR',
                  help='add INCLUDEDIR as a directory to search for headers')
    op.add_option('-W',
                  action="callback",
                  callback=option_callback_W,
                  metavar="l,OPTION",
                  type="str",
                  help="where OPTION is -L, -R, or --rpath")
    op.add_option(
        "-L",
        "-R",
        "--rpath",
        "--libdir",
        action="callback",
        callback=option_callback_libdir,
        metavar="LIBDIR",
        type="str",
        help="Add LIBDIR to the search path (both compile-time and run-time)")
    op.add_option('',
                  "--compile-libdir",
                  action="append",
                  dest="compile_libdirs",
                  metavar="LIBDIR",
                  default=[],
                  help="Add LIBDIR to the compile-time library search path.")
    op.add_option('',
                  "--runtime-libdir",
                  action="append",
                  dest="runtime_libdirs",
                  metavar="LIBDIR",
                  default=[],
                  help="Add LIBDIR to the run-time library search path.")

    # Parser options
    op.add_option('', '--cpp', dest='cpp', default='gcc -E',
        help='The command to invoke the c preprocessor, including any ' \
             'necessary options (default: gcc -E)')
    op.add_option(
        '',
        '--save-preprocessed-headers',
        metavar='FILENAME',
        dest='save_preprocessed_headers',
        default=None,
        help='Save the preprocessed headers to the specified FILENAME')

    # Processor options
    op.add_option(
        '-a',
        '--all-headers',
        action='store_true',
        dest='all_headers',
        default=False,
        help='include symbols from all headers, including system headers')
    op.add_option(
        '',
        '--builtin-symbols',
        action='store_true',
        dest='builtin_symbols',
        default=False,
        help='include symbols automatically generated by the preprocessor')
    op.add_option('',
                  '--no-macros',
                  action='store_false',
                  dest='include_macros',
                  default=True,
                  help="Don't output macros.")
    op.add_option('-i',
                  '--include-symbols',
                  dest='include_symbols',
                  default=None,
                  help='regular expression for symbols to always include')
    op.add_option('-x',
                  '--exclude-symbols',
                  dest='exclude_symbols',
                  default=None,
                  help='regular expression for symbols to exclude')
    op.add_option('',
                  '--no-stddef-types',
                  action='store_true',
                  dest='no_stddef_types',
                  default=False,
                  help='Do not support extra C types from stddef.h')
    op.add_option('',
                  '--no-gnu-types',
                  action='store_true',
                  dest='no_gnu_types',
                  default=False,
                  help='Do not support extra GNU C types')
    op.add_option('',
                  '--no-python-types',
                  action='store_true',
                  dest='no_python_types',
                  default=False,
                  help='Do not support extra C types built in to Python')

    # Printer options
    op.add_option(
        '',
        '--header-template',
        dest='header_template',
        default=None,
        metavar='TEMPLATE',
        help='Use TEMPLATE as the header template in the output file.')
    op.add_option(
        '',
        '--strip-build-path',
        dest='strip_build_path',
        default=None,
        metavar='BUILD_PATH',
        help='Strip build path from header paths in the wrapper file.')
    op.add_option(
        '',
        '--insert-file',
        dest='inserted_files',
        default=[],
        action='append',
        metavar='FILENAME',
        help='Add the contents of FILENAME to the end of the wrapper file.')
    op.add_option('',
                  '--output-language',
                  dest='output_language',
                  metavar='LANGUAGE',
                  default='python',
                  help="Choose output language (`json' or `python' [default])")

    # Error options
    op.add_option('', "--all-errors", action="store_true", default=False,
        dest="show_all_errors", help="Display all warnings and errors even " \
             "if they would not affect output.")
    op.add_option('', "--show-long-errors", action="store_true", default=False,
        dest="show_long_errors", help="Display long error messages " \
            "instead of abbreviating error messages.")
    op.add_option('',
                  "--no-macro-warnings",
                  action="store_false",
                  default=True,
                  dest="show_macro_warnings",
                  help="Do not print macro warnings.")

    op.set_defaults(**ctypesgencore.options.default_values)

    (options, args) = op.parse_args(givenargs)
    options.headers = args

    # Figure out what names will be defined by imported Python modules
    options.other_known_names = find_names_in_modules(options.modules)

    # Required parameters
    if len(args) < 1:
        msgs.error_message('No header files specified', cls='usage')
        sys.exit(1)

    if len(options.libraries) == 0:
        msgs.warning_message('No libraries specified', cls='usage')

    # Check output language
    printer = None
    if options.output_language == "python":
        printer = ctypesgencore.printer_python.WrapperPrinter
    elif options.output_language == "json":
        printer = ctypesgencore.printer_json.WrapperPrinter
    else:
        msgs.error_message("No such output language `" +
                           options.output_language + "'",
                           cls='usage')
        sys.exit(1)

    # Step 1: Parse
    descriptions = ctypesgencore.parser.parse(options.headers, options)

    # Step 2: Process
    ctypesgencore.processor.process(descriptions, options)

    # Step 3: Print
    printer(options.output, options, descriptions)

    msgs.status_message("Wrapping complete.")

    # Correct what may be a common mistake
    if descriptions.all == []:
        if not options.all_headers:
            msgs.warning_message("There wasn't anything of use in the " \
                "specified header file(s). Perhaps you meant to run with " \
                "--all-headers to include objects from included sub-headers? ",
                cls = 'usage')