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

Reply via email to