mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-15 06:41:38 +00:00
winegcc: Add support for -Wl,-delayload argument.
Signed-off-by: Jacek Caban <jacek@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0e1720813c
commit
9180dec0b7
|
@ -226,6 +226,7 @@ struct options
|
||||||
strarray* compiler_args;
|
strarray* compiler_args;
|
||||||
strarray* winebuild_args;
|
strarray* winebuild_args;
|
||||||
strarray* files;
|
strarray* files;
|
||||||
|
strarray* delayimports;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef __i386__
|
#ifdef __i386__
|
||||||
|
@ -1164,6 +1165,12 @@ static void build(struct options* opts)
|
||||||
for ( j = 0 ; j < opts->winebuild_args->size ; j++ )
|
for ( j = 0 ; j < opts->winebuild_args->size ; j++ )
|
||||||
strarray_add(spec_args, opts->winebuild_args->base[j]);
|
strarray_add(spec_args, opts->winebuild_args->base[j]);
|
||||||
|
|
||||||
|
if (!is_pe)
|
||||||
|
{
|
||||||
|
for (j = 0; j < opts->delayimports->size; j++)
|
||||||
|
strarray_add(spec_args, strmake("-d%s", opts->delayimports->base[j]));
|
||||||
|
}
|
||||||
|
|
||||||
/* add resource files */
|
/* add resource files */
|
||||||
for ( j = 0; j < files->size; j++ )
|
for ( j = 0; j < files->size; j++ )
|
||||||
if (files->base[j][1] == 'r') strarray_add(spec_args, files->base[j]);
|
if (files->base[j][1] == 'r') strarray_add(spec_args, files->base[j]);
|
||||||
|
@ -1203,6 +1210,12 @@ static void build(struct options* opts)
|
||||||
|
|
||||||
strarray_add(link_args, spec_o_name);
|
strarray_add(link_args, spec_o_name);
|
||||||
|
|
||||||
|
if (is_pe)
|
||||||
|
{
|
||||||
|
for (j = 0; j < opts->delayimports->size; j++)
|
||||||
|
strarray_add(spec_args, strmake("-Wl,-delayload,%s", opts->delayimports->base[j]));
|
||||||
|
}
|
||||||
|
|
||||||
for ( j = 0; j < files->size; j++ )
|
for ( j = 0; j < files->size; j++ )
|
||||||
{
|
{
|
||||||
const char* name = files->base[j] + 2;
|
const char* name = files->base[j] + 2;
|
||||||
|
@ -1423,6 +1436,7 @@ int main(int argc, char **argv)
|
||||||
opts.linker_args = strarray_alloc();
|
opts.linker_args = strarray_alloc();
|
||||||
opts.compiler_args = strarray_alloc();
|
opts.compiler_args = strarray_alloc();
|
||||||
opts.winebuild_args = strarray_alloc();
|
opts.winebuild_args = strarray_alloc();
|
||||||
|
opts.delayimports = strarray_alloc();
|
||||||
opts.pic = 1;
|
opts.pic = 1;
|
||||||
|
|
||||||
/* determine the processor type */
|
/* determine the processor type */
|
||||||
|
@ -1672,6 +1686,11 @@ int main(int argc, char **argv)
|
||||||
opts.subsystem = strdup( Wl->base[++j] );
|
opts.subsystem = strdup( Wl->base[++j] );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(Wl->base[j], "-delayload") && j < Wl->size - 1)
|
||||||
|
{
|
||||||
|
strarray_add( opts.delayimports, Wl->base[++j] );
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!strcmp(Wl->base[j], "-static")) linking = -1;
|
if (!strcmp(Wl->base[j], "-static")) linking = -1;
|
||||||
strarray_add(opts.linker_args, strmake("-Wl,%s",Wl->base[j]));
|
strarray_add(opts.linker_args, strmake("-Wl,%s",Wl->base[j]));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue