2 # Cython - Command Line Parsing
10 Cython (http://cython.org) is a compiler for code written in the
11 Cython language. Cython is based on Pyrex by Greg Ewing.
13 Usage: cython [options] sourcefile.{pyx,py} ...
16 -V, --version Display version number of cython compiler
17 -l, --create-listing Write error messages to a listing file
18 -I, --include-dir <directory> Search for include files in named directory
19 (multiple include directories are allowed).
20 -o, --output-file <filename> Specify name of generated C file
21 -t, --timestamps Only compile newer source files
22 -f, --force Compile all source files (overrides implied -t)
23 -v, --verbose Be verbose, print file names on multiple compilation
24 -p, --embed-positions If specified, the positions in Cython files of each
25 function definition is embedded in its docstring.
26 --cleanup <level> Release interned objects on python exit, for memory debugging.
27 Level indicates aggressiveness, default 0 releases nothing.
28 -w, --working <directory> Sets the working directory for Cython (the directory modules
30 --gdb Output debug information for cygdb
31 --gdb-outdir <directory> Specify gdb debug information output directory. Implies --gdb.
33 -D, --no-docstrings Strip docstrings from the compiled module.
34 -a, --annotate Produce a colorized HTML version of the source.
35 --line-directives Produce #line directives pointing to the .pyx source
36 --cplus Output a C++ rather than C file.
37 --embed[=<method_name>] Generate a main() function that embeds the Python interpreter.
38 -2 Compile based on Python-2 syntax and code semantics.
39 -3 Compile based on Python-3 syntax and code semantics.
40 --lenient Change some compile time errors to runtime errors to
41 improve Python compatibility
42 --capi-reexport-cincludes Add cincluded headers to any auto-generated header files.
43 --fast-fail Abort the compilation on the first error
44 --warning-errors, -Werror Make all warnings into errors
45 --warning-extra, -Wextra Enable extra warnings
46 -X, --directive <name>=<value>[,<name=value,...] Overrides a compiler directive
49 #The following experimental options are supported only on MacOSX:
50 # -C, --compile Compile generated .c file to .o file
51 # --link Link .o file to produce extension module (implies -C)
52 # -+, --cplus Use C++ compiler for compiling and linking
53 # Additional .o files to link may be supplied when using -X."""
56 sys
.stderr
.write(usage
)
59 def parse_command_line(args
):
61 from Cython
.Compiler
.Main
import \
62 CompilationOptions
, default_options
70 def get_param(option
):
77 options
= CompilationOptions(default_options
)
80 if args
[0].startswith("-"):
82 if option
in ("-V", "--version"):
83 options
.show_version
= 1
84 elif option
in ("-l", "--create-listing"):
85 options
.use_listing_file
= 1
86 elif option
in ("-+", "--cplus"):
88 elif option
== "--embed":
89 Options
.embed
= "main"
90 elif option
.startswith("--embed="):
91 Options
.embed
= option
[8:]
92 elif option
.startswith("-I"):
93 options
.include_path
.append(get_param(option
))
94 elif option
== "--include-dir":
95 options
.include_path
.append(pop_arg())
96 elif option
in ("-w", "--working"):
97 options
.working_path
= pop_arg()
98 elif option
in ("-o", "--output-file"):
99 options
.output_file
= pop_arg()
100 elif option
in ("-t", "--timestamps"):
101 options
.timestamps
= 1
102 elif option
in ("-f", "--force"):
103 options
.timestamps
= 0
104 elif option
in ("-v", "--verbose"):
106 elif option
in ("-p", "--embed-positions"):
107 Options
.embed_pos_in_docstring
= 1
108 elif option
in ("-z", "--pre-import"):
109 Options
.pre_import
= pop_arg()
110 elif option
== "--cleanup":
111 Options
.generate_cleanup_code
= int(pop_arg())
112 elif option
in ("-D", "--no-docstrings"):
113 Options
.docstrings
= False
114 elif option
in ("-a", "--annotate"):
115 Options
.annotate
= True
116 elif option
== "--convert-range":
117 Options
.convert_range
= True
118 elif option
== "--line-directives":
119 options
.emit_linenums
= True
120 elif option
== "--no-c-in-traceback":
121 options
.c_line_in_traceback
= False
122 elif option
== "--gdb":
123 options
.gdb_debug
= True
124 options
.output_dir
= os
.curdir
125 elif option
== "--gdb-outdir":
126 options
.gdb_debug
= True
127 options
.output_dir
= pop_arg()
128 elif option
== "--lenient":
129 Options
.error_on_unknown_names
= False
130 Options
.error_on_uninitialized
= False
132 options
.language_level
= 2
134 options
.language_level
= 3
135 elif option
== "--capi-reexport-cincludes":
136 options
.capi_reexport_cincludes
= True
137 elif option
== "--fast-fail":
138 Options
.fast_fail
= True
139 elif option
in ('-Werror', '--warning-errors'):
140 Options
.warning_errors
= True
141 elif option
in ('-Wextra', '--warning-extra'):
142 options
.compiler_directives
.update(Options
.extra_warnings
)
143 elif option
== "--old-style-globals":
144 Options
.old_style_globals
= True
145 elif option
== "--directive" or option
.startswith('-X'):
146 if option
.startswith('-X') and option
[2:].strip():
151 options
.compiler_directives
= Options
.parse_directive_list(
152 x_args
, relaxed_bool
=True,
153 current_settings
=options
.compiler_directives
)
154 except ValueError, e
:
155 sys
.stderr
.write("Error in compiler directive: %s\n" % e
.args
[0])
157 elif option
.startswith('--debug'):
158 option
= option
[2:].replace('-', '_')
160 if option
in dir(DebugFlags
):
161 setattr(DebugFlags
, option
, True)
163 sys
.stderr
.write("Unknown debug flag: %s\n" % option
)
165 elif option
in ('-h', '--help'):
166 sys
.stdout
.write(usage
)
169 sys
.stderr
.write("Unknown compiler flag: %s\n" % option
)
172 sources
.append(pop_arg())
173 if options
.use_listing_file
and len(sources
) > 1:
175 "cython: Only one source file allowed when using -o\n")
177 if len(sources
) == 0 and not options
.show_version
:
179 if Options
.embed
and len(sources
) > 1:
181 "cython: Only one source file allowed when using -embed\n")
183 return options
, sources