Hey, guys. I did this a long time ago, but it patches cleanly against the
cython-devel tip (at least yesterday's tip).
There was some discussion of what the default should be for the #line/#file
directives Robert added. This is a hopefully non-contentious addition to
support pushing that decision to higher levels of the build system.
All this patch does is add pyrex_line_directives to support that. It's
an analogue of the extra attributes .pyrex_include_dirs going with -I,
or .pyrex_cplus going with the --cplus command option, etc.
This allows you to add .pyrex_line_directives to Extension() objects in
your setup.py. The appropriate command option is then added to the
invocations of cython for those extensions, as it is for the -I/--cplus/..
options.
--------------------------------------------------------------------------
diff -r dd29215de4a0 Cython/Distutils/build_ext.py
--- a/Cython/Distutils/build_ext.py Mon Jun 07 11:06:45 2010 -0700
+++ b/Cython/Distutils/build_ext.py Mon Jun 07 16:45:43 2010 -0400
@@ -36,6 +36,8 @@
"generate C++ source files"),
('pyrex-create-listing', None,
"write errors to a listing file"),
+ ('pyrex-line-directives', None,
+ "emit source line directives"),
('pyrex-include-dirs=', None,
"path to the Cython include files" + sep_by),
('pyrex-c-in-temp', None,
@@ -45,13 +47,14 @@
])
boolean_options.extend([
- 'pyrex-cplus', 'pyrex-create-listing', 'pyrex-c-in-temp'
+ 'pyrex-cplus', 'pyrex-create-listing', 'pyrex-line-directives',
'pyrex-c-in-temp'
])
def initialize_options(self):
_build_ext.build_ext.initialize_options(self)
self.pyrex_cplus = 0
self.pyrex_create_listing = 0
+ self.pyrex_line_directives = 0
self.pyrex_include_dirs = None
self.pyrex_c_in_temp = 0
self.pyrex_gen_pxi = 0
@@ -114,6 +117,8 @@
create_listing = self.pyrex_create_listing or \
getattr(extension, 'pyrex_create_listing', 0)
+ line_directives = self.pyrex_line_directives or \
+ getattr(extension, 'pyrex_line_directives', 0)
cplus = self.pyrex_cplus or getattr(extension, 'pyrex_cplus', 0) or \
(extension.language and extension.language.lower() == 'c++')
pyrex_gen_pxi = self.pyrex_gen_pxi or getattr(extension,
'pyrex_gen_pxi', 0)
@@ -186,6 +191,7 @@
include_path = includes,
output_file = target,
cplus = cplus,
+ emit_linenums = line_directives,
generate_pxi = pyrex_gen_pxi)
result = cython_compile(source, options=options,
full_module_name=module_name)
diff -r dd29215de4a0 Cython/Distutils/extension.py
--- a/Cython/Distutils/extension.py Mon Jun 07 11:06:45 2010 -0700
+++ b/Cython/Distutils/extension.py Mon Jun 07 16:45:43 2010 -0400
@@ -21,6 +21,8 @@
Unix form for portability)
pyrex_create_listing_file : boolean
write pyrex error messages to a listing (.lis) file.
+ pyrex_line_directivess : boolean
+ emit pyx line numbers for debugging/profiling
pyrex_cplus : boolean
use the C++ compiler for compiling and linking.
pyrex_c_in_temp : boolean
@@ -70,6 +72,7 @@
self.pyrex_include_dirs = pyrex_include_dirs or []
self.pyrex_create_listing = pyrex_create_listing
+ self.pyrex_line_directives = pyrex_line_directives
self.pyrex_cplus = pyrex_cplus
self.pyrex_c_in_temp = pyrex_c_in_temp
self.pyrex_gen_pxi = pyrex_gen_pxi
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev