From cfa9e95b6cef8eca1688697c068d107ef1e13a40 Mon Sep 17 00:00:00 2001 From: Matthijs van Duin Date: Fri, 4 Sep 2015 02:29:34 +0200 Subject: [PATCH] improve test for unaligned access check target attribute on ARM --- configure.ac | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 79c7dbb2..9eb7ede1 100644 --- a/configure.ac +++ b/configure.ac @@ -406,13 +406,22 @@ void f(void *x) { __dummy(x); } AC_DEFINE([HAVE_WEAK_SYMBOLS], [1], [weak symbols are supported])], [AC_MSG_RESULT(no)]) +AC_MSG_CHECKING(if unaligned data access is supported) +unaligned_access_ok= AS_CASE([$host_cpu], [i*86 | x86_64 | powerpc* | s390*], - [AC_MSG_NOTICE([data alignment is not required on this target])], - [*], - [AC_MSG_NOTICE([data alignment is required on this target]) - AC_DEFINE([CPU_ALIGNED_ACCESS_REQUIRED], [1], [data alignment is required])] + [unaligned_access_ok=yes], + [arm*], + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ +#ifndef __ARM_FEATURE_UNALIGNED +# error unaligned access not supported +#endif + ]], [[]])], [unaligned_access_ok=yes], [])] ) +AS_IF([test "x$unaligned_access_ok" = xyes], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + AC_DEFINE([CPU_ALIGNED_ACCESS_REQUIRED], [1], [data alignment is required])]) dnl Checks for functions and headers