diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2015-06-06 14:21:20 +0200 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2015-06-06 14:21:20 +0200 |
commit | 96aafb0820285b1904fdc36d11ea75bf12c1c77d (patch) | |
tree | d362d3a3a36dd17ecc4e122a6ba35a7d066afa43 /Cython/Compiler/ModuleNode.py | |
parent | 736d715f4c26f477b3a1349c533340bf67f0d2fd (diff) | |
download | cython-96aafb0820285b1904fdc36d11ea75bf12c1c77d.tar.gz |
keep C++ code out of C files and vice-versa by splitting module preamble (original patch by Lars Mans)
Diffstat (limited to 'Cython/Compiler/ModuleNode.py')
-rw-r--r-- | Cython/Compiler/ModuleNode.py | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index 30a52a87a..48a33e121 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -562,6 +562,9 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): self.generate_cvariable_declarations(module, modulecode, defined_here) self.generate_cfunction_declarations(module, modulecode, defined_here) + def _put_setup_code(self, code, name): + code.put(UtilityCode.load_as_string(name, "ModuleSetupCode.c")[1]) + def generate_module_preamble(self, env, cimported_modules, metadata, code): code.put_generated_by() if metadata: @@ -583,7 +586,12 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): from .. import __version__ code.putln('#define CYTHON_ABI "%s"' % __version__.replace('.', '_')) - code.put(UtilityCode.load_as_string("CModulePreamble", "ModuleSetupCode.c")[1]) + self._put_setup_code(code, "CModulePreamble") + if env.context.options.cplus: + self._put_setup_code(code, "CppInitCode") + else: + self._put_setup_code(code, "CInitCode") + self._put_setup_code(code, "MathInitCode") code.put(""" #if PY_MAJOR_VERSION >= 3 @@ -603,11 +611,6 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): self.generate_extern_c_macro_definition(code) code.putln("") - code.putln("#if defined(WIN32) || defined(MS_WINDOWS)") - code.putln("#define _USE_MATH_DEFINES") - code.putln("#endif") - code.putln("#include <math.h>") - code.putln("#define %s" % Naming.h_guard_prefix + self.api_name(env)) code.putln("#define %s" % Naming.api_guard_prefix + self.api_name(env)) self.generate_includes(env, cimported_modules, code) |