summaryrefslogtreecommitdiff
path: root/tool
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2023-12-27 12:37:21 +0900
committerTakashi Kokubun <takashikkbn@gmail.com>2024-07-28 19:55:48 -0700
commit6d744837abc3f7f71a1f10c7ca399201f6f05e43 (patch)
treeafd9c4b7f98d9912394c8e4b72858675db2c27bf /tool
parent7571ad42f42939d172ec9a68dfe56aac724ee2ef (diff)
[Bug #20088] Fix ARCH_FLAG for cross compiling
Diffstat (limited to 'tool')
-rw-r--r--tool/m4/ruby_default_arch.m412
-rw-r--r--tool/m4/ruby_try_cflags.m413
-rw-r--r--tool/m4/ruby_universal_arch.m42
3 files changed, 17 insertions, 10 deletions
diff --git a/tool/m4/ruby_default_arch.m4 b/tool/m4/ruby_default_arch.m4
index a0f7c6fe2f..2f25ba81ee 100644
--- a/tool/m4/ruby_default_arch.m4
+++ b/tool/m4/ruby_default_arch.m4
@@ -10,10 +10,12 @@ AS_CASE([$1:"$host_cpu"],
[[i[3-6]86]:x86_64], [ARCH_FLAG=-m32],
[ppc64:ppc*], [ARCH_FLAG=-m64],
[ppc*:ppc64], [ARCH_FLAG=-m32],
- AS_CASE([$build_os],
- [darwin*], [ARCH_FLAG="-arch "$1],
- [ARCH_FLAG=-march=$1]
- )
+ [
+ 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])
+AC_MSG_RESULT([${ARCH_FLAG:-'(none)'}])
])dnl
diff --git a/tool/m4/ruby_try_cflags.m4 b/tool/m4/ruby_try_cflags.m4
index 672f4f8e51..b74718fe5e 100644
--- a/tool/m4/ruby_try_cflags.m4
+++ b/tool/m4/ruby_try_cflags.m4
@@ -6,14 +6,19 @@ 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)])
- ])
+ AC_MSG_RESULT(no)],
+ [$4], [$5])
])dnl
diff --git a/tool/m4/ruby_universal_arch.m4 b/tool/m4/ruby_universal_arch.m4
index 4cbea74c4e..d3e0dd0b47 100644
--- a/tool/m4/ruby_universal_arch.m4
+++ b/tool/m4/ruby_universal_arch.m4
@@ -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}