aboutsummaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-07-06 21:16:00 +0900
committerGitHub <noreply@github.com>2023-07-06 21:16:00 +0900
commit75f8781c08da421d6bcfb2c3c8b7b74efea3bec2 (patch)
tree275760678808750c70aa86299240bb537e46d2d1 /configure.ac
parent20478cafe15f1911a9f2e6f91a43a17c6430f44b (diff)
downloadruby-75f8781c08da421d6bcfb2c3c8b7b74efea3bec2.tar.gz
Disable YJIT if objcopy command is old
Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac17
1 files changed, 15 insertions, 2 deletions
diff --git a/configure.ac b/configure.ac
index 0b01430db1..54e28e9dc8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3790,13 +3790,23 @@ AS_IF([test "$cross_compiling" = no],
)
)
+dnl Needs newer objcopy in order to localize symbols added by rustc
+YJIT_OBJCOPY_OK=no
+AS_CASE(["$OBJCOPY"], [""|:], [], [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])], [
+ AS_IF([$OBJCOPY --wildcard --keep-global-symbol='*main' --localize-symbol='__*' conftest.$OBJEXT 2>/dev/null], [
+ YJIT_OBJCOPY_OK=yes
+ ])
+ ])
+])
+
dnl build YJIT in release mode if rustc >= 1.58.0 is present and we are on a supported platform
AC_ARG_ENABLE(yjit,
AS_HELP_STRING([--enable-yjit],
[enable in-process JIT compiler that requires Rust build tools. enabled by default on supported platforms if rustc 1.58.0+ is available]),
[YJIT_SUPPORT=$enableval],
- [AS_CASE(["$YJIT_TARGET_OK:$YJIT_RUSTC_OK"],
- [yes:yes], [
+ [AS_CASE(["$YJIT_TARGET_OK:$YJIT_RUSTC_OK:$YJIT_OBJCOPY_OK"],
+ [yes:yes:yes], [
YJIT_SUPPORT=yes
],
[YJIT_SUPPORT=no]
@@ -3811,6 +3821,9 @@ AS_CASE(["${YJIT_SUPPORT}"],
AS_IF([test x"$RUSTC" = "xno"],
AC_MSG_ERROR([rustc is required. Installation instructions available at https://www.rust-lang.org/tools/install])
)
+ AS_IF([test x"$YJIT_OBJCOPY_OK" = yno],
+ AC_MSG_ERROR([$OBJCOPY does not recognize --wildcard option or something])
+ )
AS_CASE(["${YJIT_SUPPORT}"],
[yes], [