Alexandre Julliard : winegcc: Use winebuild to set the builtin flag.

Alexandre Julliard julliard at winehq.org
Wed Dec 18 15:51:10 CST 2019


Module: wine
Branch: master
Commit: 51ffea5a3940bdc74b44b9303c4574dfb156efc0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=51ffea5a3940bdc74b44b9303c4574dfb156efc0

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Dec 18 21:05:44 2019 +0100

winegcc: Use winebuild to set the builtin flag.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 tools/winegcc/winegcc.c | 34 +++++++++++-----------------------
 1 file changed, 11 insertions(+), 23 deletions(-)

diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index 939c1e5c91..7f32a38788 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -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)




More information about the wine-cvs mailing list