| Improve the ARM detection to work on Thumb-only architecture |
| |
| The ARM-specific assembly code doesn't build on Thumb-only |
| architectures such as ARMv7-M, but the configure script assumes that |
| if the host tuple is arm*, then it can build and use the ARM optimized |
| code. |
| |
| This patch improves the configure.ac detection logic, by building one |
| of the instruction of the optimized assembly code, and using this to |
| decide whether or not the optimizations should be enabled. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| |
| Index: b/configure.ac |
| =================================================================== |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -101,8 +101,10 @@ |
| alpha*) |
| AC_DEFINE([ARCH_ALPHA],,[alpha architecture]);; |
| arm*) |
| - arm_conditional=: |
| - AC_DEFINE([ARCH_ARM],,[ARM architecture]);; |
| + AC_TRY_LINK([], [asm(".syntax divided\nstmfd sp!,{r4-r11,lr}")], |
| + [AC_DEFINE([ARCH_ARM],,[ARM architecture]) |
| + use_arm_optimization=yes], |
| + [use_arm_optimization=no]) |
| esac |
| elif test x"$CC" = x"tendracc"; then |
| dnl TenDRA portability checking compiler |
| @@ -122,7 +124,7 @@ |
| esac |
| fi |
| |
| -AM_CONDITIONAL(ARCH_ARM, ${arm_conditional}) |
| +AM_CONDITIONAL(ARCH_ARM, test "${use_arm_optimization}" = "yes") |
| |
| dnl Checks for libtool - this must be done after we set cflags |
| AC_LIBTOOL_WIN32_DLL |