arm: Add thumb target and associated fixes

Add arm_thumb=1 to GYP_DEFINES to enable

BUG=29203

Review URL: http://codereview.chromium.org/463027

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33799 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/build/common.gypi b/build/common.gypi
index 8183893..f2e72c97 100644
--- a/build/common.gypi
+++ b/build/common.gypi
@@ -200,6 +200,9 @@
     # Set ARM-v7 compilation flags
     'armv7%': 0,
 
+    # Set Thumb compilation flags.
+    'arm_thumb%': 0,
+
     'conditions': [
       ['OS=="linux"', {
         # This will set gcc_version to XY if you are running gcc X.Y.*.
@@ -710,10 +713,27 @@
             ],
           }],
           ['target_arch=="arm"', {
-            'conditions': [
-              ['armv7==1', {
-                'target_conditions': [
-                  ['_toolset=="target"', {
+            'target_conditions': [
+              ['_toolset=="target"', {
+                'cflags_cc': [
+                  # The codesourcery arm-2009q3 toolchain warns at that the ABI
+                  # has changed whenever it encounters a varargs function. This
+                  # silences those warnings, as they are not helpful and
+                  # clutter legitimate warnings.
+                  '-Wno-abi',
+                ],
+                'conditions': [
+                  ['arm_thumb == 1', {
+                    'cflags': [
+                    '-mthumb',
+                    # TODO(piman): -Wa,-mimplicit-it=thumb is needed for
+                    # inline assembly that uses condition codes but it's
+                    # suboptimal. Better would be to #ifdef __thumb__ at the
+                    # right place and have a separate thumb path.
+                    '-Wa,-mimplicit-it=thumb',
+                    ]
+                  }],
+                  ['armv7==1', {
                     'cflags': [
                       '-march=armv7-a',
                       '-mtune=cortex-a8',