diff options
Diffstat (limited to 'tool/m4/ruby_check_printf_prefix.m4')
-rw-r--r-- | tool/m4/ruby_check_printf_prefix.m4 | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tool/m4/ruby_check_printf_prefix.m4 b/tool/m4/ruby_check_printf_prefix.m4 new file mode 100644 index 0000000000..4a41374562 --- /dev/null +++ b/tool/m4/ruby_check_printf_prefix.m4 @@ -0,0 +1,24 @@ +AC_DEFUN([RUBY_CHECK_PRINTF_PREFIX], [ +AC_CACHE_CHECK([for printf prefix for $1], [rb_cv_pri_prefix_]AS_TR_SH($1),[ + [rb_cv_pri_prefix_]AS_TR_SH($1)=[NONE] + RUBY_WERROR_FLAG(RUBY_APPEND_OPTIONS(CFLAGS, $rb_cv_wsuppress_flags) + for pri in $2; do + AC_TRY_COMPILE( + [@%:@include <stdio.h> + @%:@include <stddef.h> + @%:@ifdef __GNUC__ + @%:@define PRINTF_ARGS(decl, string_index, first_to_check) \ + decl __attribute__((format(printf, string_index, first_to_check))) + @%:@else + @%:@define PRINTF_ARGS(decl, string_index, first_to_check) decl + @%:@endif + PRINTF_ARGS(void test_sprintf(const char*, ...), 1, 2);], + [printf("%]${pri}[d", (]$1[)42); + test_sprintf("%]${pri}[d", (]$1[)42);], + [rb_cv_pri_prefix_]AS_TR_SH($1)[=[$pri]; break]) + done)]) +AS_IF([test "[$rb_cv_pri_prefix_]AS_TR_SH($1)" != NONE], [ + AC_DEFINE_UNQUOTED([PRI_]m4_ifval($3,$3,AS_TR_CPP(m4_bpatsubst([$1],[_t$])))[_PREFIX], + "[$rb_cv_pri_prefix_]AS_TR_SH($1)") +]) +])dnl |