configure.ac: move checks of -std=gnu99 and _XOPEN_SOURCE on Solaris

* configure.ac (ansi_options): On Solaris, "-std=gnu99" should be
  appended to CPPFLAGS instead of warnflags and strict_warnflags,
  because the flag affects existance of functions and macros.

* configure.ac (solaris*): Check _XOPEN_SOURCE just after checking
  "-std=gnu99" on Solaris. Because _XOPEN_SOURCE also affects existance
  of many functions and macros, it is good to define it earlier.
  The check is simplified to use AC_TRY_COMPILE with RUBY_WERROR_FLAG.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63443 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ngoto 2018-05-16 04:11:20 +00:00
Родитель 52b29a3314
Коммит 88cb22e979
1 изменённых файлов: 44 добавлений и 42 удалений

Просмотреть файл

@ -582,6 +582,50 @@ AS_IF([test "$GCC" = yes], [
[cygwin*|darwin*|netbsd*], [
# need lgamma_r(), finite()
],
[solaris*], [
# ANSI (no XCFLAGS because this is C only)
# Because "-std=gnu99" affects existance of functions on Solaris,
# "-std=gnu99" will be appended to CPPFLAGS.
for ansi_options in -std=gnu99; do
RUBY_TRY_CFLAGS(${ansi_options}, [
RUBY_APPEND_OPTIONS(CPPFLAGS, ${ansi_options})
], [ansi_options=])
test "x${ansi_options}" = x || break
done
AC_MSG_CHECKING(whether _XOPEN_SOURCE is already given)
AC_TRY_COMPILE([#include <unistd.h>
#ifndef _XOPEN_SOURCE
#error _XOPEN_SOURCE is not defined
#endif
], [],
[given_xopen_source=yes], [given_xopen_source=no])
AC_MSG_RESULT($given_xopen_source)
AS_IF([test $given_xopen_source = no], [
AC_MSG_CHECKING(appropriate _XOPEN_SOURCE value to define)
define_xopen_source=""
for tmp_xpg in 7 6 5; do
AS_IF([test x"$define_xopen_source" != x], [
break
])
RUBY_WERROR_FLAG([AC_TRY_COMPILE([
#define _XOPEN_SOURCE ${tmp_xpg}00
#include <unistd.h>
#ifndef _XPG${tmp_xpg}
#error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00
#endif
], [],
[define_xopen_source=${tmp_xpg}00], [])
])
done
AS_IF([test x"$define_xopen_source" = x], [
define_xopen_source=no
])
AC_MSG_RESULT($define_xopen_source)
AS_IF([test x"$define_xopen_source" != xno], [
RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE=$define_xopen_source)
])
])
],
[
# ANSI (no XCFLAGS because this is C only)
for ansi_options in -std=gnu99; do
@ -821,48 +865,6 @@ main()
ac_cv_c_inline=no],
[solaris*], [ LIBS="-lm $LIBS"
ac_cv_func_vfork=no
AC_MSG_CHECKING(whether _XOPEN_SOURCE is already given)
AC_TRY_COMPILE([#include <unistd.h>
#ifndef _XOPEN_SOURCE
#error _XOPEN_SOURCE is not defined
#endif
], [],
[given_xopen_source=yes], [given_xopen_source=no])
AC_MSG_RESULT($given_xopen_source)
AS_IF([test $given_xopen_source = no], [
AC_MSG_CHECKING(appropriate _XOPEN_SOURCE value to define)
define_xopen_source=""
for tmp_xpg in 7 6 5; do
AS_IF([test x"$define_xopen_source" != x], [
break
])
# Both AC_TRY_CPP and AC_TRY_COMPILE should pass
# because some options may not be set to CPPFLAGS.
AC_TRY_CPP([
#define _XOPEN_SOURCE ${tmp_xpg}00
#include <unistd.h>
#ifndef _XPG${tmp_xpg}
#error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00
#endif
], [
AC_TRY_COMPILE([
#define _XOPEN_SOURCE ${tmp_xpg}00
#include <unistd.h>
#ifndef _XPG${tmp_xpg}
#error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00
#endif
], [],
[define_xopen_source=${tmp_xpg}00], [])
], [])
done
AS_IF([test x"$define_xopen_source" = x], [
define_xopen_source=no
])
AC_MSG_RESULT($define_xopen_source)
AS_IF([test x"$define_xopen_source" != xno], [
RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE=$define_xopen_source)
])
])
],
[haiku*], [
LIBS="$LIBS" # m lib is include in root