aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/compilers
diff options
context:
space:
mode:
authorLaurin-Luis Lehning <65224843+e820@users.noreply.github.com>2020-12-14 13:34:40 +0100
committerDylan Baker <dylan@pnwbakers.com>2020-12-14 11:23:53 -0800
commit2fb4d1f7512a4ec125883fd65115ab33a5b06b6f (patch)
treedbb0a7b85b5227b17959aa618a5654b755d947f3 /mesonbuild/compilers
parent9f1ba4025260e620c8e49c3825ddfd51c1c4c4b6 (diff)
downloadmeson-2fb4d1f7512a4ec125883fd65115ab33a5b06b6f.zip
meson-2fb4d1f7512a4ec125883fd65115ab33a5b06b6f.tar.gz
meson-2fb4d1f7512a4ec125883fd65115ab33a5b06b6f.tar.bz2
Make win_subsystem a linker property
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r--mesonbuild/compilers/compilers.py9
-rw-r--r--mesonbuild/compilers/mixins/clang.py6
-rw-r--r--mesonbuild/compilers/mixins/gnu.py14
-rw-r--r--mesonbuild/compilers/mixins/visualstudio.py3
4 files changed, 4 insertions, 28 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 2acd429..ec255a8 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -874,11 +874,10 @@ class Compiler(metaclass=abc.ABCMeta):
return []
def get_win_subsystem_args(self, value: str) -> T.List[str]:
- # This returns an empty array rather than throws to simplify the code.
- # Otherwise we would have to check whenever calling this function whether
- # the target is for Windows. There are also many cases where this is
- # a meaningless choice, such as with Jave or C#.
- return []
+ # 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(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 ab2d066..4f2a930 100644
--- a/mesonbuild/compilers/mixins/clang.py
+++ b/mesonbuild/compilers/mixins/clang.py
@@ -109,12 +109,6 @@ class ClangCompiler(GnuLikeCompiler):
# Shouldn't work, but it'll be checked explicitly in the OpenMP dependency.
return []
- def get_win_subsystem_args(self, value: str) -> T.List[str]:
- if self.info.is_windows() and not self.info.is_cygwin() and isinstance(self.linker, ClangClDynamicLinker):
- return [f'-Wl,/subsystem:{value}']
-
- return super().get_win_subsystem_args(value)
-
@classmethod
def use_linker_args(cls, linker: str) -> T.List[str]:
# Clang additionally can use a linker specified as a path, which GCC
diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py
index 4024cbe..bb41a8a 100644
--- a/mesonbuild/compilers/mixins/gnu.py
+++ b/mesonbuild/compilers/mixins/gnu.py
@@ -219,20 +219,6 @@ class GnuLikeCompiler(Compiler, metaclass=abc.ABCMeta):
return ['-mwindows' if value else '-mconsole']
return []
- def get_win_subsystem_args(self, value: str) -> T.List[str]:
- args = []
- if self.info.is_windows() or self.info.is_cygwin():
- if 'windows' in value:
- args = ['-Wl,--subsystem,windows']
- elif 'console' in value:
- args = ['-Wl,--subsystem,console']
- else:
- raise mesonlib.MesonException('Only "windows" and "console" are supported for win_subsystem with MinGW, not "{}".'.format(value))
- if ',' in value:
- args[-1] = args[-1] + ':' + value.split(',')[1]
- return args
-
-
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):
if i[:2] == '-I' or i[:2] == '-L':
diff --git a/mesonbuild/compilers/mixins/visualstudio.py b/mesonbuild/compilers/mixins/visualstudio.py
index 3e8b8e3..6e9a4d7 100644
--- a/mesonbuild/compilers/mixins/visualstudio.py
+++ b/mesonbuild/compilers/mixins/visualstudio.py
@@ -205,9 +205,6 @@ class VisualStudioLikeCompiler(Compiler, metaclass=abc.ABCMeta):
else:
return ['/SUBSYSTEM:CONSOLE']
- def get_win_subsystem_args(self, value: str) -> T.List[str]:
- return ['/SUBSYSTEM:' + value.upper()]
-
def get_pic_args(self) -> T.List[str]:
return [] # PIC is handled by the loader on Windows