aboutsummaryrefslogtreecommitdiffstats
path: root/m4/macros/expand_cpp_int.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/macros/expand_cpp_int.m4')
-rw-r--r--m4/macros/expand_cpp_int.m442
1 files changed, 42 insertions, 0 deletions
diff --git a/m4/macros/expand_cpp_int.m4 b/m4/macros/expand_cpp_int.m4
new file mode 100644
index 000000000000..37253769cfd5
--- /dev/null
+++ b/m4/macros/expand_cpp_int.m4
@@ -0,0 +1,42 @@
+dnl ######################################################################
+dnl Expand the value of a CPP macro into a printable integer number.
+dnl Takes: header, macro, [action-if-found, [action-if-not-found]]
+dnl It runs the header through CPP looking for a match between the macro
+dnl and a string pattern, and if sucessful, it prints the string value out.
+AC_DEFUN([AMU_EXPAND_CPP_INT],
+[
+# we are looking for a regexp of an integer (must not start with 0 --- those
+# are octals).
+AC_EGREP_CPP(
+[[1-9]][[0-9]]*,
+[$1]
+$2,
+value="notfound"
+AC_TRY_RUN(
+[
+[$1]
+main(argc)
+int argc;
+{
+#ifdef $2
+if (argc > 1)
+ printf("%d", $2);
+exit(0);
+#else
+# error no such option $2
+#endif
+exit(1);
+}], value=`./conftest dummy 2>>config.log`, value="notfound", value="notfound")
+,
+value="notfound"
+)
+if test "$value" = notfound
+then
+ :
+ $4
+else
+ :
+ $3
+fi
+])
+dnl ======================================================================