mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	This add support for bmake, which should allow building with `configure --enable-yjit` for the BSDs. Tested on FreeBSD 13 and on macOS with `configure MAKE=bmake` on a case-sensitive file system. It works by including a fragment into the Makefile through the configure script, similar to common.mk. It uses the always rebuild approach to keep build system changes minimal.
		
			
				
	
	
		
			4466 lines
		
	
	
	
		
			145 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			4466 lines
		
	
	
	
		
			145 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
dnl Process this file with autoconf to produce a configure script.
 | 
						|
AC_INIT
 | 
						|
{
 | 
						|
AC_CONFIG_AUX_DIR(tool)
 | 
						|
 | 
						|
AC_PREREQ(2.67)
 | 
						|
 | 
						|
tooldir="$srcdir/tool"
 | 
						|
 | 
						|
AC_DISABLE_OPTION_CHECKING
 | 
						|
 | 
						|
m4_include([tool/m4/_colorize_result_prepare.m4])dnl
 | 
						|
m4_include([tool/m4/ac_msg_result.m4])dnl
 | 
						|
m4_include([tool/m4/colorize_result.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_append_option.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_append_options.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_check_builtin_func.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_check_builtin_setjmp.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_check_printf_prefix.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_check_setjmp.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_check_signedness.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_check_sizeof.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_check_sysconf.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_cppoutfile.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_decl_attribute.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_default_arch.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_define_if.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_defint.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_dtrace_available.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_dtrace_postprocess.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_func_attribute.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_mingw32.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_prepend_option.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_prog_gnu_ld.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_prog_makedirs.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_replace_funcs.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_replace_type.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_require_funcs.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_rm_recursive.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_setjmp_type.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_stack_grow_direction.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_thread.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_try_cflags.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_try_cxxflags.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_try_ldflags.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_universal_arch.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_wasm_tools.m4])dnl
 | 
						|
m4_include([tool/m4/ruby_werror_flag.m4])dnl
 | 
						|
 | 
						|
AC_ARG_VAR([cflags], [additional CFLAGS (ignored when CFLAGS is given)])dnl
 | 
						|
AC_ARG_VAR([cppflags], [additional CPPFLAGS (ignored when CPPFLAGS is given)])dnl
 | 
						|
AC_ARG_VAR([cxxflags], [additional CXXFLAGS (ignored when CXXFLAGS is given)])dnl
 | 
						|
 | 
						|
: "environment section" && {
 | 
						|
HAVE_BASERUBY=yes
 | 
						|
BASERUBY_VERSION=
 | 
						|
AC_ARG_WITH(baseruby,
 | 
						|
	AS_HELP_STRING([--with-baseruby=RUBY], [use RUBY as baseruby; RUBY is the pathname of ruby]),
 | 
						|
	[AS_CASE(["$withval"],
 | 
						|
	    [*ruby*],[BASERUBY=$withval],
 | 
						|
	    [no],[HAVE_BASERUBY=no],
 | 
						|
	    [AC_MSG_ERROR(need ruby)])
 | 
						|
	],
 | 
						|
	[
 | 
						|
		AC_PATH_PROG([BASERUBY], [ruby], [false])
 | 
						|
	])
 | 
						|
AS_IF([test "$HAVE_BASERUBY" != no -a "`RUBYOPT=- $BASERUBY --disable=gems -e 'print 42 if RUBY_VERSION > "2.2"' 2>/dev/null`" = 42], [
 | 
						|
    AS_CASE(["$build_os"], [mingw*], [
 | 
						|
        # Can MSys shell run a command with a drive letter?
 | 
						|
        RUBYOPT=- `cygpath -ma "$BASERUBY"` --disable=gems -e exit 2>/dev/null || HAVE_BASERUBY=no
 | 
						|
    ])
 | 
						|
    BASERUBY="$BASERUBY --disable=gems"
 | 
						|
    BASERUBY_VERSION=`$BASERUBY -v`
 | 
						|
    $BASERUBY -C "$srcdir" tool/downloader.rb -d tool -e gnu config.guess config.sub >&AS_MESSAGE_FD
 | 
						|
], [
 | 
						|
    HAVE_BASERUBY=no
 | 
						|
])
 | 
						|
AS_IF([test "$HAVE_BASERUBY" = no], [
 | 
						|
    AS_IF([test "$cross_compiling" = yes], [AC_MSG_ERROR([executable host ruby is required for cross-compiling])])
 | 
						|
    BASERUBY="echo executable host ruby is required.  use --with-baseruby option.; false"
 | 
						|
])
 | 
						|
AC_SUBST(BASERUBY)
 | 
						|
AC_SUBST(HAVE_BASERUBY)
 | 
						|
 | 
						|
: ${GIT=git}
 | 
						|
HAVE_GIT=yes
 | 
						|
AC_ARG_WITH(git,
 | 
						|
	AS_HELP_STRING([--without-git], [never use git]),
 | 
						|
	[AS_CASE([$withval],
 | 
						|
	    [no],  [GIT=never-use HAVE_GIT=no],
 | 
						|
	    [yes], [],
 | 
						|
	    [GIT=$withval])])
 | 
						|
AS_IF([test x"$HAVE_GIT" = xyes], [command -v "$GIT" > /dev/null || HAVE_GIT=no])
 | 
						|
AC_SUBST(GIT)
 | 
						|
AC_SUBST(HAVE_GIT)
 | 
						|
 | 
						|
eval `sed -n -e ['s/^@%:@define RUBY_[A-Z_]*VERSION_\([A-Z][A-Z][A-Z_0-9]*\) \([0-9][0-9]*\)$/\1=\2/p'] \
 | 
						|
      -e ['s/^@%:@define \(RUBY_ABI_VERSION\) \([0-9][0-9]*\).*/\1=\2/p'] \
 | 
						|
      -e ['s/^@%:@define \(RUBY_PATCHLEVEL\) \(.*\)/\1=\2/p'] \
 | 
						|
     $srcdir/include/ruby/internal/abi.h \
 | 
						|
     $srcdir/include/ruby/version.h $srcdir/version.h`
 | 
						|
for v in MAJOR MINOR TEENY; do
 | 
						|
    AS_IF([eval "test \"\$$v\" = ''"], [
 | 
						|
	AC_MSG_ERROR(could not determine $v number from version.h)
 | 
						|
    ])
 | 
						|
done
 | 
						|
AC_SUBST(MAJOR)
 | 
						|
AC_SUBST(MINOR)
 | 
						|
AC_SUBST(TEENY)
 | 
						|
AC_SUBST(RUBY_API_VERSION, '$(MAJOR).$(MINOR)')
 | 
						|
AC_SUBST(RUBY_PROGRAM_VERSION, '$(MAJOR).$(MINOR).$(TEENY)')
 | 
						|
AS_CASE([$RUBY_PATCHLEVEL], [-*], [
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_ABI_VERSION, [${RUBY_ABI_VERSION}])
 | 
						|
], [RUBY_ABI_VERSION=])
 | 
						|
 | 
						|
AS_IF([test "$program_prefix" = NONE], [
 | 
						|
  program_prefix=
 | 
						|
])
 | 
						|
AS_IF([test "$prefix" -ef .], [
 | 
						|
  AC_MSG_ERROR(--prefix cannot be the current working directory.)
 | 
						|
])
 | 
						|
RUBY_BASE_NAME=`echo ruby | sed "$program_transform_name"`
 | 
						|
RUBYW_BASE_NAME=`echo rubyw | sed "$program_transform_name"`
 | 
						|
AC_SUBST(RUBY_BASE_NAME)
 | 
						|
AC_SUBST(RUBYW_BASE_NAME)
 | 
						|
AC_SUBST(RUBY_VERSION_NAME, '${RUBY_BASE_NAME}-${ruby_version}')
 | 
						|
 | 
						|
dnl checks for alternative programs
 | 
						|
AC_CANONICAL_BUILD
 | 
						|
AC_CANONICAL_HOST
 | 
						|
AC_CANONICAL_TARGET
 | 
						|
AS_CASE(["$target_cpu-$target_os"],
 | 
						|
    [aarch64-darwin*], [
 | 
						|
        target_cpu=arm64
 | 
						|
        AS_CASE(["$target_vendor"], [unknown], [target_vendor=apple target=${target/-unknown-/-apple-}])
 | 
						|
        target="${target/aarch64/arm64}"
 | 
						|
        target_alias="${target_alias/aarch64/arm64}"
 | 
						|
    ])
 | 
						|
 | 
						|
AC_ARG_PROGRAM
 | 
						|
RUBY_RM_RECURSIVE
 | 
						|
AC_ARG_WITH(gcc,
 | 
						|
	AS_HELP_STRING([--without-gcc], [never use gcc]),
 | 
						|
	[
 | 
						|
	AS_CASE([$withval],
 | 
						|
	    [no],  [: ${CC=cc}],
 | 
						|
	    [yes], [: ${CC=gcc}],
 | 
						|
	           [CC=$withval])])
 | 
						|
dnl If the user switches compilers, we can't believe the cache
 | 
						|
AS_IF([test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"], [
 | 
						|
  AC_MSG_ERROR(cached CC is different -- throw away $cache_file
 | 
						|
(it is also a good idea to do 'make clean' before compiling))
 | 
						|
])
 | 
						|
 | 
						|
RUBY_WASM_TOOLS
 | 
						|
 | 
						|
AS_CASE(["${build_os}"],
 | 
						|
[linux*|cygwin*|msys*], [
 | 
						|
    # Naruse prefers GCC on Linux
 | 
						|
    AC_CHECK_TOOLS([CC], [gcc clang cc])
 | 
						|
],
 | 
						|
[solaris*], [
 | 
						|
    # Clang on Solaris is largely untested.
 | 
						|
    # https://bugs.ruby-lang.org/issues/17949
 | 
						|
    AC_CHECK_TOOLS([CC], [cc gcc])
 | 
						|
], [
 | 
						|
    # OpenBSD wants to prefer cc over gcc.
 | 
						|
    # See https://github.com/ruby/ruby/pull/2443
 | 
						|
    AC_CHECK_TOOLS([CC], [cl.exe clang cc gcc c99 /usr/ucb/cc])
 | 
						|
])
 | 
						|
 | 
						|
AC_ARG_VAR([AR],       [Archiver command])
 | 
						|
AC_ARG_VAR([AS],       [Assembler command])
 | 
						|
AC_ARG_VAR([CC],       [C compiler command])
 | 
						|
AC_ARG_VAR([CXX],      [C++ compiler command])
 | 
						|
AC_ARG_VAR([LD],       [Linker command])
 | 
						|
AC_ARG_VAR([NM],       [Symbol list command])
 | 
						|
AC_ARG_VAR([OBJCOPY],  [Objcopy command])
 | 
						|
AC_ARG_VAR([OBJDUMP],  [Objdump command])
 | 
						|
AC_ARG_VAR([RANLIB],   [Ranlib command])
 | 
						|
AC_ARG_VAR([STRIP],    [Strip command])
 | 
						|
 | 
						|
# We don't want to bother things like `ccache gcc`, `clang -shared-libgcc`, ...
 | 
						|
set rb_dummy ${CC}
 | 
						|
rb_CC=$2
 | 
						|
AC_DEFUN([RUBY_CHECK_PROG_FOR_CC], [
 | 
						|
    rb_prog=`echo "${rb_CC}" | sed "$2"`
 | 
						|
    AC_CHECK_PROG([$1], [$rb_prog], [$rb_prog])
 | 
						|
])
 | 
						|
AS_CASE(["/${rb_CC} "],
 | 
						|
[*@<:@\ /@:>@"cc "*], [
 | 
						|
    # Don't try g++/clang++ when CC=cc
 | 
						|
    AC_CHECK_PROGS([CXX],    [cl.exe CC c++])
 | 
						|
],
 | 
						|
[*icc*],              [
 | 
						|
    # Intel C++ has interprocedural optimizations.  It tends to come with its
 | 
						|
    # own linker etc.
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([AR],      [s/icc/xiar/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([CXX],     [s/icc/icpc/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([LD],      [s/icc/xild/])
 | 
						|
],
 | 
						|
[*gcc*],              [
 | 
						|
    # Ditto for GCC.
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([LD],      [s/gcc/ld/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([AR],      [s/gcc/gcc-ar/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([CXX],     [s/gcc/g++/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([NM],      [s/gcc/gcc-nm/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([RANLIB],  [s/gcc/gcc-ranlib/])
 | 
						|
],
 | 
						|
[*clang*],            [
 | 
						|
    # Ditto for LLVM.  Note however that llvm-as is a LLVM-IR to LLVM bitcode
 | 
						|
    # assembler that does not target your machine native binary.
 | 
						|
    : ${LD:="${CC}"}         # ... try -fuse-ld=lld ?
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([AR],      [s/clang/llvm-ar/])
 | 
						|
#   RUBY_CHECK_PROG_FOR_CC([AS],      [s/clang/llvm-as/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([CXX],     [s/clang/clang++/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([NM],      [s/clang/llvm-nm/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([OBJCOPY], [s/clang/llvm-objcopy/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([OBJDUMP], [s/clang/llvm-objdump/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([RANLIB],  [s/clang/llvm-ranlib/])
 | 
						|
    RUBY_CHECK_PROG_FOR_CC([STRIP],   [s/clang/llvm-strip/])
 | 
						|
])
 | 
						|
AS_UNSET(rb_CC)
 | 
						|
AS_UNSET(rb_dummy)
 | 
						|
 | 
						|
AS_CASE(["${build_os}"],
 | 
						|
[solaris*], [
 | 
						|
    AC_PATH_TOOL([LD], [ld], [/usr/ccs/bin/ld], [/usr/ccs/bin:$PATH])
 | 
						|
],
 | 
						|
[aix*], [
 | 
						|
    AC_PATH_TOOL([NM], [nm], [/usr/ccs/bin/nm], [/usr/ccs/bin:$PATH])
 | 
						|
])
 | 
						|
AS_CASE(["${target_os}"],
 | 
						|
[cygwin*|msys*|mingw*], [
 | 
						|
    ac_cv_prog_ac_ct_OBJCOPY=":"
 | 
						|
])
 | 
						|
 | 
						|
rb_test_CFLAGS=${CFLAGS+yes}
 | 
						|
rb_test_CXXFLAGS=${CXXFLAGS+yes}
 | 
						|
 | 
						|
# BSD's ports and MacPorts prefix GNU binutils with 'g'
 | 
						|
 | 
						|
dnl Seems necessarily in order to add -std=gnu99 option for gcc 4.9.
 | 
						|
m4_version_prereq([2.70], [AC_PROG_CC], [AC_PROG_CC_C99])
 | 
						|
 | 
						|
AC_PROG_CXX
 | 
						|
AC_PROG_CPP
 | 
						|
AC_PROG_RANLIB
 | 
						|
AC_CHECK_TOOLS([AR],      [gar ar])
 | 
						|
AC_CHECK_TOOLS([AS],      [gas as])
 | 
						|
AC_CHECK_TOOLS([LD],      [gld ld]) # ... try gold ?
 | 
						|
AC_CHECK_TOOLS([NM],      [gnm nm])
 | 
						|
AC_CHECK_TOOLS([OBJCOPY], [gobjcopy objcopy])
 | 
						|
AC_CHECK_TOOLS([OBJDUMP], [gobjdump objdump])
 | 
						|
AC_CHECK_TOOLS([STRIP],   [gstrip strip], [:])
 | 
						|
 | 
						|
AS_IF([test ! $rb_test_CFLAGS], [AS_UNSET(CFLAGS)]); AS_UNSET(rb_test_CFLAGS)
 | 
						|
AS_IF([test ! $rb_test_CXXFLAGS], [AS_UNSET(CXXFLAGS)]); AS_UNSET(rb_save_CXXFLAGS)
 | 
						|
 | 
						|
AS_IF([test "${CXX}" = "g++" -a -z "${GXX}"], [
 | 
						|
    # AC_PROG_CXX sets $CXX to "g++" when it purposefully finds that there is
 | 
						|
    # _no_ g++.  This brain-damaged design must be worked around.  Thankfully,
 | 
						|
    # similar thing doesn't happen for AC_PROG_CC.
 | 
						|
    rb_there_is_in_fact_no_gplusplus_but_autoconf_is_cheating_us=true
 | 
						|
])
 | 
						|
 | 
						|
test x"$target_alias" = x &&
 | 
						|
target_os=`echo $target_os | sed 's/linux-gnu$/linux/;s/linux-gnu/linux-/'`
 | 
						|
ac_install_sh='' # unusable for extension libraries.
 | 
						|
 | 
						|
AC_ARG_WITH(os-version-style,
 | 
						|
	AS_HELP_STRING([--with-os-version-style=TYPE],
 | 
						|
		       [OS version number for target and target_os [[full]]]
 | 
						|
		       [(full|teeny|minor+0|minor|major+0|major|none)]),
 | 
						|
	[os_version_style=$withval],
 | 
						|
	[os_version_style=full
 | 
						|
	    AS_CASE($target_os, [[*[0-9].*]],
 | 
						|
		[AS_CASE([`/usr/bin/ruby -e 'puts RUBY_PLATFORM' 2>/dev/null`],
 | 
						|
		    [[*-*[0-9].*.0]], [os_version_style=minor+0],
 | 
						|
		    [[*-*[0-9].*.*]], [os_version_style=full],
 | 
						|
		    [[*-*[0-9].0]  ], [os_version_style=major+0],
 | 
						|
		    [[*-*[0-9].*]  ], [os_version_style=minor],
 | 
						|
		    [[*-*[0-9]]    ], [os_version_style=major],
 | 
						|
		)])
 | 
						|
	])
 | 
						|
os_version_style_transform=
 | 
						|
AS_CASE("${os_version_style}",
 | 
						|
	[full|teeny], [],
 | 
						|
	[minor+0], [os_version_style_transform=['s/\([0-9]\.[0-9][0-9]*\)\.[0-9][.0-9]*$/\1.0/']],
 | 
						|
	[minor],   [os_version_style_transform=['s/\([0-9]\.[0-9][0-9]*\)\.[0-9][.0-9]*$/\1/']],
 | 
						|
	[major+0], [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1.0/']],
 | 
						|
	[major],   [os_version_style_transform=['s/\([0-9]\)\.[0-9][.0-9]*$/\1/']],
 | 
						|
	[none],    [os_version_style_transform=['s/[0-9]*\.[0-9][.0-9]*$//']],
 | 
						|
	[AC_MSG_ERROR(unknown --with-os-version-style: $withval)])
 | 
						|
AS_IF([test -z "$target_alias" -a -n "$os_version_style_transform"],
 | 
						|
	[
 | 
						|
	target=`echo ${target} | sed "$os_version_style_transform"`
 | 
						|
	target_os=`echo ${target_os} | sed "$os_version_style_transform"`
 | 
						|
	])
 | 
						|
 | 
						|
AC_ARG_WITH(arch,
 | 
						|
	AS_HELP_STRING([--with-arch=ARCHS],
 | 
						|
		       [build an Apple/NeXT Multi Architecture Binary (MAB);
 | 
						|
                          ARCHS is a comma-delimited list of architectures for
 | 
						|
                          which to build; if this option is disabled or omitted
 | 
						|
			  entirely, then the package will be built only for the
 | 
						|
			  target platform]),
 | 
						|
       [target_archs="$withval"], [unset target_archs])
 | 
						|
 | 
						|
AC_ARG_ENABLE(load-relative,
 | 
						|
       AS_HELP_STRING([--enable-load-relative], [resolve load paths at run time]),
 | 
						|
       [load_relative=$enableval])
 | 
						|
 | 
						|
# checks for UNIX variants that set C preprocessor variables
 | 
						|
AC_USE_SYSTEM_EXTENSIONS
 | 
						|
 | 
						|
dnl Checks for programs.
 | 
						|
 | 
						|
cflagspat=
 | 
						|
test -z "$optflags" ||
 | 
						|
    cflagspat="$cflagspat;s|"`eval echo '"'"${optflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
 | 
						|
test -z "$debugflags" ||
 | 
						|
    cflagspat="$cflagspat;s|"`eval echo '"'"${debugflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
 | 
						|
test -z "$warnflags" ||
 | 
						|
    cflagspat="$cflagspat;s|"`eval echo '"'"${warnflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^ */ /;s/ *$/ /'`'| |g'
 | 
						|
AS_IF([test -z "${CFLAGS+set}"], [
 | 
						|
    cflags=`echo " $cflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
 | 
						|
    orig_cflags="$cflags"
 | 
						|
    cflags="$cflags "'${optflags} ${debugflags} ${warnflags}'
 | 
						|
])
 | 
						|
dnl AS_IF([test -z "${CXXFLAGS+set}"], [
 | 
						|
dnl     cxxflags=`echo " $cxxflags " | sed "$cflagspat;s/^ *//;s/ *$//"`
 | 
						|
dnl     orig_cxxflags="$cxxflags"
 | 
						|
dnl     cxxflags="$cxxflags "'${optflags} ${debugflags} ${warnflags}'
 | 
						|
dnl ])
 | 
						|
 | 
						|
AS_CASE(["$host_os:$build_os"],
 | 
						|
[darwin*:darwin*], [
 | 
						|
    # Following Apple deployed clang are broken
 | 
						|
    # clang version 1.0 (http://llvm.org/svn/llvm-project/cfe/tags/Apple/clang-23 exported)
 | 
						|
    # Apple clang version 2.0 (tags/Apple/clang-137) (based on LLVM 2.9svn)
 | 
						|
    # Apple clang version 2.1 (tags/Apple/clang-163.7.1) (based on LLVM 3.0svn)
 | 
						|
    AC_PREPROC_IFELSE(
 | 
						|
	[AC_LANG_PROGRAM([
 | 
						|
	    @%:@if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3
 | 
						|
	    @%:@error premature clang
 | 
						|
	    @%:@endif
 | 
						|
	])],
 | 
						|
	[],
 | 
						|
	[AC_MSG_ERROR([clang version 3.0 or later is required])])
 | 
						|
])
 | 
						|
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
[darwin*], [
 | 
						|
    AC_MSG_CHECKING(if minimum required OS X version is supported)
 | 
						|
    AC_PREPROC_IFELSE([AC_LANG_SOURCE([[@%:@include <AvailabilityMacros.h>
 | 
						|
	@%:@if MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_5
 | 
						|
	@%:@error pre OS X 10.5
 | 
						|
	[!<===== pre OS X 10.5 =====>]
 | 
						|
	@%:@endif
 | 
						|
	]])],
 | 
						|
	[AC_MSG_RESULT(yes)],
 | 
						|
	[AC_MSG_RESULT(no)
 | 
						|
	AC_MSG_ERROR([Unsupported OS X version is required])])
 | 
						|
    AC_CACHE_CHECK([if thread-local storage is supported], [rb_cv_tls_supported],
 | 
						|
	[AC_LINK_IFELSE([AC_LANG_PROGRAM([[int __thread conftest;]])],
 | 
						|
	    [rb_cv_tls_supported=yes],
 | 
						|
	    [rb_cv_tls_supported=no])])
 | 
						|
    AS_IF([test x"$rb_cv_tls_supported" != xyes],
 | 
						|
	[AC_DEFINE(RB_THREAD_LOCAL_SPECIFIER_IS_UNSUPPORTED)])
 | 
						|
])
 | 
						|
 | 
						|
RUBY_MINGW32
 | 
						|
AC_SUBST(GCC)
 | 
						|
AC_SUBST(LD)
 | 
						|
AS_IF([test "$GCC" = yes], [
 | 
						|
    linker_flag=-Wl,
 | 
						|
    : ${optflags=-O3}
 | 
						|
    gcc_major=`echo =__GNUC__ | $CC -E -xc - | sed '/^=/!d;s///'`
 | 
						|
    gcc_minor=`echo =__GNUC_MINOR__ | $CC -E -xc - | sed '/^=/!d;s///'`
 | 
						|
    test -n "$gcc_major" || gcc_major=0
 | 
						|
    test -n "$gcc_minor" || gcc_minor=0
 | 
						|
    icc_version=`echo =__ICC | $CC -E -xc - | sed '/^=/!d;s///;/^__ICC/d'`
 | 
						|
    test -n "$icc_version" || icc_version=0
 | 
						|
    # RUBY_APPEND_OPTIONS(XCFLAGS, ["-include ruby/config.h" "-include ruby/missing.h"])
 | 
						|
 | 
						|
    AS_IF([test "$gcc_major" -lt 4], [
 | 
						|
        AC_MSG_ERROR([too old GCC: $gcc_major.$gcc_minor])
 | 
						|
    ])
 | 
						|
], [
 | 
						|
    linker_flag=
 | 
						|
])
 | 
						|
 | 
						|
RUBY_PROG_GNU_LD
 | 
						|
RUBY_CPPOUTFILE
 | 
						|
 | 
						|
: ${OUTFLAG='-o '}
 | 
						|
: ${COUTFLAG=${OUTFLAG}}
 | 
						|
: ${CSRCFLAG=''}
 | 
						|
AC_SUBST(OUTFLAG)
 | 
						|
AC_SUBST(COUTFLAG)
 | 
						|
AC_SUBST(CSRCFLAG)
 | 
						|
 | 
						|
: ${MJIT_CC=$CC}
 | 
						|
AS_IF([test "x$cross_compiling" = xno], [
 | 
						|
    AC_PATH_PROG([MJIT_CC], ${MJIT_CC})
 | 
						|
 | 
						|
    # if $CC is in /usr/lib/ccache/$CC, search original $CC (disable ccache)
 | 
						|
    AS_IF([echo $RUBY_DEBUG | grep ci > /dev/null &&
 | 
						|
           echo $MJIT_CC | grep ^/usr/lib/ccache > /dev/null], [
 | 
						|
           PATH=`echo $PATH | sed "s/\/usr\/lib\/ccache://"` MJIT_CC=`which $CC`])
 | 
						|
 | 
						|
    AS_CASE([$target_os],
 | 
						|
	[*mingw*], [command -v cygpath > /dev/null && MJIT_CC=`cygpath -ma $MJIT_CC`])
 | 
						|
    shift 2
 | 
						|
    MJIT_CC="$MJIT_CC${1+ }$*"
 | 
						|
])
 | 
						|
 | 
						|
AS_CASE(["$build_os"],
 | 
						|
  [darwin1*.*], [
 | 
						|
    # Xcode linker warns for deprecated architecture and wrongly
 | 
						|
    # installed TBD files.
 | 
						|
    CC_WRAPPER=""
 | 
						|
    echo 'int main(void) {return 0;}' > conftest.c
 | 
						|
    AS_IF([$CC -framework Foundation -o conftest conftest.c 2>&1 |
 | 
						|
	   grep '^ld: warning: text-based stub file' >/dev/null], [
 | 
						|
	CC_WRAPPER=`cd -P "${tooldir}" && pwd`/darwin-cc
 | 
						|
	CC="$CC_WRAPPER $CC"
 | 
						|
    ])
 | 
						|
    rm -fr conftest*
 | 
						|
  ])
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
  [wasi*], [
 | 
						|
    # Clang linker automatically uses wasm-opt with -O if it found.
 | 
						|
    # https://github.com/llvm/llvm-project/blob/812828984c10857a4cd260eb638c52a4411f9143/clang/lib/Driver/ToolChains/WebAssembly.cpp#L95-L118
 | 
						|
    # However optimization before asyncify causes misoptimization,
 | 
						|
    # so wrap clang to insert our fake wasm-opt, which does nothing, in PATH.
 | 
						|
    CC_WRAPPER=`cd -P "${tooldir}" && pwd`/wasm-clangw
 | 
						|
    CC="$CC_WRAPPER $CC"
 | 
						|
  ])
 | 
						|
 | 
						|
cc_version=
 | 
						|
for option in --version -v -V -qversion; do
 | 
						|
    cc_version_message=`$CC $option 2>&1`
 | 
						|
    cc_version_status=$?
 | 
						|
    AS_CASE($cc_version_status, [0], [:], [continue])
 | 
						|
    AS_CASE($cc_version_message, [*Warning*], [continue])
 | 
						|
    cc_version='$(CC) '$option
 | 
						|
    break
 | 
						|
done
 | 
						|
AC_SUBST(CC_VERSION, $cc_version)
 | 
						|
AC_SUBST(CC_VERSION_MESSAGE, $cc_version_message)
 | 
						|
 | 
						|
: ${DLDFLAGS="$LDFLAGS"}
 | 
						|
 | 
						|
RUBY_UNIVERSAL_ARCH
 | 
						|
AS_IF([test "$target_cpu" != "$host_cpu" -a "$GCC" = yes -a "$cross_compiling" = no -a "${universal_binary:-no}" = no], [
 | 
						|
    RUBY_DEFAULT_ARCH("$target_cpu")
 | 
						|
])
 | 
						|
host_os=$target_os
 | 
						|
host_vendor=$target_vendor
 | 
						|
host_cpu=$target_cpu
 | 
						|
host=$target
 | 
						|
host_alias=$target_alias
 | 
						|
 | 
						|
AC_CACHE_CHECK([for $AR flags], [rb_cv_arflags], [
 | 
						|
    AS_IF([$AR rcD conftest.a > /dev/null 2>&1 && rm conftest.a],
 | 
						|
	[rb_cv_arflags=rcD], [rb_cv_arflags=rcu])
 | 
						|
])
 | 
						|
AC_SUBST(ARFLAGS, ["$rb_cv_arflags "])
 | 
						|
AC_SUBST(ASFLAGS)
 | 
						|
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
[cygwin*|msys*|mingw*], [
 | 
						|
    AC_CHECK_TOOL(WINDRES, windres)
 | 
						|
    AC_CHECK_TOOL(DLLWRAP, dllwrap)
 | 
						|
    target=`echo $target | sed "s/^$target_cpu-/-/"`
 | 
						|
    target_alias=`echo $target_alias | sed "s/^$target_cpu-/-/"`
 | 
						|
    target_cpu=`echo $target_cpu | sed s/i.86/i386/`
 | 
						|
    AS_CASE(["$target"], [-*], [ target="$target_cpu${target}"])
 | 
						|
    AS_CASE(["$target_alias"], [-*], [ target_alias="$target_cpu${target_alias}"])
 | 
						|
    AS_CASE(["$target_os"],
 | 
						|
    [mingw*], [
 | 
						|
	test "$rb_cv_msvcrt" = "" && unset rb_cv_msvcrt
 | 
						|
	AC_CACHE_CHECK(for mingw32 runtime DLL, rb_cv_msvcrt, [
 | 
						|
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>]],
 | 
						|
		    [[FILE* volatile f = stdin; return 0;]])],
 | 
						|
		    [rb_cv_msvcrt=`$OBJDUMP -p conftest$ac_exeext |
 | 
						|
				   tr A-Z a-z |
 | 
						|
				   sed -n '/^[[ 	]]*dll name: \(msvc.*\)\.dll$/{s//\1/p;q;};
 | 
						|
					/^[[ 	]]*dll name: \(ucrtbase\|api-ms-win-crt-.*\)\.dll$/{s//ucrt/p;q;}'`],
 | 
						|
		    [rb_cv_msvcrt=msvcrt])
 | 
						|
	test "$rb_cv_msvcrt" = "" && rb_cv_msvcrt=msvcrt])
 | 
						|
	RT_VER=`echo "$rb_cv_msvcrt" | tr -cd [0-9]`
 | 
						|
	test "$RT_VER" = "" && RT_VER=60
 | 
						|
	test "$rb_cv_msvcrt" = "ucrt" && RT_VER=140
 | 
						|
	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@npd.kishou.go.jp>
 | 
						|
 | 
						|
AC_PROG_LN_S
 | 
						|
AC_PROG_MAKE_SET
 | 
						|
AC_PROG_INSTALL
 | 
						|
 | 
						|
AS_CASE(["$target_os"],[openbsd*],[
 | 
						|
    ac_cv_path_mkdir="mkdir"
 | 
						|
])
 | 
						|
 | 
						|
RUBY_PROG_MAKEDIRS
 | 
						|
 | 
						|
AC_CHECK_PROG([DTRACE], [${ac_tool_prefix}dtrace], [${ac_tool_prefix}dtrace])
 | 
						|
AS_IF([test "$cross_compiling:$ac_cv_prog_DTRACE" = no: -a -n "$ac_tool_prefix"], [
 | 
						|
    AC_CHECK_PROG([DTRACE], [dtrace], [dtrace])
 | 
						|
])
 | 
						|
 | 
						|
AC_CHECK_PROGS(DOT, dot)
 | 
						|
AC_CHECK_PROGS(DOXYGEN, doxygen)
 | 
						|
 | 
						|
for prog in ${ac_tool_prefix:+${ac_tool_prefix}pkg-config} pkg-config; do
 | 
						|
    AC_CHECK_PROG(PKG_CONFIG, $prog, [$prog], [], [],
 | 
						|
        [`"$as_dir/$ac_word$ac_exec_ext" --print-errors --version > /dev/null 2>&1 || echo "$as_dir/$ac_word$ac_exec_ext"`])
 | 
						|
    test -z "${PKG_CONFIG}" || break
 | 
						|
done
 | 
						|
 | 
						|
AC_MSG_CHECKING([whether it is Android])
 | 
						|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
	@%:@ifndef __ANDROID__
 | 
						|
	@%:@error Not android
 | 
						|
	@%:@endif
 | 
						|
]], [[]])],
 | 
						|
[
 | 
						|
	AC_MSG_RESULT(yes)
 | 
						|
	target_os=${target_os}-android
 | 
						|
	AS_IF([test "x$cross_compiling" = xno], [
 | 
						|
                AC_MSG_CHECKING([for Android API version])
 | 
						|
                # hacky workaround: https://github.com/termux/termux-packages/issues/6176
 | 
						|
                rb_android_api=`getprop ro.build.version.sdk`
 | 
						|
                AC_MSG_RESULT($rb_android_api)
 | 
						|
                RUBY_APPEND_OPTIONS(CPPFLAGS, -D__ANDROID_API__=$rb_android_api -Wno-macro-redefined)
 | 
						|
	])
 | 
						|
],
 | 
						|
[AC_MSG_RESULT(no)])
 | 
						|
 | 
						|
AC_SUBST(RM, ['rm -f'])
 | 
						|
AC_SUBST(CP, ['cp'])
 | 
						|
RMDIRS='$(top_srcdir)/tool/rmdirs'
 | 
						|
RMDIR=rmdir
 | 
						|
mkdir "rmdirs_$$_test" "rmdirs_$$_test/a"
 | 
						|
rmdir --ignore-fail-on-non-empty "rmdirs_$$_test" 2>/dev/null &&
 | 
						|
RMDIR='rmdir --ignore-fail-on-non-empty'
 | 
						|
$RMDIR -p "rmdirs_$$_test/a" 2>/dev/null &&
 | 
						|
{ test -d "rmdirs_$$_test" || RMDIRS="$RMDIR -p"; }
 | 
						|
rmdir "rmdirs_$$_test/a" "rmdirs_$$_test" 2>/dev/null
 | 
						|
AC_SUBST(RMDIR)
 | 
						|
AC_SUBST(RMDIRS)
 | 
						|
AC_SUBST(RMALL, ['rm -fr'])
 | 
						|
 | 
						|
AC_MSG_CHECKING([for cd using physical directory])
 | 
						|
rm -fr conf$$.dir
 | 
						|
mkdir conf$$.dir &&
 | 
						|
(cd conf$$.dir && mkdir src build && cd src &&
 | 
						|
$as_ln_s ../build . > /dev/null 2>&1 && cd build &&
 | 
						|
for chdir in 'cd -P' 'PWD= cd'; do
 | 
						|
    /bin/sh -c "$chdir ../src && echo '$chdir' > cdcmd" 2> /dev/null && break
 | 
						|
done)
 | 
						|
AS_IF([test -f conf$$.dir/src/cdcmd], [
 | 
						|
    read CHDIR < conf$$.dir/src/cdcmd 2> /dev/null
 | 
						|
], [
 | 
						|
    CHDIR=cd
 | 
						|
])
 | 
						|
rm -fr conf$$.dir
 | 
						|
AC_MSG_RESULT([$CHDIR])
 | 
						|
AC_SUBST(CHDIR)
 | 
						|
}
 | 
						|
 | 
						|
: "compiler section" && {
 | 
						|
RUBY_WERROR_FLAG([
 | 
						|
    AC_MSG_CHECKING([whether CFLAGS is valid])
 | 
						|
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
 | 
						|
	[AC_MSG_RESULT(yes)],
 | 
						|
	[
 | 
						|
	AC_MSG_RESULT(no)
 | 
						|
	AC_MSG_ERROR([something wrong with CFLAGS="$CFLAGS"])
 | 
						|
	]
 | 
						|
    )
 | 
						|
 | 
						|
    AC_MSG_CHECKING([whether LDFLAGS is valid])
 | 
						|
    {
 | 
						|
	mkdir tmp.$$.try_link &&
 | 
						|
	cd tmp.$$.try_link &&
 | 
						|
	cp ../confdefs.h . &&
 | 
						|
	echo '<?xml?><plist><dict><key>CFBundleIdentifier</key><string></string></dict></plist>' > Info.plist &&
 | 
						|
	:
 | 
						|
    } || AC_MSG_ERROR([failed to make temporary directory])
 | 
						|
    AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
 | 
						|
	[AC_MSG_RESULT(yes)],
 | 
						|
	[
 | 
						|
	cd .. && rm -fr tmp.$$.try_link
 | 
						|
	AC_MSG_RESULT(no)
 | 
						|
	AC_MSG_ERROR([something wrong with LDFLAGS="$LDFLAGS"])
 | 
						|
	]
 | 
						|
    )
 | 
						|
    cd .. && rm -fr tmp.$$.try_link
 | 
						|
])
 | 
						|
 | 
						|
: "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 "-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], [break])
 | 
						|
        done])
 | 
						|
    ], [
 | 
						|
        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], [
 | 
						|
    RUBY_APPEND_OPTIONS(CFLAGS, -fdeclspec)
 | 
						|
    RUBY_APPEND_OPTIONS(cflags, -fdeclspec)
 | 
						|
    RUBY_APPEND_OPTIONS(orig_cflags, -fdeclspec)
 | 
						|
])
 | 
						|
RUBY_TRY_CXXFLAGS(-fdeclspec, [fdeclspec=yes], [fdeclspec=no])
 | 
						|
AS_IF([test "$fdeclspec" = yes], [
 | 
						|
    RUBY_APPEND_OPTIONS(CXXFLAGS, -fdeclspec)
 | 
						|
])
 | 
						|
 | 
						|
AC_ARG_ENABLE(devel,
 | 
						|
    AS_HELP_STRING([--enable-devel], [enable development build]),
 | 
						|
    [RUBY_DEVEL=$enableval],
 | 
						|
    [AS_IF([test "x${RUBY_DEVEL-no}" != xyes], [RUBY_DEVEL=])]
 | 
						|
)dnl
 | 
						|
AC_SUBST(RUBY_DEVEL)
 | 
						|
particular_werror_flags=${RUBY_DEVEL:-no}
 | 
						|
AC_ARG_ENABLE(werror,
 | 
						|
	AS_HELP_STRING([--disable-werror],
 | 
						|
		       [don't make warnings into errors
 | 
						|
		       even if a compiler support -Werror feature
 | 
						|
		       [[disabled by default unless development version]]]),
 | 
						|
	[particular_werror_flags=$enableval])
 | 
						|
 | 
						|
rb_cv_warnflags="$warnflags"
 | 
						|
AS_CASE(["$GCC:${warnflags+set}:${extra_warnflags:+set}:"],
 | 
						|
[yes::*|yes:*:set:], [# GCC && (!warnflags || extra_warnflags)
 | 
						|
    AS_IF([test $gcc_major -le 6], [
 | 
						|
	extra_warnflags="$extra_warnflags -Wno-maybe-uninitialized"
 | 
						|
    ])
 | 
						|
    # ICC doesn't support -Werror=
 | 
						|
    AS_IF([test $icc_version -gt 0], [
 | 
						|
	particular_werror_flags=no
 | 
						|
    ])
 | 
						|
    for wflag in \
 | 
						|
		 -Werror=extra-tokens \
 | 
						|
		 -Werror=deprecated-declarations \
 | 
						|
		 -Werror=division-by-zero -Werror=div-by-zero \
 | 
						|
		 -Werror=duplicated-cond \
 | 
						|
		 -Werror=implicit-function-declaration \
 | 
						|
		 -Werror=implicit-int \
 | 
						|
		 -Werror=misleading-indentation \
 | 
						|
		 -Werror=pointer-arith \
 | 
						|
		 -Werror=shorten-64-to-32 \
 | 
						|
		 -Werror=write-strings \
 | 
						|
		 -Werror=old-style-definition \
 | 
						|
		 -Wimplicit-fallthrough=0 \
 | 
						|
		 -Wmissing-noreturn \
 | 
						|
		 -Wno-cast-function-type \
 | 
						|
		 -Wno-constant-logical-operand \
 | 
						|
		 -Wno-long-long \
 | 
						|
		 -Wno-missing-field-initializers \
 | 
						|
		 -Wno-overlength-strings \
 | 
						|
		 -Wno-packed-bitfield-compat \
 | 
						|
		 -Wno-parentheses-equality \
 | 
						|
		 -Wno-self-assign \
 | 
						|
		 -Wno-tautological-compare \
 | 
						|
		 -Wno-unused-parameter \
 | 
						|
		 -Wno-unused-value \
 | 
						|
		 -Wsuggest-attribute=format \
 | 
						|
		 -Wsuggest-attribute=noreturn \
 | 
						|
		 -Wunused-variable \
 | 
						|
		 -diag-disable=175,188,1684,2259,2312 \
 | 
						|
		 $extra_warnflags \
 | 
						|
		 ; do
 | 
						|
	AS_IF([test "$particular_werror_flags" != yes], [
 | 
						|
	    wflag=`echo x$wflag | sed 's/^x-Werror=/-W/;s/^x//'`
 | 
						|
	])
 | 
						|
	ok=no
 | 
						|
	RUBY_TRY_CFLAGS($wflag, [
 | 
						|
	    RUBY_APPEND_OPTIONS(warnflags, $wflag)
 | 
						|
	    ok=yes
 | 
						|
	])
 | 
						|
	AS_CASE([$ok:$wflag], [no:-Werror=*], [
 | 
						|
	    wflag=`echo x$wflag | sed 's/^x-Werror=/-W/'`
 | 
						|
	    RUBY_TRY_CFLAGS($wflag, [
 | 
						|
		RUBY_APPEND_OPTIONS(warnflags, $wflag)
 | 
						|
		particular_werror_flags=no
 | 
						|
	    ])
 | 
						|
	])
 | 
						|
    done
 | 
						|
    AS_IF([test "$particular_werror_flags" = "yes"], [
 | 
						|
	wflag=-Werror=undef
 | 
						|
    ], [
 | 
						|
	wflag=-Wundef
 | 
						|
    ])
 | 
						|
    RUBY_TRY_CFLAGS($wflag, [
 | 
						|
	RUBY_APPEND_OPTIONS(warnflags, $wflag)
 | 
						|
    ], [], [
 | 
						|
	@%:@if !defined(RUBY_CONFIG_TEST_NEVER_DEFINED_SYMBOL)
 | 
						|
	@%:@elif RUBY_CONFIG_TEST_NEVER_DEFINED_SYMBOL
 | 
						|
	@%:@endif
 | 
						|
    ])
 | 
						|
    AS_CASE([" $warnflags "],[*" -Wno-missing-field-initializers "*], [wflag="-Wall -Wextra"],
 | 
						|
                             [wflag=-Wall])
 | 
						|
    RUBY_TRY_CFLAGS($wflag, [warnflags="$wflag${warnflags+ $warnflags}"])
 | 
						|
    # Disable warnflags while conftest. -Werror=* flags might make bad OS capability guess.
 | 
						|
    rb_cv_warnflags="$warnflags"
 | 
						|
    warnflags=
 | 
						|
])
 | 
						|
RUBY_TRY_CFLAGS(-Qunused-arguments, [RUBY_APPEND_OPTIONS(rb_cv_wsuppress_flags, -Qunused-arguments)])
 | 
						|
AC_COMPILE_IFELSE([
 | 
						|
    AC_LANG_PROGRAM([
 | 
						|
@%:@if !(defined(__SUNPRO_C)||defined(__SUNPRO_CC))
 | 
						|
@%:@error not sunpro
 | 
						|
@%:@endif],[])], [
 | 
						|
    for e in \
 | 
						|
        E_STATEMENT_NOT_REACHED \
 | 
						|
        E_INIT_SIGN_EXTEND \
 | 
						|
        E_INIT_DOES_NOT_FIT \
 | 
						|
        E_INITIALIZATION_TYPE_MISMATCH
 | 
						|
    do
 | 
						|
        RUBY_TRY_CFLAGS([-erroff=${e}], [
 | 
						|
            RUBY_APPEND_OPTIONS(rb_cv_warnflags, [-erroff=${e}])
 | 
						|
        ])
 | 
						|
    done
 | 
						|
])
 | 
						|
 | 
						|
AC_ARG_WITH(compress-debug-sections,
 | 
						|
	AS_HELP_STRING([--with-compress-debug-sections=type],
 | 
						|
	    [enable debug section compression]),
 | 
						|
	[compress_debug_sections=$withval], [compress_debug_sections=])
 | 
						|
 | 
						|
AS_IF([test "$GCC" = yes], [
 | 
						|
    # -D_FORTIFY_SOURCE
 | 
						|
    # When defined _FORTIFY_SOURCE, glibc enables some additional sanity
 | 
						|
    # argument check. The performance drop is very little and Ubuntu enables
 | 
						|
    # _FORTIFY_SOURCE=2 by default. So, let's support it for protecting us from
 | 
						|
    # a mistake of silly C extensions.
 | 
						|
 | 
						|
    # TODO: check if link succeeds with _FORTIFY_SOURCE=2.
 | 
						|
    AS_CASE(["$target_os"],
 | 
						|
    [mingw*], [
 | 
						|
	fortify_source=no
 | 
						|
    ])
 | 
						|
    AC_ARG_ENABLE(fortify_source,
 | 
						|
		  AS_HELP_STRING([--disable-fortify-source],
 | 
						|
				 [disable -D_FORTIFY_SOURCE=2 option, which causes link error on mingw]),
 | 
						|
		  [fortify_source=$enableval])
 | 
						|
    AS_IF([test "x$fortify_source" != xno], [
 | 
						|
        RUBY_TRY_CFLAGS([$optflags -D_FORTIFY_SOURCE=2], [RUBY_APPEND_OPTION(XCFLAGS, -D_FORTIFY_SOURCE=2)], [],
 | 
						|
                        [@%:@include <stdio.h>])
 | 
						|
    ])
 | 
						|
 | 
						|
    : ${MJIT_HEADER_FLAGS='-P -dD'}
 | 
						|
 | 
						|
    # -fstack-protector
 | 
						|
    AS_CASE(["$target_os"],
 | 
						|
    [mingw*|emscripten*|wasi*], [
 | 
						|
	stack_protector=no
 | 
						|
    ])
 | 
						|
    AS_IF([test -z "${stack_protector+set}"], [
 | 
						|
	AS_FOR(option, opt, [-fstack-protector-strong -fstack-protector], [
 | 
						|
	    RUBY_TRY_CFLAGS(option, [stack_protector=yes])
 | 
						|
	    AS_IF([test "x$stack_protector" = xyes], [
 | 
						|
		RUBY_TRY_LDFLAGS(option, [], [stack_protector=])
 | 
						|
	    ])
 | 
						|
	    AS_IF([test "x$stack_protector" = xyes], [stack_protector=option; break])
 | 
						|
	])
 | 
						|
    ])
 | 
						|
    AS_CASE(["$stack_protector"], [-*], [
 | 
						|
	RUBY_APPEND_OPTION(XCFLAGS, $stack_protector)
 | 
						|
	RUBY_APPEND_OPTION(XLDFLAGS, $stack_protector)
 | 
						|
	RUBY_APPEND_OPTION(LDFLAGS, $stack_protector)
 | 
						|
    ])
 | 
						|
 | 
						|
    # aarch64 branch protection
 | 
						|
    AS_CASE(["$target_cpu"], [aarch64], [
 | 
						|
	AS_FOR(option, opt, [-mbranch-protection=pac-ret -msign-return-address=all], [
 | 
						|
            RUBY_TRY_CFLAGS(option, [branch_protection=yes], [branch_protection=no])
 | 
						|
            AS_IF([test "x$branch_protection" = xyes], [
 | 
						|
                RUBY_APPEND_OPTION(XCFLAGS, option)
 | 
						|
                break
 | 
						|
            ])
 | 
						|
        ])
 | 
						|
    ])
 | 
						|
 | 
						|
    AS_CASE("${compress_debug_sections:-zlib}",
 | 
						|
    [none|no], [], [
 | 
						|
    RUBY_TRY_LDFLAGS(${linker_flag}--compress-debug-sections=${compress_debug_sections:-zlib},
 | 
						|
		     [compress_debug_sections=${compress_debug_sections:-zlib}],
 | 
						|
		     [compress_debug_sections=no])
 | 
						|
    ])
 | 
						|
    AS_IF([test "x$compress_debug_sections" != xno], [
 | 
						|
	RUBY_APPEND_OPTION(DLDFLAGS, ${linker_flag}--compress-debug-sections=$compress_debug_sections)
 | 
						|
    ])
 | 
						|
 | 
						|
    AS_CASE(["$target_os"],[mingw*], [
 | 
						|
      # On  Windows  platforms,   system  provided  headers  are  VC++
 | 
						|
      # optimized.  That  is, C++  habits are often  contaminated into
 | 
						|
      # various  headers.  Most frequent  situation is  the use  of //
 | 
						|
      # comments.   We  bypass  ANSI   C  mode  for  them.   Otherwise
 | 
						|
      # extension libs cannot include those headers.
 | 
						|
 | 
						|
      # Since math.h in some mingw64 wrongly declares frexp and modf
 | 
						|
      # to be pure, the variables pointed by the second arguments are
 | 
						|
      # considered uninitialized unexpectedly.
 | 
						|
      AC_CACHE_CHECK([whether frexp and modf are broken],
 | 
						|
	rb_cv_mingw64_broken_frexp_modf,
 | 
						|
	[
 | 
						|
	  save_CFLAGS="$CFLAGS"
 | 
						|
	  AS_IF([test "$particular_werror_flags" = "yes"], [
 | 
						|
	    CFLAGS="$CFLAGS -Werror=uninitialized"
 | 
						|
	  ], [
 | 
						|
	    CFLAGS="$CFLAGS -Werror -Wuninitialized"
 | 
						|
	  ])
 | 
						|
	  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>
 | 
						|
	    int foo(double x)
 | 
						|
	    {
 | 
						|
	      int exp;
 | 
						|
	      frexp(x, &exp);
 | 
						|
	      return exp;
 | 
						|
	    }]], [[if (foo(0.0)) return 1;]])],
 | 
						|
	    [rb_cv_mingw64_broken_frexp_modf=no],
 | 
						|
	    [rb_cv_mingw64_broken_frexp_modf=yes])
 | 
						|
	  CFLAGS="$save_CFLAGS"
 | 
						|
	])
 | 
						|
      AS_IF([test "$rb_cv_mingw64_broken_frexp_modf" = yes], [
 | 
						|
	AC_DEFINE(RUBY_MINGW64_BROKEN_FREXP_MODF)
 | 
						|
      ])
 | 
						|
    ],
 | 
						|
    [cygwin*|msys*|darwin*|netbsd*], [
 | 
						|
      # need lgamma_r()
 | 
						|
    ])
 | 
						|
 | 
						|
    # suppress annoying -Wstrict-overflow warnings
 | 
						|
    RUBY_TRY_CFLAGS(-fno-strict-overflow, [RUBY_APPEND_OPTION(XCFLAGS, -fno-strict-overflow)])
 | 
						|
 | 
						|
    test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb3, [debugflags=-ggdb3])}
 | 
						|
    test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-ggdb, [debugflags=-ggdb])}
 | 
						|
    test "${debugflags+set}" || {RUBY_TRY_CFLAGS(-g3, [debugflags=-g3])}
 | 
						|
])
 | 
						|
test $ac_cv_prog_cc_g = yes && : ${debugflags=-g}
 | 
						|
 | 
						|
AS_IF([test "$GCC" = ""], [
 | 
						|
    AS_CASE(["$target_os"],[aix*],[warnflags="$warnflags -qinfo=por" rb_cv_warnflags="$rb_cv_warnflags -qinfo=por"])
 | 
						|
])
 | 
						|
AS_IF([test "$GCC" = yes], [
 | 
						|
    RUBY_TRY_CFLAGS(-fvisibility=hidden, [visibility_option=yes], [visibility_option=no])
 | 
						|
    AC_SUBST(WERRORFLAG, "-Werror")
 | 
						|
    AS_IF([test "$visibility_option" = yes], [
 | 
						|
	RUBY_APPEND_OPTION(XCFLAGS, -fvisibility=hidden)
 | 
						|
	AC_DEFINE(RUBY_SYMBOL_EXPORT_BEGIN, [_Pragma("GCC visibility push(default)")])
 | 
						|
	AC_DEFINE(RUBY_SYMBOL_EXPORT_END,   [_Pragma("GCC visibility pop")])
 | 
						|
    ], [
 | 
						|
	RUBY_TRY_LDFLAGS([-Wl,-unexported_symbol,_Init_*], [visibility_option=ld], [visibility_option=no])
 | 
						|
    ])
 | 
						|
    test "$visibility_option" = no || OBJCOPY=:
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "$GCC" = yes], [
 | 
						|
    # optflags
 | 
						|
 | 
						|
    AS_CASE(["$target_os"], [mingw*], [
 | 
						|
	RUBY_TRY_CFLAGS(-fno-omit-frame-pointer, [optflags="${optflags+$optflags }-fno-omit-frame-pointer"])
 | 
						|
	RUBY_TRY_CFLAGS(-static-libgcc, [static_libgcc=yes], [static_libgcc=no])
 | 
						|
	AS_IF([test "$static_libgcc" = yes], [
 | 
						|
	    RUBY_APPEND_OPTION(EXTLDFLAGS, -static-libgcc)
 | 
						|
	])
 | 
						|
    ])
 | 
						|
 | 
						|
    # disable fast-math
 | 
						|
    for oflag in -fno-fast-math; do
 | 
						|
	RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(optflags, $oflag)])
 | 
						|
    done
 | 
						|
    for oflag in -fexcess-precision=standard -fp-model\ precise; do
 | 
						|
	RUBY_TRY_CFLAGS($oflag, [RUBY_APPEND_OPTION(XCFLAGS, $oflag)])
 | 
						|
    done
 | 
						|
])
 | 
						|
 | 
						|
AS_CASE(["$target_cpu"], [[i[3-6]86*]], [
 | 
						|
    AC_CACHE_CHECK([for __sync_val_compare_and_swap], [rb_cv_gcc_compiler_cas], [
 | 
						|
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned long atomic_var;]],
 | 
						|
	    [[__sync_val_compare_and_swap(&atomic_var, 0, 1);]])],
 | 
						|
	    [rb_cv_gcc_compiler_cas=yes],
 | 
						|
	    [
 | 
						|
	    save_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -march=i486"
 | 
						|
	    AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned long atomic_var;]],
 | 
						|
		[[__sync_val_compare_and_swap(&atomic_var, 0, 1);]])],
 | 
						|
		[rb_cv_gcc_compiler_cas=i486],
 | 
						|
		[rb_cv_gcc_compiler_cas=no])
 | 
						|
	    CFLAGS="$save_CFLAGS"
 | 
						|
	    ])
 | 
						|
    ])
 | 
						|
    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]),
 | 
						|
	[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\""
 | 
						|
}
 | 
						|
 | 
						|
AC_CACHE_CHECK([whether compiler has statement and declarations in expressions],
 | 
						|
  rb_cv_have_stmt_and_decl_in_expr,
 | 
						|
  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[ __extension__ ({ int a = 0; a; }); ]])],
 | 
						|
  [rb_cv_have_stmt_and_decl_in_expr=yes],
 | 
						|
  [rb_cv_have_stmt_and_decl_in_expr=no])])
 | 
						|
AS_IF([test "$rb_cv_have_stmt_and_decl_in_expr" = yes], [
 | 
						|
  AC_DEFINE(HAVE_STMT_AND_DECL_IN_EXPR)
 | 
						|
])
 | 
						|
 | 
						|
: "header and library section" && {
 | 
						|
AC_ARG_WITH(winnt-ver,
 | 
						|
  AS_HELP_STRING([--with-winnt-ver=0xXXXX], [target Windows NT version (default to 0x0600)]),
 | 
						|
  [with_winnt_ver="$withval"], [with_winnt_ver="0x0600"])
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
[mingw*], [
 | 
						|
  RUBY_APPEND_OPTION(CPPFLAGS, -D_WIN32_WINNT=$with_winnt_ver)
 | 
						|
  RUBY_APPEND_OPTION(CPPFLAGS, -D__MINGW_USE_VC2005_COMPAT)
 | 
						|
])
 | 
						|
 | 
						|
RUBY_THREAD
 | 
						|
 | 
						|
dnl Checks for libraries.
 | 
						|
AS_CASE(["$target_os"],[*bsd*|dragonfly*],[],[ac_cv_func_daemon=no])
 | 
						|
 | 
						|
AS_CASE(["$target_os"], [*android*], [
 | 
						|
	AS_CASE(["$target_cpu"], [arm*], [
 | 
						|
		ac_cv_func___builtin_setjmp=no
 | 
						|
	])
 | 
						|
])
 | 
						|
 | 
						|
AS_UNSET(ORIG_LIBS)
 | 
						|
POSTLINK=:
 | 
						|
AC_SUBST(POSTLINK)
 | 
						|
cleanlibs=
 | 
						|
AC_SUBST(cleanlibs)
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
[nextstep*], [	],
 | 
						|
[openstep*], [	],
 | 
						|
[rhapsody*], [	],
 | 
						|
[darwin*], [
 | 
						|
		ORIG_LIBS="$LIBS"
 | 
						|
		RUBY_PREPEND_OPTION(LIBS, -lobjc)
 | 
						|
		RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_DARWIN_UNLIMITED_SELECT -D_REENTRANT)
 | 
						|
		AC_CACHE_CHECK([whether syscall(2) is deprecated], rb_cv_syscall_deprecated,
 | 
						|
		    [RUBY_WERROR_FLAG([
 | 
						|
			AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <unistd.h>]],
 | 
						|
							   [[if (syscall(0)) return 1;]])],
 | 
						|
			    [rb_cv_syscall_deprecated=no],
 | 
						|
			    [rb_cv_syscall_deprecated=yes])])])
 | 
						|
		AS_IF([test $rb_cv_syscall_deprecated = yes], [
 | 
						|
		    ac_cv_func___syscall=no
 | 
						|
		    ac_cv_func_syscall=no
 | 
						|
		    ac_cv_header_sys_syscall_h=no
 | 
						|
		    ac_cv_header_syscall_h=no
 | 
						|
		])
 | 
						|
		ac_cv_func_getcontext=no
 | 
						|
		ac_cv_func_setcontext=no
 | 
						|
		ac_cv_type_getgroups=gid_t # getgroups() on Rosetta fills garbage
 | 
						|
		ac_cv_lib_crypt_crypt=no
 | 
						|
		ac_cv_func_fdatasync=no # Mac OS X wrongly reports it has fdatasync()
 | 
						|
		ac_cv_func_vfork=no
 | 
						|
		AS_IF([test $gcc_major -eq 4 -a $gcc_minor -lt 3], [
 | 
						|
		    ac_cv_func___builtin_setjmp=no
 | 
						|
		])
 | 
						|
		with_setjmp_type=sigsetjmp # to hijack SIGCHLD handler
 | 
						|
		AC_CACHE_CHECK(for broken crypt with 8bit chars, rb_cv_broken_crypt,
 | 
						|
		    [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
#include <stdio.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
void
 | 
						|
broken_crypt(const char *salt, const char *buf1, const char *buf2)
 | 
						|
{
 | 
						|
#if 0
 | 
						|
    printf("%.2x%.2x: %s -> %s\n", (unsigned char)salt[0], (unsigned char)salt[1],
 | 
						|
	   buf1+2, buf2+2);
 | 
						|
#endif
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main()
 | 
						|
{
 | 
						|
    int i;
 | 
						|
    char salt[2], buf[256], *s;
 | 
						|
    for (i = 0; i < 128*128; i++) {
 | 
						|
	salt[0] = 0x80 | (i & 0x7f);
 | 
						|
	salt[1] = 0x80 | (i >> 7);
 | 
						|
	strcpy(buf, crypt("", salt));
 | 
						|
	if (strcmp(buf, s = crypt("", salt))) {
 | 
						|
	    broken_crypt(salt, buf, s);
 | 
						|
	    return 1;
 | 
						|
	}
 | 
						|
    }
 | 
						|
    salt[0] = salt[1] = ' ';
 | 
						|
    strcpy(buf, crypt("", salt));
 | 
						|
    salt[0] = salt[1] = 0x80 | ' ';
 | 
						|
    if (strcmp(buf, s = crypt("", salt))) {
 | 
						|
	broken_crypt(salt, buf, s);
 | 
						|
	return 1;
 | 
						|
    }
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
]])],
 | 
						|
		    rb_cv_broken_crypt=no,
 | 
						|
		    rb_cv_broken_crypt=yes,
 | 
						|
		    rb_cv_broken_crypt=yes)])
 | 
						|
		AS_IF([test "$rb_cv_broken_crypt" = yes], [
 | 
						|
		   AC_DEFINE(BROKEN_CRYPT, 1)
 | 
						|
		])
 | 
						|
		POSTLINK=""
 | 
						|
		AC_CHECK_PROGS(codesign, codesign)
 | 
						|
		AC_CHECK_PROGS(dsymutil, dsymutil)
 | 
						|
		AS_IF([test -n "$codesign"], [
 | 
						|
		    POSTLINK="{ test -z '\$(RUBY_CODESIGN)' || $codesign -s '\$(RUBY_CODESIGN)' -f \$@; }${POSTLINK:+; $POSTLINK}"
 | 
						|
		])
 | 
						|
		AS_IF([test -n "$dsymutil"], [
 | 
						|
		    POSTLINK="$dsymutil \$@${POSTLINK:+; $POSTLINK}"
 | 
						|
		])
 | 
						|
		AS_IF([test -n "${POSTLINK}"], [
 | 
						|
		    LINK_SO="$LINK_SO
 | 
						|
\$(POSTLINK)"
 | 
						|
		])
 | 
						|
		AC_CHECK_HEADERS(crt_externs.h, [], [], [
 | 
						|
		    #include <crt_externs.h>
 | 
						|
		])
 | 
						|
		cleanlibs='$(TARGET_SO).dSYM'
 | 
						|
		],
 | 
						|
[solaris*], [	LIBS="-lm $LIBS"
 | 
						|
		ac_cv_func_vfork=no
 | 
						|
		AC_MSG_CHECKING(whether _XOPEN_SOURCE is already given)
 | 
						|
		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
 | 
						|
			#ifndef _XOPEN_SOURCE
 | 
						|
			#error _XOPEN_SOURCE is not defined
 | 
						|
			#endif
 | 
						|
			]], [[]])],
 | 
						|
		        [given_xopen_source=yes], [given_xopen_source=no])
 | 
						|
		AC_MSG_RESULT($given_xopen_source)
 | 
						|
		AS_IF([test $given_xopen_source = no], [
 | 
						|
		  AC_MSG_CHECKING(appropriate _XOPEN_SOURCE value to define)
 | 
						|
		  define_xopen_source=""
 | 
						|
		  for tmp_xpg in 7 6 5; do
 | 
						|
		    AS_IF([test x"$define_xopen_source" != x], [
 | 
						|
		      break
 | 
						|
		    ])
 | 
						|
		    RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
			#define _XOPEN_SOURCE ${tmp_xpg}00
 | 
						|
			#include <unistd.h>
 | 
						|
			#ifndef _XPG${tmp_xpg}
 | 
						|
			#error _XPG${tmp_xpg} should be defined by _XOPEN_SOURCE=${tmp_xpg}00
 | 
						|
			#endif
 | 
						|
			]], [[]])],
 | 
						|
			[define_xopen_source=${tmp_xpg}00], [])
 | 
						|
			])
 | 
						|
		  done
 | 
						|
		  AS_IF([test x"$define_xopen_source" = x], [
 | 
						|
		    define_xopen_source=no
 | 
						|
		  ])
 | 
						|
		  AC_MSG_RESULT($define_xopen_source)
 | 
						|
		  AS_IF([test x"$define_xopen_source" != xno], [
 | 
						|
		    RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE=$define_xopen_source)
 | 
						|
		    # _XOPEN_SOURCE should not be defined for C++ on Solaris.
 | 
						|
		    RUBY_APPEND_OPTIONS(CXXFLAGS, -U_XOPEN_SOURCE)
 | 
						|
		  ])
 | 
						|
		])
 | 
						|
		AC_CHECK_TYPES([caddr_t],[],[],[@%:@include <sys/types.h>])
 | 
						|
		AC_CACHE_CHECK([whether madvise declaration is needed], rb_cv_madvice_prototype_using_caddr_t,
 | 
						|
		  [RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
		    @%:@include <sys/unistd.h>
 | 
						|
		    @%:@include <sys/mman.h>
 | 
						|
		    @%:@include <sys/types.h>
 | 
						|
		    extern int madvise(caddr_t, size_t, int);
 | 
						|
		    ]], [[]])],
 | 
						|
		    [rb_cv_madvice_prototype_using_caddr_t=yes], [rb_cv_madvice_prototype_using_caddr_t=no])
 | 
						|
		  ])
 | 
						|
		])
 | 
						|
		AS_IF([test $rb_cv_madvice_prototype_using_caddr_t = yes], [AC_DEFINE(NEED_MADVICE_PROTOTYPE_USING_CADDR_T, 1)])
 | 
						|
		],
 | 
						|
[haiku*], [
 | 
						|
		LIBS="$LIBS" # m lib is include in root
 | 
						|
		],
 | 
						|
[cygwin*|msys*], [
 | 
						|
		ac_cv_header_langinfo_h=yes
 | 
						|
		RUBY_APPEND_OPTIONS(CPPFLAGS, -D_XOPEN_SOURCE -D_GNU_SOURCE)
 | 
						|
		AC_CHECK_FUNCS(cygwin_conv_path)
 | 
						|
		AC_LIBOBJ([langinfo])
 | 
						|
		],
 | 
						|
[mingw*], [	LIBS="-lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi -lbcrypt $LIBS"
 | 
						|
		ac_cv_header_pwd_h=no
 | 
						|
		ac_cv_header_utime_h=no
 | 
						|
		ac_cv_header_sys_ioctl_h=no
 | 
						|
		ac_cv_header_sys_param_h=no
 | 
						|
		ac_cv_header_sys_resource_h=no
 | 
						|
		ac_cv_header_sys_select_h=no
 | 
						|
		ac_cv_header_sys_time_h=no
 | 
						|
		ac_cv_header_sys_times_h=no
 | 
						|
		ac_cv_header_sys_socket_h=no
 | 
						|
		ac_cv_func_execv=yes
 | 
						|
		ac_cv_func_lstat=yes
 | 
						|
		ac_cv_func_times=yes
 | 
						|
		ac_cv_func_waitpid=yes
 | 
						|
		ac_cv_func_fsync=yes
 | 
						|
		ac_cv_func_seekdir=yes
 | 
						|
		ac_cv_func_telldir=yes
 | 
						|
		ac_cv_func_lchown=yes
 | 
						|
		ac_cv_func_link=yes
 | 
						|
		ac_cv_func_readlink=yes
 | 
						|
		ac_cv_func_shutdown=yes
 | 
						|
		ac_cv_func_symlink=yes
 | 
						|
		ac_cv_lib_crypt_crypt=no
 | 
						|
		ac_cv_func_getpgrp_void=no
 | 
						|
		ac_cv_func_memcmp_working=yes
 | 
						|
		ac_cv_lib_dl_dlopen=no
 | 
						|
		rb_cv_negative_time_t=yes
 | 
						|
		ac_cv_func_fcntl=yes
 | 
						|
		ac_cv_func_flock=yes
 | 
						|
		ac_cv_func_gmtime_r=yes
 | 
						|
		rb_cv_large_fd_select=yes
 | 
						|
		ac_cv_type_struct_timeval=yes
 | 
						|
                ac_cv_func_clock_gettime=yes
 | 
						|
                ac_cv_func_clock_getres=yes
 | 
						|
		ac_cv_func_malloc_usable_size=no
 | 
						|
		ac_cv_type_off_t=yes
 | 
						|
		ac_cv_sizeof_off_t=8
 | 
						|
		AS_IF([test "$target_cpu" = x64], [
 | 
						|
		    ac_cv_func___builtin_setjmp=yes
 | 
						|
		    ac_cv_func_round=no
 | 
						|
		])
 | 
						|
		ac_cv_func_tgamma=no
 | 
						|
		AC_CHECK_TYPE([NET_LUID], [], [],
 | 
						|
			      [@%:@include <winsock2.h>
 | 
						|
			      @%:@include <iphlpapi.h>])
 | 
						|
		AS_IF([test x"$ac_cv_type_NET_LUID" = xyes], [
 | 
						|
		    AC_DEFINE(HAVE_TYPE_NET_LUID, 1)
 | 
						|
		])
 | 
						|
		AC_CHECK_FUNCS(_gmtime64_s)
 | 
						|
		AC_CHECK_FUNCS(_wfreopen_s)
 | 
						|
		AC_LIBOBJ([langinfo])
 | 
						|
		],
 | 
						|
[bsdi*], [	LIBS="-lm $LIBS"
 | 
						|
		AC_DEFINE(BROKEN_SETREUID, 1)
 | 
						|
		AC_DEFINE(BROKEN_SETREGID, 1)
 | 
						|
                ac_cv_sizeof_rlim_t=8],
 | 
						|
[freebsd*], [	LIBS="-lm $LIBS"
 | 
						|
		ac_cv_func_getpeername=no
 | 
						|
		ac_cv_func_getsockname=no
 | 
						|
		ac_cv_func_shutdown=no
 | 
						|
		ac_cv_func_close=no
 | 
						|
		],
 | 
						|
[netbsd*], [	LIBS="-lm $LIBS"
 | 
						|
		],
 | 
						|
[dragonfly*], [	LIBS="-lm $LIBS"
 | 
						|
		],
 | 
						|
[aix*],[	LIBS="-lm $LIBS"
 | 
						|
		ac_cv_func_round=no
 | 
						|
		ac_cv_func___builtin_setjmp=no
 | 
						|
		],
 | 
						|
[linux*],[	LIBS="-lm $LIBS"
 | 
						|
		# __builtin_longjmp in ppc64* Linux does not restore
 | 
						|
		# the TOC register (r2), which is problematic
 | 
						|
		# when a global exit happens from JITted .so code.
 | 
						|
		AS_CASE(["$target_cpu"], [powerpc64*], [
 | 
						|
			ac_cv_func___builtin_setjmp=no
 | 
						|
		])
 | 
						|
		# With gcc-8's -fcf-protection, MJIT's __builtin_longjmp fails.
 | 
						|
		AS_CASE(["$CC $CFLAGS "], [*" -fcf-protection "*], [cf_protection=yes], [cf_protection=no])
 | 
						|
		AS_IF([test "$cf_protection" = yes], [
 | 
						|
			ac_cv_func___builtin_setjmp=no
 | 
						|
		])
 | 
						|
		],
 | 
						|
[emscripten*], [LIBS="-lm -lc $LIBS"
 | 
						|
		RUBY_APPEND_OPTIONS(LDFLAGS, "-sALLOW_MEMORY_GROWTH=1")
 | 
						|
		RUBY_APPEND_OPTIONS(LDFLAGS, "-sASYNCIFY")
 | 
						|
		RUBY_APPEND_OPTIONS(LDFLAGS, "-sFORCE_FILESYSTEM=1")
 | 
						|
		ac_cv_func_shutdown=no
 | 
						|
		],
 | 
						|
[wasi*],[	LIBS="-lm -lwasi-emulated-mman -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks $LIBS"
 | 
						|
		RUBY_APPEND_OPTIONS(CFLAGS, -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_MMAN -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_PROCESS_CLOCKS)
 | 
						|
		RUBY_APPEND_OPTIONS(CPPFLAGS, -D_WASI_EMULATED_SIGNAL -D_WASI_EMULATED_MMAN -D_WASI_EMULATED_GETPID -D_WASI_EMULATED_PROCESS_CLOCKS)
 | 
						|
		POSTLINK="\$(WASMOPT) --asyncify \$(wasmoptflags) --pass-arg=asyncify-ignore-imports -o \$@ \$@${POSTLINK:+; $POSTLINK}"
 | 
						|
		# wasi-libc's sys/socket.h is not compatible with -std=gnu99,
 | 
						|
		# so re-declare shutdown in include/ruby/missing.h
 | 
						|
		ac_cv_func_shutdown=no
 | 
						|
		],
 | 
						|
[	LIBS="-lm $LIBS"])
 | 
						|
: ${ORIG_LIBS=$LIBS}
 | 
						|
 | 
						|
AS_IF([test -n "${rb_there_is_in_fact_no_gplusplus_but_autoconf_is_cheating_us}"], [
 | 
						|
    AC_MSG_NOTICE([Test skipped due to lack of a C++ compiler.])
 | 
						|
],
 | 
						|
[test -n "${CXX}"], [
 | 
						|
    RUBY_WERROR_FLAG([
 | 
						|
        AC_MSG_CHECKING([whether CXXFLAGS is valid])
 | 
						|
        AC_LANG_PUSH(C++)
 | 
						|
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <cstdio>]], [[]])],
 | 
						|
	    [AC_MSG_RESULT(yes)],[
 | 
						|
            AC_MSG_RESULT(no)
 | 
						|
            # The message mentions CXXFLAGS, but CPPFLAGS might also affects.
 | 
						|
            AC_MSG_WARN([something wrong with CXXFLAGS="$CXXFLAGS"])
 | 
						|
            CXX=false
 | 
						|
        ])
 | 
						|
        AC_LANG_POP(C++)
 | 
						|
    ])
 | 
						|
])
 | 
						|
 | 
						|
AC_CHECK_LIB(crypt, crypt)      # glibc (GNU/Linux, GNU/Hurd, GNU/kFreeBSD)
 | 
						|
AC_CHECK_LIB(dl, dlopen)	# Dynamic linking for SunOS/Solaris and SYSV
 | 
						|
AC_CHECK_LIB(socket, shutdown)  # SunOS/Solaris
 | 
						|
 | 
						|
dnl Checks for header files.
 | 
						|
AC_HEADER_DIRENT
 | 
						|
dnl AC_HEADER_STDC has been checked in AC_USE_SYSTEM_EXTENSIONS
 | 
						|
AC_HEADER_STDBOOL
 | 
						|
AC_HEADER_SYS_WAIT
 | 
						|
 | 
						|
AC_CHECK_HEADERS(atomic.h)
 | 
						|
AC_CHECK_HEADERS(copyfile.h)
 | 
						|
AC_CHECK_HEADERS(direct.h)
 | 
						|
AC_CHECK_HEADERS(grp.h)
 | 
						|
AC_CHECK_HEADERS(fcntl.h)
 | 
						|
AC_CHECK_HEADERS(float.h)
 | 
						|
AC_CHECK_HEADERS(ieeefp.h)
 | 
						|
AC_CHECK_HEADERS(intrinsics.h)
 | 
						|
AC_CHECK_HEADERS(langinfo.h)
 | 
						|
AC_CHECK_HEADERS(limits.h)
 | 
						|
AC_CHECK_HEADERS(locale.h)
 | 
						|
AC_CHECK_HEADERS(malloc.h)
 | 
						|
AC_CHECK_HEADERS(malloc/malloc.h)
 | 
						|
AC_CHECK_HEADERS(malloc_np.h)
 | 
						|
AC_CHECK_HEADERS(net/socket.h)
 | 
						|
AC_CHECK_HEADERS(process.h)
 | 
						|
AC_CHECK_HEADERS(pwd.h)
 | 
						|
AC_CHECK_HEADERS(sanitizer/asan_interface.h)
 | 
						|
AC_CHECK_HEADERS(sanitizer/msan_interface.h)
 | 
						|
AC_CHECK_HEADERS(setjmpex.h)
 | 
						|
AC_CHECK_HEADERS(stdalign.h)
 | 
						|
AC_CHECK_HEADERS(stdio.h)
 | 
						|
AC_CHECK_HEADERS(sys/attr.h)
 | 
						|
AC_CHECK_HEADERS(sys/eventfd.h)
 | 
						|
AC_CHECK_HEADERS(sys/fcntl.h)
 | 
						|
AC_CHECK_HEADERS(sys/file.h)
 | 
						|
AC_CHECK_HEADERS(sys/id.h)
 | 
						|
AC_CHECK_HEADERS(sys/ioctl.h)
 | 
						|
AC_CHECK_HEADERS(sys/mkdev.h)
 | 
						|
AC_CHECK_HEADERS(sys/param.h)
 | 
						|
AC_CHECK_HEADERS(sys/prctl.h)
 | 
						|
AC_CHECK_HEADERS(sys/random.h)
 | 
						|
AC_CHECK_HEADERS(sys/resource.h)
 | 
						|
AC_CHECK_HEADERS(sys/select.h)
 | 
						|
AC_CHECK_HEADERS(sys/sendfile.h)
 | 
						|
AC_CHECK_HEADERS(sys/socket.h)
 | 
						|
AC_CHECK_HEADERS(sys/syscall.h)
 | 
						|
AC_CHECK_HEADERS(sys/sysmacros.h)
 | 
						|
AC_CHECK_HEADERS(sys/time.h)
 | 
						|
AC_CHECK_HEADERS(sys/times.h)
 | 
						|
AC_CHECK_HEADERS(sys/uio.h)
 | 
						|
AC_CHECK_HEADERS(sys/utime.h)
 | 
						|
AC_CHECK_HEADERS(syscall.h)
 | 
						|
AC_CHECK_HEADERS(time.h)
 | 
						|
AC_CHECK_HEADERS(ucontext.h)
 | 
						|
AC_CHECK_HEADERS(utime.h)
 | 
						|
AS_CASE("$target_cpu", [x64|x86_64|i[3-6]86*], [
 | 
						|
  AC_CHECK_HEADERS(x86intrin.h)
 | 
						|
])
 | 
						|
RUBY_UNIVERSAL_CHECK_HEADER([x86_64, i386], x86intrin.h)
 | 
						|
 | 
						|
AS_IF([test "x$with_gmp" != xno],
 | 
						|
  [AC_CHECK_HEADERS(gmp.h)
 | 
						|
   AS_IF([test "x$ac_cv_header_gmp_h" != xno],
 | 
						|
     AC_SEARCH_LIBS([__gmpz_init], [gmp],
 | 
						|
       [AC_DEFINE(HAVE_LIBGMP, 1)]))])
 | 
						|
 | 
						|
AC_ARG_WITH([jemalloc],
 | 
						|
  [AS_HELP_STRING([--with-jemalloc],[use jemalloc allocator])],
 | 
						|
  [with_jemalloc=$withval], [with_jemalloc=no])
 | 
						|
AS_IF([test "x$with_jemalloc" != xno],[
 | 
						|
  # find jemalloc header first
 | 
						|
  malloc_header=
 | 
						|
  AC_CHECK_HEADER(jemalloc/jemalloc.h, [malloc_header=jemalloc/jemalloc.h], [
 | 
						|
    AC_CHECK_HEADER(jemalloc.h, [malloc_header=jemalloc.h])
 | 
						|
  ])
 | 
						|
  AS_IF([test "$malloc_header" != ""], [
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_ALTERNATIVE_MALLOC_HEADER, [<$malloc_header>])
 | 
						|
  ])
 | 
						|
  save_LIBS="$LIBS"
 | 
						|
  AC_CACHE_CHECK([for jemalloc library], rb_cv_jemalloc_library, [
 | 
						|
    rb_cv_jemalloc_library=no
 | 
						|
    # try [with mangle, without mangle] x [no more additional
 | 
						|
    # libraries, adding jemalloc] combination, using the jemalloc
 | 
						|
    # header found above.
 | 
						|
    for mangle in '' mangle; do
 | 
						|
      for lib in '' -ljemalloc; do
 | 
						|
        LIBS="${lib:+$lib }$LIBS"
 | 
						|
        AC_LINK_IFELSE([AC_LANG_PROGRAM([${mangle:+@%:@define JEMALLOC_MANGLE 1}
 | 
						|
          @%:@include <stdio.h>
 | 
						|
          @%:@ifdef RUBY_ALTERNATIVE_MALLOC_HEADER
 | 
						|
          @%:@include RUBY_ALTERNATIVE_MALLOC_HEADER
 | 
						|
          @%:@else
 | 
						|
          extern const char *malloc_conf;
 | 
						|
          @%:@endif],
 | 
						|
          [/* access at runtime not to be optimized away */
 | 
						|
          if (malloc_conf) printf("malloc_conf=%s\n", malloc_conf);])],
 | 
						|
          [rb_cv_jemalloc_library="${lib:-none required}${mangle:+ with mangle}"])
 | 
						|
        LIBS="$save_LIBS"
 | 
						|
        test "${rb_cv_jemalloc_library}" = no || break 2
 | 
						|
      done
 | 
						|
    done
 | 
						|
  ])
 | 
						|
  with_jemalloc=${rb_cv_jemalloc_library}
 | 
						|
  AS_CASE(["$with_jemalloc"],
 | 
						|
  [no],
 | 
						|
    [AC_MSG_ERROR([jemalloc requested but not found])],
 | 
						|
  [-l*], [
 | 
						|
    set dummy $with_jemalloc
 | 
						|
    LIBS="$2 $LIBS"
 | 
						|
    DLDLIBS="$2${DLDLIBS:+ $DLDLIBS}" # probably needed also in extension libraries
 | 
						|
  ])
 | 
						|
  AS_CASE(["$with_jemalloc"],
 | 
						|
  [*" with mangle"], [
 | 
						|
    AC_DEFINE(JEMALLOC_MANGLE)
 | 
						|
  ])
 | 
						|
  AC_DEFINE(HAVE_MALLOC_CONF)
 | 
						|
  ac_cv_func_malloc_usable_size=yes
 | 
						|
]) # with_jemalloc
 | 
						|
 | 
						|
dnl check for large file stuff
 | 
						|
mv confdefs.h confdefs1.h
 | 
						|
: > confdefs.h
 | 
						|
AC_SYS_LARGEFILE
 | 
						|
# On 32-bit Solaris, it is safe to define _LARGEFILE_SOURCE
 | 
						|
# which is not added by AC_SYS_LARGEFILE.
 | 
						|
AS_IF([test x"$enable_largefile" != xno], [
 | 
						|
  AS_CASE(["$target_os"], [solaris*], [
 | 
						|
    AC_MSG_CHECKING([wheather _LARGEFILE_SOURCE should be defined])
 | 
						|
    AS_CASE(["${ac_cv_sys_file_offset_bits}:${ac_cv_sys_large_files}"],
 | 
						|
      ["64:"|"64:no"|"64:unknown"], [
 | 
						|
	# insert _LARGEFILE_SOURCE before _FILE_OFFSET_BITS line
 | 
						|
	# that is the same order as "getconf LFS_CFLAGS" output
 | 
						|
	mv confdefs.h largefile0.h
 | 
						|
	: > confdefs.h
 | 
						|
	AC_DEFINE(_LARGEFILE_SOURCE)
 | 
						|
	cat largefile0.h >> confdefs.h
 | 
						|
	rm largefile0.h
 | 
						|
	AC_MSG_RESULT([yes])
 | 
						|
      ], [AC_MSG_RESULT([no])])
 | 
						|
  ])
 | 
						|
])
 | 
						|
mv confdefs.h largefile.h
 | 
						|
mv confdefs1.h confdefs.h
 | 
						|
cat largefile.h >> confdefs.h
 | 
						|
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
    [aix*], [
 | 
						|
    AS_CASE(["$target_cpu:$ac_cv_sys_large_files"],
 | 
						|
	[ppc64:*|powerpc64:*], [],
 | 
						|
	[*:no|*:unknown], [],
 | 
						|
	[
 | 
						|
	    # AIX currently does not support a 32-bit call to posix_fadvise()
 | 
						|
	    # if _LARGE_FILES is defined.
 | 
						|
	    ac_cv_func_posix_fadvise=no
 | 
						|
	])
 | 
						|
    ])
 | 
						|
 | 
						|
AC_C_BIGENDIAN([], [], [], [AC_DEFINE(AC_APPLE_UNIVERSAL_BUILD, 1)])
 | 
						|
AC_C_CONST
 | 
						|
AC_C_CHAR_UNSIGNED
 | 
						|
AC_C_INLINE
 | 
						|
AC_C_VOLATILE
 | 
						|
AC_C_TYPEOF
 | 
						|
AC_C_RESTRICT
 | 
						|
 | 
						|
AS_CASE(":$ac_cv_c_const:$ac_cv_c_volatile:",
 | 
						|
    [*:no:*], [AC_MSG_ERROR(ANSI C-conforming const and volatile are mandatory)])
 | 
						|
 | 
						|
AC_CHECK_TYPES([long long, off_t])
 | 
						|
 | 
						|
AC_CACHE_CHECK([char bit], [rb_cv_char_bit],
 | 
						|
    [test "$universal_binary" = yes && cross_compiling=yes
 | 
						|
    AC_COMPUTE_INT([rb_cv_char_bit], [CHAR_BIT],
 | 
						|
	[AC_INCLUDES_DEFAULT([@%:@include <limits.h>])], [rb_cv_char_bit=8])
 | 
						|
    test "$universal_binary" = yes && cross_compiling=$real_cross_compiling])
 | 
						|
 | 
						|
RUBY_CHECK_SIZEOF(int, [], [ILP])
 | 
						|
RUBY_CHECK_SIZEOF(short)
 | 
						|
RUBY_CHECK_SIZEOF(long, [int], [ILP LP])
 | 
						|
RUBY_CHECK_SIZEOF(long long)
 | 
						|
RUBY_CHECK_SIZEOF(__int64, [8], [ILP LP])
 | 
						|
RUBY_CHECK_SIZEOF(__int128, [16], [ILP LP])
 | 
						|
RUBY_CHECK_SIZEOF(off_t)
 | 
						|
RUBY_CHECK_SIZEOF(void*, [int long "long long"], [ILP LP LLP])
 | 
						|
RUBY_CHECK_SIZEOF(float)
 | 
						|
RUBY_CHECK_SIZEOF(double)
 | 
						|
RUBY_CHECK_SIZEOF(time_t, [long "long long"], [], [@%:@include <time.h>])
 | 
						|
RUBY_CHECK_SIZEOF(clock_t, [], [], [@%:@include <time.h>])
 | 
						|
 | 
						|
AC_CACHE_CHECK(packed struct attribute, rb_cv_packed_struct,
 | 
						|
    [rb_cv_packed_struct=no
 | 
						|
    for mac in \
 | 
						|
	"__pragma(pack(push, 1)) x __pragma(pack(pop))" \
 | 
						|
	"x __attribute__((packed))" \
 | 
						|
	; do
 | 
						|
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@define PACKED_STRUCT(x) $mac
 | 
						|
			PACKED_STRUCT(struct { int a; });]], [[]])],
 | 
						|
		[rb_cv_packed_struct=$mac; break])
 | 
						|
    done])
 | 
						|
AS_IF([test "$rb_cv_packed_struct" != no], [
 | 
						|
    AC_DEFINE_UNQUOTED([PACKED_STRUCT(x)], [$rb_cv_packed_struct])
 | 
						|
    RUBY_TRY_CFLAGS(-Wno-address-of-packed-member, [AC_DEFINE(USE_UNALIGNED_MEMBER_ACCESS)])
 | 
						|
], [
 | 
						|
    AC_DEFINE_UNQUOTED([PACKED_STRUCT(x)], x)
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "x$ac_cv_type_long_long" = xyes], [
 | 
						|
    RUBY_CHECK_PRINTF_PREFIX(long long, ll I64, LL)
 | 
						|
], [test "x$ac_cv_type___int64" = xyes], [
 | 
						|
    RUBY_CHECK_PRINTF_PREFIX(__int64, ll I64, LL)
 | 
						|
])
 | 
						|
 | 
						|
RUBY_REPLACE_TYPE(pid_t, int, PIDT)
 | 
						|
RUBY_REPLACE_TYPE(uid_t, int, UIDT)
 | 
						|
RUBY_REPLACE_TYPE(gid_t, int, GIDT)
 | 
						|
RUBY_REPLACE_TYPE(time_t, [], TIMET, [@%:@include <time.h>])
 | 
						|
RUBY_REPLACE_TYPE(dev_t, [int long "long long"], DEVT)
 | 
						|
RUBY_REPLACE_TYPE(mode_t, ["unsigned short" "unsigned int" long], MODET, [@%:@include <sys/stat.h>])
 | 
						|
RUBY_REPLACE_TYPE(rlim_t, [int long "long long"], RLIM, [
 | 
						|
@%:@ifdef HAVE_SYS_TYPES_H
 | 
						|
@%:@include <sys/types.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifdef HAVE_SYS_TYPES_H
 | 
						|
@%:@include <sys/time.h>
 | 
						|
@%:@endif
 | 
						|
@%:@include <sys/resource.h>
 | 
						|
])
 | 
						|
RUBY_REPLACE_TYPE(off_t, [], OFFT)
 | 
						|
RUBY_REPLACE_TYPE(clockid_t, [], CLOCKID, [@%:@ifdef HAVE_TIME_H
 | 
						|
@%:@ include <time.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifdef HAVE_SYS_TIME_H
 | 
						|
@%:@ include <sys/time.h>
 | 
						|
@%:@endif])
 | 
						|
 | 
						|
# __VA_ARGS__ is also tested in AC_PROG_CC_C99 since autoconf 2.60a (around
 | 
						|
# 2006). The check below is redundant and should always success.  Remain not
 | 
						|
# deleted for backward compat.
 | 
						|
AC_CACHE_CHECK(for variable length macro, rb_cv_va_args_macro,
 | 
						|
  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
int foo(const char*);
 | 
						|
@%:@define FOO(...) foo(@%:@__VA_ARGS__)
 | 
						|
]], [[FOO(1);FOO(1,2);FOO(1,2,3);]])],
 | 
						|
  rb_cv_va_args_macro=yes,
 | 
						|
  rb_cv_va_args_macro=no)])
 | 
						|
AS_IF([test "$rb_cv_va_args_macro" = yes], [
 | 
						|
  AC_DEFINE(HAVE_VA_ARGS_MACRO)
 | 
						|
])
 | 
						|
 | 
						|
# We want C11's  `_Alignof`.  GCC (and alike) have  `__alignof__`, which behave
 | 
						|
# slightly differently  than the  C11's.  We cannot  use `__alignof__`  for our
 | 
						|
# purpose.   The problem  is, however,  that  old gcc  and old  clang had  both
 | 
						|
# implemented `_Alignof` as  a synonym of `__alignof__`.  They are  not what we
 | 
						|
# want.  We have to check sanity.
 | 
						|
#
 | 
						|
# See also: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52023
 | 
						|
# See also: https://bugs.llvm.org/show_bug.cgi?id=26547
 | 
						|
AC_CACHE_CHECK([if _Alignof() works], rb_cv_have__alignof,[
 | 
						|
    rb_cv_have__alignof=no
 | 
						|
    RUBY_WERROR_FLAG([
 | 
						|
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
            @%:@ifdef HAVE_STDALIGN_H
 | 
						|
            @%:@include <stdalign.h>
 | 
						|
            @%:@endif
 | 
						|
            @%:@ifdef STDC_HEADERS
 | 
						|
            @%:@include <stddef.h>
 | 
						|
            @%:@endif
 | 
						|
            @%:@ifndef __GNUC__
 | 
						|
            @%:@define __extension__
 | 
						|
            @%:@endif
 | 
						|
        ]], [[
 | 
						|
            typedef struct conftest_tag {
 | 
						|
                char _;
 | 
						|
                double d;
 | 
						|
            } T;
 | 
						|
            static int conftest_ary@<:@
 | 
						|
                offsetof(T, d) == __extension__ _Alignof(double)
 | 
						|
                ? 1 : -1
 | 
						|
            @:>@;
 | 
						|
            return conftest_ary@<:@0@:>@;
 | 
						|
        ]])],[
 | 
						|
            rb_cv_have__alignof=yes
 | 
						|
        ],[])
 | 
						|
    ])
 | 
						|
])
 | 
						|
AS_IF([test "$rb_cv_have__alignof" != no], [
 | 
						|
    AC_DEFINE(HAVE__ALIGNOF)
 | 
						|
])
 | 
						|
 | 
						|
RUBY_FUNC_ATTRIBUTE(__const__, CONSTFUNC)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__pure__, PUREFUNC)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__noreturn__, NORETURN)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__deprecated__, DEPRECATED)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__deprecated__("by "@%:@n), DEPRECATED_BY(n,x), rb_cv_func_deprecated_by)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__noinline__, NOINLINE)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__always_inline__, ALWAYS_INLINE)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__no_sanitize__(san), NO_SANITIZE(san, x), rb_cv_func_no_sanitize)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__no_sanitize_address__, NO_SANITIZE_ADDRESS)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__no_address_safety_analysis__, NO_ADDRESS_SAFETY_ANALYSIS)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__warn_unused_result__, WARN_UNUSED_RESULT)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__unused__, MAYBE_UNUSED)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__error__ mesg, ERRORFUNC(mesg,x), rb_cv_func___error__)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__warning__ mesg, WARNINGFUNC(mesg,x), rb_cv_func___warning__)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__weak__, WEAK, rb_cv_func_weak)
 | 
						|
AS_IF([test "$rb_cv_func_weak" != x], [
 | 
						|
   AC_DEFINE(HAVE_FUNC_WEAK)
 | 
						|
])
 | 
						|
 | 
						|
AC_CACHE_CHECK([for __attribute__((__depreacted__(msg))) in C++],
 | 
						|
  rb_cv_CentOS6_CXX_workaround,
 | 
						|
  RUBY_WERROR_FLAG([
 | 
						|
    AC_LANG_PUSH([C++])
 | 
						|
    AC_COMPILE_IFELSE(
 | 
						|
      [AC_LANG_PROGRAM(
 | 
						|
        [],
 | 
						|
        [__attribute__((__deprecated__("message"))) int conftest(...);])],
 | 
						|
      [rb_cv_CentOS6_CXX_workaround=yes],
 | 
						|
      [rb_cv_CentOS6_CXX_workaround=no])
 | 
						|
    AC_LANG_POP()]))
 | 
						|
AS_IF([test "$rb_cv_CentOS6_CXX_workaround" != no],[
 | 
						|
  AC_DEFINE([RUBY_CXX_DEPRECATED(msg)],
 | 
						|
    [__attribute__((__deprecated__(msg)))])])
 | 
						|
 | 
						|
AC_CACHE_CHECK([for std::nullptr_t], rb_cv_CXX_nullptr, [
 | 
						|
  AC_LANG_PUSH([C++])
 | 
						|
  AC_COMPILE_IFELSE(
 | 
						|
    [AC_LANG_PROGRAM(
 | 
						|
      [@%:@include <cstddef>],
 | 
						|
      [static std::nullptr_t const *const conftest = nullptr;])],
 | 
						|
    [rb_cv_CXX_nullptr=yes],
 | 
						|
    [rb_cv_CXX_nullptr=no])
 | 
						|
  AC_LANG_POP()])
 | 
						|
AS_IF([test "$rb_cv_CXX_nullptr" != no],[AC_DEFINE(HAVE_NULLPTR)])
 | 
						|
 | 
						|
if_i386=${universal_binary+[defined __i386__]}
 | 
						|
RUBY_FUNC_ATTRIBUTE(__stdcall__,  FUNC_STDCALL,  rb_cv_func_stdcall,  ${if_i386})
 | 
						|
RUBY_FUNC_ATTRIBUTE(__cdecl__,    FUNC_CDECL,    rb_cv_func_cdecl,    ${if_i386})
 | 
						|
RUBY_FUNC_ATTRIBUTE(__fastcall__, FUNC_FASTCALL, rb_cv_func_fastcall, ${if_i386})
 | 
						|
RUBY_FUNC_ATTRIBUTE(__optimize__("O0"), FUNC_UNOPTIMIZED, rb_cv_func_unoptimized)
 | 
						|
RUBY_FUNC_ATTRIBUTE(__optimize__("-Os","-fomit-frame-pointer"), FUNC_MINIMIZED, rb_cv_func_minimized)
 | 
						|
 | 
						|
AS_IF([test "$GCC" = yes], [
 | 
						|
    AC_CACHE_CHECK([for function alias], [rb_cv_gcc_function_alias],
 | 
						|
	[rb_cv_gcc_function_alias=no
 | 
						|
	for a in alias weak,alias; do
 | 
						|
	    AC_LINK_IFELSE([AC_LANG_PROGRAM([[void foo(void) {}
 | 
						|
		void bar(void) __attribute__(($a("foo")));]], [[bar()]])],
 | 
						|
		[rb_cv_gcc_function_alias=$a; break])
 | 
						|
	done])
 | 
						|
    AS_IF([test "$rb_cv_gcc_function_alias" != no], [
 | 
						|
	AC_DEFINE(HAVE_ATTRIBUTE_FUNCTION_ALIAS)
 | 
						|
	AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_TYPE(type, prot, name, args)],
 | 
						|
			   [type prot __attribute__(($rb_cv_gcc_function_alias(@%:@name)));])
 | 
						|
	AC_DEFINE_UNQUOTED([RUBY_ALIAS_FUNCTION_VOID(prot, name, args)],
 | 
						|
			   [RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)])
 | 
						|
    ])
 | 
						|
])
 | 
						|
 | 
						|
{
 | 
						|
    AC_CACHE_CHECK([for __atomic builtins], [rb_cv_gcc_atomic_builtins], [
 | 
						|
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
 | 
						|
		    [[
 | 
						|
			__atomic_exchange_n(&atomic_var, 0, __ATOMIC_SEQ_CST);
 | 
						|
			__atomic_exchange_n(&atomic_var, 1, __ATOMIC_SEQ_CST);
 | 
						|
			__atomic_fetch_add(&atomic_var, 1, __ATOMIC_SEQ_CST);
 | 
						|
			__atomic_fetch_sub(&atomic_var, 1, __ATOMIC_SEQ_CST);
 | 
						|
			__atomic_or_fetch(&atomic_var, 1, __ATOMIC_SEQ_CST);
 | 
						|
		    ]])],
 | 
						|
		    [rb_cv_gcc_atomic_builtins=yes],
 | 
						|
		    [rb_cv_gcc_atomic_builtins=no])])
 | 
						|
    AS_IF([test "$rb_cv_gcc_atomic_builtins" = yes], [
 | 
						|
	AC_DEFINE(HAVE_GCC_ATOMIC_BUILTINS)
 | 
						|
    ])
 | 
						|
 | 
						|
    AC_CACHE_CHECK([for __sync builtins], [rb_cv_gcc_sync_builtins], [
 | 
						|
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
 | 
						|
		    [[
 | 
						|
			__sync_lock_test_and_set(&atomic_var, 0);
 | 
						|
			__sync_lock_test_and_set(&atomic_var, 1);
 | 
						|
			__sync_fetch_and_add(&atomic_var, 1);
 | 
						|
			__sync_fetch_and_sub(&atomic_var, 1);
 | 
						|
			__sync_or_and_fetch(&atomic_var, 1);
 | 
						|
			__sync_val_compare_and_swap(&atomic_var, 0, 1);
 | 
						|
		    ]])],
 | 
						|
		    [rb_cv_gcc_sync_builtins=yes],
 | 
						|
		    [rb_cv_gcc_sync_builtins=no])])
 | 
						|
    AS_IF([test "$rb_cv_gcc_sync_builtins" = yes], [
 | 
						|
	AC_DEFINE(HAVE_GCC_SYNC_BUILTINS)
 | 
						|
    ])
 | 
						|
 | 
						|
    AC_CACHE_CHECK(for __builtin_unreachable, rb_cv_func___builtin_unreachable,
 | 
						|
    [RUBY_WERROR_FLAG(
 | 
						|
    [AC_LINK_IFELSE([AC_LANG_PROGRAM([[volatile int zero;]],
 | 
						|
	[[if (zero) __builtin_unreachable();]])],
 | 
						|
	[rb_cv_func___builtin_unreachable=yes],
 | 
						|
	[rb_cv_func___builtin_unreachable=no])
 | 
						|
    ])
 | 
						|
    ])
 | 
						|
    AS_IF([test "$rb_cv_func___builtin_unreachable" = yes], [
 | 
						|
	AC_DEFINE(HAVE___BUILTIN_UNREACHABLE)
 | 
						|
    ])
 | 
						|
 | 
						|
    AC_CACHE_CHECK(for __assume, rb_cv_func___assume,
 | 
						|
    [RUBY_WERROR_FLAG([
 | 
						|
        AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],
 | 
						|
            [[__assume(1);]])],
 | 
						|
            [rb_cv_func___assume=yes],
 | 
						|
            [rb_cv_func___assume=no])
 | 
						|
    ])
 | 
						|
    ])
 | 
						|
    AS_IF([test "$rb_cv_func___assume" = yes], [
 | 
						|
	AC_DEFINE(HAVE___ASSUME)
 | 
						|
    ])
 | 
						|
}
 | 
						|
 | 
						|
AC_CACHE_CHECK(for exported function attribute, rb_cv_func_exported, [
 | 
						|
rb_cv_func_exported=no
 | 
						|
RUBY_WERROR_FLAG([
 | 
						|
for mac in '__attribute__ ((__visibility__("default")))' '__declspec(dllexport)'; do
 | 
						|
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@define RUBY_FUNC_EXPORTED $mac extern
 | 
						|
    RUBY_FUNC_EXPORTED void conftest_attribute_check(void);]], [[]])],
 | 
						|
    [rb_cv_func_exported="$mac"; break])
 | 
						|
done
 | 
						|
])])
 | 
						|
AS_IF([test "$rb_cv_func_exported" != no], [
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_FUNC_EXPORTED, [$rb_cv_func_exported extern])
 | 
						|
])
 | 
						|
RUBY_DECL_ATTRIBUTE([__nonnull__(n)], [RUBY_FUNC_NONNULL(n,x)], [rb_cv_func_nonnull],
 | 
						|
                    [], [function], [
 | 
						|
@%:@define x int conftest_attribute_check(void *p)
 | 
						|
@%:@define n 1
 | 
						|
])
 | 
						|
 | 
						|
RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_EXPORT)
 | 
						|
 | 
						|
AC_ARG_ENABLE(mathn,
 | 
						|
    AS_HELP_STRING([--enable-mathn], [enable canonicalization for mathn]),
 | 
						|
    [AC_MSG_ERROR([mathn support has been dropped])])
 | 
						|
 | 
						|
AC_CACHE_CHECK(for function name string predefined identifier,
 | 
						|
    rb_cv_function_name_string,
 | 
						|
    [AS_CASE(["$target_os"],[openbsd*],[
 | 
						|
      rb_cv_function_name_string=__func__
 | 
						|
     ],[
 | 
						|
     rb_cv_function_name_string=no
 | 
						|
      RUBY_WERROR_FLAG([
 | 
						|
        for func in __func__ __FUNCTION__; do
 | 
						|
            AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>]],
 | 
						|
					    [[puts($func);]])],
 | 
						|
            [rb_cv_function_name_string=$func
 | 
						|
            break])
 | 
						|
        done
 | 
						|
      ])])]
 | 
						|
)
 | 
						|
AS_IF([test "$rb_cv_function_name_string" != no], [
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_FUNCTION_NAME_STRING, [$rb_cv_function_name_string])
 | 
						|
])
 | 
						|
 | 
						|
AC_CACHE_CHECK(if enum over int is allowed, rb_cv_enum_over_int, [
 | 
						|
    rb_cv_enum_over_int=no
 | 
						|
    AS_IF([test "x$ac_cv_type_long_long" = xyes], [
 | 
						|
	type="unsigned long long" max="ULLONG_MAX"
 | 
						|
    ], [
 | 
						|
	type="unsigned long" max="ULONG_MAX"
 | 
						|
    ])
 | 
						|
    RUBY_WERROR_FLAG([
 | 
						|
        AC_COMPILE_IFELSE([
 | 
						|
            AC_LANG_BOOL_COMPILE_TRY([
 | 
						|
                    @%:@include <limits.h>
 | 
						|
                    enum {conftest_max = $max};
 | 
						|
                ], [
 | 
						|
                    (conftest_max == $max) &&
 | 
						|
                    (sizeof(conftest_max) == sizeof($type))
 | 
						|
                ]
 | 
						|
	    )],
 | 
						|
	    [rb_cv_enum_over_int=yes],
 | 
						|
	    [rb_cv_enum_over_int=no]
 | 
						|
	)
 | 
						|
    ])
 | 
						|
])
 | 
						|
AS_IF([test $rb_cv_enum_over_int = yes], [
 | 
						|
    AC_DEFINE(ENUM_OVER_INT, 1)
 | 
						|
])
 | 
						|
 | 
						|
dnl Check whether we need to define sys_nerr locally
 | 
						|
AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default
 | 
						|
@%:@include <errno.h>])
 | 
						|
 | 
						|
AC_CHECK_DECLS([getenv])
 | 
						|
 | 
						|
AS_CASE(["$target_cpu"],
 | 
						|
[alpha*|sh4|sh4el|sh4eb], [AS_CASE(["$target_os"::"$GCC"],
 | 
						|
		[*::yes],  # gcc
 | 
						|
			[CFLAGS="-mieee $CFLAGS"],
 | 
						|
		[osf*],    # ccc
 | 
						|
			[CFLAGS="-ieee $CFLAGS"],
 | 
						|
		)],
 | 
						|
[sparc*], [AC_LIBOBJ([sparc])])
 | 
						|
 | 
						|
ac_cv_header_net_socket_h=${ac_cv_header_net_socket_h=no}
 | 
						|
AS_IF([test "$ac_cv_header_net_socket_h" = yes], [
 | 
						|
    ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=no}
 | 
						|
], [
 | 
						|
    ac_cv_header_sys_socket_h=${ac_cv_header_sys_socket_h=yes}
 | 
						|
])
 | 
						|
 | 
						|
 | 
						|
AC_TYPE_SIZE_T
 | 
						|
RUBY_CHECK_SIGNEDNESS(size_t, [AC_MSG_ERROR(size_t is signed)], [],
 | 
						|
		      [@%:@include <sys/types.h>])
 | 
						|
RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include <sys/types.h>])
 | 
						|
RUBY_CHECK_SIZEOF(ptrdiff_t, size_t, [], [@%:@include <stddef.h>])
 | 
						|
RUBY_CHECK_SIZEOF(dev_t)
 | 
						|
RUBY_CHECK_PRINTF_PREFIX(size_t, z)
 | 
						|
RUBY_CHECK_PRINTF_PREFIX(ptrdiff_t, t)
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_blksize])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_blocks])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_rdev])
 | 
						|
RUBY_CHECK_SIZEOF([struct stat.st_size], [off_t int long "long long"], [], [@%:@include <sys/stat.h>])
 | 
						|
AS_IF([test "$ac_cv_member_struct_stat_st_blocks" = yes], [
 | 
						|
    RUBY_CHECK_SIZEOF([struct stat.st_blocks], [off_t int long "long long"], [], [@%:@include <sys/stat.h>])
 | 
						|
])
 | 
						|
RUBY_CHECK_SIZEOF([struct stat.st_ino], [long "long long"], [], [@%:@include <sys/stat.h>])
 | 
						|
RUBY_CHECK_SIZEOF([struct stat.st_dev], [dev_t int long "long long"], [], [@%:@include <sys/stat.h>])
 | 
						|
AS_IF([test "$ac_cv_member_struct_stat_st_rdev" = yes], [
 | 
						|
    RUBY_CHECK_SIZEOF([struct stat.st_rdev], [dev_t int long "long long"], [], [@%:@include <sys/stat.h>])
 | 
						|
])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_atim])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_atimespec])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_atimensec])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_mtim])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_mtimespec])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_mtimensec])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_ctim])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_ctimespec])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_ctimensec])
 | 
						|
AC_CHECK_MEMBERS([struct stat.st_birthtimespec])
 | 
						|
AS_IF([test "x$ac_cv_member_struct_stat_st_birthtimespec" != xyes],
 | 
						|
    [AC_CHECK_MEMBERS([struct statx.stx_btime])])
 | 
						|
 | 
						|
AC_CHECK_TYPES([struct timeval], [], [], [@%:@ifdef HAVE_TIME_H
 | 
						|
@%:@include <time.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifdef HAVE_SYS_TIME_H
 | 
						|
@%:@include <sys/time.h>
 | 
						|
@%:@endif])
 | 
						|
 | 
						|
AS_IF([test "${ac_cv_type_struct_timeval}" = yes], [
 | 
						|
    RUBY_CHECK_SIZEOF([struct timeval.tv_sec], [time_t long "long long"], [],
 | 
						|
		      [@%:@ifdef HAVE_TIME_H
 | 
						|
@%:@include <time.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifdef HAVE_SYS_TIME_H
 | 
						|
@%:@include <sys/time.h>
 | 
						|
@%:@endif])
 | 
						|
    AS_CASE(${ac_cv_sizeof_struct_timeval_tv_sec},
 | 
						|
	    [SIZEOF_INT], [t=int],
 | 
						|
	    [SIZEOF_LONG], [t=long],
 | 
						|
	    [SIZEOF_LONG_LONG], [t=LONG_LONG],
 | 
						|
	    [t=])
 | 
						|
    AS_IF([test "${t}" != ""], [
 | 
						|
	AC_DEFINE_UNQUOTED(TYPEOF_TIMEVAL_TV_SEC, [$t])
 | 
						|
    ])
 | 
						|
])
 | 
						|
 | 
						|
AC_CHECK_TYPES([struct timespec], [], [], [@%:@ifdef HAVE_TIME_H
 | 
						|
@%:@include <time.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifdef HAVE_SYS_TIME_H
 | 
						|
@%:@include <sys/time.h>
 | 
						|
@%:@endif])
 | 
						|
 | 
						|
AC_CHECK_TYPES([struct timezone], [], [], [@%:@ifdef HAVE_TIME_H
 | 
						|
@%:@ include <time.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifdef HAVE_SYS_TIME_H
 | 
						|
@%:@ include <sys/time.h>
 | 
						|
@%:@endif])
 | 
						|
 | 
						|
AC_CACHE_VAL([rb_cv_large_fd_select],
 | 
						|
    [AC_CHECK_TYPE(fd_mask, [rb_cv_large_fd_select=yes], [rb_cv_large_fd_select=no], [AC_INCLUDES_DEFAULT([])
 | 
						|
@%:@ifdef HAVE_SYS_SELECT_H
 | 
						|
@%:@ include <sys/select.h>
 | 
						|
@%:@endif])])
 | 
						|
AS_IF([test "$rb_cv_large_fd_select" = yes], [
 | 
						|
    AC_DEFINE(HAVE_RB_FD_INIT, 1)
 | 
						|
])
 | 
						|
 | 
						|
RUBY_DEFINT(int8_t, 1)
 | 
						|
RUBY_DEFINT(uint8_t, 1, unsigned)
 | 
						|
RUBY_DEFINT(int16_t, 2)
 | 
						|
RUBY_DEFINT(uint16_t, 2, unsigned)
 | 
						|
RUBY_DEFINT(int32_t, 4)
 | 
						|
RUBY_DEFINT(uint32_t, 4, unsigned)
 | 
						|
RUBY_DEFINT(int64_t, 8)
 | 
						|
RUBY_DEFINT(uint64_t, 8, unsigned)
 | 
						|
RUBY_DEFINT(int128_t, 16)
 | 
						|
RUBY_DEFINT(uint128_t, 16, unsigned)
 | 
						|
RUBY_DEFINT(intptr_t, void*)
 | 
						|
RUBY_DEFINT(uintptr_t, void*, unsigned)
 | 
						|
AS_IF([test "x$rb_cv_type_intptr_t" != xno], [
 | 
						|
    RUBY_CHECK_PRINTF_PREFIX(intptr_t, '' ll I64 l, PTR)
 | 
						|
])
 | 
						|
RUBY_DEFINT(ssize_t, size_t, [], [@%:@include <sys/types.h>])	dnl may differ from int, so not use AC_TYPE_SSIZE_T.
 | 
						|
AS_IF([test "x$rb_cv_type_int64_t" != xno], [
 | 
						|
    RUBY_CHECK_PRINTF_PREFIX(int64_t, ll I64 l, 64)
 | 
						|
])
 | 
						|
 | 
						|
AC_CACHE_CHECK(for stack end address, rb_cv_stack_end_address,
 | 
						|
[rb_cv_stack_end_address=no
 | 
						|
  AC_LINK_IFELSE([AC_LANG_PROGRAM(
 | 
						|
      [[extern void *__libc_stack_end;]],
 | 
						|
      [[if (!__libc_stack_end) return 1;]])],
 | 
						|
    [rb_cv_stack_end_address="__libc_stack_end"])
 | 
						|
])
 | 
						|
AS_IF([test $rb_cv_stack_end_address != no], [
 | 
						|
  AC_DEFINE_UNQUOTED(STACK_END_ADDRESS, $rb_cv_stack_end_address)
 | 
						|
])
 | 
						|
 | 
						|
dnl Checks for library functions.
 | 
						|
AC_TYPE_GETGROUPS
 | 
						|
AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
 | 
						|
[powerpc*-darwin*], [
 | 
						|
  AC_LIBSOURCES(alloca.c)
 | 
						|
  AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
 | 
						|
  AC_DEFINE(C_ALLOCA)
 | 
						|
  AC_DEFINE_UNQUOTED(alloca, alloca)
 | 
						|
  ],
 | 
						|
[universal-darwin*:*ppc*], [
 | 
						|
  AC_LIBSOURCES(alloca.c)
 | 
						|
  AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.${ac_objext}])
 | 
						|
  RUBY_DEFINE_IF([defined __powerpc__], C_ALLOCA, 1)
 | 
						|
  RUBY_DEFINE_IF([defined __powerpc__], alloca, alloca)
 | 
						|
  ],
 | 
						|
[
 | 
						|
  AC_FUNC_ALLOCA
 | 
						|
  ])
 | 
						|
AS_IF([test "x$ALLOCA" = "x"], [
 | 
						|
    AC_CACHE_CHECK([for dynamic size alloca], rb_cv_dynamic_alloca, [
 | 
						|
    for chk in ok __chkstk; do
 | 
						|
	AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
	    @%:@ifdef HAVE_ALLOCA_H
 | 
						|
	    @%:@include <alloca.h>
 | 
						|
	    @%:@endif
 | 
						|
	    void $chk() {}
 | 
						|
	    int dynamic_alloca_test;
 | 
						|
	    int dynamic_alloca_result;]],
 | 
						|
	    [[dynamic_alloca_result = alloca(dynamic_alloca_test) != 0;]])],
 | 
						|
	    [rb_cv_dynamic_alloca=$chk; break])
 | 
						|
    done])
 | 
						|
    AS_IF([test "x$rb_cv_dynamic_alloca" = "x__chkstk"], [
 | 
						|
	AC_DEFINE_UNQUOTED(RUBY_ALLOCA_CHKSTK, _$rb_cv_dynamic_alloca)
 | 
						|
	AS_CASE("$target_cpu",
 | 
						|
	[x64|x86_64], [
 | 
						|
	    AC_SUBST([ALLOCA], [\${LIBOBJDIR}x86_64-chkstk.${ac_objext}])
 | 
						|
	],)
 | 
						|
    ])
 | 
						|
])
 | 
						|
AC_FUNC_MEMCMP
 | 
						|
 | 
						|
AS_CASE(["$target_os"],[freebsd*],[
 | 
						|
	 AC_DEFINE(BROKEN_CLOSE)
 | 
						|
	 AC_REPLACE_FUNCS(close)
 | 
						|
	 ])
 | 
						|
 | 
						|
# dup and dup2 are always available except for WASI
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
    [wasi*], [],
 | 
						|
    [
 | 
						|
        RUBY_REQUIRE_FUNCS(dup dup2)
 | 
						|
    ]
 | 
						|
)
 | 
						|
 | 
						|
AC_REPLACE_FUNCS(acosh)
 | 
						|
AC_REPLACE_FUNCS(cbrt)
 | 
						|
AC_REPLACE_FUNCS(crypt)
 | 
						|
AC_REPLACE_FUNCS(erf)
 | 
						|
AC_REPLACE_FUNCS(explicit_bzero)
 | 
						|
AC_REPLACE_FUNCS(ffs)
 | 
						|
AC_REPLACE_FUNCS(flock)
 | 
						|
AC_REPLACE_FUNCS(hypot)
 | 
						|
AC_REPLACE_FUNCS(lgamma_r)
 | 
						|
AC_REPLACE_FUNCS(memmove)
 | 
						|
AC_REPLACE_FUNCS(nan)
 | 
						|
AC_REPLACE_FUNCS(nextafter)
 | 
						|
AC_REPLACE_FUNCS(setproctitle)
 | 
						|
AC_REPLACE_FUNCS(strchr)
 | 
						|
AC_REPLACE_FUNCS(strerror)
 | 
						|
AC_REPLACE_FUNCS(strlcat)
 | 
						|
AC_REPLACE_FUNCS(strlcpy)
 | 
						|
AC_REPLACE_FUNCS(strstr)
 | 
						|
AC_REPLACE_FUNCS(tgamma)
 | 
						|
 | 
						|
AC_DEFINE(HAVE_ISFINITE)        # C99; backward compatibility
 | 
						|
 | 
						|
# for missing/setproctitle.c
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
[aix* | k*bsd*-gnu | kopensolaris*-gnu | linux* | darwin*], [AC_DEFINE(SPT_TYPE,SPT_REUSEARGV)],
 | 
						|
[])
 | 
						|
AC_CHECK_HEADERS(sys/pstat.h)
 | 
						|
 | 
						|
 | 
						|
AC_DEFINE(HAVE_SIGNBIT)         # C99; backward compatibility
 | 
						|
 | 
						|
AC_FUNC_FORK
 | 
						|
 | 
						|
AC_CHECK_FUNCS(__syscall)
 | 
						|
AC_CHECK_FUNCS(_longjmp)		# used for AC_ARG_WITH(setjmp-type)
 | 
						|
# we don't use _setjmp if _longjmp doesn't exist.
 | 
						|
test x$ac_cv_func__longjmp = xno && ac_cv_func__setjmp=no
 | 
						|
AC_CHECK_FUNCS(arc4random_buf)
 | 
						|
AC_CHECK_FUNCS(atan2l atan2f)
 | 
						|
AC_CHECK_FUNCS(chmod)
 | 
						|
AC_CHECK_FUNCS(chown)
 | 
						|
AC_CHECK_FUNCS(chroot)
 | 
						|
AC_CHECK_FUNCS(chsize)
 | 
						|
AC_CHECK_FUNCS(clock_gettime)
 | 
						|
AC_CHECK_FUNCS(copy_file_range)
 | 
						|
AC_CHECK_FUNCS(cosh)
 | 
						|
AC_CHECK_FUNCS(crypt_r)
 | 
						|
AC_CHECK_FUNCS(daemon)
 | 
						|
AC_CHECK_FUNCS(dirfd)
 | 
						|
AC_CHECK_FUNCS(dl_iterate_phdr)
 | 
						|
AC_CHECK_FUNCS(dlopen)
 | 
						|
AC_CHECK_FUNCS(dladdr)
 | 
						|
AC_CHECK_FUNCS(dup3)
 | 
						|
AC_CHECK_FUNCS(eaccess)
 | 
						|
AC_CHECK_FUNCS(endgrent)
 | 
						|
AC_CHECK_FUNCS(eventfd)
 | 
						|
AC_CHECK_FUNCS(execl)
 | 
						|
AC_CHECK_FUNCS(execle)
 | 
						|
AC_CHECK_FUNCS(execv)
 | 
						|
AC_CHECK_FUNCS(execve)
 | 
						|
AC_CHECK_FUNCS(explicit_memset)
 | 
						|
AC_CHECK_FUNCS(fcopyfile)
 | 
						|
AC_CHECK_FUNCS(fchmod)
 | 
						|
AC_CHECK_FUNCS(fchown)
 | 
						|
AC_CHECK_FUNCS(fcntl)
 | 
						|
AC_CHECK_FUNCS(fdatasync)
 | 
						|
AC_CHECK_FUNCS(fdopendir)
 | 
						|
AC_CHECK_FUNCS(fgetattrlist)
 | 
						|
AC_CHECK_FUNCS(fmod)
 | 
						|
AC_CHECK_FUNCS(fstatat)
 | 
						|
AC_CHECK_FUNCS(fsync)
 | 
						|
AC_CHECK_FUNCS(ftruncate)
 | 
						|
AC_CHECK_FUNCS(ftruncate64)		# used for Win32 platform
 | 
						|
AC_CHECK_FUNCS(getattrlist)
 | 
						|
AC_CHECK_FUNCS(getcwd)
 | 
						|
AC_CHECK_FUNCS(getegid)
 | 
						|
AC_CHECK_FUNCS(getentropy)
 | 
						|
AC_CHECK_FUNCS(geteuid)
 | 
						|
AC_CHECK_FUNCS(getgid)
 | 
						|
AC_CHECK_FUNCS(getgidx)
 | 
						|
AC_CHECK_FUNCS(getgrnam)
 | 
						|
AC_CHECK_FUNCS(getgrnam_r)
 | 
						|
AC_CHECK_FUNCS(getgroups)
 | 
						|
AC_CHECK_FUNCS(getlogin)
 | 
						|
AC_CHECK_FUNCS(getlogin_r)
 | 
						|
AC_CHECK_FUNCS(getpgid)
 | 
						|
AC_CHECK_FUNCS(getpgrp)
 | 
						|
AC_CHECK_FUNCS(getppid)
 | 
						|
AC_CHECK_FUNCS(getpriority)
 | 
						|
AC_CHECK_FUNCS(getpwnam)
 | 
						|
AC_CHECK_FUNCS(getpwnam_r)
 | 
						|
AC_CHECK_FUNCS(getpwuid)
 | 
						|
AC_CHECK_FUNCS(getpwuid_r)
 | 
						|
AC_CHECK_FUNCS(getrandom)
 | 
						|
AC_CHECK_FUNCS(getresgid)
 | 
						|
AC_CHECK_FUNCS(getresuid)
 | 
						|
AC_CHECK_FUNCS(getrlimit)
 | 
						|
AC_CHECK_FUNCS(getsid)
 | 
						|
AC_CHECK_FUNCS(gettimeofday)		# for making ac_cv_func_gettimeofday
 | 
						|
AC_CHECK_FUNCS(getuid)
 | 
						|
AC_CHECK_FUNCS(getuidx)
 | 
						|
AC_CHECK_FUNCS(gmtime_r)
 | 
						|
AC_CHECK_FUNCS(grantpt)
 | 
						|
AC_CHECK_FUNCS(initgroups)
 | 
						|
AC_CHECK_FUNCS(ioctl)
 | 
						|
AC_CHECK_FUNCS(isfinite)
 | 
						|
AC_CHECK_FUNCS(issetugid)
 | 
						|
AC_CHECK_FUNCS(kill)
 | 
						|
AC_CHECK_FUNCS(killpg)
 | 
						|
AC_CHECK_FUNCS(lchmod)
 | 
						|
AC_CHECK_FUNCS(lchown)
 | 
						|
AC_CHECK_FUNCS(link)
 | 
						|
AC_CHECK_FUNCS(llabs)
 | 
						|
AC_CHECK_FUNCS(lockf)
 | 
						|
AC_CHECK_FUNCS(log2)
 | 
						|
AC_CHECK_FUNCS(lstat)
 | 
						|
AC_CHECK_FUNCS(lutimes)
 | 
						|
AC_CHECK_FUNCS(malloc_usable_size)
 | 
						|
AC_CHECK_FUNCS(malloc_size)
 | 
						|
AC_CHECK_FUNCS(mblen)
 | 
						|
AC_CHECK_FUNCS(memalign)
 | 
						|
AC_CHECK_FUNCS(memset_s)
 | 
						|
AC_CHECK_FUNCS(writev)
 | 
						|
AC_CHECK_FUNCS(memrchr)
 | 
						|
AC_CHECK_FUNCS(memmem)
 | 
						|
AC_CHECK_FUNCS(mkfifo)
 | 
						|
AC_CHECK_FUNCS(mknod)
 | 
						|
AC_CHECK_FUNCS(mktime)
 | 
						|
AC_CHECK_FUNCS(mmap)
 | 
						|
AC_CHECK_FUNCS(mremap)
 | 
						|
AC_CHECK_FUNCS(openat)
 | 
						|
AC_CHECK_FUNCS(pclose)
 | 
						|
AC_CHECK_FUNCS(pipe)
 | 
						|
AC_CHECK_FUNCS(pipe2)
 | 
						|
AC_CHECK_FUNCS(poll)
 | 
						|
AC_CHECK_FUNCS(popen)
 | 
						|
AC_CHECK_FUNCS(posix_fadvise)
 | 
						|
AC_CHECK_FUNCS(posix_madvise)
 | 
						|
AC_CHECK_FUNCS(posix_memalign)
 | 
						|
AC_CHECK_FUNCS(ppoll)
 | 
						|
AC_CHECK_FUNCS(pread)
 | 
						|
AC_CHECK_FUNCS(pwrite)
 | 
						|
AC_CHECK_FUNCS(qsort_r)
 | 
						|
AC_CHECK_FUNCS(qsort_s)
 | 
						|
AC_CHECK_FUNCS(readlink)
 | 
						|
AC_CHECK_FUNCS(realpath)
 | 
						|
AC_CHECK_FUNCS(round)
 | 
						|
AC_CHECK_FUNCS(sched_getaffinity)
 | 
						|
AC_CHECK_FUNCS(seekdir)
 | 
						|
AC_CHECK_FUNCS(select_large_fdset)
 | 
						|
AC_CHECK_FUNCS(sendfile)
 | 
						|
AC_CHECK_FUNCS(setegid)
 | 
						|
AC_CHECK_FUNCS(setenv)
 | 
						|
AC_CHECK_FUNCS(seteuid)
 | 
						|
AC_CHECK_FUNCS(setgid)
 | 
						|
AC_CHECK_FUNCS(setgroups)
 | 
						|
AC_CHECK_FUNCS(setpgid)
 | 
						|
AC_CHECK_FUNCS(setpgrp)
 | 
						|
AC_CHECK_FUNCS(setregid)
 | 
						|
AC_CHECK_FUNCS(setresgid)
 | 
						|
AC_CHECK_FUNCS(setresuid)
 | 
						|
AC_CHECK_FUNCS(setreuid)
 | 
						|
AC_CHECK_FUNCS(setrgid)
 | 
						|
AC_CHECK_FUNCS(setrlimit)
 | 
						|
AC_CHECK_FUNCS(setruid)
 | 
						|
AC_CHECK_FUNCS(setsid)
 | 
						|
AC_CHECK_FUNCS(setuid)
 | 
						|
AC_CHECK_FUNCS(shutdown)
 | 
						|
AC_CHECK_FUNCS(sigaction)
 | 
						|
AC_CHECK_FUNCS(sigaltstack)
 | 
						|
AC_CHECK_FUNCS(sigprocmask)
 | 
						|
AC_CHECK_FUNCS(sinh)
 | 
						|
AC_CHECK_FUNCS(spawnv)
 | 
						|
AC_CHECK_FUNCS(symlink)
 | 
						|
AC_CHECK_FUNCS(syscall)
 | 
						|
AC_CHECK_FUNCS(sysconf)
 | 
						|
AC_CHECK_FUNCS(system)
 | 
						|
AC_CHECK_FUNCS(tanh)
 | 
						|
AC_CHECK_FUNCS(telldir)
 | 
						|
AC_CHECK_FUNCS(timegm)
 | 
						|
AC_CHECK_FUNCS(times)
 | 
						|
AC_CHECK_FUNCS(truncate)
 | 
						|
AC_CHECK_FUNCS(truncate64)		# used for Win32
 | 
						|
AC_CHECK_FUNCS(tzset)
 | 
						|
AC_CHECK_FUNCS(umask)
 | 
						|
AC_CHECK_FUNCS(unsetenv)
 | 
						|
AC_CHECK_FUNCS(utimensat)
 | 
						|
AC_CHECK_FUNCS(utimes)
 | 
						|
AC_CHECK_FUNCS(wait4)
 | 
						|
AC_CHECK_FUNCS(waitpid)
 | 
						|
AC_CHECK_FUNCS(__cospi)
 | 
						|
AC_CHECK_FUNCS(__sinpi)
 | 
						|
 | 
						|
AS_IF([test "x$ac_cv_member_struct_statx_stx_btime" = xyes],
 | 
						|
    [AC_CHECK_FUNCS(statx)])
 | 
						|
 | 
						|
AS_CASE(["$ac_cv_func_memset_s:$ac_cv_func_qsort_s"], [*yes*],
 | 
						|
    [RUBY_DEFINE_IF([!defined __STDC_WANT_LIB_EXT1__], [__STDC_WANT_LIB_EXT1__], 1)])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_getcwd" = yes], [
 | 
						|
    AC_CACHE_CHECK(if getcwd allocates buffer if NULL is given, [rb_cv_getcwd_malloc],
 | 
						|
	[AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
@%:@include <stddef.h>
 | 
						|
@%:@include <stdio.h>
 | 
						|
@%:@ifdef HAVE_UNISTD_H
 | 
						|
@%:@include <unistd.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifndef EXIT_SUCCESS
 | 
						|
@%:@define EXIT_SUCCESS 0
 | 
						|
@%:@endif
 | 
						|
@%:@ifndef EXIT_FAILURE
 | 
						|
@%:@define EXIT_FAILURE 1
 | 
						|
@%:@endif
 | 
						|
 | 
						|
int
 | 
						|
main(int argc, char **argv)
 | 
						|
{
 | 
						|
    if (!getcwd(NULL, 0)) return EXIT_FAILURE;
 | 
						|
    return EXIT_SUCCESS;
 | 
						|
}
 | 
						|
]])],
 | 
						|
	    rb_cv_getcwd_malloc=yes,
 | 
						|
	    rb_cv_getcwd_malloc=no,
 | 
						|
	    AS_CASE($target_os,
 | 
						|
		[linux*|darwin*|*bsd|cygwin*|msys*|mingw*|mswin*],
 | 
						|
		[rb_cv_getcwd_malloc=yes],
 | 
						|
		[rb_cv_getcwd_malloc=no]))])
 | 
						|
    AS_IF([test "$rb_cv_getcwd_malloc" = no], [AC_DEFINE(NO_GETCWD_MALLOC, 1)])
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_crypt_r" = yes],
 | 
						|
    [AC_CHECK_HEADERS(crypt.h)])
 | 
						|
AS_IF([test "$ac_cv_func_crypt_r:$ac_cv_header_crypt_h" = yes:yes],
 | 
						|
    [AC_CHECK_MEMBERS([struct crypt_data.initialized], [], [],
 | 
						|
		      [AC_INCLUDES_DEFAULT([@%:@include <crypt.h>])])])
 | 
						|
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_alloca_with_align, [__builtin_alloca_with_align(1, 4096)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_assume_aligned, [__builtin_assume_aligned((void*)32, 32)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap16, [__builtin_bswap16(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap32, [__builtin_bswap32(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_bswap64, [__builtin_bswap64(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_popcount, [__builtin_popcount(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_popcountll, [__builtin_popcountll(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_clz, [__builtin_clz(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_clzl, [__builtin_clzl(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_clzll, [__builtin_clzll(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_ctz, [__builtin_ctz(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_ctzll, [__builtin_ctzll(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_add_overflow, [int x;__builtin_add_overflow(0,0,&x)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_sub_overflow, [int x;__builtin_sub_overflow(0,0,&x)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_mul_overflow, [int x;__builtin_mul_overflow(0,0,&x)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_mul_overflow_p, [__builtin_mul_overflow_p(0,0,(int)0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_constant_p, [__builtin_constant_p(0)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr, [
 | 
						|
    [int x[__extension__(__builtin_choose_expr(1, 1, -1))]];
 | 
						|
    [int y[__extension__(__builtin_choose_expr(0, -1, 1))]];
 | 
						|
    ])
 | 
						|
AS_IF([test x$rb_cv_builtin___builtin_choose_expr = xyes], [
 | 
						|
    RUBY_CHECK_BUILTIN_FUNC(__builtin_choose_expr_constant_p, [
 | 
						|
    [int x[__extension__(__builtin_choose_expr(__builtin_constant_p(1), 1, -1))]];
 | 
						|
    [int y[__extension__(__builtin_choose_expr(__builtin_constant_p(foo), -1, 1))]];
 | 
						|
    ])
 | 
						|
])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_types_compatible_p, [__builtin_types_compatible_p(int, int)])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_trap, [__builtin_trap()])
 | 
						|
RUBY_CHECK_BUILTIN_FUNC(__builtin_expect, [__builtin_expect(0, 0)])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_qsort_r" != no], [
 | 
						|
  AC_CACHE_CHECK(whether qsort_r is GNU version, rb_cv_gnu_qsort_r,
 | 
						|
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
@%:@include <stdlib.h>
 | 
						|
void (qsort_r)(void *base, size_t nmemb, size_t size,
 | 
						|
	    int (*compar)(const void *, const void *, void *),
 | 
						|
	    void *arg);
 | 
						|
]], [[ ]])],
 | 
						|
      [rb_cv_gnu_qsort_r=yes],
 | 
						|
      [rb_cv_gnu_qsort_r=no])
 | 
						|
  ])
 | 
						|
  AC_CACHE_CHECK(whether qsort_r is BSD version, rb_cv_bsd_qsort_r,
 | 
						|
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
@%:@include <stdlib.h>
 | 
						|
void (qsort_r)(void *base, size_t nmemb, size_t size,
 | 
						|
	     void *arg, int (*compar)(void *, const void *, const void *));
 | 
						|
]], [[ ]])],
 | 
						|
      [rb_cv_bsd_qsort_r=yes],
 | 
						|
      [rb_cv_bsd_qsort_r=no])
 | 
						|
  ])
 | 
						|
  AS_CASE("$rb_cv_gnu_qsort_r:$rb_cv_bsd_qsort_r",
 | 
						|
  [yes:no], [
 | 
						|
    AC_DEFINE(HAVE_GNU_QSORT_R, 1)
 | 
						|
  ],
 | 
						|
  [no:yes], [
 | 
						|
    AC_DEFINE(HAVE_BSD_QSORT_R, 1)
 | 
						|
  ])
 | 
						|
])
 | 
						|
 | 
						|
AC_CACHE_CHECK(whether atan2 handles Inf as C99, rb_cv_atan2_inf_c99, [
 | 
						|
    AS_IF([test $ac_cv_func_atan2f:$ac_cv_func_atan2l = yes:yes], [
 | 
						|
	AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
@%:@include <math.h>
 | 
						|
@%:@ifdef HAVE_UNISTD_H
 | 
						|
@%:@include <unistd.h>
 | 
						|
@%:@endif
 | 
						|
@%:@ifndef EXIT_SUCCESS
 | 
						|
@%:@define EXIT_SUCCESS 0
 | 
						|
@%:@endif
 | 
						|
@%:@ifndef EXIT_FAILURE
 | 
						|
@%:@define EXIT_FAILURE 1
 | 
						|
@%:@endif
 | 
						|
 | 
						|
int
 | 
						|
main(int argc, char **argv)
 | 
						|
{
 | 
						|
    if (fabs(atan2(INFINITY, INFINITY) - M_PI_4) <= 0.01) return EXIT_SUCCESS;
 | 
						|
    return EXIT_FAILURE;
 | 
						|
}
 | 
						|
]])],
 | 
						|
	[rb_cv_atan2_inf_c99=yes],
 | 
						|
	[rb_cv_atan2_inf_c99=no],
 | 
						|
	[AS_CASE($target_os, [mingw*|mswin*], [rb_cv_atan2_inf_c99=no], [rb_cv_atan2_inf_c99=yes])]
 | 
						|
	)
 | 
						|
    ], [rb_cv_atan2_inf_c99=no])
 | 
						|
])
 | 
						|
AS_IF([test "x$rb_cv_atan2_inf_c99" = xyes], [AC_DEFINE(ATAN2_INF_C99)])
 | 
						|
 | 
						|
# Some platform need -lrt for clock_gettime, but the other don't.
 | 
						|
AS_IF([test x"$ac_cv_func_clock_gettime" != xyes], [
 | 
						|
    # glibc 2.17 moves clock_* functions from librt to the main C library.
 | 
						|
    # https://sourceware.org/legacy-ml/libc-announce/2012/msg00001.html
 | 
						|
    AC_CHECK_LIB(rt, clock_gettime)
 | 
						|
    AS_IF([test x"$ac_cv_lib_rt_clock_gettime" = xyes], [
 | 
						|
	AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
 | 
						|
    ])
 | 
						|
])
 | 
						|
AC_CHECK_FUNCS(clock_getres) # clock_getres should be tested after clock_gettime test including librt test.
 | 
						|
AC_CHECK_LIB([rt], [timer_create])
 | 
						|
AC_CHECK_LIB([rt], [timer_settime])
 | 
						|
AS_IF([test x"$ac_cv_lib_rt_timer_create" = xyes], [
 | 
						|
    AC_DEFINE(HAVE_TIMER_CREATE, 1)
 | 
						|
])
 | 
						|
AS_IF([test x"$ac_cv_lib_rt_timer_settime" = xyes], [
 | 
						|
    AC_DEFINE(HAVE_TIMER_SETTIME, 1)
 | 
						|
])
 | 
						|
 | 
						|
AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value,
 | 
						|
  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
#include <stdlib.h>
 | 
						|
]], [[int v = unsetenv("foo");]])],
 | 
						|
	rb_cv_unsetenv_return_value=yes,
 | 
						|
	rb_cv_unsetenv_return_value=no)])
 | 
						|
AS_IF([test "$rb_cv_unsetenv_return_value" = no], [
 | 
						|
  AC_DEFINE(VOID_UNSETENV)
 | 
						|
])
 | 
						|
 | 
						|
# End of setjmp check.
 | 
						|
 | 
						|
AC_ARG_ENABLE(setreuid,
 | 
						|
       AS_HELP_STRING([--enable-setreuid], [use setreuid()/setregid() according to need even if obsolete]),
 | 
						|
       [use_setreuid=$enableval])
 | 
						|
AS_IF([test "$use_setreuid" = yes], [
 | 
						|
    AC_DEFINE(USE_SETREUID)
 | 
						|
    AC_DEFINE(USE_SETREGID)
 | 
						|
])
 | 
						|
AC_STRUCT_TIMEZONE
 | 
						|
AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,
 | 
						|
  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
@%:@define _BSD_SOURCE
 | 
						|
@%:@define _DEFAULT_SOURCE
 | 
						|
@%:@include <time.h>
 | 
						|
    ]],
 | 
						|
    [[struct tm t; t.tm_gmtoff = 3600;]])],
 | 
						|
  [rb_cv_member_struct_tm_tm_gmtoff=yes],
 | 
						|
  [rb_cv_member_struct_tm_tm_gmtoff=no])])
 | 
						|
AS_IF([test "$rb_cv_member_struct_tm_tm_gmtoff" = yes], [
 | 
						|
  AC_DEFINE(HAVE_STRUCT_TM_TM_GMTOFF)
 | 
						|
])
 | 
						|
AC_CACHE_CHECK(for external int daylight, rb_cv_have_daylight,
 | 
						|
  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <time.h>
 | 
						|
  int i;]],
 | 
						|
	[[i = daylight;]])],
 | 
						|
	rb_cv_have_daylight=yes,
 | 
						|
	rb_cv_have_daylight=no)])
 | 
						|
AS_IF([test "$rb_cv_have_daylight" = yes], [
 | 
						|
  AC_DEFINE(HAVE_DAYLIGHT)
 | 
						|
])
 | 
						|
 | 
						|
AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t,
 | 
						|
  [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
#include <stdlib.h>
 | 
						|
#include <time.h>
 | 
						|
 | 
						|
void
 | 
						|
check(tm, y, m, d, h, s)
 | 
						|
    struct tm *tm;
 | 
						|
    int y, m, d, h, s;
 | 
						|
{
 | 
						|
    if (!tm ||
 | 
						|
	tm->tm_year != y ||
 | 
						|
	tm->tm_mon  != m-1 ||
 | 
						|
	tm->tm_mday != d ||
 | 
						|
	tm->tm_hour != h ||
 | 
						|
	tm->tm_sec  != s) {
 | 
						|
	exit(1);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main()
 | 
						|
{
 | 
						|
   time_t t = -1;
 | 
						|
   struct tm *tm;
 | 
						|
 | 
						|
   check(gmtime(&t), 69, 12, 31, 23, 59);
 | 
						|
   t = ~(time_t)0 << 31;
 | 
						|
   check(gmtime(&t), 1, 12, 13, 20, 52);
 | 
						|
   return 0;
 | 
						|
}
 | 
						|
]])],
 | 
						|
	rb_cv_negative_time_t=yes,
 | 
						|
	rb_cv_negative_time_t=no,
 | 
						|
	rb_cv_negative_time_t=yes)])
 | 
						|
AS_IF([test "$rb_cv_negative_time_t" = yes], [
 | 
						|
  AC_DEFINE(NEGATIVE_TIME_T)
 | 
						|
])
 | 
						|
 | 
						|
# [ruby-dev:40910] overflow of time on FreeBSD
 | 
						|
# https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=145341
 | 
						|
AC_CACHE_CHECK(for localtime(3) overflow correctly, rb_cv_localtime_overflow,
 | 
						|
  [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
#include <stdlib.h>
 | 
						|
#include <time.h>
 | 
						|
 | 
						|
void
 | 
						|
check(time_t t1)
 | 
						|
{
 | 
						|
    struct tm *tm;
 | 
						|
    time_t t2;
 | 
						|
    tm = localtime(&t1);
 | 
						|
    if (!tm)
 | 
						|
	return; /* overflow detected.  ok. */
 | 
						|
    t2 = mktime(tm);
 | 
						|
    if (t1 == t2)
 | 
						|
        return; /* round-trip.  ok. */
 | 
						|
    exit(1);
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main()
 | 
						|
{
 | 
						|
    time_t t;
 | 
						|
    if (~(time_t)0 <= 0) {
 | 
						|
        t = (((time_t)1) << (sizeof(time_t) * 8 - 2));
 | 
						|
        t |= t - 1;
 | 
						|
    }
 | 
						|
    else {
 | 
						|
        t = ~(time_t)0;
 | 
						|
    }
 | 
						|
    check(t);
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
]])],
 | 
						|
	rb_cv_localtime_overflow=yes,
 | 
						|
	rb_cv_localtime_overflow=no,
 | 
						|
	rb_cv_localtime_overflow=no)])
 | 
						|
AS_IF([test "$rb_cv_localtime_overflow" = no], [
 | 
						|
  AC_DEFINE(LOCALTIME_OVERFLOW_PROBLEM)
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_sigprocmask" = yes && test "$ac_cv_func_sigaction" = yes], [
 | 
						|
   AC_DEFINE(POSIX_SIGNAL)
 | 
						|
], [
 | 
						|
  AC_CHECK_FUNCS(sigsetmask)
 | 
						|
  AC_CACHE_CHECK(for BSD signal semantics, rb_cv_bsd_signal,
 | 
						|
    [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
#include <stdio.h>
 | 
						|
#include <signal.h>
 | 
						|
 | 
						|
void
 | 
						|
sig_handler(dummy)
 | 
						|
     int dummy;
 | 
						|
{
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main()
 | 
						|
{
 | 
						|
  signal(SIGINT, sig_handler);
 | 
						|
  kill(getpid(), SIGINT);
 | 
						|
  kill(getpid(), SIGINT);
 | 
						|
  return 0;
 | 
						|
}
 | 
						|
]])],
 | 
						|
	rb_cv_bsd_signal=yes,
 | 
						|
	rb_cv_bsd_signal=no,
 | 
						|
	rb_cv_bsd_signal=$ac_cv_func_sigsetmask)])
 | 
						|
  AS_IF([test "$rb_cv_bsd_signal" = yes], [
 | 
						|
    AC_DEFINE(BSD_SIGNAL)
 | 
						|
  ])
 | 
						|
])
 | 
						|
 | 
						|
AC_CHECK_TYPES([sig_t],[],[],[@%:@include <signal.h>])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_getpgid" = no], [
 | 
						|
  # AC_FUNC_GETPGRP fails when cross-compiling with old autoconf.
 | 
						|
  # autoconf is changed between 2.52d and 2.52f?
 | 
						|
  # https://lists.gnu.org/archive/html/bug-gnu-utils/2001-09/msg00181.html
 | 
						|
  # "autoconf cleanup for AC_FUNC_GETPGRP and GETPGRP_VOID"
 | 
						|
AC_FUNC_GETPGRP
 | 
						|
])
 | 
						|
AS_IF([test "$ac_cv_func_setpgid:$ac_cv_func_setpgrp" = no:yes], [
 | 
						|
  # AC_FUNC_SETPGRP fails when cross-compiling.  (until autoconf 2.69?)
 | 
						|
  # https://lists.gnu.org/archive/html/bug-autoconf/2013-02/msg00002.html
 | 
						|
  # "AC_FUNC_SETPGRP fails to work properly when cross-compiling"
 | 
						|
AC_FUNC_SETPGRP
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test x"$ac_cv_func_dirfd" = xno], [
 | 
						|
  AS_CASE(["$target_os"],[solaris*],
 | 
						|
          [AC_CHECK_MEMBERS([DIR.d_fd, DIR.dd_fd],,,[
 | 
						|
#include <sys/types.h>
 | 
						|
#include <dirent.h>
 | 
						|
])])
 | 
						|
])
 | 
						|
 | 
						|
AC_CACHE_CHECK(whether right shift preserve sign bit, rb_cv_rshift_sign,
 | 
						|
    [AC_COMPILE_IFELSE([AC_LANG_BOOL_COMPILE_TRY([], [(-1==(-1>>1))])],
 | 
						|
	rb_cv_rshift_sign=yes,
 | 
						|
	rb_cv_rshift_sign=no)])
 | 
						|
AS_IF([test "$rb_cv_rshift_sign" = yes], [
 | 
						|
  AC_DEFINE(RSHIFT(x,y), ((x)>>(int)(y)))
 | 
						|
], [
 | 
						|
  AC_DEFINE(RSHIFT(x,y), (((x)<0) ? ~((~(x))>>(int)(y)) : (x)>>(int)(y)))
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_copy_file_range" = no], [
 | 
						|
  AC_CACHE_CHECK([for copy_file_range],
 | 
						|
    rb_cv_use_copy_file_range,
 | 
						|
    [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
#include <sys/types.h>
 | 
						|
#include <sys/stat.h>
 | 
						|
#include <sys/syscall.h>
 | 
						|
#include <fcntl.h>
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
#ifndef O_TMPFILE
 | 
						|
  #define O_TMPFILE __O_TMPFILE
 | 
						|
#endif
 | 
						|
 | 
						|
int
 | 
						|
main()
 | 
						|
{
 | 
						|
#ifdef __NR_copy_file_range
 | 
						|
   int ret, fd_in, fd_out;
 | 
						|
   fd_in = open("/tmp", O_TMPFILE|O_RDWR, S_IRUSR);
 | 
						|
   fd_out = open("/tmp", O_TMPFILE|O_WRONLY, S_IWUSR);
 | 
						|
   ret = syscall(__NR_copy_file_range, fd_in, NULL, fd_out, NULL, 0, 0);
 | 
						|
   close(fd_in);
 | 
						|
   close(fd_out);
 | 
						|
   if (ret == -1) { return 1; }
 | 
						|
   return 0;
 | 
						|
#else
 | 
						|
   return 1;
 | 
						|
#endif
 | 
						|
}
 | 
						|
  ]])],
 | 
						|
    [rb_cv_use_copy_file_range=yes],
 | 
						|
    [rb_cv_use_copy_file_range=no],
 | 
						|
    [rb_cv_use_copy_file_range=no])])
 | 
						|
])
 | 
						|
AS_CASE(["$ac_cv_func_copy_file_range:$rb_cv_use_copy_file_range"], [*yes*], [
 | 
						|
  AC_DEFINE(USE_COPY_FILE_RANGE)
 | 
						|
])
 | 
						|
 | 
						|
AS_CASE(["$ac_cv_func_gettimeofday:$ac_cv_func_clock_gettime"],
 | 
						|
[*yes*], [],
 | 
						|
[
 | 
						|
    AC_MSG_ERROR(clock_gettime() or gettimeofday() must exist)
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_sysconf" = yes], [
 | 
						|
  RUBY_CHECK_SYSCONF(CLK_TCK)
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "${universal_binary-no}" = yes ], [
 | 
						|
    archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
 | 
						|
    save_CFLAGS="$CFLAGS" new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
 | 
						|
    save_LDFLAGS="$LDFLAGS" new_ldflags=`echo "$LDFLAGS" | sed "s|$archflagpat"'||'`
 | 
						|
    stack_dir=
 | 
						|
    for archs in ${universal_archnames}; do
 | 
						|
	archs=`echo $archs | sed 's/=.*//'`
 | 
						|
	CFLAGS="$new_cflags -arch $archs"
 | 
						|
	LDFLAGS="$new_ldflags -arch $archs"
 | 
						|
	RUBY_STACK_GROW_DIRECTION($archs, dir)
 | 
						|
	AS_IF([test x$stack_dir = x], [
 | 
						|
	    stack_dir=$dir
 | 
						|
	], [test x$stack_dir != x$dir], [
 | 
						|
	    stack_dir=no
 | 
						|
	])
 | 
						|
    done
 | 
						|
    CFLAGS="$save_CFLAGS" LDFLAGS="$save_LDFLAGS"
 | 
						|
    AS_IF([test x$stack_dir = xno], [
 | 
						|
	for archs in ${universal_archnames}; do
 | 
						|
	    archs=`echo $archs | sed 's/=.*//'`
 | 
						|
	    eval dir=\$[rb_cv_stack_grow_dir_]AS_TR_SH([$archs])
 | 
						|
	    RUBY_DEFINE_IF([defined __${archs}__], STACK_GROW_DIRECTION, $dir)
 | 
						|
	done
 | 
						|
    ], [
 | 
						|
	AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $stack_dir)
 | 
						|
    ])
 | 
						|
], [
 | 
						|
    RUBY_STACK_GROW_DIRECTION($target_cpu, dir)
 | 
						|
    AC_DEFINE_UNQUOTED(STACK_GROW_DIRECTION, $dir)
 | 
						|
])
 | 
						|
 | 
						|
AC_ARG_WITH(coroutine,
 | 
						|
    AS_HELP_STRING([--with-coroutine=IMPLEMENTATION], [specify the coroutine implementation to use]),
 | 
						|
    [coroutine_type=$withval], [coroutine_type=])
 | 
						|
AS_CASE([$coroutine_type], [yes|''], [
 | 
						|
    coroutine_type=
 | 
						|
    AS_CASE(["$target_cpu-$target_os"],
 | 
						|
        [universal-darwin*], [
 | 
						|
            coroutine_type=universal
 | 
						|
        ],
 | 
						|
        [x*64-darwin*], [
 | 
						|
            coroutine_type=amd64
 | 
						|
        ],
 | 
						|
        [arm64-darwin*], [
 | 
						|
            coroutine_type=arm64
 | 
						|
        ],
 | 
						|
        [powerpc-darwin*], [
 | 
						|
            coroutine_type=ppc
 | 
						|
        ],
 | 
						|
        [powerpc64-darwin*], [
 | 
						|
            coroutine_type=ppc64
 | 
						|
        ],
 | 
						|
        [x*64-linux*], [
 | 
						|
            AS_CASE(["$ac_cv_sizeof_voidp"],
 | 
						|
                [8], [ coroutine_type=amd64 ],
 | 
						|
                [4], [ coroutine_type=x86 ],
 | 
						|
                dnl unknown pointer size, bail out as no Context.h soon.
 | 
						|
            )
 | 
						|
        ],
 | 
						|
        [*86-linux*], [
 | 
						|
            coroutine_type=x86
 | 
						|
        ],
 | 
						|
        [x64-mingw*], [
 | 
						|
            coroutine_type=win64
 | 
						|
        ],
 | 
						|
        [*86-mingw*], [
 | 
						|
            coroutine_type=win32
 | 
						|
        ],
 | 
						|
        [arm*-linux*], [
 | 
						|
            coroutine_type=arm32
 | 
						|
        ],
 | 
						|
        [aarch64-linux*], [
 | 
						|
            coroutine_type=arm64
 | 
						|
        ],
 | 
						|
        [powerpc64le-linux*], [
 | 
						|
            coroutine_type=ppc64le
 | 
						|
        ],
 | 
						|
        [riscv64-linux*], [
 | 
						|
            coroutine_type=riscv64
 | 
						|
        ],
 | 
						|
        [x86_64-freebsd*], [
 | 
						|
            coroutine_type=amd64
 | 
						|
        ],
 | 
						|
        [i386-freebsd*], [
 | 
						|
            coroutine_type=x86
 | 
						|
        ],
 | 
						|
        [aarch64-freebsd*], [
 | 
						|
            coroutine_type=arm64
 | 
						|
        ],
 | 
						|
        [x86_64-netbsd*], [
 | 
						|
            coroutine_type=amd64
 | 
						|
        ],
 | 
						|
        [i386-netbsd*], [
 | 
						|
            coroutine_type=x86
 | 
						|
        ],
 | 
						|
        [aarch64-netbsd*], [
 | 
						|
            coroutine_type=arm64
 | 
						|
        ],
 | 
						|
        [x86_64-openbsd*], [
 | 
						|
            coroutine_type=amd64
 | 
						|
        ],
 | 
						|
        [i386-openbsd*], [
 | 
						|
            coroutine_type=x86
 | 
						|
        ],
 | 
						|
        [*-openbsd*], [
 | 
						|
            coroutine_type=pthread
 | 
						|
        ],
 | 
						|
        [x86_64-dragonfly*], [
 | 
						|
            coroutine_type=amd64
 | 
						|
        ],
 | 
						|
        [*-haiku*], [
 | 
						|
            coroutine_type=pthread
 | 
						|
        ],
 | 
						|
        [*-emscripten*], [
 | 
						|
            coroutine_type=emscripten
 | 
						|
        ],
 | 
						|
        [*-wasi*], [
 | 
						|
            coroutine_type=asyncify
 | 
						|
        ],
 | 
						|
        [
 | 
						|
            AC_CHECK_FUNCS([getcontext swapcontext makecontext],
 | 
						|
                [coroutine_type=ucontext],
 | 
						|
                [coroutine_type=pthread; break]
 | 
						|
            )
 | 
						|
        ]
 | 
						|
    )
 | 
						|
    AC_MSG_CHECKING(native coroutine implementation for ${target_cpu}-${target_os})
 | 
						|
    AC_MSG_RESULT(${coroutine_type})
 | 
						|
])
 | 
						|
COROUTINE_H=coroutine/$coroutine_type/Context.h
 | 
						|
AS_IF([test ! -f "$srcdir/$COROUTINE_H"],
 | 
						|
      [AC_MSG_ERROR('$coroutine_type' is not supported as coroutine)])
 | 
						|
COROUTINE_SRC=coroutine/$coroutine_type/Context.c
 | 
						|
AS_IF([test ! -f "$srcdir/$COROUTINE_SRC"],
 | 
						|
      [COROUTINE_SRC=coroutine/$coroutine_type/Context.'$(ASMEXT)'])
 | 
						|
AC_DEFINE_UNQUOTED(COROUTINE_H, ["$COROUTINE_H"])
 | 
						|
AC_SUBST(X_COROUTINE_H, [$COROUTINE_H])
 | 
						|
AC_SUBST(X_COROUTINE_SRC, [$COROUTINE_SRC])
 | 
						|
 | 
						|
AS_IF([test "$THREAD_MODEL" = pthread], [
 | 
						|
    AC_CACHE_CHECK([whether pthread_t is scalar type], [rb_cv_scalar_pthread_t], [
 | 
						|
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
	    @%:@include <pthread.h>
 | 
						|
	    ]], [[
 | 
						|
	    pthread_t thread_id;
 | 
						|
	    thread_id = 0;
 | 
						|
	    if (!thread_id) return 0;
 | 
						|
	    ]])],[rb_cv_scalar_pthread_t=yes],[rb_cv_scalar_pthread_t=no])
 | 
						|
    ])
 | 
						|
    AS_IF([test x"$rb_cv_scalar_pthread_t" = xyes], [
 | 
						|
	: # RUBY_CHECK_SIZEOF(pthread_t, [void* int long], [], [@%:@include <pthread.h>])
 | 
						|
    ], [
 | 
						|
	AC_DEFINE(NON_SCALAR_THREAD_ID)
 | 
						|
    ])
 | 
						|
    AC_CHECK_FUNCS(sched_yield pthread_attr_setinheritsched \
 | 
						|
	pthread_attr_get_np pthread_attr_getstack pthread_attr_getguardsize \
 | 
						|
	pthread_get_stackaddr_np pthread_get_stacksize_np \
 | 
						|
	thr_stksegment pthread_stackseg_np pthread_getthrds_np \
 | 
						|
	pthread_condattr_setclock \
 | 
						|
	pthread_setname_np pthread_set_name_np)
 | 
						|
    AS_CASE(["$target_os"],[emscripten*],[ac_cv_func_pthread_sigmask=no],[AC_CHECK_FUNCS(pthread_sigmask)])
 | 
						|
    AS_CASE(["$target_os"],[aix*],[ac_cv_func_pthread_getattr_np=no],[AC_CHECK_FUNCS(pthread_getattr_np)])
 | 
						|
    set_current_thread_name=
 | 
						|
    AS_IF([test "$ac_cv_func_pthread_setname_np" = yes], [
 | 
						|
	AC_CACHE_CHECK([arguments of pthread_setname_np], [rb_cv_func_pthread_setname_np_arguments],
 | 
						|
	    [rb_cv_func_pthread_setname_np_arguments=
 | 
						|
	    # Linux,AIX,  (pthread_self(), name)
 | 
						|
	    # NetBSD (pthread_self(), \"%s\", name)
 | 
						|
	    # Darwin (name)
 | 
						|
	    for mac in \
 | 
						|
		"(pthread_self(), name)" \
 | 
						|
		"(pthread_self(), \"%s\", name)" \
 | 
						|
		"(name)" \
 | 
						|
		; do
 | 
						|
		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
		    @%:@include <pthread.h>
 | 
						|
		    @%:@ifdef HAVE_PTHREAD_NP_H
 | 
						|
		    @%:@include <pthread_np.h>
 | 
						|
		    @%:@endif
 | 
						|
		    @%:@define SET_THREAD_NAME(name) pthread_setname_np${mac}
 | 
						|
		    ]],
 | 
						|
		    [[if (SET_THREAD_NAME("conftest")) return 1;]])],
 | 
						|
		    [rb_cv_func_pthread_setname_np_arguments="${mac}"
 | 
						|
		    break])
 | 
						|
	    done
 | 
						|
	    ]
 | 
						|
	)
 | 
						|
	AS_IF([test -n "${rb_cv_func_pthread_setname_np_arguments}"], [
 | 
						|
	    set_current_thread_name="pthread_setname_np${rb_cv_func_pthread_setname_np_arguments}"
 | 
						|
	])
 | 
						|
    ], [test "$ac_cv_func_pthread_set_name_np" = yes], [
 | 
						|
	set_current_thread_name="pthread_set_name_np(pthread_self(), name)"
 | 
						|
    ])
 | 
						|
    AS_IF([test -n "$set_current_thread_name"], [
 | 
						|
	AC_DEFINE_UNQUOTED(SET_CURRENT_THREAD_NAME(name), $set_current_thread_name)
 | 
						|
	AS_CASE([$set_current_thread_name],
 | 
						|
	    [*'pthread_self()'*], [
 | 
						|
		set_another_thread_name=`echo "$set_current_thread_name" | sed 's/pthread_self()/thid/'`
 | 
						|
		AC_DEFINE_UNQUOTED(SET_ANOTHER_THREAD_NAME(thid,name), $set_another_thread_name)
 | 
						|
	    ])
 | 
						|
    ])
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test x"$ac_cv_header_ucontext_h" = xno], [
 | 
						|
    AC_CACHE_CHECK([if signal.h defines ucontext_t], [rb_cv_ucontext_in_signal_h],
 | 
						|
	[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <signal.h>]],
 | 
						|
					    [[size_t size = sizeof(ucontext_t);]])],
 | 
						|
	[rb_cv_ucontext_in_signal_h=yes], [rb_cv_ucontext_in_signal_h=no])])
 | 
						|
    AS_IF([test x"$rb_cv_ucontext_in_signal_h" = xyes], [
 | 
						|
	    AC_DEFINE_UNQUOTED(UCONTEXT_IN_SIGNAL_H, 1)
 | 
						|
    ])
 | 
						|
])
 | 
						|
AS_IF([test x"$ac_cv_header_ucontext_h" = xyes -o x"$rb_cv_ucontext_in_signal_h" = xyes], [
 | 
						|
    AC_CACHE_CHECK([if mcontext_t is a pointer], [rb_cv_mcontext_t_ptr],
 | 
						|
	[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
	    @%:@include <signal.h>
 | 
						|
	    @%:@ifdef HAVE_UCONTEXT_H
 | 
						|
	    @%:@include <ucontext.h>
 | 
						|
	    @%:@endif
 | 
						|
        mcontext_t test(mcontext_t mc) {return mc+1;}
 | 
						|
	  ]],
 | 
						|
	  [[test(0);]])],
 | 
						|
	[rb_cv_mcontext_t_ptr=yes], [rb_cv_mcontext_t_ptr=no])])
 | 
						|
    AS_IF([test x"$rb_cv_mcontext_t_ptr" = xyes], [
 | 
						|
	AC_DEFINE_UNQUOTED(DEFINE_MCONTEXT_PTR(mc, uc), mcontext_t mc = (uc)->uc_mcontext)
 | 
						|
    ], [
 | 
						|
	AC_DEFINE_UNQUOTED(DEFINE_MCONTEXT_PTR(mc, uc), mcontext_t *mc = &(uc)->uc_mcontext)
 | 
						|
    ])
 | 
						|
    AS_IF([test x"$THREAD_MODEL" = xpthread], [
 | 
						|
	AC_CHECK_FUNCS(getcontext setcontext)
 | 
						|
    ])
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "$ac_cv_func_fork_works" = "yes" -a x"$THREAD_MODEL" = xpthread], [
 | 
						|
    AC_CACHE_CHECK([if fork works with pthread], rb_cv_fork_with_pthread,
 | 
						|
	[AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
#include <stdlib.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <pthread.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <sys/types.h>
 | 
						|
#include <sys/wait.h>
 | 
						|
#include <signal.h>
 | 
						|
#ifndef EXIT_SUCCESS
 | 
						|
#define EXIT_SUCCESS 0
 | 
						|
#endif
 | 
						|
#ifndef EXIT_FAILURE
 | 
						|
#define EXIT_FAILURE 1
 | 
						|
#endif
 | 
						|
 | 
						|
void *
 | 
						|
thread_func(void *dmy)
 | 
						|
{
 | 
						|
    return dmy;
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
use_threads(void)
 | 
						|
{
 | 
						|
    pthread_t tid;
 | 
						|
    if (pthread_create(&tid, 0, thread_func, 0) != 0) {
 | 
						|
	return -1;
 | 
						|
    }
 | 
						|
    if (pthread_join(tid, 0) != 0) {
 | 
						|
	return -1;
 | 
						|
    }
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 | 
						|
int
 | 
						|
main(int argc, char *argv[])
 | 
						|
{
 | 
						|
    pid_t pid;
 | 
						|
    if (use_threads()) return EXIT_FAILURE;
 | 
						|
    pid = fork();
 | 
						|
 | 
						|
    if (pid) {
 | 
						|
	int loc;
 | 
						|
	sleep(1);
 | 
						|
	if (waitpid(pid, &loc, WNOHANG) == 0) {
 | 
						|
	    kill(pid, SIGKILL);
 | 
						|
	    return EXIT_FAILURE;
 | 
						|
	}
 | 
						|
        if (!WIFEXITED(loc) || WEXITSTATUS(loc) != EXIT_SUCCESS)
 | 
						|
           return EXIT_FAILURE;
 | 
						|
    }
 | 
						|
    else {
 | 
						|
	if (use_threads()) return EXIT_FAILURE;
 | 
						|
    }
 | 
						|
 | 
						|
    return EXIT_SUCCESS;
 | 
						|
}]])],
 | 
						|
	rb_cv_fork_with_pthread=yes,
 | 
						|
	rb_cv_fork_with_pthread=no,
 | 
						|
	rb_cv_fork_with_pthread=yes)])
 | 
						|
    test x$rb_cv_fork_with_pthread = xyes || AC_DEFINE(CANNOT_FORK_WITH_PTHREAD)
 | 
						|
])
 | 
						|
 | 
						|
AC_CHECK_HEADERS([sys/user.h])
 | 
						|
AS_IF([test "x$ac_cv_func_mmap" = xyes], [
 | 
						|
    AC_CACHE_CHECK([whether PAGE_SIZE is compile-time const], rb_cv_const_page_size,
 | 
						|
	[malloc_headers=`sed -n '/MALLOC_HEADERS_BEGIN/,/MALLOC_HEADERS_END/p' ${srcdir}/gc.c`
 | 
						|
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$malloc_headers
 | 
						|
            typedef char conftest_page[PAGE_SIZE];
 | 
						|
        ]], [[]])],
 | 
						|
        [rb_cv_const_page_size=yes],
 | 
						|
        [rb_cv_const_page_size=no])])
 | 
						|
])
 | 
						|
AS_IF([test "x$rb_cv_const_page_size" = xyes],
 | 
						|
    [AC_DEFINE(HAVE_CONST_PAGE_SIZE, 1)],
 | 
						|
    [AC_DEFINE(HAVE_CONST_PAGE_SIZE, 0)]
 | 
						|
)
 | 
						|
 | 
						|
AS_IF([test "x$ac_cv_func_ioctl" = xyes], [
 | 
						|
    AC_CACHE_CHECK([ioctl request type], rb_cv_ioctl_request_type,
 | 
						|
        [rb_cv_ioctl_request_type=no
 | 
						|
        dnl corresponding NUM2IOCTLREQ needs to be defined
 | 
						|
        for type in "unsigned long:ULONG_MAX" int:INT_MAX; do
 | 
						|
            max=`echo $type | sed 's/.*://'`
 | 
						|
            type=`echo $type | sed 's/:.*//'`
 | 
						|
            RUBY_WERROR_FLAG([
 | 
						|
                AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
 | 
						|
                    @%:@include <limits.h>
 | 
						|
                    @%:@include <sys/types.h>
 | 
						|
                    @%:@if defined(HAVE_SYS_IOCTL_H) && !defined(_WIN32)
 | 
						|
                    @%:@include <sys/ioctl.h>
 | 
						|
                    @%:@endif
 | 
						|
                ]], [[
 | 
						|
                    $type req = $max;
 | 
						|
                    if (ioctl(0, req)) {/* do nothing*/};
 | 
						|
                ]])],
 | 
						|
                [rb_cv_ioctl_request_type="$type"])
 | 
						|
            ])
 | 
						|
            test "x$rb_cv_ioctl_request_type" = xno || break
 | 
						|
        done])
 | 
						|
    AS_CASE(["$rb_cv_ioctl_request_type"], [no|int], [],
 | 
						|
    ["unsigned long"], [
 | 
						|
        AC_DEFINE_UNQUOTED(IOCTL_REQ_TYPE, [$rb_cv_ioctl_request_type])
 | 
						|
        AC_DEFINE_UNQUOTED(NUM2IOCTLREQ(num), [NUM2ULONG(num)])
 | 
						|
    ])
 | 
						|
])
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
: "runtime section" && {
 | 
						|
dnl wheather use dln_a_out or not
 | 
						|
AC_ARG_WITH(dln-a-out,
 | 
						|
	AS_HELP_STRING([--with-dln-a-out], [dln_a_out is deprecated]),
 | 
						|
	[
 | 
						|
	AS_CASE([$withval],
 | 
						|
	[yes], [
 | 
						|
	    AC_MSG_ERROR(dln_a_out no longer supported)
 | 
						|
	])
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "$rb_cv_binary_elf" = yes], [
 | 
						|
  AC_DEFINE(USE_ELF)
 | 
						|
  AC_CHECK_HEADERS([elf.h elf_abi.h])
 | 
						|
  AS_IF([test $ac_cv_header_elf_h = yes -o $ac_cv_header_elf_abi_h = yes], [
 | 
						|
    AC_LIBOBJ([addr2line])
 | 
						|
    AC_CHECK_LIB([z], [uncompress])
 | 
						|
  ])
 | 
						|
])
 | 
						|
 | 
						|
AC_CHECK_HEADERS([mach-o/loader.h])
 | 
						|
AS_IF([test "$ac_cv_header_mach_o_loader_h" = yes], [
 | 
						|
  AC_LIBOBJ([addr2line])
 | 
						|
])
 | 
						|
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
[linux* | gnu* | k*bsd*-gnu | bsdi* | kopensolaris*-gnu], [
 | 
						|
    AS_IF([test "$rb_cv_binary_elf" = no], [
 | 
						|
	AC_MSG_ERROR(Not ELF)
 | 
						|
    ], [
 | 
						|
	LDFLAGS="$LDFLAGS -rdynamic"
 | 
						|
    ])])
 | 
						|
LIBEXT=a
 | 
						|
 | 
						|
AC_ARG_WITH(mjit-tabs,
 | 
						|
    AS_HELP_STRING([--without-mjit-tabs], [expand tabs in mjit header]),
 | 
						|
    [AS_IF([test $withval = no], [MJIT_TABS=false])])
 | 
						|
AC_SUBST(MJIT_TABS)dnl
 | 
						|
AC_SUBST(DLDFLAGS)dnl
 | 
						|
AC_SUBST(ARCH_FLAG)dnl
 | 
						|
AC_SUBST(MJIT_HEADER_FLAGS)dnl
 | 
						|
AC_SUBST(MJIT_HEADER_INSTALL_DIR)dnl
 | 
						|
AC_SUBST(MJIT_CC)dnl
 | 
						|
AS_CASE(["$GCC:$target_os"],
 | 
						|
    [yes:aix*], [mjit_std_cflag="-std=gnu99"],
 | 
						|
    [mjit_std_cflag=])
 | 
						|
AC_SUBST(MJIT_CFLAGS, [${MJIT_CFLAGS-"-w ${mjit_std_cflag} ${orig_cflags}"}])dnl
 | 
						|
AC_SUBST(MJIT_OPTFLAGS, [${MJIT_OPTFLAGS-'$(optflags)'}])dnl
 | 
						|
AC_SUBST(MJIT_DEBUGFLAGS, [${MJIT_DEBUGFLAGS-'$(debugflags)'}])dnl
 | 
						|
AC_SUBST(MJIT_LDSHARED)dnl
 | 
						|
 | 
						|
AC_SUBST(STATIC)dnl
 | 
						|
AC_SUBST(CCDLFLAGS)dnl
 | 
						|
AC_SUBST(LDSHARED)dnl
 | 
						|
AC_SUBST(LDSHAREDXX)dnl
 | 
						|
AC_SUBST(DLEXT)dnl
 | 
						|
AC_SUBST(LIBEXT)dnl
 | 
						|
AC_SUBST(ASMEXT, S)dnl
 | 
						|
 | 
						|
STATIC=
 | 
						|
 | 
						|
: "dlopen" && {
 | 
						|
  rb_cv_dlopen=unknown
 | 
						|
  AC_MSG_CHECKING(whether OS depend dynamic link works)
 | 
						|
  AS_IF([test "$GCC" = yes], [
 | 
						|
    AS_CASE(["$target_os"],
 | 
						|
    [darwin*], [
 | 
						|
      # The -fno-common is needed if we wish to embed the Ruby interpreter
 | 
						|
      # into a plugin module of some project (as opposed to embedding it
 | 
						|
      # within the project's application).  The -I/usr/local/include is
 | 
						|
      # needed because CPP as discovered by configure (cc -E -traditional)
 | 
						|
      # fails to consult /usr/local/include by default.  This causes
 | 
						|
      # mkmf.rb's have_header() to fail if the desired resource happens to be
 | 
						|
      # installed in the /usr/local tree.
 | 
						|
      RUBY_APPEND_OPTION(CCDLFLAGS, -fno-common)],
 | 
						|
    [bsdi*|cygwin*|msys*|mingw*|aix*|interix*], [ ],
 | 
						|
    [
 | 
						|
      RUBY_APPEND_OPTION(CCDLFLAGS, -fPIC)])
 | 
						|
  ], [
 | 
						|
    AS_CASE(["$target_os"],
 | 
						|
	[solaris*|irix*], [CCDLFLAGS="$CCDLFLAGS -KPIC"],
 | 
						|
	[sunos*],         [CCDLFLAGS="$CCDLFLAGS -PIC"],
 | 
						|
	[esix*|uxpds*],   [CCDLFLAGS="$CCDLFLAGS -KPIC"],
 | 
						|
	                  [: ${CCDLFLAGS=""}])
 | 
						|
  ])
 | 
						|
}
 | 
						|
 | 
						|
: "rpath" && {
 | 
						|
    AS_CASE(["$target_os"],
 | 
						|
	[solaris*], [	AS_IF([test "$GCC" = yes], [
 | 
						|
			    : ${LDSHARED='$(CC) -shared'}
 | 
						|
			    AS_IF([test "$rb_cv_prog_gnu_ld" = yes], [
 | 
						|
				LDFLAGS="$LDFLAGS -Wl,-E"
 | 
						|
			    ])
 | 
						|
			], [
 | 
						|
			    : ${LDSHARED='$(CC) -G'}
 | 
						|
			])
 | 
						|
			AS_IF([test "$ac_cv_sizeof_voidp" = 8], [
 | 
						|
			    : ${LIBPATHENV=LD_LIBRARY_PATH_64}
 | 
						|
			    : ${PRELOADENV=LD_PRELOAD_64}
 | 
						|
			], [
 | 
						|
			    : ${LIBPATHENV=LD_LIBRARY_PATH_32}
 | 
						|
			    : ${PRELOADENV=LD_PRELOAD_32}
 | 
						|
			])
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[sunos*], [	: ${LDSHARED='$(LD) -assert nodefinitions'}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[irix*], [	: ${LDSHARED='$(LD) -shared'}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[sysv4*], [	: ${LDSHARED='$(LD) -G'}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[nto-qnx*], [	: ${LDSHARED='$(CC) -shared'}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[esix*|uxpds*], [ : ${LDSHARED='$(LD) -G'}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[osf*], [	: ${LDSHARED='$(LD) -shared -expect_unresolved "*"'}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[bsdi3*], [	AS_CASE(["$CC"],
 | 
						|
			[*shlicc*], [	: ${LDSHARED='$(CC) -r'}
 | 
						|
					rb_cv_dlopen=yes])],
 | 
						|
	[linux* | gnu* | k*bsd*-gnu | netbsd* | bsdi* | kopensolaris*-gnu | haiku*], [
 | 
						|
			: ${LDSHARED='$(CC) -shared'}
 | 
						|
			AS_IF([test "$rb_cv_binary_elf" = yes], [
 | 
						|
			    LDFLAGS="$LDFLAGS -Wl,-export-dynamic"
 | 
						|
			])
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[interix*], [	: ${LDSHARED='$(CC) -shared'}
 | 
						|
			XLDFLAGS="$XLDFLAGS -Wl,-E"
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[freebsd*|dragonfly*], [
 | 
						|
			: ${LDSHARED='$(CC) -shared'}
 | 
						|
			AS_IF([test "$rb_cv_binary_elf" = yes], [
 | 
						|
			    LDFLAGS="$LDFLAGS -rdynamic"
 | 
						|
			    DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$@'
 | 
						|
			], [
 | 
						|
			  test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
 | 
						|
			])
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[openbsd*|mirbsd*], [	: ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'}
 | 
						|
			AS_IF([test "$rb_cv_binary_elf" = yes], [
 | 
						|
			    LDFLAGS="$LDFLAGS -Wl,-E"
 | 
						|
			])
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[darwin*], [	: ${LDSHARED='$(CC) -dynamic -bundle'}
 | 
						|
			: ${DLDSHARED='$(CC) -dynamiclib'}
 | 
						|
			: ${LDFLAGS=""}
 | 
						|
			: ${LIBPATHENV=DYLD_FALLBACK_LIBRARY_PATH}
 | 
						|
			: ${PRELOADENV=DYLD_INSERT_LIBRARIES}
 | 
						|
                        AS_IF([test x"$enable_shared" = xyes], [
 | 
						|
                            # Resolve symbols from libruby.dylib when --enable-shared
 | 
						|
                            EXTDLDFLAGS='$(LIBRUBYARG_SHARED)'
 | 
						|
                        ], [test "x$EXTSTATIC" = x], [
 | 
						|
                            # When building exts as bundles, a mach-o bundle needs to know its loader
 | 
						|
                            # program to bind symbols from the ruby executable
 | 
						|
                            EXTDLDFLAGS="-bundle_loader '\$(BUILTRUBY)'"
 | 
						|
			])
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
        [aix*], [	: ${LDSHARED='$(CC)'}
 | 
						|
			AS_IF([test "$GCC" = yes], [
 | 
						|
			    LDSHARED="$LDSHARED ${linker_flag}-G -shared"
 | 
						|
			], [
 | 
						|
			    LDSHARED="$LDSHARED ${linker_flag}-G"
 | 
						|
			])
 | 
						|
			EXTDLDFLAGS='-e$(TARGET_ENTRY)'
 | 
						|
			XLDFLAGS="${linker_flag}"'-bE:$(ARCHFILE)'" ${linker_flag}-brtl"
 | 
						|
			XLDFLAGS="$XLDFLAGS ${linker_flag}-blibpath:${prefix}/lib:${LIBPATH:-/usr/lib:/lib}"
 | 
						|
			: ${ARCHFILE="ruby.imp"}
 | 
						|
                        TRY_LINK='$(CC) -oconftest $(INCFLAGS) -I$(hdrdir) $(CPPFLAGS)'
 | 
						|
                        TRY_LINK="$TRY_LINK"' $(CFLAGS) $(src) $(LIBPATH) $(LDFLAGS) $(LOCAL_LIBS) $(LIBS)'
 | 
						|
			: ${LIBPATHENV=LIBPATH}
 | 
						|
			: ${PRELOADENV=LDR_PRELOAD}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[nto-qnx*], [	DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
 | 
						|
			: ${LDSHARED='$(LD) -Bshareable -x'}
 | 
						|
			LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[cygwin*|msys*|mingw*], [
 | 
						|
			: ${LDSHARED='$(CC) -shared'}
 | 
						|
			XLDFLAGS="$XLDFLAGS -Wl,--stack,0x00200000,--enable-auto-import"
 | 
						|
			DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
 | 
						|
			: ${LIBPATHENV=PATH}
 | 
						|
			: ${PRELOADENV=""}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[hiuxmpp], [	: ${LDSHARED='$(LD) -r'}],
 | 
						|
	[atheos*], [	: ${LDSHARED='$(CC) -shared'}
 | 
						|
			rb_cv_dlopen=yes],
 | 
						|
	[	: ${LDSHARED='$(LD)'}])
 | 
						|
    AC_MSG_RESULT($rb_cv_dlopen)
 | 
						|
}
 | 
						|
 | 
						|
AS_IF([test "$rb_cv_dlopen" = yes], [
 | 
						|
    AS_CASE(["$target_os"],
 | 
						|
    [darwin*], [
 | 
						|
        AC_SUBST(ADDITIONAL_DLDFLAGS, "")
 | 
						|
	for flag in \
 | 
						|
	  "-multiply_defined suppress" \
 | 
						|
	  "-undefined dynamic_lookup" \
 | 
						|
	  ; do
 | 
						|
            test "x${linker_flag}" = x || flag="${linker_flag}`echo ${flag} | tr ' ' ,`"
 | 
						|
            RUBY_TRY_LDFLAGS([$flag], [], [$flag=])
 | 
						|
            AS_IF([test x"$flag" = x], [continue])
 | 
						|
 | 
						|
            AC_MSG_CHECKING([whether $flag is accepted for bundle])
 | 
						|
            : > conftest.c
 | 
						|
            AS_IF([${LDSHARED/'$(CC)'/$CC} -o conftest.bundle $flag conftest.c >/dev/null 2>conftest.err &&
 | 
						|
                test ! -s conftest.err], [
 | 
						|
                AC_MSG_RESULT([yes])
 | 
						|
                RUBY_APPEND_OPTIONS(DLDFLAGS, [$flag])
 | 
						|
            ], [
 | 
						|
                AC_MSG_RESULT([no])
 | 
						|
                RUBY_APPEND_OPTIONS(ADDITIONAL_DLDFLAGS, [$flag])
 | 
						|
            ])
 | 
						|
            rm -fr conftest.*
 | 
						|
	done
 | 
						|
    ])
 | 
						|
])
 | 
						|
 | 
						|
AS_IF([test "${LDSHAREDXX}" = ""], [
 | 
						|
    AS_CASE(["${LDSHARED}"],
 | 
						|
	[*'$(CC)'*], [
 | 
						|
	    LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\$(CC)/$(CXX)/'`
 | 
						|
	    ],
 | 
						|
	[*'${CC}'*], [
 | 
						|
	    LDSHAREDXX=`echo "${LDSHARED}" | sed 's/\${CC}/${CXX}/'`
 | 
						|
	    ],
 | 
						|
	[*$CC*], [
 | 
						|
	    LDSHAREDXX=`echo "${LDSHARED}" | sed "s|$CC|$CXX|"`
 | 
						|
	    ],
 | 
						|
	[ld" "*], [
 | 
						|
	    ])
 | 
						|
])
 | 
						|
 | 
						|
AC_SUBST(LINK_SO)
 | 
						|
AC_SUBST(LIBPATHFLAG)
 | 
						|
AC_SUBST(RPATHFLAG)
 | 
						|
AC_SUBST(LIBPATHENV, "${LIBPATHENV-LD_LIBRARY_PATH}")
 | 
						|
AC_SUBST(PRELOADENV, "${PRELOADENV-LD_PRELOAD}")
 | 
						|
AC_SUBST(TRY_LINK)
 | 
						|
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
[freebsd*], [
 | 
						|
    AC_CHECK_LIB([procstat], [procstat_open_sysctl])
 | 
						|
    AS_IF([test "x$ac_cv_lib_procstat_procstat_open_sysctl" = xyes], [
 | 
						|
	AC_CHECK_FUNCS(procstat_getvmmap)
 | 
						|
    ])
 | 
						|
    ])
 | 
						|
AS_CASE(["$target_cpu-$target_os"],
 | 
						|
[*-darwin*], [
 | 
						|
    AC_CHECK_HEADERS([libproc.h])
 | 
						|
    AC_CHECK_HEADERS([execinfo.h])
 | 
						|
    AS_IF([test "x$ac_cv_header_execinfo_h" = xyes], [
 | 
						|
	AC_CHECK_LIB([execinfo], [backtrace])
 | 
						|
	AC_CHECK_HEADERS([libunwind.h])
 | 
						|
 | 
						|
    AC_CHECK_HEADERS([mach/task.h mach/mach_init.h mach/mach_port.h])
 | 
						|
    AS_IF([ test \
 | 
						|
        "x${ac_cv_header_mach_task_h}" = xyes -a \
 | 
						|
        "x${ac_cv_header_mach_mach_init_h}" = xyes -a \
 | 
						|
        "x${ac_cv_header_mach_mach_port_h}" = xyes \
 | 
						|
    ], [
 | 
						|
        AC_DEFINE([HAVE_MACH_TASK_EXCEPTION_PORTS], [1])
 | 
						|
    ])
 | 
						|
    ])],
 | 
						|
[*-freebsd*|x86_64-netbsd*], [
 | 
						|
    AC_CHECK_HEADERS([execinfo.h])
 | 
						|
    AS_IF([test "x$ac_cv_header_execinfo_h" = xyes], [
 | 
						|
	AC_CHECK_LIB([execinfo], [backtrace])
 | 
						|
	AC_CHECK_LIB([unwind], [unw_backtrace])
 | 
						|
    ])])
 | 
						|
AC_CHECK_FUNCS(backtrace)
 | 
						|
 | 
						|
AS_IF([test "x$ac_cv_func_backtrace" = xyes], [
 | 
						|
  AC_CACHE_CHECK(for broken backtrace, rb_cv_broken_backtrace,
 | 
						|
    [AC_RUN_IFELSE([AC_LANG_SOURCE([[
 | 
						|
#include <unistd.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <stdint.h>
 | 
						|
#include <string.h>
 | 
						|
#include <signal.h>
 | 
						|
#include <execinfo.h>
 | 
						|
 | 
						|
]`grep '^@%:@ *define  *RUBY_SIGALTSTACK_SIZE' ${srcdir}/signal.c`[
 | 
						|
#define TRACE_SIZE 256
 | 
						|
 | 
						|
void sigsegv(int signum, siginfo_t *info, void *ctx){
 | 
						|
    void *trace[TRACE_SIZE];
 | 
						|
    int n = backtrace(trace, TRACE_SIZE);
 | 
						|
    if (n > 0) {
 | 
						|
	/*fprintf(stdout, "backtrace:%d\n",n);*/
 | 
						|
    } else {
 | 
						|
	_exit(EXIT_FAILURE);
 | 
						|
    }
 | 
						|
    _exit(EXIT_SUCCESS);
 | 
						|
}
 | 
						|
int
 | 
						|
main(void)
 | 
						|
{
 | 
						|
    volatile int *a = NULL;
 | 
						|
    stack_t ss;
 | 
						|
    struct sigaction sa;
 | 
						|
 | 
						|
    ss.ss_sp = malloc(RUBY_SIGALTSTACK_SIZE);
 | 
						|
    if (ss.ss_sp == NULL) {
 | 
						|
	fprintf(stderr, "cannot allocate memory for sigaltstack\n");
 | 
						|
	return EXIT_FAILURE;
 | 
						|
    }
 | 
						|
    ss.ss_size = RUBY_SIGALTSTACK_SIZE;
 | 
						|
    ss.ss_flags = 0;
 | 
						|
    if (sigaltstack(&ss, NULL) == -1) {
 | 
						|
	fprintf(stderr, "sigaltstack failed\n");
 | 
						|
	return EXIT_FAILURE;
 | 
						|
    }
 | 
						|
    memset(&sa, 0, sizeof(struct sigaction));
 | 
						|
    sigemptyset(&sa.sa_mask);
 | 
						|
    sa.sa_sigaction = sigsegv;
 | 
						|
    sa.sa_flags |= SA_SIGINFO;
 | 
						|
    sa.sa_flags |= SA_ONSTACK;
 | 
						|
    sigaction(SIGSEGV, &sa, NULL);
 | 
						|
    a[0] = 1;
 | 
						|
    return EXIT_SUCCESS;
 | 
						|
}
 | 
						|
]])],
 | 
						|
	rb_cv_broken_backtrace=no,
 | 
						|
	rb_cv_broken_backtrace=yes,
 | 
						|
	rb_cv_broken_backtrace=no)])
 | 
						|
  AS_IF([test "$rb_cv_broken_backtrace" = yes], [
 | 
						|
    AC_DEFINE(BROKEN_BACKTRACE, 1)
 | 
						|
  ])
 | 
						|
])
 | 
						|
 | 
						|
AC_ARG_WITH(valgrind,
 | 
						|
        AS_HELP_STRING([--without-valgrind],[disable valgrind memcheck support]),
 | 
						|
        [], with_valgrind=yes)
 | 
						|
AS_IF([test x$with_valgrind != xno],
 | 
						|
        [AC_CHECK_HEADERS(valgrind/memcheck.h)])
 | 
						|
 | 
						|
: "dlext & soext" && {
 | 
						|
  AS_CASE(["$target_os"],
 | 
						|
    [darwin*], [
 | 
						|
	SOEXT=dylib
 | 
						|
	DLEXT=bundle],
 | 
						|
    [cygwin*|msys*|mingw*|*djgpp*], [
 | 
						|
	LOAD_RELATIVE=1
 | 
						|
	SOEXT=dll
 | 
						|
	DLEXT=so],
 | 
						|
    [
 | 
						|
	DLEXT=so])
 | 
						|
: ${SOEXT="${DLEXT}"}
 | 
						|
AC_SUBST(SOEXT)
 | 
						|
}
 | 
						|
 | 
						|
AS_IF([test "$rb_cv_dlopen:$load_relative" = yes:yes], [
 | 
						|
    AS_IF([test "$ac_cv_func_dladdr" = yes], [
 | 
						|
	LOAD_RELATIVE=1
 | 
						|
    ])
 | 
						|
])
 | 
						|
AS_IF([test x"$LOAD_RELATIVE" = x1], [
 | 
						|
    load_relative=yes
 | 
						|
], [
 | 
						|
    unset load_relative
 | 
						|
])
 | 
						|
 | 
						|
len=2 # .rb
 | 
						|
n=`expr "$DLEXT"  : '.*'`; test "$n" -gt "$len" && len=$n
 | 
						|
AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`)
 | 
						|
test ".$DLEXT"  = "." || AC_DEFINE_UNQUOTED(DLEXT,  ".$DLEXT")
 | 
						|
AC_SUBST(DLEXT)
 | 
						|
 | 
						|
: "strip" && {
 | 
						|
    AC_MSG_CHECKING([for $STRIP flags])
 | 
						|
    AC_LINK_IFELSE([AC_LANG_PROGRAM], [AS_IF(
 | 
						|
        ["${STRIP}" -A -n conftest$ac_exeext 2>/dev/null], [
 | 
						|
            AC_MSG_RESULT([-A -n])
 | 
						|
            STRIP="${STRIP} -A -n"
 | 
						|
        ],
 | 
						|
        ["${STRIP}" -S -x conftest$ac_exeext 2>/dev/null], [
 | 
						|
            AC_MSG_RESULT([-S -x])
 | 
						|
            STRIP="${STRIP} -S -x"
 | 
						|
        ], [
 | 
						|
            AC_MSG_RESULT([none needed])
 | 
						|
        ])
 | 
						|
    ])
 | 
						|
}
 | 
						|
 | 
						|
AC_ARG_WITH(ext,
 | 
						|
            AS_HELP_STRING([--with-ext=EXTS],
 | 
						|
                           [pass to --with-ext option of extmk.rb]))
 | 
						|
AC_ARG_WITH(out-ext,
 | 
						|
            AS_HELP_STRING([--with-out-ext=EXTS],
 | 
						|
                           [pass to --without-ext option of extmk.rb]))
 | 
						|
EXTSTATIC=
 | 
						|
AC_SUBST(EXTSTATIC)dnl
 | 
						|
AC_ARG_WITH(static-linked-ext,
 | 
						|
	    AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
 | 
						|
            [AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static],[no],[],[EXTSTATIC="$withval"])])
 | 
						|
AS_CASE([",$EXTSTATIC,"], [,static,|*,enc,*], [
 | 
						|
  ENCOBJS='enc/encinit.$(OBJEXT) enc/libenc.$(LIBEXT) enc/libtrans.$(LIBEXT)'
 | 
						|
  EXTOBJS='ext/extinit.$(OBJEXT)'
 | 
						|
  AC_DEFINE_UNQUOTED(EXTSTATIC, 1)
 | 
						|
  AC_SUBST(ENCSTATIC, static)
 | 
						|
], [
 | 
						|
  ENCOBJS='dmyenc.$(OBJEXT)'
 | 
						|
  EXTOBJS='dmyext.$(OBJEXT)'
 | 
						|
])
 | 
						|
AC_SUBST(ENCOBJS)
 | 
						|
AC_SUBST(EXTOBJS)
 | 
						|
 | 
						|
AC_ARG_WITH(setup,
 | 
						|
	    AS_HELP_STRING([--with-setup=SETUP], [use extension libraries setup]),
 | 
						|
	    [setup=$withval])
 | 
						|
AS_IF([test -n "$setup"], [
 | 
						|
    AS_IF([! test -f "ext/$setup" -o -f "$srcdir/ext/$setup"], [
 | 
						|
	AC_MSG_ERROR(Setup file $setup not found under ext or $srcdir/ext)
 | 
						|
    ])
 | 
						|
], [test -f "$srcdir/ext/Setup.$target_os"], [
 | 
						|
    setup="Setup.$target_os"
 | 
						|
], [
 | 
						|
    setup=
 | 
						|
    for file in "$srcdir"/ext/Setup.*; do
 | 
						|
	AS_CASE(["$file"], [*~|*.bak|*.orig|*.rej|*.tmp], [continue])
 | 
						|
	setup=`basename "$file"`
 | 
						|
	AS_CASE(["$target_os"], [`expr "$setup" : 'Setup.\(.*\)'`*], [break])
 | 
						|
	platform=`sed '/^option  *platform  */!d;s///;s/|/*|/g;q' "$file"`
 | 
						|
	AS_IF([test "x$platform" != x], [
 | 
						|
	    eval "AS_CASE([\"\$target_os\"], [$platform*], [break])"
 | 
						|
	])
 | 
						|
	setup=
 | 
						|
    done
 | 
						|
    : ${setup:=Setup}
 | 
						|
])
 | 
						|
AC_SUBST(setup)
 | 
						|
 | 
						|
rubylibprefix='${libdir}/${RUBY_BASE_NAME}'
 | 
						|
AC_ARG_WITH(rubylibprefix,
 | 
						|
	    AS_HELP_STRING([--with-rubylibprefix=DIR], [prefix for ruby libraries [[LIBDIR/RUBY_BASE_NAME]]]),
 | 
						|
	    [AS_IF([test "x$withval" = xno], [
 | 
						|
		AC_MSG_ERROR([No ruby, No libprefix])
 | 
						|
	    ])
 | 
						|
	    rubylibprefix="$withval"])
 | 
						|
AC_SUBST(rubylibprefix)
 | 
						|
 | 
						|
AS_IF([test x"${exec_prefix}" != xNONE], [
 | 
						|
    RUBY_EXEC_PREFIX="$exec_prefix"
 | 
						|
], [test x"$prefix" != xNONE], [
 | 
						|
    RUBY_EXEC_PREFIX="$prefix"
 | 
						|
], [
 | 
						|
    RUBY_EXEC_PREFIX=$ac_default_prefix
 | 
						|
])
 | 
						|
pat=`echo "${RUBY_EXEC_PREFIX}" | tr -c '\012' .`'\(.*\)'
 | 
						|
for var in bindir includedir libdir rubylibprefix; do
 | 
						|
    eval val='"$'$var'"'
 | 
						|
    AS_CASE(["$val"], ["${RUBY_EXEC_PREFIX}"*], [val='${exec_prefix}'"`expr \"$val\" : \"$pat\"`"])
 | 
						|
    eval $var='"$val"'
 | 
						|
done
 | 
						|
 | 
						|
BTESTRUBY='$(MINIRUBY)'
 | 
						|
AS_IF([test x"$cross_compiling" = xyes], [
 | 
						|
  test x"$MINIRUBY" = x && MINIRUBY="${RUBY-$BASERUBY} -I`$CHDIR .; pwd` "-r'$(arch)-fake'
 | 
						|
  XRUBY_LIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["libdir"]']`
 | 
						|
  XRUBY_RUBYLIBDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubylibdir"]']`
 | 
						|
  XRUBY_RUBYHDRDIR=`${RUBY-$BASERUBY} -rrbconfig -e ['puts RbConfig::CONFIG["rubyhdrdir"]']`
 | 
						|
  AC_SUBST(XRUBY_LIBDIR)
 | 
						|
  AC_SUBST(XRUBY_RUBYLIBDIR)
 | 
						|
  AC_SUBST(XRUBY_RUBYHDRDIR)
 | 
						|
  PREP='$(arch)-fake.rb'
 | 
						|
  RUNRUBY_COMMAND='$(MINIRUBY) -I`cd $(srcdir)/lib; pwd`'
 | 
						|
  RUNRUBY='$(RUNRUBY_COMMAND)'
 | 
						|
  XRUBY='$(MINIRUBY)'
 | 
						|
  TEST_RUNNABLE=no
 | 
						|
  CROSS_COMPILING=yes
 | 
						|
  AC_DEFINE(CROSS_COMPILING, 1)
 | 
						|
], [
 | 
						|
  MINIRUBY='./miniruby$(EXEEXT) -I$(srcdir)/lib -I.'
 | 
						|
  MINIRUBY="$MINIRUBY"' -I$(EXTOUT)/common'
 | 
						|
  PREP='miniruby$(EXEEXT)'
 | 
						|
  RUNRUBY_COMMAND='$(MINIRUBY) $(tooldir)/runruby.rb --extout=$(EXTOUT) $(RUNRUBYOPT)'
 | 
						|
  RUNRUBY='$(RUNRUBY_COMMAND) --'
 | 
						|
  XRUBY='$(RUNRUBY)'
 | 
						|
  TEST_RUNNABLE=yes
 | 
						|
  CROSS_COMPILING=no
 | 
						|
])
 | 
						|
AC_SUBST(TEST_RUNNABLE)
 | 
						|
AC_SUBST(CROSS_COMPILING)
 | 
						|
AC_SUBST(MINIRUBY)
 | 
						|
AC_SUBST(BTESTRUBY)
 | 
						|
AC_SUBST(PREP)
 | 
						|
AC_SUBST(RUNRUBY_COMMAND)
 | 
						|
AC_SUBST(RUNRUBY)
 | 
						|
AC_SUBST(XRUBY)
 | 
						|
AC_SUBST(EXTOUT, [${EXTOUT=.ext}])
 | 
						|
 | 
						|
FIRSTMAKEFILE=""
 | 
						|
LIBRUBY_A='lib$(RUBY_SO_NAME)-static.a'
 | 
						|
LIBRUBY='$(LIBRUBY_A)'
 | 
						|
LIBRUBYARG_STATIC='-l$(RUBY_SO_NAME)-static'
 | 
						|
LIBRUBYARG='$(LIBRUBYARG_STATIC)'
 | 
						|
SOLIBS='$(MAINLIBS)'
 | 
						|
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
  [cygwin*|msys*|mingw*|haiku*|darwin*], [
 | 
						|
    : ${DLDLIBS=""}
 | 
						|
    ],
 | 
						|
  [
 | 
						|
    DLDLIBS="${DLDLIBS:+$DLDLIBS }-lc"
 | 
						|
    ])
 | 
						|
 | 
						|
AC_ARG_ENABLE(multiarch,
 | 
						|
	      AS_HELP_STRING([--enable-multiarch], [enable multiarch compatible directories]),
 | 
						|
	      [multiarch=], [unset multiarch])
 | 
						|
AS_IF([test ${multiarch+set}], [
 | 
						|
   AC_DEFINE(ENABLE_MULTIARCH)
 | 
						|
   MJIT_HEADER_INSTALL_DIR=include/'${arch}/${RUBY_VERSION_NAME}'
 | 
						|
], [
 | 
						|
   MJIT_HEADER_INSTALL_DIR=include/'${RUBY_VERSION_NAME}/${arch}'
 | 
						|
])
 | 
						|
 | 
						|
archlibdir='${libdir}/${arch}'
 | 
						|
sitearchlibdir='${libdir}/${sitearch}'
 | 
						|
archincludedir='${includedir}/${arch}'
 | 
						|
sitearchincludedir='${includedir}/${sitearch}'
 | 
						|
 | 
						|
AC_ARG_WITH(soname,
 | 
						|
	AS_HELP_STRING([--with-soname=SONAME], [base name of shared library]),
 | 
						|
	[RUBY_SO_NAME=$withval],
 | 
						|
	[
 | 
						|
	    AS_CASE(["$target_os"],
 | 
						|
	    [darwin*], [
 | 
						|
	        RUBY_SO_NAME='$(RUBY_BASE_NAME).$(RUBY_API_VERSION)'
 | 
						|
	    ],
 | 
						|
	    [cygwin*], [
 | 
						|
	        RUBY_SO_NAME='$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)0'
 | 
						|
	    ],
 | 
						|
	    [mingw*], [
 | 
						|
		RUBY_SO_NAME="${rb_cv_msvcrt}"'-$(RUBY_BASE_NAME)$(MAJOR)$(MINOR)0'
 | 
						|
		AS_IF([test x"${target_cpu}" != xi386], [
 | 
						|
		    RUBY_SO_NAME="${target_cpu}-${RUBY_SO_NAME}"
 | 
						|
		])
 | 
						|
	    ],
 | 
						|
	    [RUBY_SO_NAME='$(RUBY_BASE_NAME)'])
 | 
						|
	])
 | 
						|
 | 
						|
LIBRUBY_LDSHARED=${DLDSHARED=${LDSHARED}}
 | 
						|
LIBRUBY_DLDFLAGS=$DLDFLAGS
 | 
						|
LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)'
 | 
						|
LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_API_VERSION)'
 | 
						|
LIBRUBY_ALIASES='lib$(RUBY_SO_NAME).$(SOEXT)'
 | 
						|
ENABLE_SHARED=no
 | 
						|
 | 
						|
AC_ARG_ENABLE(shared,
 | 
						|
       AS_HELP_STRING([--enable-shared], [build a shared library for Ruby]),
 | 
						|
       [enable_shared=$enableval])
 | 
						|
libprefix=${multiarch+'$(archlibdir)'}${multiarch-'$(libdir)'}
 | 
						|
LIBRUBY_RELATIVE=${load_relative-no}
 | 
						|
AS_CASE("$enable_shared", [yes], [
 | 
						|
  LIBRUBY='$(LIBRUBY_SO)'
 | 
						|
  LIBRUBYARG_SHARED='-l$(RUBY_SO_NAME)'
 | 
						|
  LIBRUBYARG='$(LIBRUBYARG_SHARED)'
 | 
						|
  LIBRUBY_RELATIVE=no
 | 
						|
  test -z "$CCDLFLAGS" || CFLAGS="$CFLAGS $CCDLFLAGS"
 | 
						|
  ENABLE_SHARED=yes
 | 
						|
 | 
						|
  # libdir can be overridden in config.site file (on OpenSUSE at least).
 | 
						|
  libdir_basename=lib
 | 
						|
  AS_IF([test "$bindir" = '${exec_prefix}/bin'], [
 | 
						|
    AS_CASE(["$libdir"], ['${exec_prefix}/'*], [libdir_basename=`basename "$libdir"`])
 | 
						|
  ])
 | 
						|
  AC_DEFINE_UNQUOTED(LIBDIR_BASENAME, ["${libdir_basename}"])
 | 
						|
  libdir_basename="${libdir_basename}"${multiarch+'/${arch}'}
 | 
						|
 | 
						|
  # Debian bullseye reportedly has its ld(1) patched, which breaks
 | 
						|
  # --enable-shared --with-jemalloc combination.  We might have to deal with
 | 
						|
  # the ld(1) change sooner or later, but in the meantime let us force it
 | 
						|
  # the old way.
 | 
						|
  #
 | 
						|
  # See https://github.com/ruby/ruby/pull/4627
 | 
						|
  RUBY_TRY_LDFLAGS([${linker_flag}--no-as-needed], [no_as_needed=yes], [no_as_needed=no])
 | 
						|
  AS_IF([test "$no_as_needed" = yes], [
 | 
						|
      RUBY_APPEND_OPTIONS(LDFLAGS, [${linker_flag}--no-as-needed])
 | 
						|
  ])
 | 
						|
 | 
						|
  AS_CASE(["$target_os"],
 | 
						|
    [freebsd*|dragonfly*], [],
 | 
						|
    [
 | 
						|
     AS_IF([test "$GCC" = yes], [
 | 
						|
       RUBY_TRY_LDFLAGS([${linker_flag}--no-undefined], [no_undefined=yes], [no_undefined=no])
 | 
						|
       AS_IF([test "no_undefined" = yes], [
 | 
						|
	  RUBY_APPEND_OPTION(EXTLDFLAGS, [${linker_flag}--no-undefined])
 | 
						|
       ])
 | 
						|
     ])
 | 
						|
    ])
 | 
						|
 | 
						|
  AS_CASE(["$target_os"],
 | 
						|
    [sunos4*], [
 | 
						|
	LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
 | 
						|
	],
 | 
						|
    [linux* | gnu* | k*bsd*-gnu | atheos* | kopensolaris*-gnu | haiku*], [
 | 
						|
	RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,$(LIBRUBY_SONAME)' "$LDFLAGS_OPTDIR"])
 | 
						|
	LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
 | 
						|
	AS_IF([test "$load_relative" = yes], [
 | 
						|
	    libprefix="'\$\${ORIGIN}/../${libdir_basename}'"
 | 
						|
	    LIBRUBY_RPATHFLAGS="-Wl,-rpath,${libprefix}"
 | 
						|
	    LIBRUBY_RELATIVE=yes
 | 
						|
	])
 | 
						|
	],
 | 
						|
    [freebsd*|dragonfly*], [
 | 
						|
	LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
 | 
						|
	LIBRUBY_SONAME='$(LIBRUBY_SO)'
 | 
						|
	AS_IF([test "$rb_cv_binary_elf" != "yes" ], [
 | 
						|
	    LIBRUBY_SO="$LIBRUBY_SO.\$(TEENY)"
 | 
						|
	    LIBRUBY_ALIASES=''
 | 
						|
	], [test "$load_relative" = yes], [
 | 
						|
	    libprefix="'\$\$ORIGIN/../${libdir_basename}'"
 | 
						|
	    LIBRUBY_RPATHFLAGS="-Wl,-rpath,${libprefix}"
 | 
						|
	    LIBRUBY_RELATIVE=yes
 | 
						|
	])
 | 
						|
	],
 | 
						|
    [netbsd*], [
 | 
						|
	LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)$(MINOR)'
 | 
						|
	LIBRUBY_SO="${LIBRUBY_SONAME}"'.$(TEENY)'
 | 
						|
	RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ['-Wl,-soname,$(LIBRUBY_SONAME)' "$LDFLAGS_OPTDIR"])
 | 
						|
	AS_IF([test "$rb_cv_binary_elf" = yes], [ # ELF platforms
 | 
						|
	   LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
 | 
						|
	], [	# a.out platforms
 | 
						|
	   LIBRUBY_ALIASES=""
 | 
						|
	])
 | 
						|
	],
 | 
						|
    [openbsd*|mirbsd*], [
 | 
						|
	LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR).'`expr ${MINOR} \* 10 + ${TEENY}`
 | 
						|
	],
 | 
						|
    [solaris*], [
 | 
						|
	LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT).$(MAJOR)'
 | 
						|
	LIBRUBY_SONAME='lib$(RUBY_SO_NAME).$(SOEXT).$(RUBY_PROGRAM_VERSION)'
 | 
						|
	LIBRUBY_ALIASES='$(LIBRUBY_SONAME) lib$(RUBY_SO_NAME).$(SOEXT)'
 | 
						|
	RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-h${linker_flag:+,}"'$(@F)'])
 | 
						|
	AS_IF([test "$load_relative" = yes], [
 | 
						|
	    libprefix="'\$\$ORIGIN/../${libdir_basename}'"
 | 
						|
	    LIBRUBY_RPATHFLAGS="-R${libprefix}"
 | 
						|
	    LIBRUBY_RELATIVE=yes
 | 
						|
	], [
 | 
						|
	    LIBRUBY_RPATHFLAGS='-R${libdir}'
 | 
						|
	])
 | 
						|
	],
 | 
						|
    [aix*], [
 | 
						|
	RUBY_APPEND_OPTIONS(LIBRUBY_DLDFLAGS, ["${linker_flag}-bnoentry" "$XLDFLAGS" "$LDFLAGS_OPTDIR"])
 | 
						|
	LIBRUBYARG_SHARED='-L${libdir} -l${RUBY_SO_NAME}'
 | 
						|
	LIBS="$LIBS -lm -lc"
 | 
						|
	],
 | 
						|
    [darwin*], [
 | 
						|
	LIBRUBY_SO='lib$(RUBY_SO_NAME).$(SOEXT)'
 | 
						|
	LIBRUBY_SONAME='$(LIBRUBY_SO)'
 | 
						|
	LIBRUBY_ALIASES='lib$(RUBY_INSTALL_NAME).$(SOEXT)'
 | 
						|
	AS_IF([test "$load_relative" = yes], [
 | 
						|
	    libprefix="@executable_path/../${libdir_basename}"
 | 
						|
	    LIBRUBY_RELATIVE=yes
 | 
						|
	])
 | 
						|
	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS -install_name ${libprefix}"'/$(LIBRUBY_SONAME)'
 | 
						|
	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-compatibility_version $(RUBY_API_VERSION)'
 | 
						|
	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-current_version $(RUBY_PROGRAM_VERSION)'
 | 
						|
	AS_IF([test "$visibility_option" = ld], [
 | 
						|
	    LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_Init_*'
 | 
						|
	    LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,_ruby_static_id_*'
 | 
						|
	    LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "'-Wl,-unexported_symbol,*_threadptr_*'
 | 
						|
	])
 | 
						|
	LIBRUBY_DLDFLAGS="$LIBRUBY_DLDFLAGS "' $(XLDFLAGS)'
 | 
						|
	],
 | 
						|
    [interix*], [
 | 
						|
	LIBRUBYARG_SHARED='-L. -L${libdir} -l$(RUBY_SO_NAME)'
 | 
						|
	],
 | 
						|
    [cygwin*|msys*|mingw*|mswin*], [
 | 
						|
	LIBRUBY_RELATIVE=yes
 | 
						|
	])
 | 
						|
], [
 | 
						|
  LIBRUBYARG_SHARED=
 | 
						|
 | 
						|
  # enable PIE if possible
 | 
						|
  AC_ARG_ENABLE(pie,
 | 
						|
          AS_HELP_STRING([--disable-pie], [disable PIE feature]),
 | 
						|
          [pie=$enableval], [pie=])
 | 
						|
  AS_IF([test "$GCC" = yes -a -z "$EXTSTATIC" -a "x$pie" != xno], [
 | 
						|
    RUBY_TRY_CFLAGS(-fPIE, [pie=yes], [pie=no])
 | 
						|
    AS_IF([test "$pie" = yes], [
 | 
						|
      # Use -fPIE when testing -pie.  RUBY_TRY_LDFLAGS sets
 | 
						|
      # $save_CFLAGS internally, so set other name here.
 | 
						|
      save_CFLAGS_before_pie="$CFLAGS"
 | 
						|
      CFLAGS="$CFLAGS -fPIE"
 | 
						|
 | 
						|
      # gcc need -pie but clang need -Wl,-pie.
 | 
						|
      for pie in -pie -Wl,-pie; do
 | 
						|
	RUBY_TRY_LDFLAGS([$pie], [], [pie=])
 | 
						|
	AS_IF([test "x$pie" != x], [
 | 
						|
	  RUBY_APPEND_OPTION(XCFLAGS, -fPIE)
 | 
						|
	  RUBY_APPEND_OPTION(XLDFLAGS, $pie)
 | 
						|
	  break
 | 
						|
	])
 | 
						|
      done
 | 
						|
      CFLAGS="$save_CFLAGS_before_pie"
 | 
						|
    ])
 | 
						|
  ])
 | 
						|
])
 | 
						|
AS_IF([test "$enable_rpath" = yes], [
 | 
						|
    test -z "$LIBRUBY_RPATHFLAGS" || LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS "
 | 
						|
    rpathflag="${RPATHFLAG}"
 | 
						|
    AS_CASE(["${cross_compiling}${load_relative}"], [*yes*], [], [rpathflag="$RPATHFLAG$LIBPATHFLAG"])
 | 
						|
    rpathflag=`IFS="$PATH_SEPARATOR"
 | 
						|
        echo x "$rpathflag" |
 | 
						|
        sed "s/^x *//;s${IFS}"'%1\\$-s'"${IFS}${libprefix}${IFS}g;s${IFS}%s${IFS}${libprefix}${IFS}g"
 | 
						|
    `
 | 
						|
    LIBRUBY_RPATHFLAGS="$LIBRUBY_RPATHFLAGS${rpathflag}"
 | 
						|
    LIBRUBYARG_SHARED="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_SHARED"
 | 
						|
    LIBRUBYARG_STATIC="$LIBRUBY_RPATHFLAGS $LIBRUBYARG_STATIC"
 | 
						|
])
 | 
						|
AC_SUBST(LIBRUBY_RELATIVE)
 | 
						|
 | 
						|
LDFLAGS="-L. $LDFLAGS"
 | 
						|
AC_SUBST(ARCHFILE)
 | 
						|
 | 
						|
AS_IF([test "$EXEEXT" = .exe], [
 | 
						|
    EXECUTABLE_EXTS='".exe",".com",".cmd",".bat"'
 | 
						|
    AC_DEFINE_UNQUOTED(EXECUTABLE_EXTS, $EXECUTABLE_EXTS)
 | 
						|
    EXECUTABLE_EXTS=`echo $EXECUTABLE_EXTS | tr -d '"' | tr , ' '`
 | 
						|
    AC_SUBST(EXECUTABLE_EXTS)
 | 
						|
])
 | 
						|
 | 
						|
AS_CASE("$cross_compiling:${LIBPATHENV}", [yes:* | no:], [], [
 | 
						|
    AC_MSG_CHECKING(whether wrapper for $LIBPATHENV is needed)
 | 
						|
    AS_IF([env ${LIBPATHENV}=/lib /bin/sh -c ': ${'${LIBPATHENV}'?}' 2>/dev/null],
 | 
						|
	[AC_MSG_RESULT(no)],
 | 
						|
	[AC_SUBST(XRUBY_LIBPATHENV_WRAPPER, 'exe/$(PROGRAM)')
 | 
						|
	AC_MSG_RESULT(yes)]
 | 
						|
    )
 | 
						|
])
 | 
						|
 | 
						|
AC_ARG_ENABLE(dtrace,
 | 
						|
        AS_HELP_STRING([--enable-dtrace],
 | 
						|
        [enable DTrace for tracing inside ruby. enabled by default on systems having dtrace]),
 | 
						|
        [enable_dtrace=$enableval], [enable_dtrace=auto])
 | 
						|
 | 
						|
LIBRUBY_A_OBJS='$(OBJS)'
 | 
						|
DTRACE_REBUILD=
 | 
						|
AS_CASE(["${enable_dtrace}"],
 | 
						|
[yes|auto], [
 | 
						|
    RUBY_DTRACE_AVAILABLE()
 | 
						|
], [
 | 
						|
    rb_cv_dtrace_available=no
 | 
						|
])
 | 
						|
AS_CASE(["$target_os"],[freebsd*],[
 | 
						|
         rb_cv_dtrace_available=no
 | 
						|
	 ])
 | 
						|
AS_IF([test "${enable_dtrace}" = yes], [dnl
 | 
						|
    AS_IF([test -z "$DTRACE"], [dnl
 | 
						|
	AC_MSG_ERROR([dtrace(1) is missing])
 | 
						|
    ], [test "$cross_compiling" = yes], [dnl
 | 
						|
	AC_MSG_ERROR([--enable-dtrace, however, cross compiling])
 | 
						|
    ], [test "${rb_cv_dtrace_available}" = "no"], [dnl
 | 
						|
       AC_MSG_ERROR([--enable-dtrace, however, USDT is not available])
 | 
						|
    ])
 | 
						|
])
 | 
						|
AS_CASE([$rb_cv_dtrace_available],
 | 
						|
[yes*], [dnl
 | 
						|
    RUBY_DTRACE_POSTPROCESS()
 | 
						|
    AS_IF([test "$rb_cv_prog_dtrace_g" != no], [dnl
 | 
						|
	DTRACE_OBJ='probes.$(OBJEXT)'
 | 
						|
    ])
 | 
						|
    AS_IF([test "$rb_cv_prog_dtrace_g" = rebuild], [dnl
 | 
						|
	DTRACE_REBUILD=yes
 | 
						|
	LIBRUBY_A_OBJS='$(DTRACE_GLOMMED_OBJ)'
 | 
						|
    ])
 | 
						|
    AS_CASE("${target_os}", [freebsd*], [dnl
 | 
						|
        # FreeBSD's dtrace requires libelf
 | 
						|
        LIBS="-lelf $LIBS"
 | 
						|
    ])
 | 
						|
    DTRACE_EXT=d
 | 
						|
], [dnl
 | 
						|
    enable_dtrace=no
 | 
						|
    DTRACE_EXT=dmyh
 | 
						|
])
 | 
						|
AC_SUBST(DTRACE_EXT)
 | 
						|
AC_SUBST(DTRACE_OBJ)
 | 
						|
AC_SUBST(DTRACE_REBUILD)
 | 
						|
AC_SUBST(DTRACE_OPT)
 | 
						|
AC_SUBST(LIBRUBY_A_OBJS)
 | 
						|
 | 
						|
AC_ARG_ENABLE(gcov,
 | 
						|
       AS_HELP_STRING([--enable-gcov], [enable coverage measurement by gcov]),
 | 
						|
       [gcov=yes])
 | 
						|
AS_IF([test x"$gcov" = xyes], [
 | 
						|
    CFLAGS="$CFLAGS -coverage"
 | 
						|
    LDFLAGS="$LDFLAGS -coverage"
 | 
						|
])
 | 
						|
 | 
						|
RUBY_SETJMP_TYPE
 | 
						|
}
 | 
						|
 | 
						|
: "build section" && {
 | 
						|
dnl build rdoc index if requested
 | 
						|
RDOCTARGET=""
 | 
						|
CAPITARGET=""
 | 
						|
AC_ARG_ENABLE(install-doc,
 | 
						|
       AS_HELP_STRING([--disable-install-doc], [do not install either rdoc indexes or C API documents during install]),
 | 
						|
       [install_doc=$enableval], [install_doc=yes])
 | 
						|
AC_ARG_WITH(rdoc,
 | 
						|
      AS_HELP_STRING([--with-rdoc=ri,html], [comma/space separated list of RDoc formats to install]),
 | 
						|
      [install_rdoc=`echo ,$withval, | sed 'y/,/ /;s/ ri / rdoc /;s/^ *//;s/ *$//'`], [
 | 
						|
AC_ARG_ENABLE(install-rdoc,
 | 
						|
      AS_HELP_STRING([--disable-install-rdoc], [do not install rdoc indexes during install]),
 | 
						|
      [install_rdoc=$enableval], [install_rdoc=yes])
 | 
						|
])
 | 
						|
AC_ARG_ENABLE(install-capi,
 | 
						|
      AS_HELP_STRING([--disable-install-capi], [do not install C API documents during install]),
 | 
						|
      [install_capi=$enableval], [install_capi=no])
 | 
						|
 | 
						|
AS_IF([test "$install_doc" != no], [
 | 
						|
    AS_CASE(["$install_rdoc"],
 | 
						|
    [yes], [
 | 
						|
	RDOCTARGET="rdoc"
 | 
						|
    ],
 | 
						|
    [all], [
 | 
						|
	RDOCTARGET="rdoc html"
 | 
						|
    ],
 | 
						|
    [no|''], [
 | 
						|
	RDOCTARGET="nodoc"
 | 
						|
    ],
 | 
						|
    [
 | 
						|
	RDOCTARGET="$install_rdoc"
 | 
						|
    ])
 | 
						|
    AS_IF([test "$install_capi" != no -a -n "$DOXYGEN"], [
 | 
						|
	CAPITARGET="capi"
 | 
						|
    ], [
 | 
						|
	CAPITARGET="nodoc"
 | 
						|
    ])
 | 
						|
], [
 | 
						|
    RDOCTARGET="nodoc"
 | 
						|
    CAPITARGET="nodoc"
 | 
						|
])
 | 
						|
 | 
						|
AC_SUBST(RDOCTARGET)
 | 
						|
AC_SUBST(CAPITARGET)
 | 
						|
 | 
						|
AS_CASE(["$RDOCTARGET:$CAPITARGET"],[nodoc:nodoc],[INSTALLDOC=nodoc],[INSTALLDOC=all])
 | 
						|
AC_SUBST(INSTALLDOC)
 | 
						|
 | 
						|
AC_ARG_ENABLE(jit-support,
 | 
						|
    AS_HELP_STRING([--disable-jit-support], [disable JIT features]),
 | 
						|
    [MJIT_SUPPORT=$enableval],
 | 
						|
    [AS_CASE(["$target_os"],
 | 
						|
        [wasi | mingw* | solaris*], [MJIT_SUPPORT=no],
 | 
						|
        [MJIT_SUPPORT=yes]
 | 
						|
    )])
 | 
						|
 | 
						|
AS_IF([test x"$MJIT_SUPPORT" = "xyes"],
 | 
						|
	[AC_DEFINE(USE_MJIT, 1)],
 | 
						|
	[AC_DEFINE(USE_MJIT, 0)])
 | 
						|
 | 
						|
AC_SUBST(MJIT_SUPPORT)
 | 
						|
 | 
						|
AC_ARG_ENABLE(yjit,
 | 
						|
        AS_HELP_STRING([--enable-yjit],
 | 
						|
        [enable experimental in-process JIT compiler that requires Rust build tools [default=no]]),
 | 
						|
        [YJIT_SUPPORT=$enableval], [YJIT_SUPPORT=no])
 | 
						|
 | 
						|
CARGO=
 | 
						|
CARGO_BUILD_ARGS=
 | 
						|
YJIT_LIBS=
 | 
						|
AS_CASE(["${YJIT_SUPPORT}"],
 | 
						|
[yes|dev|stats|dev_nodebug], [
 | 
						|
    AS_IF([test x"$enable_jit_support" = "xno"],
 | 
						|
        AC_MSG_ERROR([--disable-jit-support but --enable-yjit. YJIT requires JIT support])
 | 
						|
    )
 | 
						|
    AC_CHECK_TOOL(RUSTC, [rustc], [no])
 | 
						|
    AS_IF([test x"$RUSTC" = "xno"],
 | 
						|
        AC_MSG_ERROR([rustc is required. Installation instructions available at https://www.rust-lang.org/tools/install])
 | 
						|
    )
 | 
						|
 | 
						|
    AS_CASE(["${YJIT_SUPPORT}"],
 | 
						|
    [yes], [
 | 
						|
	rb_rust_target_subdir=release
 | 
						|
    ],
 | 
						|
    [dev], [
 | 
						|
	rb_rust_target_subdir=debug
 | 
						|
	CARGO_BUILD_ARGS='--features stats,disasm,asm_comments'
 | 
						|
	AC_DEFINE(RUBY_DEBUG, 1)
 | 
						|
    ],
 | 
						|
    [dev_nodebug], [
 | 
						|
	rb_rust_target_subdir=dev_nodebug
 | 
						|
	CARGO_BUILD_ARGS='--profile dev_nodebug --features stats,disasm,asm_comments'
 | 
						|
    ],
 | 
						|
    [stats], [
 | 
						|
	rb_rust_target_subdir=stats
 | 
						|
	CARGO_BUILD_ARGS='--profile stats --features stats'
 | 
						|
    ])
 | 
						|
 | 
						|
    AS_IF([test -n "${CARGO_BUILD_ARGS}"], [
 | 
						|
             AC_CHECK_TOOL(CARGO, [cargo], [no])
 | 
						|
             AS_IF([test x"$CARGO" = "xno"],
 | 
						|
                AC_MSG_ERROR([cargo is required. Installation instructions available at https://www.rust-lang.org/tools/install])
 | 
						|
             ]))
 | 
						|
 | 
						|
    YJIT_LIBS="yjit/target/${rb_rust_target_subdir}/libyjit.a"
 | 
						|
    YJIT_OBJ='yjit.$(OBJEXT)'
 | 
						|
    AC_DEFINE(USE_YJIT, 1)
 | 
						|
], [AC_DEFINE(USE_YJIT, 0)])
 | 
						|
 | 
						|
 | 
						|
dnl These variables end up in ::RbConfig::CONFIG
 | 
						|
AC_SUBST(YJIT_SUPPORT)dnl what flavor of YJIT the Ruby build includes
 | 
						|
AC_SUBST(RUSTC)dnl Rust compiler command
 | 
						|
AC_SUBST(CARGO)dnl Cargo command for Rust builds
 | 
						|
AC_SUBST(CARGO_BUILD_ARGS)dnl for selecting Rust build profiles
 | 
						|
AC_SUBST(YJIT_LIBS)dnl for optionally building the Rust parts of YJIT
 | 
						|
AC_SUBST(YJIT_OBJ)dnl for optionally building the C parts of YJIT
 | 
						|
 | 
						|
AC_ARG_ENABLE(install-static-library,
 | 
						|
	AS_HELP_STRING([--disable-install-static-library], [do not install static ruby library]),
 | 
						|
	[INSTALL_STATIC_LIBRARY=$enableval
 | 
						|
         AS_IF([test x"$enable_shared" = xno -a x"$INSTALL_STATIC_LIBRARY" = xno],
 | 
						|
                 [AC_MSG_ERROR([must install either static or shared library])],
 | 
						|
                 [])],
 | 
						|
	AS_IF([test x"$enable_shared" = xyes],
 | 
						|
	    [INSTALL_STATIC_LIBRARY=no],
 | 
						|
	    [INSTALL_STATIC_LIBRARY=yes]))
 | 
						|
AC_SUBST(INSTALL_STATIC_LIBRARY)
 | 
						|
 | 
						|
AC_CACHE_CHECK([for prefix of external symbols], rb_cv_symbol_prefix, [
 | 
						|
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern void conftest_external(void) {}]], [[]])],[
 | 
						|
	rb_cv_symbol_prefix=`$NM conftest.$ac_objext |
 | 
						|
			     sed -n ['/.*T[ 	]\([^ 	]*\)conftest_external.*/!d;s//\1/p;q']`
 | 
						|
	],
 | 
						|
	[rb_cv_symbol_prefix=''])
 | 
						|
    test -n "$rb_cv_symbol_prefix" || rb_cv_symbol_prefix=NONE
 | 
						|
])
 | 
						|
SYMBOL_PREFIX="$rb_cv_symbol_prefix"
 | 
						|
test "x$SYMBOL_PREFIX" = xNONE && SYMBOL_PREFIX=''
 | 
						|
DLNOBJ=dln.o
 | 
						|
AC_ARG_ENABLE(dln,
 | 
						|
	      AS_HELP_STRING([--disable-dln], [disable dynamic link feature]),
 | 
						|
	      [test "$enableval" = yes || DLNOBJ=dmydln.o])
 | 
						|
AC_SUBST(DLNOBJ)
 | 
						|
MINIDLNOBJ=dmydln.o
 | 
						|
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
    [linux*], [
 | 
						|
	],
 | 
						|
    [netbsd*], [
 | 
						|
	RUBY_APPEND_OPTION(CFLAGS, -pipe)
 | 
						|
	],
 | 
						|
    [darwin*], [
 | 
						|
	RUBY_APPEND_OPTION(CFLAGS, -pipe)
 | 
						|
        AC_MSG_CHECKING([whether Security framework is needed])
 | 
						|
	AC_COMPILE_IFELSE([
 | 
						|
	    AC_LANG_BOOL_COMPILE_TRY([
 | 
						|
@%:@include <AvailabilityMacros.h>
 | 
						|
enum {
 | 
						|
    least = MAC_OS_X_VERSION_10_7, /* just fail if undefined */
 | 
						|
    required = MAC_OS_X_VERSION_MIN_REQUIRED,
 | 
						|
    upper /* bigger than MIN_REQUIRED, or */
 | 
						|
@%:@ifdef MAC_OS_X_VERSION_10_10
 | 
						|
        = MAC_OS_X_VERSION_10_10
 | 
						|
@%:@endif
 | 
						|
};],
 | 
						|
	    [required >= least && required < upper])],
 | 
						|
	    [dnl
 | 
						|
		AC_MSG_RESULT(yes)
 | 
						|
		RUBY_APPEND_OPTION(XLDFLAGS, [-framework Security])
 | 
						|
		RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework Security])
 | 
						|
	    ],dnl
 | 
						|
	    [dnl
 | 
						|
		AC_MSG_RESULT(no)
 | 
						|
	    ]dnl
 | 
						|
	)
 | 
						|
	RUBY_APPEND_OPTION(XLDFLAGS, [-framework CoreFoundation])
 | 
						|
	RUBY_APPEND_OPTION(LIBRUBYARG_STATIC, [-framework CoreFoundation])
 | 
						|
	],
 | 
						|
    [osf*], [
 | 
						|
	AS_IF([test "$GCC" != "yes" ], [
 | 
						|
	  # compile something small: taint.c is fine for this.
 | 
						|
	  # the main point is the '-v' flag of 'cc'.
 | 
						|
	  AS_CASE(["`cc -v -I. -c main.c -o /tmp/main.o 2>&1`"],
 | 
						|
	  [*/gemc_cc*], [   # we have the new DEC GEM CC
 | 
						|
                        CFLAGS="$CFLAGS -oldc"
 | 
						|
                        ],
 | 
						|
          [            # we have the old MIPS CC
 | 
						|
                        ])
 | 
						|
	  # cleanup
 | 
						|
	  rm -f /tmp/main.o
 | 
						|
	  CFLAGS="$CFLAGS -std"
 | 
						|
	])
 | 
						|
	],
 | 
						|
    [cygwin*|msys*|mingw*], [
 | 
						|
	LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)'
 | 
						|
	AS_CASE(["$target_os"],
 | 
						|
	[cygwin*], [
 | 
						|
	    AS_IF([test x"$enable_shared" = xyes], [
 | 
						|
		LIBRUBY_SO='cyg$(RUBY_SO_NAME)'.dll
 | 
						|
		LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
 | 
						|
	    ])
 | 
						|
	    ],
 | 
						|
	[mingw*], [
 | 
						|
	    AS_IF([test x"$enable_shared" = xyes], [
 | 
						|
		LIBRUBY_SO='$(RUBY_SO_NAME)'.dll
 | 
						|
		LIBRUBY_DLDFLAGS="${LIBRUBY_DLDFLAGS}"' $(RUBYDEF)'
 | 
						|
	    ])
 | 
						|
	    EXPORT_PREFIX=' '
 | 
						|
	    EXTDLDFLAGS='$(DEFFILE)'
 | 
						|
	    AC_LIBOBJ([win32/win32])
 | 
						|
	    AC_LIBOBJ([win32/file])
 | 
						|
	    COMMON_LIBS=m
 | 
						|
#	    COMMON_MACROS="WIN32_LEAN_AND_MEAN="
 | 
						|
	    COMMON_HEADERS="winsock2.h windows.h"
 | 
						|
	    PLATFORM_DIR=win32
 | 
						|
	    ])
 | 
						|
	LIBRUBY_ALIASES=''
 | 
						|
	FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in
 | 
						|
	AS_IF([test x"$enable_shared" = xyes], [
 | 
						|
	    LIBRUBY='lib$(RUBY_SO_NAME).dll.a'
 | 
						|
	], [
 | 
						|
	    LIBRUBY_SO=dummy
 | 
						|
	    LIBRUBY='lib$(RUBY_SO_NAME).a'
 | 
						|
	    LIBRUBYARG='-l$(RUBY_SO_NAME)'
 | 
						|
	])
 | 
						|
	],
 | 
						|
    [wasi*], [
 | 
						|
        FIRSTMAKEFILE=GNUmakefile:wasm/GNUmakefile.in
 | 
						|
        AC_LIBOBJ([wasm/missing])
 | 
						|
        AC_LIBOBJ([wasm/runtime])
 | 
						|
        AC_LIBOBJ([wasm/fiber])
 | 
						|
        AC_LIBOBJ([wasm/machine])
 | 
						|
        AC_LIBOBJ([wasm/setjmp])
 | 
						|
        AC_LIBOBJ([wasm/machine_core])
 | 
						|
        AC_LIBOBJ([wasm/setjmp_core])
 | 
						|
        PLATFORM_DIR=wasm
 | 
						|
])
 | 
						|
 | 
						|
MINIOBJS="$MINIDLNOBJ"
 | 
						|
 | 
						|
AC_ARG_ENABLE(debug-env,
 | 
						|
       AS_HELP_STRING([--enable-debug-env], [enable RUBY_DEBUG environment variable]),
 | 
						|
       [AC_SUBST(ENABLE_DEBUG_ENV, yes)])
 | 
						|
 | 
						|
AS_CASE(["$FIRSTMAKEFILE"], [*GNUmakefile:*], [gnumake=yes], [
 | 
						|
    AC_MSG_CHECKING([if ${MAKE-make} is GNU make])
 | 
						|
    mkdir conftest.dir
 | 
						|
    echo "all:; @echo yes" > conftest.dir/GNUmakefile
 | 
						|
    echo "all:; @echo no" > conftest.dir/Makefile
 | 
						|
    gnumake=`(cd conftest.dir; ${MAKE-make})`
 | 
						|
    rm -fr conftest.dir
 | 
						|
    AS_CASE(["$gnumake"],
 | 
						|
    [*yes*], [
 | 
						|
	FIRSTMAKEFILE=GNUmakefile:template/GNUmakefile.in
 | 
						|
	gnumake=yes],
 | 
						|
    [
 | 
						|
	gnumake=no])
 | 
						|
    AC_MSG_RESULT($gnumake)
 | 
						|
])
 | 
						|
AS_IF([test "$gnumake" = yes], [ NULLCMD=: ], [
 | 
						|
    AC_MSG_CHECKING([for safe null command for ${MAKE-make}])
 | 
						|
    mkdir conftest.dir
 | 
						|
    NULLCMD=
 | 
						|
    for cmd in : true; do
 | 
						|
	echo 'A=1' > conftest.dir/Makefile
 | 
						|
	echo 'B=$(A:1=@'$cmd')' >> conftest.dir/Makefile
 | 
						|
	echo 'all:; $B 1 2 3 4 5 6 7 8 9' >> conftest.dir/Makefile
 | 
						|
	AS_IF([(cd conftest.dir; ${MAKE-make} >/dev/null 2>/dev/null)], [
 | 
						|
	    NULLCMD=$cmd
 | 
						|
	    break
 | 
						|
	])
 | 
						|
    done
 | 
						|
    rm -fr conftest.dir
 | 
						|
    AS_IF([test -z "$NULLCMD"], [
 | 
						|
	AC_MSG_ERROR(no candidate for safe null command)
 | 
						|
    ])
 | 
						|
    AC_MSG_RESULT($NULLCMD)
 | 
						|
])
 | 
						|
AC_SUBST(NULLCMD)
 | 
						|
 | 
						|
AS_IF([test "${universal_binary-no}" = yes ], [
 | 
						|
    AC_CACHE_CHECK([for architecture macros], rb_cv_architecture_macros, [
 | 
						|
    mv confdefs.h confdefs1.h
 | 
						|
    : > confdefs.h
 | 
						|
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@if defined __`echo ${universal_archnames} |
 | 
						|
    sed 's/=[^ ]*//g;s/ /__ || defined __/g'`__
 | 
						|
@%:@else
 | 
						|
@%:@error
 | 
						|
>>>>>><<<<<<
 | 
						|
@%:@endif]], [[]])],[
 | 
						|
    rb_cv_architecture_macros=yes
 | 
						|
    mv -f confdefs1.h confdefs.h
 | 
						|
], [
 | 
						|
    rb_cv_architecture_macros=no
 | 
						|
    archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
 | 
						|
    new_cflags=`echo "$CFLAGS" | sed "s|$archflagpat"'||'`
 | 
						|
    for archs in ${universal_archnames}; do
 | 
						|
	cpu=${archs@%:@*=}
 | 
						|
	archs=${archs%=*}
 | 
						|
	CFLAGS="$new_cflags -arch $archs"
 | 
						|
	archs="__${archs}__"
 | 
						|
	AC_MSG_CHECKING([for macro ${archs} on ${cpu}])
 | 
						|
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@ifndef ${archs}
 | 
						|
@%:@error
 | 
						|
@%:@endif]], [[]])],
 | 
						|
	[AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
 | 
						|
    done
 | 
						|
    mv -f confdefs1.h confdefs.h
 | 
						|
    AC_MSG_ERROR([failed])
 | 
						|
    ])])
 | 
						|
    AC_CACHE_CHECK(whether __ARCHITECTURE__ is available, rb_cv_architecture_available,
 | 
						|
	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>
 | 
						|
		const char arch[[]] = __ARCHITECTURE__;]], [[puts(arch);]])],
 | 
						|
		[rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))
 | 
						|
])
 | 
						|
 | 
						|
: ${MJIT_LDSHARED=`echo "$LDSHARED" | sed ['s|\$(LD)|'"${LD}"'|g;s|\$(CC)|$(MJIT_CC)|g']`}
 | 
						|
 | 
						|
MAINLIBS="$LIBS"
 | 
						|
LIBS=$ORIG_LIBS
 | 
						|
AS_IF([test -n "${LIBS}"], [
 | 
						|
    libspat=`echo "${LIBS}" | sed 's/[[][|.*$^]]/\\&/g;s/^  */ /;s/^  *$/ /'`
 | 
						|
    MAINFLAGS=`echo " $MAINLIBS " | sed "s|$libspat"'||;s/^ *//;s/ *$//'`
 | 
						|
])
 | 
						|
LIBRUBYARG_STATIC="${LIBRUBYARG_STATIC} \$(MAINLIBS)"
 | 
						|
CPPFLAGS="$CPPFLAGS "'$(DEFS)'
 | 
						|
test -z "$CPPFLAGS" || CPPFLAGS="$CPPFLAGS "; CPPFLAGS="$CPPFLAGS"'${cppflags}'
 | 
						|
AS_IF([test -n "${cflags+set}"], [
 | 
						|
    cflagspat=`eval echo '"'"${cflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^  */ /;s/^  *$/ /'`
 | 
						|
    CFLAGS=`echo " $CFLAGS " | sed "s|$cflagspat"'|${cflags}|;s/^ *//;s/ *$//'`
 | 
						|
])
 | 
						|
AS_IF([test -n "${cxxflags+set}"], [
 | 
						|
    cxxflagspat=`eval echo '"'"${cxxflags}"'"' | sed 's/[[][|.*]]/\\&/g;s/^  */ /;s/^  *$/ /'`
 | 
						|
    CXXFLAGS=`echo " $CXXFLAGS " | sed "s|$cxxflagspat"'|${cxxflags}|;s/^ *//;s/ *$//'`
 | 
						|
])
 | 
						|
AS_IF([test "${ARCH_FLAG}"], [
 | 
						|
    archflagpat=`eval echo '"'"${ARCH_FLAG}"'"' | sed 's/[[][|.*]]/\\&/g'`
 | 
						|
    CFLAGS=`echo "$CFLAGS" | sed "s| *$archflagpat"'||'`
 | 
						|
    CXXFLAGS=`echo "$CXXFLAGS" | sed "s| *$archflagpat"'||'`
 | 
						|
    LDFLAGS=`echo "$LDFLAGS" | sed "s| *$archflagpat"'||'`
 | 
						|
])
 | 
						|
rb_cv_warnflags=`echo "$rb_cv_warnflags" | sed 's/^ *//;s/ *$//'`
 | 
						|
warnflags="$rb_cv_warnflags"
 | 
						|
AC_SUBST(cppflags)dnl
 | 
						|
AC_SUBST(cflags, ["${orig_cflags:+$orig_cflags }"'${optflags} ${debugflags} ${warnflags}'])dnl
 | 
						|
AC_SUBST(cxxflags)dnl
 | 
						|
AC_SUBST(optflags)dnl
 | 
						|
AC_SUBST(debugflags)dnl
 | 
						|
AC_SUBST(warnflags)dnl
 | 
						|
AC_SUBST(strict_warnflags)dnl
 | 
						|
AC_SUBST(XCFLAGS)dnl
 | 
						|
AC_SUBST(XLDFLAGS)dnl
 | 
						|
AC_SUBST(EXTLDFLAGS)dnl
 | 
						|
AC_SUBST(EXTDLDFLAGS)dnl
 | 
						|
AC_SUBST(LIBRUBY_LDSHARED)
 | 
						|
AC_SUBST(LIBRUBY_DLDFLAGS)
 | 
						|
AC_SUBST(RUBY_INSTALL_NAME)
 | 
						|
AC_SUBST(rubyw_install_name)
 | 
						|
AC_SUBST(RUBYW_INSTALL_NAME)
 | 
						|
AC_SUBST(RUBY_SO_NAME)
 | 
						|
AC_SUBST(LIBRUBY_A)
 | 
						|
AC_SUBST(LIBRUBY_SO)
 | 
						|
AC_SUBST(LIBRUBY_SONAME)
 | 
						|
AC_SUBST(LIBRUBY_ALIASES)
 | 
						|
AC_SUBST(LIBRUBY)
 | 
						|
AC_SUBST(LIBRUBYARG)
 | 
						|
AC_SUBST(LIBRUBYARG_STATIC)
 | 
						|
AC_SUBST(LIBRUBYARG_SHARED)
 | 
						|
AC_SUBST(SOLIBS)
 | 
						|
AC_SUBST(DLDLIBS)
 | 
						|
AC_SUBST(DLDSHARED)
 | 
						|
AC_SUBST(ENABLE_SHARED)
 | 
						|
AC_SUBST(MAINLIBS)
 | 
						|
AC_SUBST(COMMON_LIBS)
 | 
						|
AC_SUBST(COMMON_MACROS)
 | 
						|
AC_SUBST(COMMON_HEADERS)
 | 
						|
AC_SUBST(EXPORT_PREFIX)
 | 
						|
AC_SUBST(SYMBOL_PREFIX)
 | 
						|
AC_SUBST(MINIOBJS)
 | 
						|
AC_SUBST(THREAD_MODEL)
 | 
						|
AC_SUBST(COROUTINE_TYPE, ${coroutine_type})
 | 
						|
AC_SUBST(PLATFORM_DIR)
 | 
						|
 | 
						|
firstmf=`echo $FIRSTMAKEFILE | sed 's/:.*//'`
 | 
						|
firsttmpl=`echo $FIRSTMAKEFILE | sed 's/.*://'`
 | 
						|
MAKEFILES="Makefile $firstmf"
 | 
						|
MAKEFILES="`echo $MAKEFILES`"
 | 
						|
AC_SUBST(MAKEFILES)
 | 
						|
 | 
						|
ri_prefix=
 | 
						|
test "$program_prefix" != NONE &&
 | 
						|
  ri_prefix=$program_prefix
 | 
						|
 | 
						|
ri_suffix=
 | 
						|
test "$program_suffix" != NONE &&
 | 
						|
  ri_suffix=$program_suffix
 | 
						|
 | 
						|
RUBY_INSTALL_NAME="${ri_prefix}"'$(RUBY_BASE_NAME)'"${ri_suffix}"
 | 
						|
AS_CASE(["$target_os"],
 | 
						|
  [cygwin*|msys*|mingw*], [
 | 
						|
    RUBYW_INSTALL_NAME="${ri_prefix}"'$(RUBYW_BASE_NAME)'"${ri_suffix}"
 | 
						|
    rubyw_install_name='$(RUBYW_INSTALL_NAME)'
 | 
						|
    ])
 | 
						|
 | 
						|
rubylibdir='${rubylibprefix}/${ruby_version}'
 | 
						|
rubyarchdir=${multiarch+'${rubyarchprefix}/${ruby_version}'}${multiarch-'${rubylibdir}/${arch}'}
 | 
						|
 | 
						|
rubyarchprefix=${multiarch+'${archlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${arch}'}
 | 
						|
AC_ARG_WITH(rubyarchprefix,
 | 
						|
	    AS_HELP_STRING([--with-rubyarchprefix=DIR],
 | 
						|
			   [prefix for architecture dependent ruby libraries [[RUBYLIBPREFIX/ARCH]]]),
 | 
						|
	    [rubyarchprefix="$withval"])
 | 
						|
AC_SUBST(rubyarchprefix)
 | 
						|
 | 
						|
rubysitearchprefix=${multiarch+'${sitearchlibdir}/${RUBY_BASE_NAME}'}${multiarch-'${rubylibprefix}/${sitearch}'}
 | 
						|
AC_ARG_WITH(rubysitearchprefix,
 | 
						|
	    AS_HELP_STRING([--with-rubysitearchprefix=DIR],
 | 
						|
			   [prefix for architecture dependent site libraries [[RUBYLIBPREFIX/SITEARCH]]]),
 | 
						|
	    [rubysitearchprefix="$withval"])
 | 
						|
AC_SUBST(rubysitearchprefix)
 | 
						|
 | 
						|
RI_BASE_NAME=`echo ${RUBY_BASE_NAME} | sed 's/ruby/ri/'`
 | 
						|
ridir='${datarootdir}/${RI_BASE_NAME}'
 | 
						|
AC_ARG_WITH(ridir,
 | 
						|
	    AS_HELP_STRING([--with-ridir=DIR], [ri documentation [[DATAROOTDIR/ri]]]),
 | 
						|
	    [ridir=$withval])
 | 
						|
AC_SUBST(ridir)
 | 
						|
AC_SUBST(RI_BASE_NAME)
 | 
						|
 | 
						|
AC_ARG_WITH(ruby-version,
 | 
						|
	    AS_HELP_STRING([--with-ruby-version=STR], [ruby version string for version specific directories [[full]] (full|minor|STR)]),
 | 
						|
            [ruby_version=$withval],
 | 
						|
            [ruby_version=full])
 | 
						|
unset RUBY_LIB_VERSION
 | 
						|
unset RUBY_LIB_VERSION_STYLE
 | 
						|
AS_CASE(["$ruby_version"],
 | 
						|
  [full],  [RUBY_LIB_VERSION_STYLE='3	/* full */'],
 | 
						|
  [minor], [RUBY_LIB_VERSION_STYLE='2	/* minor */'])
 | 
						|
AS_IF([test ${RUBY_LIB_VERSION_STYLE+set}], [
 | 
						|
    {
 | 
						|
    echo "#define RUBY_LIB_VERSION_STYLE $RUBY_LIB_VERSION_STYLE"
 | 
						|
    echo '@%:@include "confdefs.h"'
 | 
						|
    echo '#define STRINGIZE(x) x'
 | 
						|
    test -f revision.h -o -f "${srcdir}/revision.h" || echo '#define RUBY_REVISION 0'
 | 
						|
    echo '#include "version.h"'
 | 
						|
    echo 'ruby_version=RUBY_LIB_VERSION'
 | 
						|
    } > conftest.c
 | 
						|
    ruby_version="`$CPP -I. -I"${srcdir}" -I"${srcdir}/include" conftest.c | sed '/^ruby_version=/!d;s/ //g'`"
 | 
						|
    eval $ruby_version
 | 
						|
], [test -z "${ruby_version}"], [
 | 
						|
    AC_MSG_ERROR([No ruby version, No place for bundled libraries])
 | 
						|
], [
 | 
						|
    RUBY_LIB_VERSION="${ruby_version}"
 | 
						|
])
 | 
						|
AC_SUBST(RUBY_LIB_VERSION_STYLE)
 | 
						|
AC_SUBST(RUBY_LIB_VERSION)
 | 
						|
 | 
						|
AC_ARG_WITH(sitedir,
 | 
						|
	    AS_HELP_STRING([--with-sitedir=DIR], [site libraries in DIR [[RUBY_LIB_PREFIX/site_ruby]], "no" to disable site directory]),
 | 
						|
            [sitedir=$withval],
 | 
						|
            [sitedir='${rubylibprefix}/site_ruby'])
 | 
						|
sitelibdir='${sitedir}/${ruby_version}'
 | 
						|
 | 
						|
AC_ARG_WITH(sitearchdir,
 | 
						|
	    AS_HELP_STRING([--with-sitearchdir=DIR],
 | 
						|
			   [architecture dependent site libraries in DIR [[SITEDIR/SITEARCH]], "no" to disable site directory]),
 | 
						|
            [sitearchdir=$withval],
 | 
						|
            [sitearchdir=${multiarch+'${rubysitearchprefix}/site_ruby/${ruby_version}'}${multiarch-'${sitelibdir}/${sitearch}'}])
 | 
						|
 | 
						|
AC_ARG_WITH(vendordir,
 | 
						|
	    AS_HELP_STRING([--with-vendordir=DIR], [vendor libraries in DIR [[RUBY_LIB_PREFIX/vendor_ruby]], "no" to disable vendor directory]),
 | 
						|
            [vendordir=$withval],
 | 
						|
            [vendordir='${rubylibprefix}/vendor_ruby'])
 | 
						|
vendorlibdir='${vendordir}/${ruby_version}'
 | 
						|
 | 
						|
AC_ARG_WITH(vendorarchdir,
 | 
						|
	    AS_HELP_STRING([--with-vendorarchdir=DIR],
 | 
						|
			   [architecture dependent vendor libraries in DIR [[VENDORDIR/SITEARCH]], "no" to disable vendor directory]),
 | 
						|
            [vendorarchdir=$withval],
 | 
						|
            [vendorarchdir=${multiarch+'${rubysitearchprefix}/vendor_ruby/${ruby_version}'}${multiarch-'${vendorlibdir}/${sitearch}'}])
 | 
						|
 | 
						|
AS_IF([test "${LOAD_RELATIVE+set}"], [
 | 
						|
    AC_DEFINE_UNQUOTED(LOAD_RELATIVE, $LOAD_RELATIVE)
 | 
						|
    RUBY_EXEC_PREFIX=''
 | 
						|
])
 | 
						|
 | 
						|
AC_SUBST(RUBY_EXEC_PREFIX)
 | 
						|
 | 
						|
AC_SUBST(libdirname, ${multiarch+arch}libdir)
 | 
						|
AC_SUBST(archlibdir)dnl
 | 
						|
AC_SUBST(sitearchlibdir)dnl
 | 
						|
AC_SUBST(archincludedir)dnl
 | 
						|
AC_SUBST(sitearchincludedir)dnl
 | 
						|
AC_SUBST(arch)dnl
 | 
						|
AC_SUBST(sitearch)dnl
 | 
						|
AC_SUBST(ruby_version)dnl
 | 
						|
AC_SUBST(rubylibdir)dnl
 | 
						|
AC_SUBST(rubyarchdir)dnl
 | 
						|
AC_SUBST(sitedir)dnl
 | 
						|
AC_SUBST(sitelibdir)dnl
 | 
						|
AC_SUBST(sitearchdir)dnl
 | 
						|
AC_SUBST(vendordir)dnl
 | 
						|
AC_SUBST(vendorlibdir)dnl
 | 
						|
AC_SUBST(vendorarchdir)dnl
 | 
						|
 | 
						|
AC_SUBST(CONFIGURE, "`echo $0 | sed 's|.*/||'`")dnl
 | 
						|
AC_SUBST(configure_args, "`echo "${ac_configure_args}" | sed 's/\\$/$$/g'`")dnl
 | 
						|
 | 
						|
AS_IF([test "${universal_binary-no}" = yes ], [
 | 
						|
    arch="universal-${target_os}"
 | 
						|
    AS_IF([test "${rb_cv_architecture_available}" = yes], [
 | 
						|
	AC_DEFINE_UNQUOTED(RUBY_PLATFORM_CPU, __ARCHITECTURE__)
 | 
						|
    ], [
 | 
						|
	for archs in ${universal_archnames}; do
 | 
						|
	    cpu=`echo $archs | sed 's/.*=//'`
 | 
						|
	    archs=`echo $archs | sed 's/=.*//'`
 | 
						|
	    RUBY_DEFINE_IF([defined __${archs}__ &&! defined RUBY_PLATFORM_CPU], RUBY_PLATFORM_CPU, ["${cpu}"])
 | 
						|
	done
 | 
						|
    ])
 | 
						|
    ints='long int short'
 | 
						|
    test "$ac_cv_type_long_long" = yes && ints="'long long' $ints"
 | 
						|
    AC_SUBST(UNIVERSAL_ARCHNAMES, "${universal_archnames}")
 | 
						|
    AC_SUBST(UNIVERSAL_INTS, "${ints}")
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_PLATFORM_OS, "${target_os}")
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_ARCH, "universal-" RUBY_PLATFORM_OS)
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "universal." RUBY_PLATFORM_CPU "-" RUBY_PLATFORM_OS)
 | 
						|
], [
 | 
						|
    AS_IF([test "${target_os}-${rb_cv_msvcrt}" = "mingw32-ucrt" ], [
 | 
						|
        arch="${target_cpu}-mingw-ucrt"
 | 
						|
    ], [
 | 
						|
        arch="${target_cpu}-${target_os}"
 | 
						|
    ])
 | 
						|
    AC_DEFINE_UNQUOTED(RUBY_PLATFORM, "$arch")
 | 
						|
])
 | 
						|
 | 
						|
unset sitearch
 | 
						|
AS_CASE(["$target_os"],[mingw*],[sitearch="$target_cpu-$rb_cv_msvcrt"])
 | 
						|
: ${sitearch='${arch}'}
 | 
						|
 | 
						|
AC_ARG_WITH(search-path,
 | 
						|
		AS_HELP_STRING([--with-search-path=DIR], [specify the additional search path]),
 | 
						|
		[search_path=$withval])
 | 
						|
AS_IF([test "$search_path" != ""], [
 | 
						|
    AC_SUBST(RUBY_SEARCH_PATH, $search_path)
 | 
						|
])
 | 
						|
 | 
						|
AC_ARG_WITH(rubyhdrdir,
 | 
						|
	    AS_HELP_STRING([--with-rubyhdrdir=DIR], [core headers in DIR [[INCLUDEDIR/RUBY_BASE_NAME-RUBY_VERSION]]]),
 | 
						|
	    [rubyhdrdir=$withval],
 | 
						|
	    [rubyhdrdir='${includedir}/${RUBY_VERSION_NAME}'])
 | 
						|
 | 
						|
AC_ARG_WITH(rubyarchhdrdir,
 | 
						|
	    AS_HELP_STRING([--with-rubyarchhdrdir=DIR],
 | 
						|
			   [architecture dependent core headers in DIR [[$(rubyhdrdir)/$(arch)]]]),
 | 
						|
	    [rubyarchhdrdir=$withval],
 | 
						|
	    [rubyarchhdrdir=${multiarch+'${archincludedir}/${RUBY_VERSION_NAME}'}${multiarch-'${rubyhdrdir}/${arch}'}])
 | 
						|
 | 
						|
AC_ARG_WITH(sitehdrdir,
 | 
						|
	    AS_HELP_STRING([--with-sitehdrdir=DIR], [core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
 | 
						|
	    [sitehdrdir=$withval],
 | 
						|
	    [sitehdrdir='${rubyhdrdir}/site_ruby'])
 | 
						|
 | 
						|
AC_ARG_WITH(sitearchhdrdir,
 | 
						|
	    AS_HELP_STRING([--with-sitearchhdrdir=DIR],
 | 
						|
			   [architecture dependent core site headers in DIR [[RUBYHDRDIR/site_ruby]]]),
 | 
						|
	    [sitearchhdrdir=$withval],
 | 
						|
	    [sitearchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/site_ruby'}${multiarch-'${sitehdrdir}/${sitearch}'}])
 | 
						|
 | 
						|
AC_ARG_WITH(vendorhdrdir,
 | 
						|
	    AS_HELP_STRING([--with-vendorhdrdir=DIR], [core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
 | 
						|
	    [vendorhdrdir=$withval],
 | 
						|
	    [vendorhdrdir='${rubyhdrdir}/vendor_ruby'])
 | 
						|
 | 
						|
AC_ARG_WITH(vendorarchhdrdir,
 | 
						|
	    AS_HELP_STRING([--with-vendorarchhdrdir=DIR],
 | 
						|
			   [architecture dependent core vendor headers in DIR [[RUBYHDRDIR/vendor_ruby]]]),
 | 
						|
	    [vendorarchhdrdir=$withval],
 | 
						|
	    [vendorarchhdrdir=${multiarch+'${sitearchincludedir}/${RUBY_VERSION_NAME}/vendor_ruby'}${multiarch-'${vendorhdrdir}/${sitearch}'}])
 | 
						|
 | 
						|
AC_SUBST(rubyhdrdir)dnl
 | 
						|
AC_SUBST(sitehdrdir)dnl
 | 
						|
AC_SUBST(vendorhdrdir)dnl
 | 
						|
AC_SUBST(rubyarchhdrdir)dnl
 | 
						|
AC_SUBST(sitearchhdrdir)dnl
 | 
						|
AC_SUBST(vendorarchhdrdir)dnl
 | 
						|
 | 
						|
AC_ARG_WITH(mantype,
 | 
						|
	AS_HELP_STRING([--with-mantype=TYPE], [specify man page type; TYPE is one of man and doc]),
 | 
						|
		[
 | 
						|
			AS_CASE(["$withval"],
 | 
						|
			[man|man.gz|man.bz2|doc|doc.gz|doc.bz2], [MANTYPE=$withval],
 | 
						|
			[AC_MSG_ERROR(invalid man type: $withval)])
 | 
						|
		])
 | 
						|
AS_IF([test -z "$MANTYPE"], [
 | 
						|
	dnl Looks for nroff with -mdoc support.
 | 
						|
	AC_CACHE_VAL([ac_cv_path_NROFF], [
 | 
						|
		AC_PATH_PROGS_FEATURE_CHECK([NROFF],
 | 
						|
			[nroff awf mandoc],
 | 
						|
			[$ac_path_NROFF -mdoc ${srcdir}/man/ruby.1 \
 | 
						|
				>/dev/null 2>&1 &&
 | 
						|
				ac_cv_path_NROFF=$ac_path_NROFF \
 | 
						|
				ac_path_NROFF_found=:],
 | 
						|
			[], ["/usr/bin:/usr/ucb"]
 | 
						|
		)
 | 
						|
	])
 | 
						|
	AS_IF([test -n "$ac_cv_path_NROFF"], [
 | 
						|
		MANTYPE=doc
 | 
						|
	], [
 | 
						|
		MANTYPE=man
 | 
						|
	])
 | 
						|
])
 | 
						|
AC_SUBST(MANTYPE)
 | 
						|
 | 
						|
MKMF_VERBOSE=0
 | 
						|
AC_ARG_ENABLE(mkmf-verbose,
 | 
						|
    AS_HELP_STRING([--enable-mkmf-verbose], [enable verbose in mkmf]),
 | 
						|
    [MKMF_VERBOSE=1],
 | 
						|
    [MKMF_VERBOSE=0])
 | 
						|
AC_SUBST(MKMF_VERBOSE)
 | 
						|
 | 
						|
AC_ARG_ENABLE(rubygems,
 | 
						|
	AS_HELP_STRING([--disable-rubygems], [disable rubygems by default]),
 | 
						|
	[enable_rubygems="$enableval"], [enable_rubygems=yes])
 | 
						|
AS_IF([test x"$enable_rubygems" = xno], [
 | 
						|
    USE_RUBYGEMS=no
 | 
						|
], [
 | 
						|
    USE_RUBYGEMS=yes
 | 
						|
])
 | 
						|
AC_SUBST(USE_RUBYGEMS)
 | 
						|
 | 
						|
arch_hdrdir="${EXTOUT}/include/${arch}/ruby"
 | 
						|
AS_MKDIR_P("${arch_hdrdir}")
 | 
						|
config_h="${arch_hdrdir}/config.h"
 | 
						|
guard=INCLUDE_RUBY_CONFIG_H
 | 
						|
{
 | 
						|
  echo "#ifndef $guard"
 | 
						|
  echo "#define $guard 1"
 | 
						|
  grep -v "^#define PACKAGE_" confdefs.h
 | 
						|
  echo "#endif /* $guard */"
 | 
						|
} | tr -d '\015' |
 | 
						|
(
 | 
						|
  AS_IF([test "x$CONFIGURE_TTY" = xyes], [color=--color], [color=])
 | 
						|
  exec ${SHELL} ${tooldir}/ifchange $color "${config_h}" -
 | 
						|
) >&AS_MESSAGE_FD || AC_MSG_ERROR([failed to create ${config_h}])
 | 
						|
tr -d '\015' < largefile.h > confdefs.h
 | 
						|
rm largefile.h
 | 
						|
 | 
						|
BUILTIN_ENCS=["`sed -n -e '/^BUILTIN_ENCS[ 	]*=/{' \
 | 
						|
	-e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \
 | 
						|
	-e '}' "${srcdir}/enc/Makefile.in"`"]
 | 
						|
BUILTIN_ENCOBJS=
 | 
						|
for e in $BUILTIN_ENCS; do BUILTIN_ENCOBJS="$BUILTIN_ENCOBJS "`echo $e | sed 's/\.c$/.$(OBJEXT)/'`; done
 | 
						|
AC_SUBST(BUILTIN_ENCOBJS)
 | 
						|
 | 
						|
BUILTIN_TRANSES=["`sed -n -e '/^BUILTIN_TRANSES[ 	]*=/{' \
 | 
						|
	-e s/// -e :l -e '/\\\\$/N' -e 's/\\\\\\n/ /' -e 't l' -e p \
 | 
						|
	-e '}' "${srcdir}/enc/Makefile.in"`"]
 | 
						|
BUILTIN_TRANSSRCS=
 | 
						|
BUILTIN_TRANSOBJS=
 | 
						|
for e in $BUILTIN_TRANSES; do
 | 
						|
  BUILTIN_TRANSSRCS="$BUILTIN_TRANSSRCS "`echo $e | sed 's/\.trans$/.c/'`
 | 
						|
  BUILTIN_TRANSOBJS="$BUILTIN_TRANSOBJS "`echo $e | sed 's/\.trans$/.$(OBJEXT)/'`
 | 
						|
done
 | 
						|
AC_SUBST(BUILTIN_TRANSSRCS)
 | 
						|
AC_SUBST(BUILTIN_TRANSOBJS)
 | 
						|
 | 
						|
PACKAGE=$RUBY_BASE_NAME
 | 
						|
AC_SUBST(PACKAGE)
 | 
						|
AS_MESSAGE([$PACKAGE library version = $ruby_version])
 | 
						|
 | 
						|
AS_IF([test x"$CC_WRAPPER" != x], [
 | 
						|
    CC='$(CC_WRAPPER) '"${CC@%:@$CC_WRAPPER }"
 | 
						|
    CPP='$(CC_WRAPPER) '"${CPP@%:@$CC_WRAPPER }"
 | 
						|
    XCC_WRAPPER="$CC_WRAPPER"
 | 
						|
])
 | 
						|
AC_SUBST(CC_WRAPPER, '')
 | 
						|
AC_SUBST(XCC_WRAPPER)
 | 
						|
 | 
						|
AS_CASE([" $CPP "], [*" $CC "*], [CPP=`echo " $CPP " | sed "s| $CC |"' $(CC) |;s/^ *//;s/  *$//'`])
 | 
						|
 | 
						|
AS_IF([test x"$firstmf" != x], [
 | 
						|
    AC_CONFIG_FILES($firstmf:$firsttmpl, [], [firstmf="$firstmf" firsttmpl="$firsttmpl"])
 | 
						|
])
 | 
						|
AC_CONFIG_FILES(Makefile:template/Makefile.in, [
 | 
						|
    tmpmk=confmk$$.tmp
 | 
						|
    {
 | 
						|
	AS_IF([test ${VCS+set}], [
 | 
						|
	    :
 | 
						|
	], [git_dir=`$GIT --work-tree="$srcdir" --git-dir="$srcdir/.git" rev-parse --git-dir 2>/dev/null`], [
 | 
						|
	    VCS='$(GIT)'
 | 
						|
	], [
 | 
						|
	    VCS='echo cannot'
 | 
						|
	])
 | 
						|
	AS_CASE("$VCS",
 | 
						|
		['$(GIT)'|git], [VCSUP='$(VCS) pull --rebase $(GITPULLOPTIONS)'],
 | 
						|
		[VCSUP='$(VCS)'])
 | 
						|
	sed -n \
 | 
						|
	    -e '[/^@%:@define \(RUBY_RELEASE_[A-Z]*\) \([0-9][0-9]*\)/]{' \
 | 
						|
	    -e   's//\1 = \2/' \
 | 
						|
	    -e   '[s/ \([0-9]\)$/ 0\1/]' \
 | 
						|
	    -e   p \
 | 
						|
	    -e '}' "$srcdir/version.h"
 | 
						|
	sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
 | 
						|
	echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
 | 
						|
	AS_IF([test "$gnumake" != yes], [
 | 
						|
	    echo ['$(MKFILES): $(srcdir)/common.mk']
 | 
						|
	    sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk
 | 
						|
            AS_IF([test "$YJIT_SUPPORT" = yes], [
 | 
						|
                cat ${srcdir}/yjit/not_gmake.mk
 | 
						|
                echo ['$(MKFILES): ${srcdir}/yjit/not_gmake.mk']
 | 
						|
            ])
 | 
						|
	], [
 | 
						|
	    echo 'distclean-local::; @$(RM) GNUmakefile uncommon.mk'
 | 
						|
	])
 | 
						|
    } > $tmpmk && AS_IF([! grep '^ruby:' $tmpmk > /dev/null], [
 | 
						|
	AS_IF([test "${gnumake}" = yes], [
 | 
						|
	    tmpgmk=confgmk$$.tmp
 | 
						|
	    {
 | 
						|
		echo "include $tmpmk"
 | 
						|
		echo "-include uncommon.mk"
 | 
						|
	    } > $tmpgmk
 | 
						|
	], [
 | 
						|
	    tmpgmk=$tmpmk
 | 
						|
	]) &&
 | 
						|
	test -z "`${MAKE-make} -f $tmpgmk info-program | grep '^PROGRAM=ruby$'`" &&
 | 
						|
	echo 'ruby: $(PROGRAM);' >> $tmpmk
 | 
						|
	test "$tmpmk" = "$tmpgmk" || rm -f "$tmpgmk"
 | 
						|
    ]) && mv -f $tmpmk Makefile],
 | 
						|
[EXEEXT='$EXEEXT' MAKE='${MAKE-make}' gnumake='$gnumake' GIT='$GIT' YJIT_SUPPORT='$YJIT_SUPPORT'])
 | 
						|
 | 
						|
AC_ARG_WITH([ruby-pc],
 | 
						|
	    AS_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),
 | 
						|
	    [ruby_pc="$withval"],
 | 
						|
	    [ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc"])
 | 
						|
AC_SUBST(ruby_pc)
 | 
						|
AC_SUBST(exec, [exec])
 | 
						|
 | 
						|
AC_ARG_WITH(destdir,
 | 
						|
	    AS_HELP_STRING([--with-destdir=DESTDIR], [specify default directory to install]),
 | 
						|
	    [DESTDIR="$withval"])
 | 
						|
AC_SUBST(DESTDIR)
 | 
						|
 | 
						|
AC_OUTPUT
 | 
						|
}
 | 
						|
}
 | 
						|
 | 
						|
AS_IF([test "$silent" = yes], [], [
 | 
						|
AS_IF([${FOLD+:} false], [], [
 | 
						|
AS_IF([test "`echo abcdefg hijklmno | fold -s -w10 | sed 1d`" = hijklmno], [FOLD="fold"], [FOLD=])
 | 
						|
])
 | 
						|
fold_width=`expr $COLUMNS - 30 2>/dev/null` || fold_width=50
 | 
						|
AS_REQUIRE_SHELL_FN([config_summary],
 | 
						|
    [AS_FUNCTION_DESCRIBE([config_summary], [NAME, VAL], [configuration summary])],
 | 
						|
    [AS_IF([test -z "$2"], [], [
 | 
						|
	AS_ECHO_N(["   * $1:                     "]) | dd bs=1 count=26 2>/dev/null
 | 
						|
	AS_IF([test "$FOLD"], [
 | 
						|
	    echo "$2" | fold -s -w$fold_width |
 | 
						|
	    sed '1!s/^/                          /;$!s/$/\\/'
 | 
						|
	], [echo "$2"])
 | 
						|
    ])]
 | 
						|
)
 | 
						|
 | 
						|
AS_IF([test $install_doc = yes],
 | 
						|
    [DOCTARGETS=`echo " $RDOCTARGET $CAPITARGET " | sed 's/ nodoc //g;s/^ *//;s/ *$//'`],
 | 
						|
    [DOCTARGETS=no])
 | 
						|
echo "---"
 | 
						|
echo "Configuration summary for $RUBY_BASE_NAME version $MAJOR.$MINOR.$TEENY"
 | 
						|
echo ""
 | 
						|
config_summary "Installation prefix" "$prefix"
 | 
						|
config_summary "exec prefix"         "$exec_prefix"
 | 
						|
config_summary "arch"                "$arch"
 | 
						|
config_summary "site arch"           "$sitearch"
 | 
						|
config_summary "RUBY_BASE_NAME"      "$RUBY_BASE_NAME"
 | 
						|
config_summary "enable shared"       "$enable_shared"
 | 
						|
config_summary "ruby lib prefix"     "$rubylibprefix"
 | 
						|
config_summary "site libraries path" "$rubysitearchprefix"
 | 
						|
config_summary "vendor path"         "$vendordir"
 | 
						|
config_summary "target OS"           "$target_os"
 | 
						|
config_summary "compiler"            "$CC"
 | 
						|
config_summary "with thread"         "$THREAD_MODEL"
 | 
						|
config_summary "with coroutine"      "$coroutine_type"
 | 
						|
config_summary "enable shared libs"  "$ENABLE_SHARED"
 | 
						|
config_summary "dynamic library ext" "$DLEXT"
 | 
						|
config_summary "CFLAGS"              "$cflags"
 | 
						|
config_summary "CPPFLAGS"            "$cppflags"
 | 
						|
config_summary "LDFLAGS"             "$LDFLAGS"
 | 
						|
config_summary "DLDFLAGS"            "$DLDFLAGS"
 | 
						|
config_summary "optflags"            "$optflags"
 | 
						|
config_summary "debugflags"          "$debugflags"
 | 
						|
config_summary "warnflags"           "$warnflags"
 | 
						|
config_summary "strip command"       "$STRIP"
 | 
						|
config_summary "install doc"         "$DOCTARGETS"
 | 
						|
config_summary "MJIT support"        "$MJIT_SUPPORT"
 | 
						|
config_summary "YJIT support"        "$YJIT_SUPPORT"
 | 
						|
config_summary "man page type"       "$MANTYPE"
 | 
						|
config_summary "search path"         "$search_path"
 | 
						|
config_summary "static-linked-ext"   ${EXTSTATIC:+"yes"}
 | 
						|
config_summary "BASERUBY -v"         "$BASERUBY_VERSION"
 | 
						|
echo ""
 | 
						|
echo "---"
 | 
						|
])
 |