summaryrefslogtreecommitdiff
path: root/tool/m4
diff options
context:
space:
mode:
Diffstat (limited to 'tool/m4')
-rw-r--r--tool/m4/_colorize_result_prepare.m43
-rw-r--r--tool/m4/ac_msg_result.m42
-rw-r--r--tool/m4/colorize_result.m42
-rw-r--r--tool/m4/ruby_append_option.m46
-rw-r--r--tool/m4/ruby_append_options.m42
-rw-r--r--tool/m4/ruby_check_builtin_func.m42
-rw-r--r--tool/m4/ruby_check_builtin_setjmp.m44
-rw-r--r--tool/m4/ruby_check_header.m48
-rw-r--r--tool/m4/ruby_check_printf_prefix.m42
-rw-r--r--tool/m4/ruby_check_setjmp.m44
-rw-r--r--tool/m4/ruby_check_signedness.m42
-rw-r--r--tool/m4/ruby_check_sizeof.m42
-rw-r--r--tool/m4/ruby_check_sysconf.m42
-rw-r--r--tool/m4/ruby_cppoutfile.m42
-rw-r--r--tool/m4/ruby_decl_attribute.m42
-rw-r--r--tool/m4/ruby_default_arch.m429
-rw-r--r--tool/m4/ruby_define_if.m412
-rw-r--r--tool/m4/ruby_defint.m42
-rw-r--r--tool/m4/ruby_dtrace_available.m42
-rw-r--r--tool/m4/ruby_dtrace_postprocess.m42
-rw-r--r--tool/m4/ruby_func_attribute.m42
-rw-r--r--tool/m4/ruby_mingw32.m42
-rw-r--r--tool/m4/ruby_prepend_option.m42
-rw-r--r--tool/m4/ruby_prog_gnu_ld.m42
-rw-r--r--tool/m4/ruby_prog_makedirs.m49
-rw-r--r--tool/m4/ruby_replace_funcs.m412
-rw-r--r--tool/m4/ruby_replace_type.m414
-rw-r--r--tool/m4/ruby_require_funcs.m413
-rw-r--r--tool/m4/ruby_rm_recursive.m42
-rw-r--r--tool/m4/ruby_setjmp_type.m421
-rw-r--r--tool/m4/ruby_shared_gc.m442
-rw-r--r--tool/m4/ruby_stack_grow_direction.m44
-rw-r--r--tool/m4/ruby_thread.m480
-rw-r--r--tool/m4/ruby_try_cflags.m439
-rw-r--r--tool/m4/ruby_try_cxxflags.m42
-rw-r--r--tool/m4/ruby_try_ldflags.m42
-rw-r--r--tool/m4/ruby_type_attribute.m42
-rw-r--r--tool/m4/ruby_universal_arch.m440
-rw-r--r--tool/m4/ruby_wasm_tools.m425
-rw-r--r--tool/m4/ruby_werror_flag.m42
40 files changed, 328 insertions, 81 deletions
diff --git a/tool/m4/_colorize_result_prepare.m4 b/tool/m4/_colorize_result_prepare.m4
index cc2bbaa703..8439acf3ed 100644
--- a/tool/m4/_colorize_result_prepare.m4
+++ b/tool/m4/_colorize_result_prepare.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([_COLORIZE_RESULT_PREPARE], [
msg_checking= msg_result_yes= msg_result_no= msg_result_other= msg_reset=
AS_CASE(["x${CONFIGURE_TTY}"],
@@ -9,6 +9,7 @@ AC_DEFUN([_COLORIZE_RESULT_PREPARE], [
[configure_tty=0])])
AS_IF([test $configure_tty -eq 1], [
msg_begin="`tput smso 2>/dev/null`"
+ AS_IF([test -z "$msg_begin"], [msg_begin="`tput so 2>/dev/null`"])
AS_CASE(["$msg_begin"], ['@<:@'*m],
[msg_begin="`echo "$msg_begin" | sed ['s/[0-9]*m$//']`"
msg_checking="${msg_begin}33m"
diff --git a/tool/m4/ac_msg_result.m4 b/tool/m4/ac_msg_result.m4
index bcc7a63d7d..12a3617c0d 100644
--- a/tool/m4/ac_msg_result.m4
+++ b/tool/m4/ac_msg_result.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([AC_MSG_RESULT], [dnl
{ _AS_ECHO_LOG([result: $1])
COLORIZE_RESULT([$1]); dnl
diff --git a/tool/m4/colorize_result.m4 b/tool/m4/colorize_result.m4
index 19ff6d49e8..83912040e5 100644
--- a/tool/m4/colorize_result.m4
+++ b/tool/m4/colorize_result.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([COLORIZE_RESULT], [AC_REQUIRE([_COLORIZE_RESULT_PREPARE])dnl
AS_LITERAL_IF([$1],
[m4_case([$1],
diff --git a/tool/m4/ruby_append_option.m4 b/tool/m4/ruby_append_option.m4
index 07b6537cb7..98359fa1f9 100644
--- a/tool/m4/ruby_append_option.m4
+++ b/tool/m4/ruby_append_option.m4
@@ -1,5 +1,9 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_APPEND_OPTION],
[# RUBY_APPEND_OPTION($1)
AS_CASE([" [$]{$1-} "],
[*" $2 "*], [], [' '], [ $1="$2"], [ $1="[$]$1 $2"])])dnl
+AC_DEFUN([RUBY_PREPEND_OPTION],
+ [# RUBY_APPEND_OPTION($1)
+ AS_CASE([" [$]{$1-} "],
+ [*" $2 "*], [], [' '], [ $1="$2"], [ $1="$2 [$]$1"])])dnl
diff --git a/tool/m4/ruby_append_options.m4 b/tool/m4/ruby_append_options.m4
index 164a4ab654..14213111ca 100644
--- a/tool/m4/ruby_append_options.m4
+++ b/tool/m4/ruby_append_options.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_APPEND_OPTIONS],
[# RUBY_APPEND_OPTIONS($1)
for rb_opt in $2; do
diff --git a/tool/m4/ruby_check_builtin_func.m4 b/tool/m4/ruby_check_builtin_func.m4
index 3fe5caf429..40abc78ef8 100644
--- a/tool/m4/ruby_check_builtin_func.m4
+++ b/tool/m4/ruby_check_builtin_func.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_CHECK_BUILTIN_FUNC], [dnl
AC_CACHE_CHECK([for $1], AS_TR_SH(rb_cv_builtin_$1),
[AC_LINK_IFELSE(
diff --git a/tool/m4/ruby_check_builtin_setjmp.m4 b/tool/m4/ruby_check_builtin_setjmp.m4
index 008fd45911..1e5d9b3028 100644
--- a/tool/m4/ruby_check_builtin_setjmp.m4
+++ b/tool/m4/ruby_check_builtin_setjmp.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_CHECK_BUILTIN_SETJMP], [
AS_IF([test x"${ac_cv_func___builtin_setjmp}" = xyes], [
unset ac_cv_func___builtin_setjmp
@@ -20,7 +20,7 @@ AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp,
void (*volatile f)(void) = t;
if (!jump()) printf("%d\n", f != 0);
]])],
- [ac_cv_func___builtin_setjmp="yes with cast ($cast)"])
+ [ac_cv_func___builtin_setjmp="yes${cast:+ with cast ($cast)}"])
])
test "$ac_cv_func___builtin_setjmp" = no || break
done])
diff --git a/tool/m4/ruby_check_header.m4 b/tool/m4/ruby_check_header.m4
new file mode 100644
index 0000000000..6fec9d16c5
--- /dev/null
+++ b/tool/m4/ruby_check_header.m4
@@ -0,0 +1,8 @@
+dnl -*- Autoconf -*-
+AC_DEFUN([RUBY_CHECK_HEADER],
+ [# RUBY_CHECK_HEADER($@)
+ save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS m4_if([$5], [], [$INCFLAGS], [$5])"
+ AC_CHECK_HEADERS([$1], [$2], [$3], [$4])
+ CPPFLAGS="$save_CPPFLAGS"
+ unset save_CPPFLAGS])
diff --git a/tool/m4/ruby_check_printf_prefix.m4 b/tool/m4/ruby_check_printf_prefix.m4
index 0415f9fa92..15bb4aee87 100644
--- a/tool/m4/ruby_check_printf_prefix.m4
+++ b/tool/m4/ruby_check_printf_prefix.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
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]
diff --git a/tool/m4/ruby_check_setjmp.m4 b/tool/m4/ruby_check_setjmp.m4
index 66652984ea..6020b766b8 100644
--- a/tool/m4/ruby_check_setjmp.m4
+++ b/tool/m4/ruby_check_setjmp.m4
@@ -1,5 +1,5 @@
-# -*- Autoconf -*-
-# used for AC_ARG_WITH(setjmp-type)
+dnl -*- Autoconf -*-
+dnl used for AC_ARG_WITH(setjmp-type)
AC_DEFUN([RUBY_CHECK_SETJMP], [
AC_CACHE_CHECK([for ]$1[ as a macro or function], ac_cv_func_$1,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
diff --git a/tool/m4/ruby_check_signedness.m4 b/tool/m4/ruby_check_signedness.m4
index 5376efa208..f9fbb3c088 100644
--- a/tool/m4/ruby_check_signedness.m4
+++ b/tool/m4/ruby_check_signedness.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_CHECK_SIGNEDNESS [typename] [if-signed] [if-unsigned] [included]
AC_DEFUN([RUBY_CHECK_SIGNEDNESS], [dnl
AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])], [($1)-1 > 0])],
diff --git a/tool/m4/ruby_check_sizeof.m4 b/tool/m4/ruby_check_sizeof.m4
index 38d7918f2e..975ac6c9be 100644
--- a/tool/m4/ruby_check_sizeof.m4
+++ b/tool/m4/ruby_check_sizeof.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_CHECK_SIZEOF [typename], [maybe same size types], [macros], [include]
AC_DEFUN([RUBY_CHECK_SIZEOF],
[dnl
diff --git a/tool/m4/ruby_check_sysconf.m4 b/tool/m4/ruby_check_sysconf.m4
index 8324be6764..f554786e77 100644
--- a/tool/m4/ruby_check_sysconf.m4
+++ b/tool/m4/ruby_check_sysconf.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_CHECK_SYSCONF], [dnl
AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1),
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
diff --git a/tool/m4/ruby_cppoutfile.m4 b/tool/m4/ruby_cppoutfile.m4
index 495ae0aae4..976cbb1c43 100644
--- a/tool/m4/ruby_cppoutfile.m4
+++ b/tool/m4/ruby_cppoutfile.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_CPPOUTFILE],
[AC_CACHE_CHECK(whether ${CPP} accepts -o, rb_cv_cppoutfile,
[save_CPPFLAGS="$CPPFLAGS"
diff --git a/tool/m4/ruby_decl_attribute.m4 b/tool/m4/ruby_decl_attribute.m4
index 22358a079a..a8a73dc870 100644
--- a/tool/m4/ruby_decl_attribute.m4
+++ b/tool/m4/ruby_decl_attribute.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_DECL_ATTRIBUTE(attrib, macroname, cachevar, condition, type, code)
AC_DEFUN([RUBY_DECL_ATTRIBUTE], [dnl
m4_ifval([$2], dnl
diff --git a/tool/m4/ruby_default_arch.m4 b/tool/m4/ruby_default_arch.m4
index a9e7177fda..2f25ba81ee 100644
--- a/tool/m4/ruby_default_arch.m4
+++ b/tool/m4/ruby_default_arch.m4
@@ -1,12 +1,21 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_DEFAULT_ARCH], [
+# Set ARCH_FLAG for different width but family CPU
AC_MSG_CHECKING([arch option])
-AS_CASE([$1],
- [arm64], [],
- [*64], [ARCH_FLAG=-m64],
- [[i[3-6]86]], [ARCH_FLAG=-m32],
- [AC_MSG_ERROR(unknown target architecture: $target_archs)]
- )
-AC_MSG_RESULT([$ARCH_FLAG])
-])
-dnl
+AS_CASE([$1:"$host_cpu"],
+ [arm64:arm*], [ARCH_FLAG=-m64],
+ [arm*:arm*], [ARCH_FLAG=-m32],
+ [x86_64:[i[3-6]86]], [ARCH_FLAG=-m64],
+ [x64:x86_64], [],
+ [[i[3-6]86]:x86_64], [ARCH_FLAG=-m32],
+ [ppc64:ppc*], [ARCH_FLAG=-m64],
+ [ppc*:ppc64], [ARCH_FLAG=-m32],
+ [
+ ARCH_FLAG=
+ for flag in "-arch "$1 -march=$1; do
+ _RUBY_TRY_CFLAGS([$]flag, [ARCH_FLAG="[$]flag"])
+ test x"$ARCH_FLAG" = x || break
+ done]
+)
+AC_MSG_RESULT([${ARCH_FLAG:-'(none)'}])
+])dnl
diff --git a/tool/m4/ruby_define_if.m4 b/tool/m4/ruby_define_if.m4
index b18b104aad..aba55783a2 100644
--- a/tool/m4/ruby_define_if.m4
+++ b/tool/m4/ruby_define_if.m4
@@ -1,12 +1,6 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_DEFINE_IF], [dnl
- m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
-@%:@if $1
-EOH
-])dnl
+ m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])printf "@%:@if %s\n" "$1" >>confdefs.h])
AC_DEFINE_UNQUOTED($2, $3)dnl
- m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])cat <<EOH >> confdefs.h
-@%:@endif /* $1 */
-EOH
-])dnl
+ m4_ifval([$1], [AS_LITERAL_IF([$1], [], [test "X$1" = X || ])printf "@%:@endif /* %s */\n" "$1" >>confdefs.h])
])dnl
diff --git a/tool/m4/ruby_defint.m4 b/tool/m4/ruby_defint.m4
index e5b46a788f..e9ed68e5b8 100644
--- a/tool/m4/ruby_defint.m4
+++ b/tool/m4/ruby_defint.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_DEFINT TYPENAME, SIZE, [UNSIGNED], [INCLUDES = DEFAULT-INCLUDES]
AC_DEFUN([RUBY_DEFINT], [dnl
AS_VAR_PUSHDEF([cond], [rb_defint_cond])dnl
diff --git a/tool/m4/ruby_dtrace_available.m4 b/tool/m4/ruby_dtrace_available.m4
index babffaffac..e03b7762fc 100644
--- a/tool/m4/ruby_dtrace_available.m4
+++ b/tool/m4/ruby_dtrace_available.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_DTRACE_AVAILABLE],
[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
[
diff --git a/tool/m4/ruby_dtrace_postprocess.m4 b/tool/m4/ruby_dtrace_postprocess.m4
index 1cb651b481..6fd6de7c9a 100644
--- a/tool/m4/ruby_dtrace_postprocess.m4
+++ b/tool/m4/ruby_dtrace_postprocess.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_DTRACE_POSTPROCESS],
[AC_CACHE_CHECK(whether $DTRACE needs post processing, rb_cv_prog_dtrace_g,
[
diff --git a/tool/m4/ruby_func_attribute.m4 b/tool/m4/ruby_func_attribute.m4
index b265fd41da..bce26fc16a 100644
--- a/tool/m4/ruby_func_attribute.m4
+++ b/tool/m4/ruby_func_attribute.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_FUNC_ATTRIBUTE(attrib, macroname, cachevar, condition)
AC_DEFUN([RUBY_FUNC_ATTRIBUTE], [dnl
RUBY_DECL_ATTRIBUTE([$1], [$2], [$3], [$4],
diff --git a/tool/m4/ruby_mingw32.m4 b/tool/m4/ruby_mingw32.m4
index 76b95f02a8..98e922340b 100644
--- a/tool/m4/ruby_mingw32.m4
+++ b/tool/m4/ruby_mingw32.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_MINGW32],
[AS_CASE(["$host_os"],
[cygwin*], [
diff --git a/tool/m4/ruby_prepend_option.m4 b/tool/m4/ruby_prepend_option.m4
index 3e868a6831..3b7030a473 100644
--- a/tool/m4/ruby_prepend_option.m4
+++ b/tool/m4/ruby_prepend_option.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_PREPEND_OPTION],
[# RUBY_PREPEND_OPTION($1)
AS_CASE([" [$]{$1-} "],
diff --git a/tool/m4/ruby_prog_gnu_ld.m4 b/tool/m4/ruby_prog_gnu_ld.m4
index 8d484f9440..b38fb3d527 100644
--- a/tool/m4/ruby_prog_gnu_ld.m4
+++ b/tool/m4/ruby_prog_gnu_ld.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_PROG_GNU_LD],
[AC_CACHE_CHECK(whether the linker is GNU ld, rb_cv_prog_gnu_ld,
[AS_IF([`$CC $CFLAGS $CPPFLAGS $LDFLAGS --print-prog-name=ld 2>&1` -v 2>&1 | grep "GNU ld" > /dev/null], [
diff --git a/tool/m4/ruby_prog_makedirs.m4 b/tool/m4/ruby_prog_makedirs.m4
new file mode 100644
index 0000000000..132ff7768f
--- /dev/null
+++ b/tool/m4/ruby_prog_makedirs.m4
@@ -0,0 +1,9 @@
+dnl -*- Autoconf -*-
+m4_defun([RUBY_PROG_MAKEDIRS],
+ [m4_bpatsubst(m4_defn([AC_PROG_MKDIR_P]),
+ [MKDIR_P=\"$ac_install_sh -d\"], [
+ AS_IF([test "x$MKDIR_P" = "xfalse"], [AC_MSG_ERROR([mkdir -p is required])])
+ MKDIR_P="mkdir -p"])
+ ]dnl
+ AC_SUBST(MAKEDIRS, ["$MKDIR_P"])
+)
diff --git a/tool/m4/ruby_replace_funcs.m4 b/tool/m4/ruby_replace_funcs.m4
index d0612e29a0..33b3ca70c1 100644
--- a/tool/m4/ruby_replace_funcs.m4
+++ b/tool/m4/ruby_replace_funcs.m4
@@ -1,13 +1,13 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_REPLACE_FUNC [func] [included]
AC_DEFUN([RUBY_REPLACE_FUNC], [dnl
AC_CHECK_DECL([$1],dnl
[AC_DEFINE(AS_TR_CPP(HAVE_[$1]))],dnl
[AC_REPLACE_FUNCS($1)],dnl
[$2])dnl
-])
-
+])dnl
+dnl
dnl RUBY_REPLACE_FUNCS [funcs] [included]
-AC_DEFUN([RUBY_REPLACE_FUNCS] [dnl
- m4_map_args_w([$1], [RUBY_REPLACE_FUNC(], [), [$2]])dnl
-])
+AC_DEFUN([RUBY_REPLACE_FUNCS], [dnl
+ m4_map_args_w([$1], [RUBY_REPLACE_FUNC(], [, [$2])])dnl
+])dnl
diff --git a/tool/m4/ruby_replace_type.m4 b/tool/m4/ruby_replace_type.m4
index a7d2ffe938..3df0f3994f 100644
--- a/tool/m4/ruby_replace_type.m4
+++ b/tool/m4/ruby_replace_type.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_REPLACE_TYPE [typename] [default type] [macro type] [included]
AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
AC_CHECK_TYPES([$1],
@@ -6,6 +6,13 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
[n="patsubst([$2],["],[\\"])"],
[$4])
AC_CACHE_CHECK([for convertible type of [$1]], rb_cv_[$1]_convertible, [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_BOOL_COMPILE_TRY([AC_INCLUDES_DEFAULT([$4])]
+ [typedef $n rbcv_conftest_target_type;
+ extern rbcv_conftest_target_type rbcv_conftest_var;
+ ], [sizeof(&*rbcv_conftest_var)])],
+ [rb_cv_[$1]_convertible=PTR],
+ [
u= t=
AS_CASE(["$n "],
[*" signed "*], [ ],
@@ -37,6 +44,7 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
[
t=INT])
rb_cv_[$1]_convertible=${u}${t}])
+ ])
AS_IF([test "${AS_TR_SH(ac_cv_type_[$1])}" = "yes"], [
n="$1"
], [
@@ -48,11 +56,13 @@ AC_DEFUN([RUBY_REPLACE_TYPE], [dnl
AS_CASE(["${rb_cv_[$1]_convertible}"],
[U*], [n="unsigned $n"])
])
- AS_CASE("${rb_cv_[$1]_convertible}", [U*], [u=+1], [u=-1])
+ AS_CASE("${rb_cv_[$1]_convertible}", [PTR], [u=], [U*], [u=+1], [u=-1])
AC_DEFINE_UNQUOTED(rb_[$1], $n)
+ AS_IF([test $u], [
AC_DEFINE_UNQUOTED([SIGNEDNESS_OF_]AS_TR_CPP($1), $u)
AC_DEFINE_UNQUOTED([$3]2NUM[(v)], [${rb_cv_[$1]_convertible}2NUM(v)])
AC_DEFINE_UNQUOTED(NUM2[$3][(v)], [NUM2${rb_cv_[$1]_convertible}(v)])
AC_DEFINE_UNQUOTED(PRI_[$3]_PREFIX,
[PRI_`echo ${rb_cv_[$1]_convertible} | sed ['s/^U//']`_PREFIX])
+ ])
])dnl
diff --git a/tool/m4/ruby_require_funcs.m4 b/tool/m4/ruby_require_funcs.m4
new file mode 100644
index 0000000000..78372d57d8
--- /dev/null
+++ b/tool/m4/ruby_require_funcs.m4
@@ -0,0 +1,13 @@
+dnl -*- Autoconf -*-
+dnl RUBY_REQUIRE_FUNC [func] [included]
+AC_DEFUN([RUBY_REQUIRE_FUNC], [
+# RUBY_REQUIRE_FUNC([$1], [$2])
+ AC_CHECK_FUNCS([$1])
+ AS_IF([test "$ac_cv_func_[]AS_TR_SH($1)" = yes], [],
+ [AC_MSG_ERROR($1[() must be supported])])
+])dnl
+dnl
+dnl RUBY_REQUIRE_FUNCS [funcs] [included]
+AC_DEFUN([RUBY_REQUIRE_FUNCS], [dnl
+ m4_map_args_w([$1], [RUBY_REQUIRE_FUNC(], [, [$2])])dnl
+])dnl
diff --git a/tool/m4/ruby_rm_recursive.m4 b/tool/m4/ruby_rm_recursive.m4
index e2c8f66ccc..b97701f88e 100644
--- a/tool/m4/ruby_rm_recursive.m4
+++ b/tool/m4/ruby_rm_recursive.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_RM_RECURSIVE], [dnl
m4_version_prereq([2.70], [], [dnl
# suppress error messages, rm: cannot remove 'conftest.dSYM', from
diff --git a/tool/m4/ruby_setjmp_type.m4 b/tool/m4/ruby_setjmp_type.m4
index 29893543a4..d26af34ea0 100644
--- a/tool/m4/ruby_setjmp_type.m4
+++ b/tool/m4/ruby_setjmp_type.m4
@@ -1,20 +1,17 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_SETJMP_TYPE], [
RUBY_CHECK_BUILTIN_SETJMP
RUBY_CHECK_SETJMP(_setjmpex, [], [@%:@include <setjmpex.h>])
RUBY_CHECK_SETJMP(_setjmp)
-RUBY_CHECK_SETJMP(sigsetjmp, [sigjmp_buf])
AC_MSG_CHECKING(for setjmp type)
setjmp_suffix=
-unset setjmp_sigmask
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],
[__builtin_setjmp], [setjmp=__builtin_setjmp],
[_setjmp], [ setjmp_prefix=_],
- [sigsetjmp,*], [ setjmp_prefix=sig setjmp_sigmask=`expr "$withval" : 'sigsetjmp\(,.*\)'`],
- [sigsetjmp], [ setjmp_prefix=sig],
+ [sigsetjmp*], [ AC_MSG_WARN(No longer use sigsetjmp; use setjmp instead); setjmp_prefix=],
[setjmp], [ setjmp_prefix=],
[setjmpex], [ setjmp_prefix= setjmp_suffix=ex],
[''], [ unset setjmp_prefix],
@@ -34,19 +31,13 @@ AS_IF([test ${setjmp_prefix+set}], [
], [test "$ac_cv_func__setjmp" = yes], [
setjmp_prefix=_
setjmp_suffix=
-], [test "$ac_cv_func_sigsetjmp" = yes], [
- AS_CASE([$target_os],[solaris*|cygwin*],[setjmp_prefix=],[setjmp_prefix=sig])
- setjmp_suffix=
], [
setjmp_prefix=
setjmp_suffix=
])
-AS_IF([test x$setjmp_prefix:$setjmp_sigmask = xsig:], [
- setjmp_sigmask=,0
-])
-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})])
+AC_MSG_RESULT(${setjmp_prefix}setjmp${setjmp_suffix}${setjmp_cast:+\($setjmp_cast\)})
+AC_DEFINE_UNQUOTED([RUBY_SETJMP(env)], [${setjmp_prefix}setjmp${setjmp_suffix}($setjmp_cast(env))])
AC_DEFINE_UNQUOTED([RUBY_LONGJMP(env,val)], [${setjmp_prefix}longjmp($setjmp_cast(env),val)])
-AS_IF([test "(" "$GCC" != yes ")" -o x$setjmp_prefix != x__builtin_], AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, ${setjmp_sigmask+${setjmp_prefix}}jmp_buf))
+AS_CASE(["$GCC:$setjmp_prefix"], [yes:__builtin_], [], AC_DEFINE_UNQUOTED(RUBY_JMP_BUF, jmp_buf))
AS_IF([test x$setjmp_suffix = xex], [AC_DEFINE_UNQUOTED(RUBY_USE_SETJMPEX, 1)])
])dnl
diff --git a/tool/m4/ruby_shared_gc.m4 b/tool/m4/ruby_shared_gc.m4
new file mode 100644
index 0000000000..6f77b96830
--- /dev/null
+++ b/tool/m4/ruby_shared_gc.m4
@@ -0,0 +1,42 @@
+dnl -*- Autoconf -*-
+AC_DEFUN([RUBY_SHARED_GC],[
+AC_ARG_WITH(shared-gc,
+ AS_HELP_STRING([--with-shared-gc=DIR],
+ [Enable replacement of Ruby's GC from a shared library in the specified directory.]),
+ [shared_gc_dir=$withval], [unset shared_gc_dir]
+)
+
+AS_IF([test "$shared_gc_dir" = yes], [
+ AC_MSG_ERROR(you must specify a directory when using --with-shared-gc)
+])
+
+AC_MSG_CHECKING([if building with shared GC support])
+AS_IF([test x"$shared_gc_dir" != x], [
+ AC_MSG_RESULT([yes])
+
+ # Ensure that shared_gc_dir is always an absolute path so that Ruby
+ # never loads a shared GC from a relative path
+ AS_CASE(["$shared_gc_dir"],
+ [/*], [shared_gc_dir=$shared_gc_dir],
+ [shared_gc_dir=`pwd`/$shared_gc_dir]
+ )
+
+ # Ensure that shared_gc_dir always terminates with a /
+ AS_CASE(["$shared_gc_dir"],
+ [*/], [],
+ [shared_gc_dir="$shared_gc_dir/"]
+ )
+
+ AC_DEFINE([USE_SHARED_GC], [1])
+ AC_DEFINE_UNQUOTED([SHARED_GC_DIR], "$shared_gc_dir")
+
+ shared_gc_summary="yes (in $shared_gc_dir)"
+], [
+ AC_MSG_RESULT([no])
+ AC_DEFINE([USE_SHARED_GC], [0])
+
+ shared_gc_summary="no"
+])
+
+AC_SUBST(shared_gc_dir, "${shared_gc_dir}")
+])dnl
diff --git a/tool/m4/ruby_stack_grow_direction.m4 b/tool/m4/ruby_stack_grow_direction.m4
index f5f93579a4..8c6fdd5722 100644
--- a/tool/m4/ruby_stack_grow_direction.m4
+++ b/tool/m4/ruby_stack_grow_direction.m4
@@ -1,9 +1,9 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_STACK_GROW_DIRECTION], [
AS_VAR_PUSHDEF([stack_grow_dir], [rb_cv_stack_grow_dir_$1])
AC_CACHE_CHECK(stack growing direction on $1, stack_grow_dir, [
AS_CASE(["$1"],
-[m68*|x86*|x64|i?86|ppc*|sparc*|alpha*], [ $2=-1],
+[m68*|x86*|x64|i?86|ppc*|sparc*|alpha*|arm*|aarch*], [ $2=-1],
[hppa*], [ $2=+1],
[
AC_RUN_IFELSE([AC_LANG_SOURCE([[
diff --git a/tool/m4/ruby_thread.m4 b/tool/m4/ruby_thread.m4
new file mode 100644
index 0000000000..439c63bc22
--- /dev/null
+++ b/tool/m4/ruby_thread.m4
@@ -0,0 +1,80 @@
+dnl -*- Autoconf -*-
+AC_DEFUN([RUBY_THREAD], [
+AC_ARG_WITH(thread,
+ AS_HELP_STRING([--with-thread=IMPLEMENTATION], [specify the thread implementation to use]),
+ [THREAD_MODEL=$withval], [
+ THREAD_MODEL=
+ AS_CASE(["$target_os"],
+ [freebsd*], [
+ AC_CACHE_CHECK([whether pthread should be enabled by default],
+ rb_cv_enable_pthread_default,
+ [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
+@%:@include <osreldate.h>
+@%:@if __FreeBSD_version < 502102
+@%:@error pthread should be disabled on this platform
+@%:@endif
+ ]])],
+ rb_cv_enable_pthread_default=yes,
+ rb_cv_enable_pthread_default=no)])
+ AS_IF([test $rb_cv_enable_pthread_default = yes],
+ [THREAD_MODEL=pthread],
+ [THREAD_MODEL=none])
+ ],
+ [mingw*], [
+ THREAD_MODEL=win32
+ ],
+ [wasi*], [
+ THREAD_MODEL=none
+ ],
+ [
+ THREAD_MODEL=pthread
+ ]
+ )
+])
+
+AS_IF([test x"$THREAD_MODEL" = xpthread], [
+ AC_CHECK_HEADERS(pthread.h)
+ AS_IF([test x"$ac_cv_header_pthread_h" = xyes], [], [
+ AC_MSG_WARN("Don't know how to find pthread header on your system -- thread support disabled")
+ THREAD_MODEL=none
+ ])
+])
+AS_IF([test x"$THREAD_MODEL" = xpthread], [
+ THREAD_MODEL=none
+ for pthread_lib in thr pthread pthreads c c_r root; do
+ AC_CHECK_LIB($pthread_lib, pthread_create,
+ [THREAD_MODEL=pthread; break])
+ done
+ AS_IF([test x"$THREAD_MODEL" = xpthread], [
+ AC_DEFINE(_REENTRANT)
+ AC_DEFINE(_THREAD_SAFE)
+ AC_DEFINE(HAVE_LIBPTHREAD)
+ AC_CHECK_HEADERS(pthread_np.h, [], [], [@%:@include <pthread.h>])
+ AS_CASE(["$pthread_lib:$target_os"],
+ [c:*], [],
+ [root:*], [],
+ [c_r:*|*:openbsd*|*:mirbsd*], [LIBS="-pthread $LIBS"],
+ [LIBS="-l$pthread_lib $LIBS"])
+ ], [
+ AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled")
+ ])
+])
+
+AS_CASE(["$THREAD_MODEL"],
+[pthread], [],
+[win32], [],
+[none], [],
+[""], [AC_MSG_ERROR(thread model is missing)],
+ [AC_MSG_ERROR(unknown thread model $THREAD_MODEL)])
+AC_MSG_CHECKING(thread model)
+AC_MSG_RESULT($THREAD_MODEL)
+
+THREAD_IMPL_H=thread_$THREAD_MODEL.h
+AS_IF([test ! -f "$srcdir/$THREAD_IMPL_H"],
+ [AC_MSG_ERROR('$srcdir/$THREAD_IMPL_H' must exist)])
+THREAD_IMPL_SRC=thread_$THREAD_MODEL.c
+AS_IF([test ! -f "$srcdir/$THREAD_IMPL_SRC"],
+ [AC_MSG_ERROR('$srcdir/$THREAD_IMPL_SRC' must exist)])
+AC_DEFINE_UNQUOTED(THREAD_IMPL_H, ["$THREAD_IMPL_H"])
+AC_DEFINE_UNQUOTED(THREAD_IMPL_SRC, ["$THREAD_IMPL_SRC"])
+])dnl
diff --git a/tool/m4/ruby_try_cflags.m4 b/tool/m4/ruby_try_cflags.m4
index 8c9f22d50c..b397642aad 100644
--- a/tool/m4/ruby_try_cflags.m4
+++ b/tool/m4/ruby_try_cflags.m4
@@ -1,12 +1,41 @@
-# -*- Autoconf -*-
-AC_DEFUN([RUBY_TRY_CFLAGS], [
- AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])
+dnl -*- Autoconf -*-
+dnl
+dnl Autoconf 2.67 fails to detect `-Werror=old-style-definition` due
+dnl to the old style definition of `main`.
+m4_version_prereq([2.70], [], [
+m4_defun([AC_LANG_PROGRAM(C)], m4_bpatsubst(m4_defn([AC_LANG_PROGRAM(C)]), [main ()], [main (void)]))
+])dnl
+dnl
+AC_DEFUN([_RUBY_TRY_CFLAGS], [
RUBY_WERROR_FLAG([
CFLAGS="[$]CFLAGS $1"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$4]], [[$5]])],
+ [$2], [$3])
+ ])dnl
+])dnl
+AC_DEFUN([RUBY_TRY_CFLAGS], [
+ AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])dnl
+ _RUBY_TRY_CFLAGS([$1],
+ [$2
+ AC_MSG_RESULT(yes)],
+ [$3
+ AC_MSG_RESULT(no)],
+ [$4], [$5])
+])dnl
+
+AC_DEFUN([_RUBY_TRY_CFLAGS_PREPEND], [
+ RUBY_WERROR_FLAG([
+ CFLAGS="$1 [$]CFLAGS"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$4]], [[$5]])],
+ [$2], [$3])
+ ])dnl
+])dnl
+AC_DEFUN([RUBY_TRY_CFLAGS_PREPEND], [
+ AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])dnl
+ _RUBY_TRY_CFLAGS_PREPEND([$1],
[$2
AC_MSG_RESULT(yes)],
[$3
- AC_MSG_RESULT(no)])
- ])
+ AC_MSG_RESULT(no)],
+ [$4], [$5])
])dnl
diff --git a/tool/m4/ruby_try_cxxflags.m4 b/tool/m4/ruby_try_cxxflags.m4
index 265f79a450..06f645f546 100644
--- a/tool/m4/ruby_try_cxxflags.m4
+++ b/tool/m4/ruby_try_cxxflags.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_TRY_CXXFLAGS], [
save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS="[$]CXXFLAGS $1"
diff --git a/tool/m4/ruby_try_ldflags.m4 b/tool/m4/ruby_try_ldflags.m4
index d27940c7b2..c3a6be0fb3 100644
--- a/tool/m4/ruby_try_ldflags.m4
+++ b/tool/m4/ruby_try_ldflags.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_TRY_LDFLAGS], [
save_LDFLAGS="$LDFLAGS"
LDFLAGS="[$]LDFLAGS $1"
diff --git a/tool/m4/ruby_type_attribute.m4 b/tool/m4/ruby_type_attribute.m4
index 6ddaa20c53..5ea1219c6e 100644
--- a/tool/m4/ruby_type_attribute.m4
+++ b/tool/m4/ruby_type_attribute.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
dnl RUBY_TYPE_ATTRIBUTE(attrib, macroname, cachevar, condition)
AC_DEFUN([RUBY_TYPE_ATTRIBUTE], [dnl
RUBY_DECL_ATTRIBUTE([$1], [$2], [$3], [$4],
diff --git a/tool/m4/ruby_universal_arch.m4 b/tool/m4/ruby_universal_arch.m4
index e2f698cbc0..d3e0dd0b47 100644
--- a/tool/m4/ruby_universal_arch.m4
+++ b/tool/m4/ruby_universal_arch.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_UNIVERSAL_ARCH], [
# RUBY_UNIVERSAL_ARCH begin
ARCH_FLAG=`expr " $CXXFLAGS " : ['.* \(-m[0-9][0-9]*\) ']`
@@ -17,7 +17,7 @@ AS_IF([test ${target_archs+set}], [
cpu=$archs
cpu=`echo $cpu | sed 's/-.*-.*//'`
universal_binary="${universal_binary+$universal_binary,}$cpu"
- universal_archnames="${universal_archnames} ${archs}=${cpu}"
+ universal_archnames="${universal_archnames:+$universal_archnames }${archs}=${cpu}"
ARCH_FLAG="${ARCH_FLAG+$ARCH_FLAG }-arch $archs"
])
done
@@ -40,7 +40,7 @@ AS_IF([test ${target_archs+set}], [
AS_IF([$CC $CFLAGS $ARCH_FLAG -o conftest conftest.c > /dev/null 2>&1], [
rm -fr conftest.*
], [test -z "$ARCH_FLAG"], [
- RUBY_DEFAULT_ARCH("$target_archs")
+ RUBY_DEFAULT_ARCH($target_archs)
])
])
target_cpu=${target_archs}
@@ -73,7 +73,7 @@ EOF
sed -n 's/^"processor-name=\(.*\)"/\1/p'`
target="$target_cpu${target}"
AC_MSG_RESULT([$target_cpu])
- ])
+ ])
])
target_archs="$target_cpu"
])
@@ -88,3 +88,35 @@ AS_IF([test "x${ARCH_FLAG}" != x], [
])
# RUBY_UNIVERSAL_ARCH end
])dnl
+dnl
+AC_DEFUN([RUBY_UNIVERSAL_CHECK_HEADER_COND], [ dnl
+ AC_CACHE_CHECK([for $2 when $1], [$3],
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT([$6])[
+ @%:@if ]$1[
+ @%:@include <]$2[>
+ @%:@endif]], [[]])],
+ [AS_VAR_SET($3, yes)],
+ [AS_VAR_SET($3, no)]))
+ AS_VAR_IF([$3], [yes], [dnl
+ printf "@%:@if %s\n" "$1" >>confdefs.h
+ AC_DEFINE_UNQUOTED(HAVE_[]AS_TR_CPP($2), 1)dnl
+ printf "@%:@endif\n" >>confdefs.h dnl
+ $4], [$5])
+])dnl
+dnl
+dnl RUBY_UNIVERSAL_CHECK_HEADER(CPU-LIST, HEADER,
+dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND],
+dnl [INCLUDES = DEFAULT-INCLUDES])
+AC_DEFUN([RUBY_UNIVERSAL_CHECK_HEADER], [ dnl
+ m4_if([$# dnl
+ ], [0], [], [ dnl
+ m4_foreach([rb_Header], [$1],
+ [AS_CASE([",$target_archs,"], [*,]rb_Header[,*],
+ [RUBY_UNIVERSAL_CHECK_HEADER_COND]([defined(__[]rb_Header[]__)],
+ [$2], [rb_cv_header_[]AS_TR_SH($2)_on_[]AS_TR_SH(rb_Header)],
+ [$3], [$4], [$5])
+ )
+ ])
+ ])dnl
+])dnl
diff --git a/tool/m4/ruby_wasm_tools.m4 b/tool/m4/ruby_wasm_tools.m4
new file mode 100644
index 0000000000..efc017e771
--- /dev/null
+++ b/tool/m4/ruby_wasm_tools.m4
@@ -0,0 +1,25 @@
+dnl -*- Autoconf -*-
+AC_DEFUN([RUBY_WASM_TOOLS],
+[AS_CASE(["$target_os"],
+[wasi*], [
+ AC_CHECK_TOOL(WASMOPT, wasm-opt)
+ AS_IF([test x"${WASMOPT}" = x], [
+ AC_MSG_ERROR([wasm-opt is required])
+ ])
+ AC_SUBST(wasmoptflags)
+ : ${wasmoptflags=-O3}
+
+ AC_MSG_CHECKING([whether \$WASI_SDK_PATH is set])
+ AS_IF([test x"${WASI_SDK_PATH}" = x], [
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([WASI_SDK_PATH environment variable is required])
+ ], [
+ AC_MSG_RESULT([yes])
+ CC="${CC:-${WASI_SDK_PATH}/bin/clang}"
+ LD="${LD:-${WASI_SDK_PATH}/bin/clang}"
+ AR="${AR:-${WASI_SDK_PATH}/bin/llvm-ar}"
+ RANLIB="${RANLIB:-${WASI_SDK_PATH}/bin/llvm-ranlib}"
+ OBJCOPY="${OBJCOPY:-${WASI_SDK_PATH}/bin/llvm-objcopy}"
+ ])
+])
+])dnl
diff --git a/tool/m4/ruby_werror_flag.m4 b/tool/m4/ruby_werror_flag.m4
index e9155c8309..616a7f6abf 100644
--- a/tool/m4/ruby_werror_flag.m4
+++ b/tool/m4/ruby_werror_flag.m4
@@ -1,4 +1,4 @@
-# -*- Autoconf -*-
+dnl -*- Autoconf -*-
AC_DEFUN([RUBY_WERROR_FLAG], [dnl
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $rb_cv_warnflags"