summaryrefslogtreecommitdiff
path: root/Cython/Compiler/ModuleNode.py
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2015-06-06 14:21:20 +0200
committerStefan Behnel <stefan_ml@behnel.de>2015-06-06 14:21:20 +0200
commit96aafb0820285b1904fdc36d11ea75bf12c1c77d (patch)
treed362d3a3a36dd17ecc4e122a6ba35a7d066afa43 /Cython/Compiler/ModuleNode.py
parent736d715f4c26f477b3a1349c533340bf67f0d2fd (diff)
downloadcython-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.py15
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)