diff options
Diffstat (limited to 'tool/m4')
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" |