summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/compilers/compilers.py2
-rw-r--r--mesonbuild/compilers/fortran.py25
-rw-r--r--mesonbuild/compilers/mixins/clike.py35
-rw-r--r--mesonbuild/dependencies/ui.py1
-rw-r--r--mesonbuild/interpreter/compiler.py3
5 files changed, 31 insertions, 35 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index ad793ffaf..4e807b0db 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -554,7 +554,7 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
raise EnvironmentException('%s does not support get_define ' % self.get_id())
def compute_int(self, expression: str, low: T.Optional[int], high: T.Optional[int],
- guess: T.Optional[int], prefix: str, env: 'Environment', *,
+ guess: T.Optional[int], prefix: str, *,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]],
dependencies: T.Optional[T.List['Dependency']]) -> int:
raise EnvironmentException('%s does not support compute_int ' % self.get_id())
diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py
index 6b5b30176..af76c78a7 100644
--- a/mesonbuild/compilers/fortran.py
+++ b/mesonbuild/compilers/fortran.py
@@ -124,7 +124,7 @@ class FortranCompiler(CLikeCompiler, Compiler):
return opts
- def _compile_int(self, expression: str, prefix: str, env: 'Environment',
+ def _compile_int(self, expression: str, prefix: str,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]],
dependencies: T.Optional[T.List['Dependency']]) -> bool:
# Use a trick for emulating a static assert
@@ -133,11 +133,10 @@ class FortranCompiler(CLikeCompiler, Compiler):
{prefix}
real(merge(kind(1.),-1,({expression}))), parameter :: fail = 1.
end program test'''
- return self.compiles(t, extra_args=extra_args,
- dependencies=dependencies)[0]
+ return self.compiles(t, extra_args=extra_args, dependencies=dependencies)[0]
def cross_compute_int(self, expression: str, low: T.Optional[int], high: T.Optional[int],
- guess: T.Optional[int], prefix: str, env: 'Environment',
+ guess: T.Optional[int], prefix: str,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]] = None,
dependencies: T.Optional[T.List['Dependency']] = None) -> int:
# This only difference between this implementation and that of CLikeCompiler
@@ -145,16 +144,16 @@ class FortranCompiler(CLikeCompiler, Compiler):
# Try user's guess first
if isinstance(guess, int):
- if self._compile_int(f'{expression} == {guess}', prefix, env, extra_args, dependencies):
+ if self._compile_int(f'{expression} == {guess}', prefix, extra_args, dependencies):
return guess
# If no bounds are given, compute them in the limit of int32
maxint = 0x7fffffff
minint = -0x80000000
if not isinstance(low, int) or not isinstance(high, int):
- if self._compile_int(f'{expression} >= 0', prefix, env, extra_args, dependencies):
+ if self._compile_int(f'{expression} >= 0', prefix, extra_args, dependencies):
low = cur = 0
- while self._compile_int(f'{expression} > {cur}', prefix, env, extra_args, dependencies):
+ while self._compile_int(f'{expression} > {cur}', prefix, extra_args, dependencies):
low = cur + 1
if low > maxint:
raise mesonlib.EnvironmentException('Cross-compile check overflowed')
@@ -162,7 +161,7 @@ class FortranCompiler(CLikeCompiler, Compiler):
high = cur
else:
high = cur = -1
- while self._compile_int(f'{expression} < {cur}', prefix, env, extra_args, dependencies):
+ while self._compile_int(f'{expression} < {cur}', prefix, extra_args, dependencies):
high = cur - 1
if high < minint:
raise mesonlib.EnvironmentException('Cross-compile check overflowed')
@@ -173,13 +172,13 @@ class FortranCompiler(CLikeCompiler, Compiler):
if high < low:
raise mesonlib.EnvironmentException('high limit smaller than low limit')
condition = f'{expression} <= {high} .and. {expression} >= {low}'
- if not self._compile_int(condition, prefix, env, extra_args, dependencies):
+ if not self._compile_int(condition, prefix, extra_args, dependencies):
raise mesonlib.EnvironmentException('Value out of given range')
# Binary search
while low != high:
cur = low + int((high - low) / 2)
- if self._compile_int(f'{expression} <= {cur}', prefix, env, extra_args, dependencies):
+ if self._compile_int(f'{expression} <= {cur}', prefix, extra_args, dependencies):
high = cur
else:
low = cur + 1
@@ -187,13 +186,13 @@ class FortranCompiler(CLikeCompiler, Compiler):
return low
def compute_int(self, expression: str, low: T.Optional[int], high: T.Optional[int],
- guess: T.Optional[int], prefix: str, env: 'Environment', *,
+ guess: T.Optional[int], prefix: str, *,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]],
dependencies: T.Optional[T.List['Dependency']] = None) -> int:
if extra_args is None:
extra_args = []
if self.is_cross:
- return self.cross_compute_int(expression, low, high, guess, prefix, env, extra_args, dependencies)
+ return self.cross_compute_int(expression, low, high, guess, prefix, extra_args, dependencies)
t = f'''program test
{prefix}
print '(i0)', {expression}
@@ -220,7 +219,7 @@ class FortranCompiler(CLikeCompiler, Compiler):
if not self.compiles(t, extra_args=extra_args,
dependencies=dependencies)[0]:
return -1
- return self.cross_compute_int('c_sizeof(x)', None, None, None, prefix + '\nuse iso_c_binding\n' + typename + ' :: x', self.environment, extra_args, dependencies)
+ return self.cross_compute_int('c_sizeof(x)', None, None, None, prefix + '\nuse iso_c_binding\n' + typename + ' :: x', extra_args, dependencies)
def sizeof(self, typename: str, prefix: str, *,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]] = None,
diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py
index ea69f50c3..0d7578bdd 100644
--- a/mesonbuild/compilers/mixins/clike.py
+++ b/mesonbuild/compilers/mixins/clike.py
@@ -441,35 +441,34 @@ class CLikeCompiler(Compiler):
args = cargs + extra_args + largs
return args
- def _compile_int(self, expression: str, prefix: str, env: 'Environment',
+ def _compile_int(self, expression: str, prefix: str,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]],
dependencies: T.Optional[T.List['Dependency']]) -> bool:
t = f'''{prefix}
#include <stddef.h>
int main(void) {{ static int a[1-2*!({expression})]; a[0]=0; return 0; }}'''
- return self.compiles(t, extra_args=extra_args,
- dependencies=dependencies)[0]
+ return self.compiles(t, extra_args=extra_args, dependencies=dependencies)[0]
def cross_compute_int(self, expression: str, low: T.Optional[int], high: T.Optional[int],
- guess: T.Optional[int], prefix: str, env: 'Environment',
+ guess: T.Optional[int], prefix: str,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]] = None,
dependencies: T.Optional[T.List['Dependency']] = None) -> int:
# Try user's guess first
if isinstance(guess, int):
- if self._compile_int(f'{expression} == {guess}', prefix, env, extra_args, dependencies):
+ if self._compile_int(f'{expression} == {guess}', prefix, extra_args, dependencies):
return guess
# Try to expand the expression and evaluate it on the build machines compiler
- if self.language in env.coredata.compilers.build:
+ if self.language in self.environment.coredata.compilers.build:
try:
- expanded, _ = self.get_define(expression, prefix, env, extra_args, dependencies, False)
+ expanded, _ = self.get_define(expression, prefix, self.environment, extra_args, dependencies, False)
evaluate_expanded = f'''
#include <stdio.h>
#include <stdint.h>
int main(void) {{ int expression = {expanded}; printf("%d", expression); return 0; }}'''
- run = env.coredata.compilers.build[self.language].run(evaluate_expanded)
+ run = self.environment.coredata.compilers.build[self.language].run(evaluate_expanded)
if run and run.compiled and run.returncode == 0:
- if self._compile_int(f'{expression} == {run.stdout}', prefix, env, extra_args, dependencies):
+ if self._compile_int(f'{expression} == {run.stdout}', prefix, extra_args, dependencies):
return int(run.stdout)
except mesonlib.EnvironmentException:
pass
@@ -478,9 +477,9 @@ class CLikeCompiler(Compiler):
maxint = 0x7fffffff
minint = -0x80000000
if not isinstance(low, int) or not isinstance(high, int):
- if self._compile_int(f'{expression} >= 0', prefix, env, extra_args, dependencies):
+ if self._compile_int(f'{expression} >= 0', prefix, extra_args, dependencies):
low = cur = 0
- while self._compile_int(f'{expression} > {cur}', prefix, env, extra_args, dependencies):
+ while self._compile_int(f'{expression} > {cur}', prefix, extra_args, dependencies):
low = cur + 1
if low > maxint:
raise mesonlib.EnvironmentException('Cross-compile check overflowed')
@@ -488,7 +487,7 @@ class CLikeCompiler(Compiler):
high = cur
else:
high = cur = -1
- while self._compile_int(f'{expression} < {cur}', prefix, env, extra_args, dependencies):
+ while self._compile_int(f'{expression} < {cur}', prefix, extra_args, dependencies):
high = cur - 1
if high < minint:
raise mesonlib.EnvironmentException('Cross-compile check overflowed')
@@ -499,13 +498,13 @@ class CLikeCompiler(Compiler):
if high < low:
raise mesonlib.EnvironmentException('high limit smaller than low limit')
condition = f'{expression} <= {high} && {expression} >= {low}'
- if not self._compile_int(condition, prefix, env, extra_args, dependencies):
+ if not self._compile_int(condition, prefix, extra_args, dependencies):
raise mesonlib.EnvironmentException('Value out of given range')
# Binary search
while low != high:
cur = low + int((high - low) / 2)
- if self._compile_int(f'{expression} <= {cur}', prefix, env, extra_args, dependencies):
+ if self._compile_int(f'{expression} <= {cur}', prefix, extra_args, dependencies):
high = cur
else:
low = cur + 1
@@ -513,13 +512,13 @@ class CLikeCompiler(Compiler):
return low
def compute_int(self, expression: str, low: T.Optional[int], high: T.Optional[int],
- guess: T.Optional[int], prefix: str, env: 'Environment', *,
+ guess: T.Optional[int], prefix: str, *,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]],
dependencies: T.Optional[T.List['Dependency']] = None) -> int:
if extra_args is None:
extra_args = []
if self.is_cross:
- return self.cross_compute_int(expression, low, high, guess, prefix, env, extra_args, dependencies)
+ return self.cross_compute_int(expression, low, high, guess, prefix, extra_args, dependencies)
t = f'''{prefix}
#include<stddef.h>
#include<stdio.h>
@@ -549,7 +548,7 @@ class CLikeCompiler(Compiler):
if not self.compiles(t, extra_args=extra_args,
dependencies=dependencies)[0]:
return -1
- return self.cross_compute_int(f'sizeof({typename})', None, None, None, prefix, self.environment, extra_args, dependencies)
+ return self.cross_compute_int(f'sizeof({typename})', None, None, None, prefix, extra_args, dependencies)
def sizeof(self, typename: str, prefix: str, *,
extra_args: T.Union[None, T.List[str], T.Callable[[CompileCheckMode], T.List[str]]] = None,
@@ -595,7 +594,7 @@ class CLikeCompiler(Compiler):
char c;
{typename} target;
}};'''
- return self.cross_compute_int('offsetof(struct tmp, target)', None, None, None, t, self.environment, extra_args, dependencies)
+ return self.cross_compute_int('offsetof(struct tmp, target)', None, None, None, t, extra_args, dependencies)
def alignment(self, typename: str, prefix: str, *,
extra_args: T.Optional[T.List[str]] = None,
diff --git a/mesonbuild/dependencies/ui.py b/mesonbuild/dependencies/ui.py
index 5e5434d69..f000b58dd 100644
--- a/mesonbuild/dependencies/ui.py
+++ b/mesonbuild/dependencies/ui.py
@@ -229,7 +229,6 @@ class VulkanDependencySystem(SystemDependency):
components = [str(self.clib_compiler.compute_int(f'VK_VERSION_{c}(VK_HEADER_VERSION_COMPLETE)',
low=0, high=None, guess=e,
prefix='#include <vulkan/vulkan.h>',
- env=environment,
extra_args=self.compile_args,
dependencies=None))
# list containing vulkan version components and their expected value
diff --git a/mesonbuild/interpreter/compiler.py b/mesonbuild/interpreter/compiler.py
index e22b02a94..ad53ab581 100644
--- a/mesonbuild/interpreter/compiler.py
+++ b/mesonbuild/interpreter/compiler.py
@@ -434,8 +434,7 @@ class CompilerHolder(ObjectHolder['Compiler']):
deps, msg = self._determine_dependencies(kwargs['dependencies'], compile_only=self.compiler.is_cross)
res = self.compiler.compute_int(expression, kwargs['low'], kwargs['high'],
kwargs['guess'], kwargs['prefix'],
- self.environment, extra_args=extra_args,
- dependencies=deps)
+ extra_args=extra_args, dependencies=deps)
mlog.log('Computing int of', mlog.bold(expression, True), msg, res)
return res