summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-04-10 13:13:59 +0200
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2007-04-10 13:13:59 +0200
commitf0bb7ea04c1c860c96dcfdd0a837d9c3eb906100 (patch)
tree59387c5505866f34ce304c3895210d0727cf9f72 /m4
parent1e61f032793a3460ad97b0e38b7a1ec58324999d (diff)
downloadxine-lib-f0bb7ea04c1c860c96dcfdd0a837d9c3eb906100.tar.gz
xine-lib-f0bb7ea04c1c860c96dcfdd0a837d9c3eb906100.tar.bz2
Add a new check for __attribute__((packed)), and if present, define XINE_PACKED.
This is the first step to sanitise the handling of PACKED attribute.
Diffstat (limited to 'm4')
-rw-r--r--m4/attributes.m420
1 files changed, 20 insertions, 0 deletions
diff --git a/m4/attributes.m4 b/m4/attributes.m4
index 55f34c9f7..c46715d0e 100644
--- a/m4/attributes.m4
+++ b/m4/attributes.m4
@@ -322,3 +322,23 @@ AC_DEFUN([CC_ATTRIBUTE_ALIGNED], [
[Define the highest alignment supported])
fi
])
+
+AC_DEFUN([CC_ATTRIBUTE_PACKED], [
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if $CC supports __attribute__((packed))],
+ [cc_cv_attribute_packed],
+ [ac_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ AC_COMPILE_IFELSE([struct { char a; short b; int c; } __attribute__((packed)) foo;],
+ [cc_cv_attribute_packed=yes],
+ [cc_cv_attribute_packed=no])
+ CFLAGS="$ac_save_CFLAGS"
+ ])
+
+ if test x$cc_cv_attribute_packed = xyes; then
+ AC_DEFINE([SUPPORT_ATTRIBUTE_PACKED], 1, [Define this if the compiler supports __attribute__((packed))])
+ ifelse([$1], , [:], [$1])
+ else
+ ifelse([$2], , [:], [$2])
+ fi
+])