Index: third_party/cython/src/Tools/site_scons/site_tools/cython.py |
diff --git a/third_party/cython/src/Tools/site_scons/site_tools/cython.py b/third_party/cython/src/Tools/site_scons/site_tools/cython.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..40af7bb8db736e53da292cecffa3dd52876b3af9 |
--- /dev/null |
+++ b/third_party/cython/src/Tools/site_scons/site_tools/cython.py |
@@ -0,0 +1,66 @@ |
+""" |
+Tool to run Cython files (.pyx) into .c and .cpp. |
+ |
+TODO: |
+ - Add support for dynamically selecting in-process Cython |
+ through CYTHONINPROCESS variable. |
+ - Have a CYTHONCPP option which turns on C++ in flags and |
+ changes output extension at the same time |
+ |
+VARIABLES: |
+ - CYTHON - The path to the "cython" command line tool. |
+ - CYTHONFLAGS - Flags to pass to the "cython" command line tool. |
+ |
+AUTHORS: |
+ - David Cournapeau |
+ - Dag Sverre Seljebotn |
+ |
+""" |
+import SCons |
+from SCons.Builder import Builder |
+from SCons.Action import Action |
+ |
+#def cython_action(target, source, env): |
+# print target, source, env |
+# from Cython.Compiler.Main import compile as cython_compile |
+# res = cython_compile(str(source[0])) |
+ |
+cythonAction = Action("$CYTHONCOM") |
+ |
+def create_builder(env): |
+ try: |
+ cython = env['BUILDERS']['Cython'] |
+ except KeyError: |
+ cython = SCons.Builder.Builder( |
+ action = cythonAction, |
+ emitter = {}, |
+ suffix = cython_suffix_emitter, |
+ single_source = 1) |
+ env['BUILDERS']['Cython'] = cython |
+ |
+ return cython |
+ |
+def cython_suffix_emitter(env, source): |
+ return "$CYTHONCFILESUFFIX" |
+ |
+def generate(env): |
+ env["CYTHON"] = "cython" |
+ env["CYTHONCOM"] = "$CYTHON $CYTHONFLAGS -o $TARGET $SOURCE" |
+ env["CYTHONCFILESUFFIX"] = ".c" |
+ |
+ c_file, cxx_file = SCons.Tool.createCFileBuilders(env) |
+ |
+ c_file.suffix['.pyx'] = cython_suffix_emitter |
+ c_file.add_action('.pyx', cythonAction) |
+ |
+ c_file.suffix['.py'] = cython_suffix_emitter |
+ c_file.add_action('.py', cythonAction) |
+ |
+ create_builder(env) |
+ |
+def exists(env): |
+ try: |
+# import Cython |
+ return True |
+ except ImportError: |
+ return False |