+# FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)
+# ---------------------------------------------------------
+# Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for
+# compilation. Execute IF-FAILS when unable to determine the value. Works for
+# cross-compilation, too.
+# Note: We are lazy and use an internal autoconf macro, but it is supported in
+# autoconf versions 2.50 up to the actual 2.57, so there is little risk.
+AC_DEFUN([FP_COMPUTE_INT],
+[_AC_COMPUTE_INT([$1], [$2], [$3], [$4])[]dnl
+])# FP_COMPUTE_INT
+
+
+# FP_CHECK_ALIGNMENT(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
+# ------------------------------------------------------------------
+# A variation of AC_CHECK_SIZEOF for computing the alignment restrictions of a
+# given type. Defines ALIGNMENT_TYPE.
+AC_DEFUN([FP_CHECK_ALIGNMENT],
+[AS_LITERAL_IF([$1], [],
+ [AC_FATAL([$0: requires literal arguments])])dnl
+AC_CHECK_TYPE([$1], [], [], [$3])
+AC_CACHE_CHECK([alignment of $1], AS_TR_SH([fp_cv_alignment_$1]),
+[if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
+ FP_COMPUTE_INT([(long) (&((struct { char c; $1 ty; } *)0)->ty)],
+ [AS_TR_SH([fp_cv_alignment_$1])],
+ [AC_INCLUDES_DEFAULT([$3])],
+ [AC_MSG_FAILURE([cannot compute alignment ($1), 77])])
+else
+ AS_TR_SH([fp_cv_alignment_$1])=0
+fi])dnl
+AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $AS_TR_SH([fp_cv_alignment_$1]),
+ [The alignment of a `$1'.])
+])# FP_CHECK_ALIGNMENT
+
+