configure.ac: Manage OPT_DIR better (#6367)
* Check rpath flag earlier * Manage OPT_DIR at once
This commit is contained in:
parent
9299db49f5
commit
e2b47b832f
Notes:
git
2022-09-14 10:43:02 +09:00
Merged-By: mrkn <mrkn@ruby-lang.org>
97
configure.ac
97
configure.ac
@ -497,6 +497,7 @@ AS_CASE(["$target_os"],
|
|||||||
AC_DEFINE_UNQUOTED(RUBY_MSVCRT_VERSION, $RT_VER)
|
AC_DEFINE_UNQUOTED(RUBY_MSVCRT_VERSION, $RT_VER)
|
||||||
sysconfdir=
|
sysconfdir=
|
||||||
])
|
])
|
||||||
|
rb_cv_binary_elf=no
|
||||||
: ${enable_shared=yes}
|
: ${enable_shared=yes}
|
||||||
],
|
],
|
||||||
[hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi <toyoda@npd.kishou.go.jp>
|
[hiuxmpp*], [AC_DEFINE(__HIUX_MPP__)]) # by TOYODA Eizi <toyoda@npd.kishou.go.jp>
|
||||||
@ -606,22 +607,39 @@ RUBY_WERROR_FLAG([
|
|||||||
cd .. && rm -fr tmp.$$.try_link
|
cd .. && rm -fr tmp.$$.try_link
|
||||||
])
|
])
|
||||||
|
|
||||||
: ${RPATHFLAG=''}
|
: "rpath" && {
|
||||||
rpathflag=''
|
AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
|
||||||
AS_IF([test x"${RPATHFLAG}" = x], [
|
[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[
|
||||||
AS_CASE(["$target_os"],
|
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:'],
|
[aix*], [rpathflag='-blibpath:'],
|
||||||
[for rpathflag in -R "-rpath "; do
|
[for rpathflag in "-rpath " -R; do
|
||||||
AS_CASE("$rpathflag",
|
AS_CASE("$rpathflag",
|
||||||
[*" "], [AS_CASE(["${linker_flag}"],
|
[*" "], [AS_CASE(["${linker_flag}"],
|
||||||
[*,], [rpathflag=`echo "$rpathflag" | tr ' ' ,`])])
|
[*,], [rpathflag=`echo "$rpathflag" | tr ' ' ,`])])
|
||||||
rpathflag="${linker_flag}${rpathflag}"
|
rpathflag="${linker_flag}${rpathflag}"
|
||||||
RUBY_TRY_LDFLAGS([${rpathflag}.], [], [rpathflag=])
|
RUBY_TRY_LDFLAGS([${rpathflag}.], [], [rpathflag=])
|
||||||
AS_IF([test "x${rpathflag}" != x], [])
|
AS_IF([test "x${rpathflag}" != x], [break])
|
||||||
done])
|
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])
|
RUBY_TRY_LDFLAGS(-fdeclspec, [fdeclspec=yes], [fdeclspec=no])
|
||||||
AS_IF([test "$fdeclspec" = yes], [
|
AS_IF([test "$fdeclspec" = yes], [
|
||||||
@ -911,17 +929,25 @@ AS_CASE(["$target_cpu"], [[i[3-6]86*]], [
|
|||||||
AS_IF([test "$rb_cv_gcc_compiler_cas" = i486], [ARCH_FLAG="-march=i486"])
|
AS_IF([test "$rb_cv_gcc_compiler_cas" = i486], [ARCH_FLAG="-march=i486"])
|
||||||
])
|
])
|
||||||
|
|
||||||
|
OPT_DIR=
|
||||||
AC_ARG_WITH(opt-dir,
|
AC_ARG_WITH(opt-dir,
|
||||||
AS_HELP_STRING([--with-opt-dir=DIR-LIST],
|
AS_HELP_STRING([--with-opt-dir=DIR-LIST],
|
||||||
[add optional headers and libraries directories separated by $PATH_SEPARATOR]),
|
[add optional headers and libraries directories separated by $PATH_SEPARATOR]),
|
||||||
[
|
[OPT_DIR="${OPT_DIR:+$OPT_DIR$PATH_SEPARATOR}$withval"], [])
|
||||||
val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -I\1/include|g;s/^ //"`
|
|
||||||
CPPFLAGS="$CPPFLAGS $val"
|
AS_IF([test "x$OPT_DIR" != x], [
|
||||||
val=`echo "$PATH_SEPARATOR$withval" | sed "s|$PATH_SEPARATOR\([[^$PATH_SEPARATOR]*]\)| -L\1/lib${rpathflag:+ $rpathflag\\\\1/lib}|g;s/^ //"`
|
val=`IFS="$PATH_SEPARATOR"
|
||||||
LDFLAGS="$LDFLAGS $val"
|
for dir in $OPT_DIR; do
|
||||||
LDFLAGS_OPTDIR="$val"
|
test -z "$dir" && continue
|
||||||
OPT_DIR="$withval"
|
echo x ${LIBPATHFLAG} ${RPATHFLAG} |
|
||||||
], [OPT_DIR=])
|
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_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\""
|
test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cxxflags $ARCH_FLAG\""
|
||||||
@ -1140,7 +1166,6 @@ main()
|
|||||||
ac_cv_func_getpgrp_void=no
|
ac_cv_func_getpgrp_void=no
|
||||||
ac_cv_func_memcmp_working=yes
|
ac_cv_func_memcmp_working=yes
|
||||||
ac_cv_lib_dl_dlopen=no
|
ac_cv_lib_dl_dlopen=no
|
||||||
rb_cv_binary_elf=no
|
|
||||||
rb_cv_negative_time_t=yes
|
rb_cv_negative_time_t=yes
|
||||||
ac_cv_func_fcntl=yes
|
ac_cv_func_fcntl=yes
|
||||||
ac_cv_func_flock=yes
|
ac_cv_func_flock=yes
|
||||||
@ -2850,12 +2875,6 @@ AC_ARG_WITH(dln-a-out,
|
|||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
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], [
|
AS_IF([test "$rb_cv_binary_elf" = yes], [
|
||||||
AC_DEFINE(USE_ELF)
|
AC_DEFINE(USE_ELF)
|
||||||
AC_CHECK_HEADERS([elf.h elf_abi.h])
|
AC_CHECK_HEADERS([elf.h elf_abi.h])
|
||||||
@ -2933,11 +2952,6 @@ STATIC=
|
|||||||
}
|
}
|
||||||
|
|
||||||
: "rpath" && {
|
: "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"],
|
AS_CASE(["$target_os"],
|
||||||
[solaris*], [ AS_IF([test "$GCC" = yes], [
|
[solaris*], [ AS_IF([test "$GCC" = yes], [
|
||||||
: ${LDSHARED='$(CC) -shared'}
|
: ${LDSHARED='$(CC) -shared'}
|
||||||
@ -2978,7 +2992,6 @@ STATIC=
|
|||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[interix*], [ : ${LDSHARED='$(CC) -shared'}
|
[interix*], [ : ${LDSHARED='$(CC) -shared'}
|
||||||
XLDFLAGS="$XLDFLAGS -Wl,-E"
|
XLDFLAGS="$XLDFLAGS -Wl,-E"
|
||||||
LIBPATHFLAG=" -L%1\$-s"
|
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[freebsd*|dragonfly*], [
|
[freebsd*|dragonfly*], [
|
||||||
: ${LDSHARED='$(CC) -shared'}
|
: ${LDSHARED='$(CC) -shared'}
|
||||||
@ -3055,12 +3068,6 @@ STATIC=
|
|||||||
done
|
done
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
|
|
||||||
AS_IF([test "$enable_rpath:${RPATHFLAG}" = yes:], [
|
|
||||||
AS_IF([test "x$rpathflag" != x], [
|
|
||||||
RPATHFLAG=" ${rpathflag}%1\$-s"
|
|
||||||
])
|
|
||||||
])
|
|
||||||
}
|
}
|
||||||
|
|
||||||
AS_IF([test "${LDSHAREDXX}" = ""], [
|
AS_IF([test "${LDSHAREDXX}" = ""], [
|
||||||
@ -3077,7 +3084,6 @@ AS_IF([test "${LDSHAREDXX}" = ""], [
|
|||||||
[ld" "*], [
|
[ld" "*], [
|
||||||
])
|
])
|
||||||
])
|
])
|
||||||
AS_CASE([${RPATHFLAG}],[*'%1$'*],[: ${LIBPATHFLAG=' -L%1$-s'}],[: ${LIBPATHFLAG=' -L%s'}])
|
|
||||||
|
|
||||||
AC_SUBST(LINK_SO)
|
AC_SUBST(LINK_SO)
|
||||||
AC_SUBST(LIBPATHFLAG)
|
AC_SUBST(LIBPATHFLAG)
|
||||||
@ -3086,23 +3092,6 @@ AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")
|
|||||||
AC_SUBST(PRELOADENV, "${PRELOADENV-LD_PRELOAD}")
|
AC_SUBST(PRELOADENV, "${PRELOADENV-LD_PRELOAD}")
|
||||||
AC_SUBST(TRY_LINK)
|
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"],
|
AS_CASE(["$target_os"],
|
||||||
[freebsd*], [
|
[freebsd*], [
|
||||||
AC_CHECK_LIB([procstat], [procstat_open_sysctl])
|
AC_CHECK_LIB([procstat], [procstat_open_sysctl])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user