Squashed 'third_party/gperftools/' content from commit 54505f1
Change-Id: Id02e833828732b0efe7dac722b8485279e67c5fa
git-subtree-dir: third_party/gperftools
git-subtree-split: 54505f1d50c2d1f4676f5e87090b64a117fd980e
diff --git a/m4/compiler_characteristics.m4 b/m4/compiler_characteristics.m4
new file mode 100644
index 0000000..2b62893
--- /dev/null
+++ b/m4/compiler_characteristics.m4
@@ -0,0 +1,24 @@
+# Check compiler characteristics (e.g. type sizes, PRIxx macros, ...)
+
+# If types $1 and $2 are compatible, perform action $3
+AC_DEFUN([AC_TYPES_COMPATIBLE],
+ [AC_TRY_COMPILE([#include <stddef.h>], [$1 v1 = 0; $2 v2 = 0; return (&v1 - &v2)], $3)])
+
+define(AC_PRIUS_COMMENT, [printf format code for printing a size_t and ssize_t])
+
+AC_DEFUN([AC_COMPILER_CHARACTERISTICS],
+ [AC_CACHE_CHECK(AC_PRIUS_COMMENT, ac_cv_formatting_prius_prefix,
+ [AC_TYPES_COMPATIBLE(unsigned int, size_t,
+ ac_cv_formatting_prius_prefix=; ac_cv_prius_defined=1)
+ AC_TYPES_COMPATIBLE(unsigned long, size_t,
+ ac_cv_formatting_prius_prefix=l; ac_cv_prius_defined=1)
+ AC_TYPES_COMPATIBLE(unsigned long long, size_t,
+ ac_cv_formatting_prius_prefix=ll; ac_cv_prius_defined=1
+ )])
+ if test -z "$ac_cv_prius_defined"; then
+ ac_cv_formatting_prius_prefix=z;
+ fi
+ AC_DEFINE_UNQUOTED(PRIuS, "${ac_cv_formatting_prius_prefix}u", AC_PRIUS_COMMENT)
+ AC_DEFINE_UNQUOTED(PRIxS, "${ac_cv_formatting_prius_prefix}x", AC_PRIUS_COMMENT)
+ AC_DEFINE_UNQUOTED(PRIdS, "${ac_cv_formatting_prius_prefix}d", AC_PRIUS_COMMENT)
+])