Improve ARM compatibility
authorMarco Costalba <mcostalba@gmail.com>
Sun, 1 Sep 2013 16:16:55 +0000 (09:16 -0700)
committerMarco Costalba <mcostalba@gmail.com>
Sun, 1 Sep 2013 16:18:37 +0000 (09:18 -0700)
STANDALONE-TOOLCHAIN.html in Android NDK says:

It is recommended to use the -mthumb compiler flag to force the generation
of 16-bit Thumb-1 instructions (the default being 32-bit ARM ones).

If you want to target the 'armeabi-v7a' ABI, you will need ensure that the
following two flags are being used:

  CFLAGS='-march=armv7-a -mfloat-abi=softfp'

Note: The first flag enables Thumb-2 instructions, and the second one
      enables H/W FPU instructions while ensuring that floating-point
      parameters are passed in core registers, which is critical for
      ABI compatibility. Do *not* use these flags separately!

Thanks to Peter Osterlund for pointout this doc and for showing me
an example Makefile to follow.

No functional change.

src/Makefile

index f8d65ccb32eddc33395199087984a3145b784aa0..67cd382a53ed30482387df42cc88adb017fc755c 100644 (file)
@@ -296,7 +296,7 @@ ifeq ($(optimize),yes)
                endif
 
                ifeq ($(arch),armv7)
-                       CXXFLAGS += -fno-gcse
+                       CXXFLAGS += -fno-gcse -mthumb -march=armv7-a -mfloat-abi=softfp
                endif
        endif