configure.in: sigsetjmp sivesigs flag

* configure.in (RUBY_SETJMP_TYPE): optional flag to save signal
  mask.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58352 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-04-14 12:51:46 +00:00
parent 8c84803d80
commit d005ada1b8

View File

@ -2754,12 +2754,14 @@ RUBY_CHECK_SETJMP(_setjmp)
RUBY_CHECK_SETJMP(sigsetjmp, [sigjmp_buf]) RUBY_CHECK_SETJMP(sigsetjmp, [sigjmp_buf])
AC_MSG_CHECKING(for setjmp type) AC_MSG_CHECKING(for setjmp type)
setjmp_suffix= setjmp_suffix=
unset setjmp_sigmask
AC_ARG_WITH(setjmp-type, AC_ARG_WITH(setjmp-type,
AS_HELP_STRING([--with-setjmp-type], [select setjmp type]), AS_HELP_STRING([--with-setjmp-type], [select setjmp type]),
[ [
AS_CASE([$withval], AS_CASE([$withval],
[__builtin_setjmp], [setjmp=__builtin_setjmp], [__builtin_setjmp], [setjmp=__builtin_setjmp],
[_setjmp], [ setjmp_prefix=_], [_setjmp], [ setjmp_prefix=_],
[sigsetjmp,*], [ setjmp_prefix=sig setjmp_sigmask=`expr "$withval" : 'sigsetjmp\(,.*\)'`],
[sigsetjmp], [ setjmp_prefix=sig], [sigsetjmp], [ setjmp_prefix=sig],
[setjmp], [ setjmp_prefix=], [setjmp], [ setjmp_prefix=],
[setjmpex], [ setjmp_prefix= setjmp_suffix=ex], [setjmpex], [ setjmp_prefix= setjmp_suffix=ex],
@ -2787,13 +2789,11 @@ else
setjmp_prefix= setjmp_prefix=
setjmp_suffix= setjmp_suffix=
fi fi
if test x$setjmp_prefix = xsig; then if test x$setjmp_prefix:$setjmp_sigmask = xsig:; then
setjmp_sigmask=yes setjmp_sigmask=,0
else
unset setjmp_sigmask
fi fi
AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cast\)}) AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cast\)}${setjmp_sigmask})
AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env)${setjmp_sigmask+,0})]) AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env)${setjmp_sigmask})])
AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)]) AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)])
AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf) AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf)
AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)]) AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)])