winegcc: Use Wine crt when linking builtin EXEs.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2020-01-21 20:03:24 +01:00 committed by Alexandre Julliard
parent bb9fb27bc4
commit c6e6771fab
1 changed files with 10 additions and 4 deletions

View File

@ -384,7 +384,6 @@ static int try_link( const strarray *prefix, const strarray *link_tool, const ch
static strarray *get_link_args( struct options *opts, const char *output_name )
{
int use_wine_crt = opts->wine_builtin && opts->shared;
strarray *link_args = get_translator( opts );
strarray *flags = strarray_alloc();
@ -438,8 +437,8 @@ static strarray *get_link_args( struct options *opts, const char *output_name )
else strarray_add( flags, opts->gui_app ? "-mwindows" : "-mconsole" );
if (opts->unicode_app) strarray_add( flags, "-municode" );
if (opts->nodefaultlibs || use_wine_crt) strarray_add( flags, "-nodefaultlibs" );
if (opts->nostartfiles || use_wine_crt) strarray_add( flags, "-nostartfiles" );
if (opts->nodefaultlibs || opts->wine_builtin) strarray_add( flags, "-nodefaultlibs" );
if (opts->nostartfiles || opts->wine_builtin) strarray_add( flags, "-nostartfiles" );
if (opts->subsystem) strarray_add( flags, strmake("-Wl,--subsystem,%s", opts->subsystem ));
strarray_add( flags, "-Wl,--nxcompat" );
@ -1097,6 +1096,13 @@ static void build(struct options* opts)
{
if (opts->subsystem && !strcmp( opts->subsystem, "native" ))
entry_point = opts->target_cpu == CPU_x86 ? "_DriverEntry@8" : "DriverEntry";
else if(opts->wine_builtin && !opts->shared && !opts->win16_app)
{
if (opts->unicode_app)
entry_point = opts->target_cpu == CPU_x86 ? "_wmainCRTStartup" : "wmainCRTStartup";
else
entry_point = opts->target_cpu == CPU_x86 ? "_mainCRTStartup" : "mainCRTStartup";
}
}
else if (!opts->shared && opts->unicode_app)
entry_point = "__wine_spec_exe_wentry";
@ -1190,7 +1196,7 @@ static void build(struct options* opts)
/* link everything together now */
link_args = get_link_args( opts, output_name );
if ((opts->nodefaultlibs || opts->shared) && is_pe)
if ((opts->nodefaultlibs || opts->wine_builtin) && is_pe)
{
libgcc = find_libgcc(opts->prefix, link_args);
if (!libgcc) libgcc = "-lgcc";