aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/ninjabackend.py10
-rw-r--r--mesonbuild/compilers/compilers.py8
-rw-r--r--mesonbuild/compilers/mixins/clang.py2
-rw-r--r--mesonbuild/compilers/mixins/gnu.py6
-rw-r--r--mesonbuild/linkers.py37
5 files changed, 26 insertions, 37 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 1ec1af0..e643754 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -2702,11 +2702,13 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485'''))
# If gui_app is significant on this platform, add the appropriate linker arguments.
# Unfortunately this can't be done in get_target_type_link_args, because some misguided
# libraries (such as SDL2) add -mwindows to their link flags.
+ m = self.environment.machines[target.for_machine]
- if target.gui_app is not None:
- commands += linker.get_gui_app_args(self.environment, target.gui_app)
- else:
- commands += linker.get_win_subsystem_args(self.environment, target.win_subsystem)
+ if m.is_windows() or m.is_cygwin():
+ if target.gui_app is not None:
+ commands += linker.get_gui_app_args(target.gui_app)
+ else:
+ commands += linker.get_win_subsystem_args(target.win_subsystem)
return commands
def get_link_whole_args(self, linker, target):
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index abb8af3..0bd2b4c 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -870,15 +870,15 @@ class Compiler(metaclass=abc.ABCMeta):
def gnu_symbol_visibility_args(self, vistype: str) -> T.List[str]:
return []
- def get_gui_app_args(self, env: 'Environment', value: bool) -> T.List[str]:
+ def get_gui_app_args(self, value: bool) -> T.List[str]:
# Only used on Windows
- return self.linker.get_gui_app_args(env, value)
+ return self.linker.get_gui_app_args(value)
- def get_win_subsystem_args(self, env: 'Environment', value: str) -> T.List[str]:
+ def get_win_subsystem_args(self, value: str) -> T.List[str]:
# By default the dynamic linker is going to return an empty
# array in case it either doesn't support Windows subsystems
# or does not target Windows
- return self.linker.get_win_subsystem_args(env, value)
+ return self.linker.get_win_subsystem_args(value)
def has_func_attribute(self, name: str, env: 'Environment') -> T.Tuple[bool, bool]:
raise EnvironmentException(
diff --git a/mesonbuild/compilers/mixins/clang.py b/mesonbuild/compilers/mixins/clang.py
index 4f2a930..2e50577 100644
--- a/mesonbuild/compilers/mixins/clang.py
+++ b/mesonbuild/compilers/mixins/clang.py
@@ -19,7 +19,7 @@ import shutil
import typing as T
from ... import mesonlib
-from ...linkers import AppleDynamicLinker, ClangClDynamicLinker
+from ...linkers import AppleDynamicLinker
from ..compilers import CompileCheckMode
from .gnu import GnuLikeCompiler
diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py
index 74841ff..3d43162 100644
--- a/mesonbuild/compilers/mixins/gnu.py
+++ b/mesonbuild/compilers/mixins/gnu.py
@@ -214,10 +214,8 @@ class GnuLikeCompiler(Compiler, metaclass=abc.ABCMeta):
def get_profile_use_args(self) -> T.List[str]:
return ['-fprofile-use', '-fprofile-correction']
- def get_gui_app_args(self, env: 'Environment', value: bool) -> T.List[str]:
- if self.info.is_windows() or self.info.is_cygwin():
- return ['-mwindows' if value else '-mconsole']
- return []
+ def get_gui_app_args(self, value: bool) -> T.List[str]:
+ return ['-mwindows' if value else '-mconsole']
def compute_parameters_with_absolute_paths(self, parameter_list: T.List[str], build_dir: str) -> T.List[str]:
for idx, i in enumerate(parameter_list):
diff --git a/mesonbuild/linkers.py b/mesonbuild/linkers.py
index eaaf299..269636f 100644
--- a/mesonbuild/linkers.py
+++ b/mesonbuild/linkers.py
@@ -477,11 +477,11 @@ class DynamicLinker(LinkerEnvVarsMixin, metaclass=abc.ABCMeta):
# Only used by the Apple linker
return []
- def get_gui_app_args(self, env: 'Environment', value: bool) -> T.List[str]:
+ def get_gui_app_args(self, value: bool) -> T.List[str]:
# Only used by VisualStudioLikeLinkers
return []
- def get_win_subsystem_args(self, env: 'Environment', value: str) -> T.List[str]:
+ def get_win_subsystem_args(self, value: str) -> T.List[str]:
# Only used if supported by the dynamic linker and
# only when targeting Windows
return []
@@ -752,17 +752,13 @@ class GnuDynamicLinker(GnuLikeDynamicLinkerMixin, PosixDynamicLinkerMixin, Dynam
"""Representation of GNU ld.bfd and ld.gold."""
- def get_win_subsystem_args(self, env: 'Environment', value: str) -> T.List[str]:
- m = env.machines[self.for_machine]
- args = []
-
- if m.is_windows() or m.is_cygwin():
- if 'windows' in value:
- args = ['--subsystem,windows']
- elif 'console' in value:
- args = ['--subsystem,console']
- else:
- raise mesonlib.MesonException(f'Only "windows" and "console" are supported for win_subsystem with MinGW, not "{value}".')
+ def get_win_subsystem_args(self, value: str) -> T.List[str]:
+ if 'windows' in value:
+ args = ['--subsystem,windows']
+ elif 'console' in value:
+ args = ['--subsystem,console']
+ else:
+ raise mesonlib.MesonException(f'Only "windows" and "console" are supported for win_subsystem with MinGW, not "{value}".')
if ',' in value:
args[-1] = args[-1] + ':' + value.split(',')[1]
@@ -806,11 +802,7 @@ class LLVMDynamicLinker(GnuLikeDynamicLinkerMixin, PosixDynamicLinkerMixin, Dyna
return self._apply_prefix('--allow-shlib-undefined')
return []
- def get_win_subsystem_args(self, env: 'Environment', value: str) -> T.List[str]:
- m = env.machines[self.for_machine]
- if not m.is_windows() or m.is_cygwin():
- return []
-
+ def get_win_subsystem_args(self, value: str) -> T.List[str]:
return self._apply_prefix([f'-subsystem:{value}'])
@@ -1154,13 +1146,10 @@ class VisualStudioLikeLinkerMixin:
def get_allow_undefined_args(self) -> T.List[str]:
return []
- def get_gui_app_args(self, env: 'Environment', value: bool) -> T.List[str]:
- if value:
- return self.get_win_subsystem_args(env, "windows")
-
- return self.get_win_subsystem_args(env, "console")
+ def get_gui_app_args(self, value: bool) -> T.List[str]:
+ return self.get_win_subsystem_args("windows" if value else "console")
- def get_win_subsystem_args(self, env: 'Environment', value: str) -> T.List[str]:
+ def get_win_subsystem_args(self, value: str) -> T.List[str]:
return self._apply_prefix([f'/SUBSYSTEM:{value.upper()}'])
def get_soname_args(self, env: 'Environment', prefix: str, shlib_name: str,