Index: third_party/cython/src/Cython/Compiler/CmdLine.py |
diff --git a/third_party/cython/src/Cython/Compiler/CmdLine.py b/third_party/cython/src/Cython/Compiler/CmdLine.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..dfc2b96e650844def52a30bd472fae4628daff53 |
--- /dev/null |
+++ b/third_party/cython/src/Cython/Compiler/CmdLine.py |
@@ -0,0 +1,184 @@ |
+# |
+# Cython - Command Line Parsing |
+# |
+ |
+import os |
+import sys |
+import Options |
+ |
+usage = """\ |
+Cython (http://cython.org) is a compiler for code written in the |
+Cython language. Cython is based on Pyrex by Greg Ewing. |
+ |
+Usage: cython [options] sourcefile.{pyx,py} ... |
+ |
+Options: |
+ -V, --version Display version number of cython compiler |
+ -l, --create-listing Write error messages to a listing file |
+ -I, --include-dir <directory> Search for include files in named directory |
+ (multiple include directories are allowed). |
+ -o, --output-file <filename> Specify name of generated C file |
+ -t, --timestamps Only compile newer source files |
+ -f, --force Compile all source files (overrides implied -t) |
+ -v, --verbose Be verbose, print file names on multiple compilation |
+ -p, --embed-positions If specified, the positions in Cython files of each |
+ function definition is embedded in its docstring. |
+ --cleanup <level> Release interned objects on python exit, for memory debugging. |
+ Level indicates aggressiveness, default 0 releases nothing. |
+ -w, --working <directory> Sets the working directory for Cython (the directory modules |
+ are searched from) |
+ --gdb Output debug information for cygdb |
+ --gdb-outdir <directory> Specify gdb debug information output directory. Implies --gdb. |
+ |
+ -D, --no-docstrings Strip docstrings from the compiled module. |
+ -a, --annotate Produce a colorized HTML version of the source. |
+ --line-directives Produce #line directives pointing to the .pyx source |
+ --cplus Output a C++ rather than C file. |
+ --embed[=<method_name>] Generate a main() function that embeds the Python interpreter. |
+ -2 Compile based on Python-2 syntax and code semantics. |
+ -3 Compile based on Python-3 syntax and code semantics. |
+ --lenient Change some compile time errors to runtime errors to |
+ improve Python compatibility |
+ --capi-reexport-cincludes Add cincluded headers to any auto-generated header files. |
+ --fast-fail Abort the compilation on the first error |
+ --warning-errors, -Werror Make all warnings into errors |
+ --warning-extra, -Wextra Enable extra warnings |
+ -X, --directive <name>=<value>[,<name=value,...] Overrides a compiler directive |
+""" |
+ |
+#The following experimental options are supported only on MacOSX: |
+# -C, --compile Compile generated .c file to .o file |
+# --link Link .o file to produce extension module (implies -C) |
+# -+, --cplus Use C++ compiler for compiling and linking |
+# Additional .o files to link may be supplied when using -X.""" |
+ |
+def bad_usage(): |
+ sys.stderr.write(usage) |
+ sys.exit(1) |
+ |
+def parse_command_line(args): |
+ |
+ from Cython.Compiler.Main import \ |
+ CompilationOptions, default_options |
+ |
+ def pop_arg(): |
+ if args: |
+ return args.pop(0) |
+ else: |
+ bad_usage() |
+ |
+ def get_param(option): |
+ tail = option[2:] |
+ if tail: |
+ return tail |
+ else: |
+ return pop_arg() |
+ |
+ options = CompilationOptions(default_options) |
+ sources = [] |
+ while args: |
+ if args[0].startswith("-"): |
+ option = pop_arg() |
+ if option in ("-V", "--version"): |
+ options.show_version = 1 |
+ elif option in ("-l", "--create-listing"): |
+ options.use_listing_file = 1 |
+ elif option in ("-+", "--cplus"): |
+ options.cplus = 1 |
+ elif option == "--embed": |
+ Options.embed = "main" |
+ elif option.startswith("--embed="): |
+ Options.embed = option[8:] |
+ elif option.startswith("-I"): |
+ options.include_path.append(get_param(option)) |
+ elif option == "--include-dir": |
+ options.include_path.append(pop_arg()) |
+ elif option in ("-w", "--working"): |
+ options.working_path = pop_arg() |
+ elif option in ("-o", "--output-file"): |
+ options.output_file = pop_arg() |
+ elif option in ("-t", "--timestamps"): |
+ options.timestamps = 1 |
+ elif option in ("-f", "--force"): |
+ options.timestamps = 0 |
+ elif option in ("-v", "--verbose"): |
+ options.verbose += 1 |
+ elif option in ("-p", "--embed-positions"): |
+ Options.embed_pos_in_docstring = 1 |
+ elif option in ("-z", "--pre-import"): |
+ Options.pre_import = pop_arg() |
+ elif option == "--cleanup": |
+ Options.generate_cleanup_code = int(pop_arg()) |
+ elif option in ("-D", "--no-docstrings"): |
+ Options.docstrings = False |
+ elif option in ("-a", "--annotate"): |
+ Options.annotate = True |
+ elif option == "--convert-range": |
+ Options.convert_range = True |
+ elif option == "--line-directives": |
+ options.emit_linenums = True |
+ elif option == "--no-c-in-traceback": |
+ options.c_line_in_traceback = False |
+ elif option == "--gdb": |
+ options.gdb_debug = True |
+ options.output_dir = os.curdir |
+ elif option == "--gdb-outdir": |
+ options.gdb_debug = True |
+ options.output_dir = pop_arg() |
+ elif option == "--lenient": |
+ Options.error_on_unknown_names = False |
+ Options.error_on_uninitialized = False |
+ elif option == '-2': |
+ options.language_level = 2 |
+ elif option == '-3': |
+ options.language_level = 3 |
+ elif option == "--capi-reexport-cincludes": |
+ options.capi_reexport_cincludes = True |
+ elif option == "--fast-fail": |
+ Options.fast_fail = True |
+ elif option in ('-Werror', '--warning-errors'): |
+ Options.warning_errors = True |
+ elif option in ('-Wextra', '--warning-extra'): |
+ options.compiler_directives.update(Options.extra_warnings) |
+ elif option == "--old-style-globals": |
+ Options.old_style_globals = True |
+ elif option == "--directive" or option.startswith('-X'): |
+ if option.startswith('-X') and option[2:].strip(): |
+ x_args = option[2:] |
+ else: |
+ x_args = pop_arg() |
+ try: |
+ options.compiler_directives = Options.parse_directive_list( |
+ x_args, relaxed_bool=True, |
+ current_settings=options.compiler_directives) |
+ except ValueError, e: |
+ sys.stderr.write("Error in compiler directive: %s\n" % e.args[0]) |
+ sys.exit(1) |
+ elif option.startswith('--debug'): |
+ option = option[2:].replace('-', '_') |
+ import DebugFlags |
+ if option in dir(DebugFlags): |
+ setattr(DebugFlags, option, True) |
+ else: |
+ sys.stderr.write("Unknown debug flag: %s\n" % option) |
+ bad_usage() |
+ elif option in ('-h', '--help'): |
+ sys.stdout.write(usage) |
+ sys.exit(0) |
+ else: |
+ sys.stderr.write("Unknown compiler flag: %s\n" % option) |
+ sys.exit(1) |
+ else: |
+ sources.append(pop_arg()) |
+ if options.use_listing_file and len(sources) > 1: |
+ sys.stderr.write( |
+ "cython: Only one source file allowed when using -o\n") |
+ sys.exit(1) |
+ if len(sources) == 0 and not options.show_version: |
+ bad_usage() |
+ if Options.embed and len(sources) > 1: |
+ sys.stderr.write( |
+ "cython: Only one source file allowed when using -embed\n") |
+ sys.exit(1) |
+ return options, sources |
+ |