Commit 046270e7 authored by Stefan Behnel's avatar Stefan Behnel

support building Cython itself with the refnanny enabled

parent 55ad7f70
...@@ -84,7 +84,7 @@ else: ...@@ -84,7 +84,7 @@ else:
else: else:
scripts = ["cython.py"] scripts = ["cython.py"]
def compile_cython_modules(profile=False, compile_more=False): def compile_cython_modules(profile=False, compile_more=False, cython_with_refnanny=False):
source_root = os.path.abspath(os.path.dirname(__file__)) source_root = os.path.abspath(os.path.dirname(__file__))
compiled_modules = ["Cython.Plex.Scanners", compiled_modules = ["Cython.Plex.Scanners",
"Cython.Plex.Actions", "Cython.Plex.Actions",
...@@ -101,6 +101,10 @@ def compile_cython_modules(profile=False, compile_more=False): ...@@ -101,6 +101,10 @@ def compile_cython_modules(profile=False, compile_more=False):
"Cython.Compiler.Optimize", "Cython.Compiler.Optimize",
]) ])
defines = []
if cython_with_refnanny:
defines.append(('CYTHON_REFNANNY', '1'))
extensions = [] extensions = []
if sys.version_info[0] >= 3: if sys.version_info[0] >= 3:
from Cython.Distutils import build_ext as build_ext_orig from Cython.Distutils import build_ext as build_ext_orig
...@@ -113,8 +117,13 @@ def compile_cython_modules(profile=False, compile_more=False): ...@@ -113,8 +117,13 @@ def compile_cython_modules(profile=False, compile_more=False):
dep_files = [] dep_files = []
if os.path.exists(source_file + '.pxd'): if os.path.exists(source_file + '.pxd'):
dep_files.append(source_file + '.pxd') dep_files.append(source_file + '.pxd')
if '.refnanny' in module:
defines_for_module = []
else:
defines_for_module = defines
extensions.append( extensions.append(
Extension(module, sources = [pyx_source_file], Extension(module, sources = [pyx_source_file],
define_macros = defines_for_module,
depends = dep_files) depends = dep_files)
) )
...@@ -189,8 +198,13 @@ def compile_cython_modules(profile=False, compile_more=False): ...@@ -189,8 +198,13 @@ def compile_cython_modules(profile=False, compile_more=False):
if filename_encoding is None: if filename_encoding is None:
filename_encoding = sys.getdefaultencoding() filename_encoding = sys.getdefaultencoding()
c_source_file = c_source_file.encode(filename_encoding) c_source_file = c_source_file.encode(filename_encoding)
if '.refnanny' in module:
defines_for_module = []
else:
defines_for_module = defines
extensions.append( extensions.append(
Extension(module, sources = [c_source_file]) Extension(module, sources = [c_source_file],
define_macros = defines_for_module)
) )
else: else:
print("Compilation failed") print("Compilation failed")
...@@ -218,10 +232,16 @@ try: ...@@ -218,10 +232,16 @@ try:
except ValueError: except ValueError:
cython_compile_more = False cython_compile_more = False
try:
sys.argv.remove("--cython-with-refnanny")
cython_with_refnanny = True
except ValueError:
cython_with_refnanny = False
try: try:
sys.argv.remove("--no-cython-compile") sys.argv.remove("--no-cython-compile")
except ValueError: except ValueError:
compile_cython_modules(cython_profile, cython_compile_more) compile_cython_modules(cython_profile, cython_compile_more, cython_with_refnanny)
setup_args.update(setuptools_extra_args) setup_args.update(setuptools_extra_args)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment