parent
b6eb5c231c
commit
79e50caa7f
1 changed files with 60 additions and 0 deletions
@ -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 |
Loading…
Reference in new issue