winegcc: Use winebuild to set the builtin flag.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2019-12-18 21:05:44 +01:00
parent 9dc348a071
commit 51ffea5a39
1 changed files with 11 additions and 23 deletions

View File

@ -524,28 +524,6 @@ static int check_platform( struct options *opts, const char *file )
return ret;
}
static void make_wine_builtin( const char *file )
{
static const char wine_magic[32] = "Wine builtin DLL";
int fd;
struct
{
unsigned short e_magic;
unsigned short unused[29];
unsigned int e_lfanew;
} header;
if ((fd = open( file, O_RDWR | O_BINARY )) == -1) error( "Failed to add signature to %s\n", file );
if (read( fd, &header, sizeof(header) ) == sizeof(header) && !memcmp( &header.e_magic, "MZ", 2 ))
{
if (header.e_lfanew < sizeof(header) + sizeof(wine_magic))
error( "Not enough space (%x) for Wine signature\n", header.e_lfanew );
write( fd, wine_magic, sizeof(wine_magic) );
}
close( fd );
}
static const char *get_multiarch_dir( enum target_cpu cpu )
{
switch(cpu)
@ -882,6 +860,16 @@ static strarray *get_winebuild_args(struct options *opts)
return spec_args;
}
static void make_wine_builtin( struct options *opts, const char *file )
{
strarray *args = get_winebuild_args( opts );
strarray_add( args, "--builtin" );
strarray_add( args, file );
spawn( opts->prefix, args, 0 );
strarray_free( args );
}
/* check if there is a static lib associated to a given dll */
static char *find_static_lib( const char *dll )
{
@ -1267,7 +1255,7 @@ static void build(struct options* opts)
spawn(opts->prefix, link_args, 0);
strarray_free (link_args);
if (is_pe && opts->wine_builtin) make_wine_builtin( output_path );
if (is_pe && opts->wine_builtin) make_wine_builtin( opts, output_path );
/* set the base address with prelink if linker support is not present */
if (opts->prelink && !opts->target)