diff options
author | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-03-20 00:30:55 +0000 |
---|---|---|
committer | Diego 'Flameeyes' Pettenò <flameeyes@gmail.com> | 2007-03-20 00:30:55 +0000 |
commit | e87c7e045dd5a8fe64a6f70d3195b174513deed2 (patch) | |
tree | 52fae196f51950dc566c6f1ba0ce61b5e3d8d7ad /m4/attributes.m4 | |
parent | 3ca4981e58cb1c95e9959c1d49bf96aee294b5f7 (diff) | |
download | xine-lib-e87c7e045dd5a8fe64a6f70d3195b174513deed2.tar.gz xine-lib-e87c7e045dd5a8fe64a6f70d3195b174513deed2.tar.bz2 |
The AC_C_ATTRIBUTE_ALIGNED macro is broken, it always reports maximum aligned available as 64 even on Darwin where the maximum is 16, as it does not use -Werror, and the wrong alignment is considered only a warning. Rewrite it as CC_ATTRIBUTE_ALIGNED (in attributes.m4, where other similar macros are located). Also reverse the order of the checks, so that the highest version is tried first; this way you can avoid five compile tests on systems where 64 is the highest alignment available.
CVS patchset: 8726
CVS date: 2007/03/20 00:30:55
Diffstat (limited to 'm4/attributes.m4')
-rw-r--r-- | m4/attributes.m4 | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/m4/attributes.m4 b/m4/attributes.m4 index 28e2e5839..2d52cebc4 100644 --- a/m4/attributes.m4 +++ b/m4/attributes.m4 @@ -305,3 +305,25 @@ AC_DEFUN([CC_ATTRIBUTE_ALIAS], [ $2 fi ]) + +AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [ + AC_REQUIRE([CC_CHECK_WERROR]) + AC_CACHE_CHECK([highest __attribute__ ((aligned ())) supported], + [cc_cv_attribute_aligned], + [ac_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $cc_cv_werror" + for cc_attribute_align_try in 64 32 16 8 4 2; do + AC_COMPILE_IFELSE([ + int main() { + static char c __attribute__ ((aligned($cc_attribute_align_try))) = 0; + return c; + }], [cc_cv_attribute_aligned=$cc_attribute_align_try; break]) + done + CFLAGS="$ac_save_CFLAGS" + ]) + + if test "x$cc_cv_attribute_aligned" != "x"; then + AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX], [$cc_cv_attribute_aligned], + [Define the highest alignment supported]) + fi +]) |