ruby-changes:73722
From: nagachika <ko1@a...>
Date: Sun, 25 Sep 2022 16:01:38 +0900 (JST)
Subject: [ruby-changes:73722] d1b36c8270 (ruby_3_1): merge revision(s) e2b47b832f53b2fd0626774a573a22c15a933c64,f512df73986c74e2f4bd65ca642879a0618da213,2e25b85a7e4268676fcdf17b5975c2fd60066ce1: [Backport #19014]
https://git.ruby-lang.org/ruby.git/commit/?id=d1b36c8270 From d1b36c827036765ab68c88ab4315a26a220d5f06 Mon Sep 17 00:00:00 2001 From: nagachika <nagachika@r...> Date: Sun, 25 Sep 2022 16:01:13 +0900 Subject: merge revision(s) e2b47b832f53b2fd0626774a573a22c15a933c64,f512df73986c74e2f4bd65ca642879a0618da213,2e25b85a7e4268676fcdf17b5975c2fd60066ce1: [Backport #19014] configure.ac: Manage OPT_DIR better (#6367) * Check rpath flag earlier * Manage OPT_DIR at once --- configure.ac | 97 +++++++++++++++++++++++++++--------------------------------- 1 file changed, 43 insertions(+), 54 deletions(-) configure.ac: Add --with-gmp-dir (#6366) Add the `--with-gmp-dir` to specify the prefix directory of GMP. The`--without-gmp` option is preserved for convenience. It can be used to force to reject using GMP even if the `--with-gmp-dir` option is specified. --- configure.ac | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) configure.ac: Apply suggestions from code review in #6366 Co-authored-by: Nobuyoshi Nakada <nobu@r...> --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- configure.ac | 112 +++++++++++++++++++++++++++-------------------------------- version.h | 2 +- 2 files changed, 53 insertions(+), 61 deletions(-) diff --git a/configure.ac b/configure.ac index f1c535fd47..7a021b6b9f 100644 --- a/configure.ac +++ b/configure.ac @@ -461,6 +461,7 @@ AS_CASE(["$target_os"], https://github.com/ruby/ruby/blob/trunk/configure.ac#L461 AC_DEFINE_UNQUOTED(RUBY_MSVCRT_VERSION, $RT_VER) sysconfdir= ]) + rb_cv_binary_elf=no : ${enable_shared=yes} ], [hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi <toyoda@n...> @@ -575,23 +576,39 @@ RUBY_WERROR_FLAG([ https://github.com/ruby/ruby/blob/trunk/configure.ac#L576 cd .. && rm -fr tmp.$$.try_link ]) -: ${RPATHFLAG=''} -rpathflag='' -AS_IF([test x"${RPATHFLAG}" = x], [ - AS_CASE(["$target_os"], - [hpux*], [AS_IF([test "$rb_cv_prog_gnu_ld" = no], [rpathflag='+b '])], +: "rpath" && { + AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf, + [AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ + AS_CASE(["`head -1 conftest$EXEEXT | tr -dc '\177ELF' | tr '\177' .`"], + [.ELF*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])], + [rb_cv_binary_elf=no])]) + + rpathflag='' + AS_IF([test x"${RPATHFLAG=}" = x], [ + AS_CASE(["$target_os"], [aix*], [rpathflag='-blibpath:'], - [for rpathflag in -R "-rpath "; do + [for rpathflag in "-rpath " -R; do AS_CASE("$rpathflag", [*" "], [AS_CASE(["${linker_flag}"], [*,], [rpathflag=`echo "$rpathflag" | tr ' ' ,`])]) rpathflag="${linker_flag}${rpathflag}" RUBY_TRY_LDFLAGS([${rpathflag}.], [], [rpathflag=]) - AS_IF([test "x${rpathflag}" != x], []) + AS_IF([test "x${rpathflag}" != x], [break]) done]) -], [ - rpathflag=`echo "$RPATHFLAG" | sed 's/%.*//'` -]) + ], [ + rpathflag=`echo "$RPATHFLAG" | sed 's/%.*//'` + ]) + + AC_ARG_ENABLE(rpath, + AS_HELP_STRING([--enable-rpath], [embed run path into extension libraries. + enabled by default on ELF platforms]), + [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"]) + + AS_IF([test "$enable_rpath:${RPATHFLAG}" = yes:], [ + RPATHFLAG="${rpathflag:+ ${rpathflag}%1\$-s}" + ]) + AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}]) +} RUBY_TRY_LDFLAGS(-fdeclspec, [fdeclspec=yes], [fdeclspec=no]) AS_IF([test "$fdeclspec" = yes], [ @@ -898,17 +915,34 @@ AS_CASE(["$target_cpu"], [[i[3-6]86*]], [ https://github.com/ruby/ruby/blob/trunk/configure.ac#L915 AS_IF([test "$rb_cv_gcc_compiler_cas" = i486], [ARCH_FLAG="-march=i486"]) ]) +OPT_DIR= +AC_ARG_WITH([gmp-dir], + AS_HELP_STRING([--with-gmp-dir=DIR], + [specify the prefix directory where gmp is installed]), + [OPT_DIR="${OPT_DIR:+$OPT_DIR$PATH_SEPARATOR}$withval"], []) +AC_ARG_WITH([gmp], + [AS_HELP_STRING([--without-gmp], + [disable GNU GMP to accelerate Bignum operations])], + [], [with_gmp=yes]) + AC_ARG_WITH(opt-dir, AS_HELP_STRING([--with-opt-dir=DIR-LIST], [add optional headers and libraries directories separated by $PATH_SEPARATOR]), - [ - val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -I\1/include|g;s/^ //"` - CPPFLAGS="$CPPFLAGS $val" - val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -L\1/lib${rpathflag:+ $rpathflag\\\\1/lib}|g;s/^ //"` - LDFLAGS="$LDFLAGS $val" - LDFLAGS_OPTDIR="$val" - OPT_DIR="$withval" - ], [OPT_DIR=]) + [OPT_DIR="${OPT_DIR:+$OPT_DIR$PATH_SEPARATOR}$withval"], []) + +AS_IF([test "x$OPT_DIR" != x], [ + val=`IFS="$PATH_SEPARATOR" + for dir in $OPT_DIR; do + test -z "$dir" && continue + echo x ${LIBPATHFLAG} ${RPATHFLAG} | + sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g" + done | tr '\012' ' ' | sed 's/ *$//'` + LDFLAGS="${LDFLAGS:+$LDFLAGS }$val" + DLDFLAGS="${DLDFLAGS:+$DLDFLAGS }$val" + LDFLAGS_OPTDIR="$val" + CPPFLAGS="${CPPFLAGS:+$CPPFLAGS }"`echo "$OPT_DIR" | tr "${PATH_SEPARATOR}" '\012' | + sed '/^$/d;s|^|-I|;s|$|/include|' | tr '\012' ' ' | sed 's/ *$//'` +]) test -z "${ac_env_CFLAGS_set}" -a -n "${cflags+set}" && eval CFLAGS="\"$cflags $ARCH_FLAG\"" test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\"" @@ -1153,7 +1187,6 @@ main() https://github.com/ruby/ruby/blob/trunk/configure.ac#L1187 ac_cv_func_getpgrp_void=no ac_cv_func_memcmp_working=yes ac_cv_lib_dl_dlopen=no - rb_cv_binary_elf=no rb_cv_negative_time_t=yes ac_cv_func_fcntl=yes ac_cv_func_flock=yes @@ -1300,11 +1333,6 @@ AS_CASE("$target_cpu", [x64|x86_64|i[3-6]86*], [ https://github.com/ruby/ruby/blob/trunk/configure.ac#L1333 ]) RUBY_UNIVERSAL_CHECK_HEADER([x86_64, i386], x86intrin.h) -AC_ARG_WITH([gmp], - [AS_HELP_STRING([--without-gmp], - [disable GNU GMP to accelerate Bignum operations])], - [], - [with_gmp=yes]) AS_IF([test "x$with_gmp" != xno], [AC_CHECK_HEADERS(gmp.h) AS_IF([test "x$ac_cv_header_gmp_h" != xno], @@ -2833,12 +2861,6 @@ AC_ARG_WITH(dln-a-out, https://github.com/ruby/ruby/blob/trunk/configure.ac#L2861 ]) ]) -AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf, -[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[ -AS_CASE(["`head -1 conftest$EXEEXT | tr -dc '\177ELF' | tr '\177' .`"], -[.ELF*], [rb_cv_binary_elf=yes], [rb_cv_binary_elf=no])], -rb_cv_binary_elf=no)]) - AS_IF([test "$rb_cv_binary_elf" = yes], [ AC_DEFINE(USE_ELF) AC_CHECK_HEADERS([elf.h elf_abi.h]) @@ -2917,11 +2939,6 @@ STATIC= https://github.com/ruby/ruby/blob/trunk/configure.ac#L2939 } : "rpath" && { - AC_ARG_ENABLE(rpath, - AS_HELP_STRING([--enable-rpath], [embed run path into extension libraries. - enabled by default on ELF platforms]), - [enable_rpath=$enableval], [enable_rpath="$rb_cv_binary_elf"]) - AS_CASE(["$target_os"], [hpux*], [ DLDFLAGS="$DLDFLAGS -E" : ${LDSHARED='$(LD) -b'} @@ -2967,7 +2984,6 @@ STATIC= https://github.com/ruby/ruby/blob/trunk/configure.ac#L2984 rb_cv_dlopen=yes], [interix*], [ : ${LDSHARED='$(CC) -shared'} XLDFLAGS="$XLDFLAGS -Wl,-E" - LIBPATHFLAG=" -L%1\$-s" rb_cv_dlopen=yes], [freebsd*|dragonfly*], [ : ${LDSHARED='$(CC) -shared'} @@ -3044,12 +3060,6 @@ STATIC= https://github.com/ruby/ruby/blob/trunk/configure.ac#L3060 done ]) ]) - - AS_IF([test "$enable_rpath:${RPATHFLAG}" = yes:], [ - AS_IF([test "x$rpathflag" != x], [ - RPATHFLAG=" ${rpathflag}%1\$-s" - ]) - ]) } AS_IF([test "${LDSHAREDXX}" = ""], [ @@ -3066,7 +3076,6 @@ AS_IF([test "${LDSHAREDXX}" = ""], [ https://github.com/ruby/ruby/blob/trunk/configure.ac#L3076 [ld" "*], [ ]) ]) -AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}]) AC_SUBST(LINK_SO) AC_SUBST(LIBPATHFLAG) @@ -3075,23 +3084,6 @@ AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}") https://github.com/ruby/ruby/blob/trunk/configure.ac#L3084 AC_SUBST(PRELOADENV, "${PRELOADENV-LD_PRELOAD}") AC_SUBST(TRY_LINK) -AS_IF([test "x$OPT_DIR" != x], [ - pat=`echo "${LDFLAGS_OPTDIR}" | sed ['s/[][\\.*|]/\\\\&/']` - LDFLAGS=`echo "${LDFLAGS}" | sed "s| ${pat}||"` - val=`IFS="$PATH_SEPARATOR" - for dir in $OPT_DIR; do - echo x ${LIBPATHFLAG} ${RPATHFLAG} | - sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${dir}/lib${IFS}g;s${IFS}%s${IFS}${dir}/lib${IFS}g" - done | tr '\012' ' ' | sed 's/ *$//'` - AS_IF([test x"$val" != x], [ - test x"${LDFLAGS}" = x || LDFLAGS="$LDFLAGS " - LDFLAGS="$LDFLAGS$val" - test x"${DLDFLAGS}" = x || DLDFLAGS="$DLDFLAGS " - DLDFLAGS="$DLDFLAGS$val" - ]) - LDFLAGS_OPTDIR="$val" -]) - AS_CASE(["$target_os"], [freebsd*], [ AC_CHECK_LIB([procstat], [procstat_open_sysctl]) diff --git a/version.h b/version.h index 01479b5b43..a9f5868a2f 100644 --- a/version.h +++ b/version.h @@ -11,7 +11,7 @@ https://github.com/ruby/ruby/blob/trunk/version.h#L11 # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 3 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 62 +#define RUBY_PATCHLEVEL 63 #define RUBY_RELEASE_YEAR 2022 #define RUBY_RELEASE_MONTH 9 -- cgit v1.2.1 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/