From: Rémi Bernon <rbernon(a)codeweavers.com> --- tools/winegcc/winegcc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c index c3618f16c21..2f611940030 100644 --- a/tools/winegcc/winegcc.c +++ b/tools/winegcc/winegcc.c @@ -1612,7 +1612,7 @@ int main(int argc, char **argv) int i, c, next_is_arg = 0; int raw_compiler_arg, raw_linker_arg, raw_winebuild_arg; struct strarray args = empty_strarray; - const char* option_arg; + const char* option_arg, *subsystem_version; char* str; init_signals( exit_on_signal ); @@ -1621,7 +1621,8 @@ int main(int argc, char **argv) includedir = get_includedir( bindir ); target = init_argv0_target( argv[0] ); path_dirs = strarray_frompath( getenv( "PATH" )); - subsystem = "console"; + subsystem_version = target.cpu == CPU_i386 || target.cpu == CPU_x86_64 ? "6.0" : "6.2"; + subsystem = strmake( "console:%s", subsystem_version ); /* setup tmp file removal at exit */ atexit(clean_temp_files); @@ -1767,12 +1768,12 @@ int main(int argc, char **argv) } else if (strcmp("-mwindows", args.str[i]) == 0) { - subsystem = "windows"; + subsystem = strmake( "windows:%s", subsystem_version ); raw_compiler_arg = 0; } else if (strcmp("-mconsole", args.str[i]) == 0) { - subsystem = "console"; + subsystem = strmake( "console:%s", subsystem_version ); raw_compiler_arg = 0; } else if (strcmp("-municode", args.str[i]) == 0) @@ -1903,6 +1904,8 @@ int main(int argc, char **argv) if (!strcmp(Wl.str[j], "--subsystem") && j < Wl.count - 1) { subsystem = xstrdup( Wl.str[++j] ); + if (!strcmp( subsystem, "windows" ) || !strcmp( subsystem, "console" )) + subsystem = strmake( "%s:%s", subsystem, subsystem_version ); continue; } if (!strcmp(Wl.str[j], "--entry") && j < Wl.count - 1) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9027