aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/ninjabackend.py7
-rw-r--r--mesonbuild/backend/vs2010backend.py10
-rw-r--r--mesonbuild/build.py18
-rw-r--r--mesonbuild/compilers/compilers.py4
-rw-r--r--mesonbuild/compilers/mixins/gnu.py3
-rw-r--r--mesonbuild/interpreter/interpreter.py12
-rw-r--r--mesonbuild/linkers/linkers.py13
7 files changed, 23 insertions, 44 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 8776796..3ddc197 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -3277,16 +3277,13 @@ https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47485'''))
def get_target_type_link_args_post_dependencies(self, target, linker):
commands = []
if isinstance(target, build.Executable):
- # If gui_app is significant on this platform, add the appropriate linker arguments.
+ # If win_subsystem 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 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)
+ commands += linker.get_win_subsystem_args(target.win_subsystem)
return commands
def get_link_whole_args(self, linker, target):
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index 340c1a5..0a382be 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -1645,13 +1645,9 @@ class Vs2010Backend(backends.Backend):
conftype = 'Makefile'
elif isinstance(target, build.Executable):
conftype = 'Application'
- if target.gui_app is not None:
- if not target.gui_app:
- subsystem = 'Console'
- else:
- # If someone knows how to set the version properly,
- # please send a patch.
- subsystem = target.win_subsystem.split(',')[0]
+ # If someone knows how to set the version properly,
+ # please send a patch.
+ subsystem = target.win_subsystem.split(',')[0]
elif isinstance(target, build.StaticLibrary):
conftype = 'StaticLibrary'
elif isinstance(target, build.SharedLibrary):
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 025af15..cfb3a54 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -1147,19 +1147,12 @@ class BuildTarget(Target):
(str, bool))
self.install_mode = kwargs.get('install_mode', None)
self.install_tag = stringlistify(kwargs.get('install_tag', [None]))
- if isinstance(self, Executable):
- # This kwarg is deprecated. The value of "none" means that the kwarg
- # was not specified and win_subsystem should be used instead.
- self.gui_app = None
+ if not isinstance(self, Executable):
+ # build_target will always populate these as `None`, which is fine
if kwargs.get('gui_app') is not None:
- if kwargs.get('win_subsystem') is not None:
- raise InvalidArguments('Can specify only gui_app or win_subsystem for a target, not both.')
- self.gui_app = kwargs['gui_app']
- self.win_subsystem = kwargs.get('win_subsystem', 'console')
- elif 'gui_app' in kwargs:
- raise InvalidArguments('Argument gui_app can only be used on executables.')
- elif 'win_subsystem' in kwargs:
- raise InvalidArguments('Argument win_subsystem can only be used on executables.')
+ raise InvalidArguments('Argument gui_app can only be used on executables.')
+ if kwargs.get('win_subsystem') is not None:
+ raise InvalidArguments('Argument win_subsystem can only be used on executables.')
extra_files = extract_as_list(kwargs, 'extra_files')
for i in extra_files:
assert isinstance(i, File)
@@ -1901,6 +1894,7 @@ class Executable(BuildTarget):
kwargs['pie'] = environment.coredata.options[key].value
super().__init__(name, subdir, subproject, for_machine, sources, structured_sources, objects,
environment, compilers, kwargs)
+ self.win_subsystem = kwargs.get('win_subsystem') or 'console'
# Check for export_dynamic
self.export_dynamic = kwargs.get('export_dynamic', False)
if not isinstance(self.export_dynamic, bool):
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index cb8eae5..7a8ae72 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -980,10 +980,6 @@ class Compiler(HoldableObject, metaclass=abc.ABCMeta):
def gnu_symbol_visibility_args(self, vistype: str) -> T.List[str]:
return []
- def get_gui_app_args(self, value: bool) -> T.List[str]:
- # Only used on Windows
- return self.linker.get_gui_app_args(value)
-
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
diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py
index 2b18732..b62435b 100644
--- a/mesonbuild/compilers/mixins/gnu.py
+++ b/mesonbuild/compilers/mixins/gnu.py
@@ -451,9 +451,6 @@ class GnuLikeCompiler(Compiler, metaclass=abc.ABCMeta):
def get_profile_use_args(self) -> T.List[str]:
return ['-fprofile-use']
- 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):
if i[:2] == '-I' or i[:2] == '-L':
diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py
index 125562f..67203bd 100644
--- a/mesonbuild/interpreter/interpreter.py
+++ b/mesonbuild/interpreter/interpreter.py
@@ -3280,6 +3280,18 @@ class Interpreter(InterpreterBase, HoldableObject):
outputs.update(o)
kwargs['include_directories'] = self.extract_incdirs(kwargs)
+
+ if targetclass is build.Executable:
+ if kwargs['gui_app'] is not None:
+ if kwargs['win_subsystem'] is not None:
+ raise InvalidArguments.from_node(
+ 'Executable got both "gui_app", and "win_subsystem" arguments, which are mutually exclusive',
+ node=node)
+ if kwargs['gui_app']:
+ kwargs['win_subsystem'] = 'windows'
+ if kwargs['win_subsystem'] is None:
+ kwargs['win_subsystem'] = 'console'
+
target = targetclass(name, self.subdir, self.subproject, for_machine, srcs, struct, objs,
self.environment, self.compilers[for_machine], kwargs)
diff --git a/mesonbuild/linkers/linkers.py b/mesonbuild/linkers/linkers.py
index 8948347..9176090 100644
--- a/mesonbuild/linkers/linkers.py
+++ b/mesonbuild/linkers/linkers.py
@@ -279,10 +279,6 @@ class DynamicLinker(metaclass=abc.ABCMeta):
# Only used by the Apple linker
return []
- def get_gui_app_args(self, value: bool) -> T.List[str]:
- # Only used by VisualStudioLikeLinkers
- return []
-
def get_win_subsystem_args(self, value: str) -> T.List[str]:
# Only used if supported by the dynamic linker and
# only when targeting Windows
@@ -1318,9 +1314,6 @@ class MSVCDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker):
def get_always_args(self) -> T.List[str]:
return self._apply_prefix(['/nologo', '/release']) + super().get_always_args()
- 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, value: str) -> T.List[str]:
return self._apply_prefix([f'/SUBSYSTEM:{value.upper()}'])
@@ -1347,9 +1340,6 @@ class ClangClDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker):
return super().get_output_args(outputname)
- 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, value: str) -> T.List[str]:
return self._apply_prefix([f'/SUBSYSTEM:{value.upper()}'])
@@ -1370,9 +1360,6 @@ class XilinkDynamicLinker(VisualStudioLikeLinkerMixin, DynamicLinker):
direct: bool = True):
super().__init__(['xilink.exe'], for_machine, '', always_args, version=version)
- 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, value: str) -> T.List[str]:
return self._apply_prefix([f'/SUBSYSTEM:{value.upper()}'])