diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-05 04:07:25 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-05 04:07:25 +0000 |
commit | 01ae2d7c67415943d4611f07e041e82560e636da (patch) | |
tree | 529c8339b0a3f0fa1d6fd9fafdca7091211353c1 /configure.ac | |
parent | b0f38b6dd3d44f0baff93c1dce7cc0810b6951e9 (diff) | |
download | ruby-01ae2d7c67415943d4611f07e041e82560e636da.tar.gz |
va_copy is a C99ism
Should provide appropriate fallback implementation.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62220 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac index 9df872a845..a09b5def03 100644 --- a/configure.ac +++ b/configure.ac @@ -1244,6 +1244,26 @@ AS_IF([test "$rb_cv_va_args_macro" = yes], [ AC_DEFINE(HAVE_VA_ARGS_MACRO) ]) +AC_CACHE_CHECK([appropriate way to simulate va_copy], rb_cv_va_copy, [dnl + RUBY_CHECK_VA_COPY([va_copy], [va_copy((dst),(src))]) + RUBY_CHECK_VA_COPY([VA_COPY macro], [VA_COPY((dst),(src))]) + RUBY_CHECK_VA_COPY([__va_copy], [__va_copy((dst),(src))]) + RUBY_CHECK_VA_COPY([__builtin_va_copy], [__builtin_va_copy((dst),(src))]) + RUBY_CHECK_VA_COPY([va_copy via struct assignment], + [do (dst) = (src); while (0)]) + RUBY_CHECK_VA_COPY([va_copy via pointer assignment], + [do *(dst) = *(src); while (0)]) + RUBY_CHECK_VA_COPY([va_copy via memcpy], + [memcpy(&(dst), &(src), sizeof(va_list))]) +]) +if test "x$rb_cv_va_copy" = x; then + AC_ERROR([no way to simulate va_copy]) +else + m4_pushdef([macro], AS_TR_CPP(HAVE_$1)) + AC_DEFINE_UNQUOTED(macro($rb_cv_va_copy)) + m4_popdef([macro]) +fi + AC_CACHE_CHECK([for alignas() syntax], rb_cv_have_alignas, [ rb_cv_have_alignas=no RUBY_WERROR_FLAG([ |