From 6c807b74721831c06ae6ce76f833c42cf15ab64a Mon Sep 17 00:00:00 2001
From: Alexandre Julliard <julliard@winehq.org>
Date: Wed, 12 Feb 2014 12:57:27 +0100
Subject: [PATCH] winebuild: Add support for -marm and -mthumb target flags.

---
 tools/winebuild/build.h          |  1 +
 tools/winebuild/main.c           | 10 +++++++++-
 tools/winebuild/winebuild.man.in |  3 +++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h
index fa9276402bf..41cec919e8f 100644
--- a/tools/winebuild/build.h
+++ b/tools/winebuild/build.h
@@ -362,5 +362,6 @@ extern struct strarray *cc_command;
 extern struct strarray *ld_command;
 extern struct strarray *nm_command;
 extern char *cpu_option;
+extern int thumb_mode;
 
 #endif  /* __WINE_BUILD_H */
diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c
index a848a0cadae..807cf61a76b 100644
--- a/tools/winebuild/main.c
+++ b/tools/winebuild/main.c
@@ -90,6 +90,12 @@ struct strarray *ld_command = NULL;
 struct strarray *nm_command = NULL;
 char *cpu_option = NULL;
 
+#ifdef __thumb__
+int thumb_mode = 1;
+#else
+int thumb_mode = 0;
+#endif
+
 static int nb_res_files;
 static char **res_files;
 
@@ -396,8 +402,10 @@ static char **parse_options( int argc, char **argv, DLLSPEC *spec )
             if (!strcmp( optarg, "16" )) spec->type = SPEC_WIN16;
             else if (!strcmp( optarg, "32" )) force_pointer_size = 4;
             else if (!strcmp( optarg, "64" )) force_pointer_size = 8;
+            else if (!strcmp( optarg, "arm" )) thumb_mode = 0;
+            else if (!strcmp( optarg, "thumb" )) thumb_mode = 1;
             else if (!strncmp( optarg, "cpu=", 4 )) cpu_option = xstrdup( optarg + 4 );
-            else fatal_error( "Invalid -m option '%s', expected -m16, -m32, -m64 or -mcpu\n", optarg );
+            else fatal_error( "Unknown -m option '%s'\n", optarg );
             break;
         case 'M':
             spec->main_module = xstrdup( optarg );
diff --git a/tools/winebuild/winebuild.man.in b/tools/winebuild/winebuild.man.in
index b0b2784c597..df91cb88377 100644
--- a/tools/winebuild/winebuild.man.in
+++ b/tools/winebuild/winebuild.man.in
@@ -156,6 +156,9 @@ option.
 .B \-m16, -m32, -m64
 Generate respectively 16-bit, 32-bit or 64-bit code.
 .TP
+.BI \-marm,\ \-mthumb,\ \-mcpu= option
+Set code generation options for the assembler.
+.TP
 .BI \-M,\ --main-module= module
 When building a 16-bit dll, set the name of its 32-bit counterpart to
 \fImodule\fR. This is used to enforce that the load order for the
-- 
GitLab