Alexandre Julliard : winegcc: Transparently compile resource files for the Windows build.

Alexandre Julliard julliard at winehq.org
Tue Jun 2 08:44:35 CDT 2009


Module: wine
Branch: master
Commit: 9e96918cf7d152e7968cd1408a3d6896b8698b80
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=9e96918cf7d152e7968cd1408a3d6896b8698b80

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Sat May 30 18:33:11 2009 +0200

winegcc: Transparently compile resource files for the Windows build.

---

 tools/winegcc/winegcc.c |   29 +++++++++++++++++++++++++++++
 1 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/tools/winegcc/winegcc.c b/tools/winegcc/winegcc.c
index f64b677..b0853c1 100644
--- a/tools/winegcc/winegcc.c
+++ b/tools/winegcc/winegcc.c
@@ -482,6 +482,21 @@ static strarray *get_winebuild_args(struct options *opts)
     return spec_args;
 }
 
+static const char* compile_resources_to_object(struct options* opts, const strarray *resources,
+                                               const char *res_o_name)
+{
+    strarray *winebuild_args = get_winebuild_args( opts );
+
+    strarray_add( winebuild_args, "--resources" );
+    strarray_add( winebuild_args, "-o" );
+    strarray_add( winebuild_args, res_o_name );
+    strarray_addall( winebuild_args, resources );
+
+    spawn( opts->prefix, winebuild_args, 0 );
+    strarray_free( winebuild_args );
+    return res_o_name;
+}
+
 /* check if there is a static lib associated to a given dll */
 static char *find_static_lib( const char *dll )
 {
@@ -633,6 +648,9 @@ static void build(struct options* opts)
 
     if (opts->target_platform == PLATFORM_WINDOWS)
     {
+        strarray *resources = strarray_alloc();
+        char *res_o_name = NULL;
+
         if (opts->shared)
         {
             /* run winebuild to generate the .def file */
@@ -717,10 +735,21 @@ static void build(struct options* opts)
                 }
                 strarray_add(link_args, name);
                 break;
+            case 'r':
+                if (!res_o_name)
+                {
+                    res_o_name = get_temp_file( output_name, ".res.o" );
+                    strarray_add( link_args, res_o_name );
+                }
+                strarray_add( resources, name );
+                break;
             }
         }
 
+        if (res_o_name) compile_resources_to_object( opts, resources, res_o_name );
+
         spawn(opts->prefix, link_args, 0);
+        strarray_free (resources);
         strarray_free (link_args);
         return;
     }




More information about the wine-cvs mailing list