summaryrefslogtreecommitdiff
path: root/tool/m4
diff options
context:
space:
mode:
Diffstat (limited to 'tool/m4')
-rw-r--r--tool/m4/ruby_append_option.m44
-rw-r--r--tool/m4/ruby_check_header.m48
-rw-r--r--tool/m4/ruby_default_arch.m424
-rw-r--r--tool/m4/ruby_shared_gc.m419
-rw-r--r--tool/m4/ruby_stack_grow_direction.m42
-rw-r--r--tool/m4/ruby_try_cflags.m430
-rw-r--r--tool/m4/ruby_universal_arch.m46
-rw-r--r--tool/m4/ruby_wasm_tools.m416
8 files changed, 88 insertions, 21 deletions
diff --git a/tool/m4/ruby_append_option.m4 b/tool/m4/ruby_append_option.m4
index ff828d2162..98359fa1f9 100644
--- a/tool/m4/ruby_append_option.m4
+++ b/tool/m4/ruby_append_option.m4
@@ -3,3 +3,7 @@ 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_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_default_arch.m4 b/tool/m4/ruby_default_arch.m4
index 03e52f7776..2f25ba81ee 100644
--- a/tool/m4/ruby_default_arch.m4
+++ b/tool/m4/ruby_default_arch.m4
@@ -1,11 +1,21 @@
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])
+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_shared_gc.m4 b/tool/m4/ruby_shared_gc.m4
new file mode 100644
index 0000000000..a27b9b8505
--- /dev/null
+++ b/tool/m4/ruby_shared_gc.m4
@@ -0,0 +1,19 @@
+dnl -*- Autoconf -*-
+AC_DEFUN([RUBY_SHARED_GC],[
+AC_ARG_WITH(shared-gc,
+ AS_HELP_STRING([--with-shared-gc],
+ [Enable replacement of Ruby's GC from a shared library.]),
+ [with_shared_gc=$withval], [unset with_shared_gc]
+)
+
+AC_SUBST([with_shared_gc])
+AC_MSG_CHECKING([if Ruby is build with shared GC support])
+AS_IF([test "$with_shared_gc" = "yes"], [
+ AC_MSG_RESULT([yes])
+ AC_DEFINE([USE_SHARED_GC], [1])
+], [
+ AC_MSG_RESULT([no])
+ with_shared_gc="no"
+ AC_DEFINE([USE_SHARED_GC], [0])
+])
+])dnl
diff --git a/tool/m4/ruby_stack_grow_direction.m4 b/tool/m4/ruby_stack_grow_direction.m4
index a4d205cc3c..8c6fdd5722 100644
--- a/tool/m4/ruby_stack_grow_direction.m4
+++ b/tool/m4/ruby_stack_grow_direction.m4
@@ -3,7 +3,7 @@ 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_try_cflags.m4 b/tool/m4/ruby_try_cflags.m4
index 672f4f8e51..b397642aad 100644
--- a/tool/m4/ruby_try_cflags.m4
+++ b/tool/m4/ruby_try_cflags.m4
@@ -6,14 +6,36 @@ 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], [
- AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])
+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_universal_arch.m4 b/tool/m4/ruby_universal_arch.m4
index c8914c88d9..d3e0dd0b47 100644
--- a/tool/m4/ruby_universal_arch.m4
+++ b/tool/m4/ruby_universal_arch.m4
@@ -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"
])
diff --git a/tool/m4/ruby_wasm_tools.m4 b/tool/m4/ruby_wasm_tools.m4
index d58de88ec8..efc017e771 100644
--- a/tool/m4/ruby_wasm_tools.m4
+++ b/tool/m4/ruby_wasm_tools.m4
@@ -9,13 +9,17 @@ AC_DEFUN([RUBY_WASM_TOOLS],
AC_SUBST(wasmoptflags)
: ${wasmoptflags=-O3}
- AC_MSG_CHECKING([wheather \$WASI_SDK_PATH is set])
- AS_IF([test x"${WASI_SDK_PATH}" = x], [AC_MSG_RESULT([no])], [
+ 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="${WASI_SDK_PATH}/bin/clang"
- LD="${WASI_SDK_PATH}/bin/clang"
- AR="${WASI_SDK_PATH}/bin/llvm-ar"
- RANLIB="${WASI_SDK_PATH}/bin/llvm-ranlib"
+ 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