aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/cython.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2021-04-27 10:18:21 -0700
committerDylan Baker <dylan@pnwbakers.com>2021-06-07 09:15:13 -0700
commit79e50caa7f86595cdee27efc343d7eca74ae075d (patch)
treefa93e2f6fedbd6ebcec7421faa4ef02bb92cc7ab /mesonbuild/compilers/cython.py
parentb6eb5c231ce8b15df7a6bbc028374d5fd5a3ad5f (diff)
downloadmeson-79e50caa7f86595cdee27efc343d7eca74ae075d.zip
meson-79e50caa7f86595cdee27efc343d7eca74ae075d.tar.gz
meson-79e50caa7f86595cdee27efc343d7eca74ae075d.tar.bz2
compilers: Add a cython Compiler
Diffstat (limited to 'mesonbuild/compilers/cython.py')
-rw-r--r--mesonbuild/compilers/cython.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/mesonbuild/compilers/cython.py b/mesonbuild/compilers/cython.py
new file mode 100644
index 0000000..9266b01
--- /dev/null
+++ b/mesonbuild/compilers/cython.py
@@ -0,0 +1,60 @@
+# SPDX-License-Identifier: Apache-2.0
+# Copyright © 2021 Intel Corporation
+
+"""Abstraction for Cython language compilers."""
+
+import typing as T
+
+from ..mesonlib import EnvironmentException
+from .compilers import Compiler
+
+if T.TYPE_CHECKING:
+ from ..environment import Environment
+
+
+class CythonCompiler(Compiler):
+
+ """Cython Compiler."""
+
+ language = 'cython'
+ id = 'cython'
+
+ def needs_static_linker(self) -> bool:
+ # We transpile into C, so we don't need any linker
+ return False
+
+ def get_always_args(self) -> T.List[str]:
+ return ['--fast-fail']
+
+ def get_werror_args(self) -> T.List[str]:
+ return ['-Werror']
+
+ def get_output_args(self, outputname: str) -> T.List[str]:
+ return ['-o', outputname]
+
+ def get_optimization_args(self, optimization_level: str) -> T.List[str]:
+ # Cython doesn't have optimization levels itself, the underlying
+ # compiler might though
+ return []
+
+ def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
+ code = 'print("hello world")'
+ with self.cached_compile(code, environment.coredata) as p:
+ if p.returncode != 0:
+ raise EnvironmentException(f'Cython compiler {self.id!r} cannot compile programs')
+
+ def get_buildtype_args(self, buildtype: str) -> T.List[str]:
+ # Cython doesn't implement this, but Meson requires an implementation
+ return []
+
+ def get_pic_args(self) -> T.List[str]:
+ # We can lie here, it's fine
+ return []
+
+ def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str],
+ build_dir: str) -> T.List[str]:
+ new: T.List[str] = []
+ for i in parameter_list:
+ new.append(i)
+
+ return new