Alexandre Julliard : winegcc: Also return Windows link flags in get_link_args().
Alexandre Julliard
julliard at winehq.org
Mon Mar 11 16:29:52 CDT 2019
Module: wine
Branch: master
Commit: 44839493ae6a99d0e3aa0b2c22a83e1061daff04
URL: https://source.winehq.org/git/wine.git/?a=commit;h=44839493ae6a99d0e3aa0b2c22a83e1061daff04
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sat Mar 9 20:43:43 2019 +0100
winegcc: Also return Windows link flags in get_link_args().
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
tools/winegcc/winegcc.c | 63 ++++++++++++++++++++++++-------------------------
1 file changed, 31 insertions(+), 32 deletions(-)
diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index 5eafe54..b58c39a 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -425,6 +425,36 @@ static strarray *get_link_args( struct options *opts, const char *output_name )
strarray_add( flags, strmake( "-Wl,-soname,%s.so", output_name ));
break;
+ case PLATFORM_WINDOWS:
+ case PLATFORM_CYGWIN:
+ if (opts->shared)
+ {
+ strarray_add( flags, "-shared" );
+ strarray_add( flags, "-Wl,--kill-at" );
+ }
+ else strarray_add( flags, opts->gui_app ? "-mwindows" : "-mconsole" );
+
+ if (opts->unicode_app) strarray_add( flags, "-municode" );
+ if (opts->nodefaultlibs) strarray_add( flags, "-nodefaultlibs" );
+ if (opts->nostartfiles) strarray_add( flags, "-nostartfiles" );
+
+ if (opts->subsystem)
+ {
+ strarray_add( flags, strmake("-Wl,--subsystem,%s", opts->subsystem ));
+ if (!strcmp( opts->subsystem, "native" ))
+ {
+ const char *entry = opts->target_cpu == CPU_x86 ? "_DriverEntry at 8" : "DriverEntry";
+ strarray_add( flags, strmake( "-Wl,--entry,%s", entry ));
+ }
+ }
+
+ if (opts->image_base) strarray_add( flags, strmake("-Wl,--image-base,%s", opts->image_base ));
+
+ if (opts->large_address_aware && opts->target_cpu == CPU_x86)
+ strarray_add( flags, "-Wl,--large-address-aware" );
+
+ return flags;
+
default:
if (opts->image_base)
{
@@ -906,7 +936,6 @@ static void build(struct options* opts)
/* mark the files with their appropriate type */
spec_file = lang = 0;
files = strarray_alloc();
- link_args = strarray_alloc();
for ( j = 0; j < opts->files->size; j++ )
{
const char* file = opts->files->base[j];
@@ -961,7 +990,7 @@ static void build(struct options* opts)
if (opts->win16_app)
error( "Building 16-bit code is not supported for Windows\n" );
- strarray_addall(link_args, get_translator(opts));
+ link_args = get_link_args( opts, output_name );
if (opts->shared)
{
@@ -979,42 +1008,12 @@ static void build(struct options* opts)
spawn(opts->prefix, spec_args, 0);
strarray_free(spec_args);
- strarray_add(link_args, "-shared");
- if (verbose) strarray_add(link_args, "-v");
- strarray_add(link_args, "-Wl,--kill-at");
strarray_add(link_args, spec_def_name);
}
- else
- {
- strarray_add(link_args, opts->gui_app ? "-mwindows" : "-mconsole");
- }
-
- if (opts->unicode_app) strarray_add(link_args, "-municode");
- if (opts->nodefaultlibs) strarray_add(link_args, "-nodefaultlibs");
- if (opts->nostartfiles) strarray_add(link_args, "-nostartfiles" );
-
- if (opts->subsystem)
- {
- strarray_add(link_args, strmake("-Wl,--subsystem,%s", opts->subsystem));
- if (!strcmp( opts->subsystem, "native" ))
- {
- const char *entry = opts->target_cpu == CPU_x86 ? "_DriverEntry at 8" : "DriverEntry";
- strarray_add(link_args, strmake( "-Wl,--entry,%s", entry ));
- }
- }
-
- for ( j = 0 ; j < opts->linker_args->size ; j++ )
- strarray_add(link_args, opts->linker_args->base[j]);
strarray_add(link_args, "-o");
strarray_add(link_args, output_file);
- if (opts->image_base)
- strarray_add(link_args, strmake("-Wl,--image-base,%s", opts->image_base));
-
- if (opts->large_address_aware && opts->target_cpu == CPU_x86)
- strarray_add( link_args, "-Wl,--large-address-aware" );
-
for ( j = 0; j < lib_dirs->size; j++ )
strarray_add(link_args, strmake("-L%s", lib_dirs->base[j]));
More information about the wine-cvs
mailing list