summaryrefslogtreecommitdiff
path: root/mesonbuild/compilers/cs.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2025-10-06 10:21:07 -0700
committerDylan Baker <dylan@pnwbakers.com>2025-10-06 10:22:41 -0700
commita6af0ad50373324ec9fe569e8315b03439491865 (patch)
treeed221189af614ce578190dfb51193e1efcb72b17 /mesonbuild/compilers/cs.py
parent6c5a88632f1d3319124d03eab596d57416ef16c6 (diff)
downloadmeson-a6af0ad50373324ec9fe569e8315b03439491865.tar.gz
Revert "compilers: refactor sanity checking code"
This reverts commit 806289a5d27958a084bc6cba41b7cf9ccee4ecf4.
Diffstat (limited to 'mesonbuild/compilers/cs.py')
-rw-r--r--mesonbuild/compilers/cs.py34
1 files changed, 20 insertions, 14 deletions
diff --git a/mesonbuild/compilers/cs.py b/mesonbuild/compilers/cs.py
index e515c338f..4bbddeb20 100644
--- a/mesonbuild/compilers/cs.py
+++ b/mesonbuild/compilers/cs.py
@@ -3,10 +3,11 @@
from __future__ import annotations
-import os.path
+import os.path, subprocess
import textwrap
import typing as T
+from ..mesonlib import EnvironmentException
from ..linkers import RSPFileSyntax
from .compilers import Compiler
@@ -82,21 +83,26 @@ class CsCompiler(BasicLinkerIsCompilerMixin, Compiler):
def get_pch_name(self, header_name: str) -> str:
return ''
- def _sanity_check_source_code(self) -> str:
- return textwrap.dedent('''
- public class Sanity {
- static public void Main () {
+ def sanity_check(self, work_dir: str, environment: 'Environment') -> None:
+ src = 'sanity.cs'
+ obj = 'sanity.exe'
+ source_name = os.path.join(work_dir, src)
+ with open(source_name, 'w', encoding='utf-8') as ofile:
+ ofile.write(textwrap.dedent('''
+ public class Sanity {
+ static public void Main () {
+ }
}
- }
- ''')
-
- def _sanity_check_compile_args(self, env: Environment, sourcename: str, binname: str) -> T.List[str]:
- return self.exelist + self.get_always_args() + [sourcename] + self.get_output_args(binname)
-
- def _sanity_check_run_with_exe_wrapper(self, env: Environment, command: T.List[str]) -> T.List[str]:
+ '''))
+ pc = subprocess.Popen(self.exelist + self.get_always_args() + [src], cwd=work_dir)
+ pc.wait()
+ if pc.returncode != 0:
+ raise EnvironmentException('C# compiler %s cannot compile programs.' % self.name_string())
if self.runner:
- return [self.runner] + command
- return command
+ cmdlist = [self.runner, obj]
+ else:
+ cmdlist = [os.path.join(work_dir, obj)]
+ self.run_sanity_check(environment, cmdlist, work_dir, use_exe_wrapper_for_cross=False)
def needs_static_linker(self) -> bool:
return False