diff --git a/tools/winebuild/res32.c b/tools/winebuild/res32.c
index d459a5fad881fa210787715064325ec7e37cfdf3..c59fa1909a9ff2677a66ffbe7a964993ab6989f9 100644
--- a/tools/winebuild/res32.c
+++ b/tools/winebuild/res32.c
@@ -623,6 +623,7 @@ void output_res_o_file( DLLSPEC *spec )
 {
     unsigned int i;
     char *res_file = NULL;
+    const char *format;
     int fd;
     struct strarray *args;
 
@@ -681,7 +682,21 @@ void output_res_o_file( DLLSPEC *spec )
     free( output_buffer );
 
     args = find_tool( "windres", NULL );
+    switch (target_cpu)
+    {
+        case CPU_x86:
+            format = "pe-i386";
+            break;
+        case CPU_x86_64:
+            format = "pe-x86-64";
+            break;
+        default:
+            format = NULL;
+            break;
+    }
     strarray_add( args, "-i", res_file, "-o", output_file_name, NULL );
+    if (format)
+        strarray_add( args, "-F", format, NULL );
     spawn( args );
     strarray_free( args );