summaryrefslogtreecommitdiff
path: root/aclocal
diff options
context:
space:
mode:
authorDavid Reiss <dreiss@apache.org>2009-04-02 21:37:17 +0000
committerDavid Reiss <dreiss@apache.org>2009-04-02 21:37:17 +0000
commite4d4ea0e834ed4d022bb38e53daae4985c04ee04 (patch)
tree1fc0cfa600e97f81bbb995a98ed5a4340cdca6b1 /aclocal
parenta7d63f5f7013ab90999d715b1f9c311296fa2d19 (diff)
downloadthrift-e4d4ea0e834ed4d022bb38e53daae4985c04ee04.tar.gz
THRIFT-333. cpp: Initial TCompactProtocol implementation
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@761438 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'aclocal')
-rw-r--r--aclocal/ax_signed_right_shift.m4127
1 files changed, 127 insertions, 0 deletions
diff --git a/aclocal/ax_signed_right_shift.m4 b/aclocal/ax_signed_right_shift.m4
new file mode 100644
index 000000000..019523389
--- /dev/null
+++ b/aclocal/ax_signed_right_shift.m4
@@ -0,0 +1,127 @@
+dnl @synopsis AX_SIGNED_RIGHT_SHIFT
+dnl
+dnl Tests the behavior of a right shift on a negative signed int.
+dnl
+dnl This macro calls:
+dnl AC_DEFINE(SIGNED_RIGHT_SHIFT_IS)
+dnl AC_DEFINE(ARITHMETIC_RIGHT_SHIFT)
+dnl AC_DEFINE(LOGICAL_RIGHT_SHIFT)
+dnl AC_DEFINE(UNKNOWN_RIGHT_SHIFT)
+dnl
+dnl SIGNED_RIGHT_SHIFT_IS will be equal to one of the other macros.
+dnl It also leaves the shell variables "ax_signed_right_shift"
+dnl set to "arithmetic", "logical", or "unknown".
+dnl
+dnl NOTE: This macro does not work for cross-compiling.
+dnl
+dnl @category C
+dnl @version 2009-03-25
+dnl @license AllPermissive
+dnl
+dnl Copyright (C) 2009 David Reiss
+dnl Copying and distribution of this file, with or without modification,
+dnl are permitted in any medium without royalty provided the copyright
+dnl notice and this notice are preserved.
+
+AC_DEFUN([AX_SIGNED_RIGHT_SHIFT],
+ [
+
+ AC_MSG_CHECKING(the behavior of a signed right shift)
+
+ success_arithmetic=no
+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[]], [[
+ return
+ /* 0xffffffff */
+ -1 >> 1 != -1 ||
+ -1 >> 2 != -1 ||
+ -1 >> 3 != -1 ||
+ -1 >> 4 != -1 ||
+ -1 >> 8 != -1 ||
+ -1 >> 16 != -1 ||
+ -1 >> 24 != -1 ||
+ -1 >> 31 != -1 ||
+ /* 0x80000000 */
+ (-2147483647 - 1) >> 1 != -1073741824 ||
+ (-2147483647 - 1) >> 2 != -536870912 ||
+ (-2147483647 - 1) >> 3 != -268435456 ||
+ (-2147483647 - 1) >> 4 != -134217728 ||
+ (-2147483647 - 1) >> 8 != -8388608 ||
+ (-2147483647 - 1) >> 16 != -32768 ||
+ (-2147483647 - 1) >> 24 != -128 ||
+ (-2147483647 - 1) >> 31 != -1 ||
+ /* 0x90800000 */
+ -1870659584 >> 1 != -935329792 ||
+ -1870659584 >> 2 != -467664896 ||
+ -1870659584 >> 3 != -233832448 ||
+ -1870659584 >> 4 != -116916224 ||
+ -1870659584 >> 8 != -7307264 ||
+ -1870659584 >> 16 != -28544 ||
+ -1870659584 >> 24 != -112 ||
+ -1870659584 >> 31 != -1 ||
+ 0;
+ ]])], [
+ success_arithmetic=yes
+ ])
+
+
+ success_logical=no
+ AC_RUN_IFELSE([AC_LANG_PROGRAM([[]], [[
+ return
+ /* 0xffffffff */
+ -1 >> 1 != (signed)((unsigned)-1 >> 1) ||
+ -1 >> 2 != (signed)((unsigned)-1 >> 2) ||
+ -1 >> 3 != (signed)((unsigned)-1 >> 3) ||
+ -1 >> 4 != (signed)((unsigned)-1 >> 4) ||
+ -1 >> 8 != (signed)((unsigned)-1 >> 8) ||
+ -1 >> 16 != (signed)((unsigned)-1 >> 16) ||
+ -1 >> 24 != (signed)((unsigned)-1 >> 24) ||
+ -1 >> 31 != (signed)((unsigned)-1 >> 31) ||
+ /* 0x80000000 */
+ (-2147483647 - 1) >> 1 != (signed)((unsigned)(-2147483647 - 1) >> 1) ||
+ (-2147483647 - 1) >> 2 != (signed)((unsigned)(-2147483647 - 1) >> 2) ||
+ (-2147483647 - 1) >> 3 != (signed)((unsigned)(-2147483647 - 1) >> 3) ||
+ (-2147483647 - 1) >> 4 != (signed)((unsigned)(-2147483647 - 1) >> 4) ||
+ (-2147483647 - 1) >> 8 != (signed)((unsigned)(-2147483647 - 1) >> 8) ||
+ (-2147483647 - 1) >> 16 != (signed)((unsigned)(-2147483647 - 1) >> 16) ||
+ (-2147483647 - 1) >> 24 != (signed)((unsigned)(-2147483647 - 1) >> 24) ||
+ (-2147483647 - 1) >> 31 != (signed)((unsigned)(-2147483647 - 1) >> 31) ||
+ /* 0x90800000 */
+ -1870659584 >> 1 != (signed)((unsigned)-1870659584 >> 1) ||
+ -1870659584 >> 2 != (signed)((unsigned)-1870659584 >> 2) ||
+ -1870659584 >> 3 != (signed)((unsigned)-1870659584 >> 3) ||
+ -1870659584 >> 4 != (signed)((unsigned)-1870659584 >> 4) ||
+ -1870659584 >> 8 != (signed)((unsigned)-1870659584 >> 8) ||
+ -1870659584 >> 16 != (signed)((unsigned)-1870659584 >> 16) ||
+ -1870659584 >> 24 != (signed)((unsigned)-1870659584 >> 24) ||
+ -1870659584 >> 31 != (signed)((unsigned)-1870659584 >> 31) ||
+ 0;
+ ]])], [
+ success_logical=yes
+ ])
+
+
+ AC_DEFINE([ARITHMETIC_RIGHT_SHIFT], 1, [Possible value for SIGNED_RIGHT_SHIFT_IS])
+ AC_DEFINE([LOGICAL_RIGHT_SHIFT], 2, [Possible value for SIGNED_RIGHT_SHIFT_IS])
+ AC_DEFINE([UNKNOWN_RIGHT_SHIFT], 3, [Possible value for SIGNED_RIGHT_SHIFT_IS])
+
+ if test "$success_arithmetic" = "yes" && test "$success_logica" = "yes" ; then
+ AC_MSG_ERROR("Right shift appears to be both arithmetic and logical!")
+ elif test "$success_arithmetic" = "yes" ; then
+ ax_signed_right_shift=arithmetic
+ AC_DEFINE([SIGNED_RIGHT_SHIFT_IS], 1,
+ [Indicates the effect of the right shift operator
+ on negative signed integers])
+ elif test "$success_logical" = "yes" ; then
+ ax_signed_right_shift=logical
+ AC_DEFINE([SIGNED_RIGHT_SHIFT_IS], 2,
+ [Indicates the effect of the right shift operator
+ on negative signed integers])
+ else
+ ax_signed_right_shift=unknown
+ AC_DEFINE([SIGNED_RIGHT_SHIFT_IS], 3,
+ [Indicates the effect of the right shift operator
+ on negative signed integers])
+ fi
+
+ AC_MSG_RESULT($ax_signed_right_shift)
+ ])