Blob Blame History Raw
diff --git a/configure.ac b/configure.ac
index 826a688871..af170efecd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,5 +1,5 @@
 dnl Process this file with autoconf to produce a configure script.
-AC_INIT
+AC_INIT()
 {
 AC_CONFIG_AUX_DIR(tool)
 AC_CONFIG_MACRO_DIRS(tool/m4)
@@ -150,9 +150,6 @@ AC_ARG_ENABLE(load-relative,
 
 AC_ARG_PROGRAM
 
-# checks for UNIX variants that set C preprocessor variables
-AC_USE_SYSTEM_EXTENSIONS
-
 dnl Checks for programs.
 
 cflagspat=
@@ -180,14 +177,12 @@ AS_CASE(["$host_os:$build_os"],
     # 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_IF([! $CC -E -xc - <<SRC >/dev/null], [
+	@%:@if defined __APPLE_CC__ && defined __clang_major__ && __clang_major__ < 3
+	@%:@error premature clang
+	@%:@endif
+SRC
+	AC_MSG_ERROR([clang version 3.0 or later is required])
     ])],
 [openbsd*:openbsd*], [
     AC_CHECK_TOOLS(CC, [cc])
@@ -196,9 +191,7 @@ AS_IF([test x"${build}" != x"${host}"], [
   AC_CHECK_TOOL(CC, gcc)
 ])
 
-dnl Seems necessarily in order to add -std=gnu99 option for gcc 4.9.
-m4_version_prereq([2.70], [], [AC_PROG_CC_C99])
-
+AC_PROG_CC_C99
 AS_CASE([$CC],
 [gcc-*], [
     gcc_prefix=gcc- gcc_suffix=`echo "$CC" | sed 's/^gcc//'`
@@ -230,12 +223,12 @@ test -z "$CXX" || ac_cv_prog_CXX="$CXX"
 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>
+    AC_TRY_CPP([@%:@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
-	]])],
+	],
 	[macosx_min_required=yes],
 	[AC_MSG_RESULT(no)
 	AC_MSG_ERROR([Unsupported OS X version is required])])
@@ -366,8 +359,8 @@ 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;]])],
+	AC_TRY_LINK([@%:@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;}'`],
@@ -410,6 +403,9 @@ AC_CHECK_PROGS(DOXYGEN, doxygen)
 AC_CHECK_PROG(PKG_CONFIG, pkg-config, [pkg-config], [], [],
     [`"$as_dir/$ac_word$ac_exec_ext" --print-errors --version > /dev/null 2>&1 || echo "$as_dir/$ac_word$ac_exec_ext"`])
 
+# checks for UNIX variants that set C preprocessor variables
+AC_USE_SYSTEM_EXTENSIONS
+
 AC_SUBST(RM, ['rm -f'])
 AC_SUBST(CP, ['cp'])
 RMDIRS='$(top_srcdir)/tool/rmdirs'
@@ -445,7 +441,7 @@ AC_SUBST(CHDIR)
 : "compiler section" && {
 RUBY_WERROR_FLAG([
     AC_MSG_CHECKING([whether CFLAGS is valid])
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+    AC_TRY_COMPILE([], [],
 	[AC_MSG_RESULT(yes)],
 	[
 	AC_MSG_RESULT(no)
@@ -461,7 +457,7 @@ RUBY_WERROR_FLAG([
 	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_TRY_LINK([], [],
 	[AC_MSG_RESULT(yes)],
 	[
 	cd .. && rm -fr tmp.$$.try_link
@@ -643,13 +639,13 @@ AS_IF([test "$GCC" = yes], [
 	  ], [
 	    CFLAGS="$CFLAGS -Werror -Wuninitialized"
 	  ])
-	  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>
+	  AC_TRY_COMPILE([@%:@include <math.h>
 	    int foo(double x)
 	    {
 	      int exp;
 	      frexp(x, &exp);
 	      return exp;
-	    }]], [[if (foo(0.0)) return 1;]])],
+	    }], [if (foo(0.0)) return 1;],
 	    [rb_cv_mingw64_broken_frexp_modf=no],
 	    [rb_cv_mingw64_broken_frexp_modf=yes])
 	  CFLAGS="$save_CFLAGS"
@@ -739,13 +735,13 @@ AS_IF([test "$GCC" = yes], [
 
 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);]])],
+	AC_TRY_LINK([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);]])],
+	    AC_TRY_LINK([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"
@@ -772,7 +768,7 @@ test -z "${ac_env_CXXFLAGS_set}" -a -n "${cxxflags+set}" && eval CXXFLAGS="\"$cx
 
 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; }); ]])],
+  [AC_TRY_COMPILE([],[ __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], [
@@ -793,12 +789,12 @@ AS_CASE(["$target_os"],
 [freebsd*], [
   AC_CACHE_CHECK([whether pthread should be enabled by default],
     rb_cv_enable_pthread_default,
-    [AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
+    [AC_TRY_CPP([
 #include <osreldate.h>
 #if __FreeBSD_version < 502102
 #error pthread should be disabled on this platform
 #endif
-      ]])],
+      ],
       rb_cv_enable_pthread_default=yes,
       rb_cv_enable_pthread_default=no)])
   enable_pthread=$rb_cv_enable_pthread_default
@@ -826,8 +822,8 @@ AS_CASE(["$target_os"],
 		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;]])],
+			AC_TRY_COMPILE([@%:@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], [
@@ -854,7 +850,7 @@ AS_CASE(["$target_os"],
 		])
 		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([[
+		    [AC_TRY_RUN([
 #include <stdio.h>
 #include <unistd.h>
 #include <string.h>
@@ -891,7 +887,7 @@ main()
     }
     return 0;
 }
-]])],
+],
 		    rb_cv_broken_crypt=no,
 		    rb_cv_broken_crypt=yes,
 		    rb_cv_broken_crypt=yes)])
@@ -920,11 +916,11 @@ main()
 [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>
+		AC_TRY_COMPILE([#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], [
@@ -934,13 +930,13 @@ main()
 		    AS_IF([test x"$define_xopen_source" != x], [
 		      break
 		    ])
-		    RUBY_WERROR_FLAG([AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+		    RUBY_WERROR_FLAG([AC_TRY_COMPILE([
 			#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
@@ -1234,8 +1230,8 @@ AC_CACHE_CHECK(packed struct attribute, rb_cv_packed_struct,
 	"__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; });]], [[]])],
+	AC_TRY_COMPILE([@%:@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], [
@@ -1275,7 +1271,7 @@ RUBY_REPLACE_TYPE(clockid_t, [], CLOCKID, [@%:@ifdef HAVE_TIME_H
 @%:@endif])
 
 AC_CACHE_CHECK(for prototypes, rb_cv_have_prototypes,
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[int foo(int x) { return 0; }]], [[return foo(10);]])],
+  [AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
 	rb_cv_have_prototypes=yes,
 	rb_cv_have_prototypes=no)])
 AS_IF([test "$rb_cv_have_prototypes" = yes], [
@@ -1283,8 +1279,8 @@ AS_IF([test "$rb_cv_have_prototypes" = yes], [
 ])
 
 AC_CACHE_CHECK(token paste string, rb_cv_tokenpaste,
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@define paste(a,b) a@%:@@%:@b]],
-		  [[int xy = 1; return paste(x,y);]])],
+  [AC_TRY_COMPILE([@%:@define paste(a,b) a@%:@@%:@b],
+		  [int xy = 1; return paste(x,y);],
 		  rb_cv_tokenpaste=ansi,
 		  rb_cv_tokenpaste=knr)])
 AS_IF([test "$rb_cv_tokenpaste" = ansi], [
@@ -1329,7 +1325,7 @@ AS_IF([test "$rb_cv_string_literal_concatenation" = no], [
 ])
 
 AC_CACHE_CHECK(for variable length prototypes and stdarg.h, rb_cv_stdarg,
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+  [AC_TRY_COMPILE([
 #include <stdarg.h>
 int foo(int x, ...) {
 	va_list va;
@@ -1339,7 +1335,7 @@ int foo(int x, ...) {
 	va_arg(va, double);
 	return 0;
 }
-]], [[return foo(10, "", 3.14);]])],
+], [return foo(10, "", 3.14);],
 	rb_cv_stdarg=yes,
 	rb_cv_stdarg=no)])
 AS_IF([test "$rb_cv_stdarg" = yes], [
@@ -1347,10 +1343,10 @@ AS_IF([test "$rb_cv_stdarg" = yes], [
 ])
 
 AC_CACHE_CHECK(for variable length macro, rb_cv_va_args_macro,
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+  [AC_TRY_COMPILE([
 int foo(int x, ...);
 @%:@define FOO(a, ...) foo(a, @%:@@%:@__VA_ARGS__)
-]], [[FOO(1);FOO(1,2);FOO(1,2,3);]])],
+], [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], [
@@ -1371,9 +1367,9 @@ do
     # C11 _Alignas and GCC __attribute__((__aligned__)) behave
     # slightly differently.  What we want is GCC's.  Check that
     # here by something C11 does not allow (`struct ALIGNAS ...`)
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+    AC_TRY_COMPILE(
 	[@%:@define ALIGNAS(x) $attr
-	struct ALIGNAS(128) conftest_tag { int foo; } foo; ]], [[]])],
+	struct ALIGNAS(128) conftest_tag { int foo; } foo; ], [],
         [rb_cv_have_alignas="$attr"; break], [])
 done
 ])])
@@ -1391,10 +1387,10 @@ for expr in \
     "__alignof__" \
 ;
 do
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+    AC_TRY_COMPILE([
     @%:@ifdef HAVE_STDALIGN_H
     @%:@include <stdalign.h>
-    @%:@endif]],[[return (int)$expr(int);]])],
+    @%:@endif],[return (int)$expr(int);],
         [rb_cv_have_alignof="$expr"; break], [])
 done
 ])])
@@ -1448,8 +1444,8 @@ 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()]])],
+	    AC_TRY_LINK([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], [
@@ -1461,14 +1457,14 @@ AS_IF([test "$GCC" = yes], [
     ])
 
     AC_CACHE_CHECK([for __atomic builtins], [rb_cv_gcc_atomic_builtins], [
-	AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
-		    [[
+	AC_TRY_LINK([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], [
@@ -1476,15 +1472,15 @@ AS_IF([test "$GCC" = yes], [
     ])
 
     AC_CACHE_CHECK([for __sync builtins], [rb_cv_gcc_sync_builtins], [
-	AC_LINK_IFELSE([AC_LANG_PROGRAM([[unsigned int atomic_var;]],
-		    [[
+	AC_TRY_LINK([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], [
@@ -1493,8 +1489,8 @@ AS_IF([test "$GCC" = yes], [
 
     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();]])],
+    [AC_TRY_LINK([volatile int zero;],
+	[if (zero) __builtin_unreachable();],
 	[rb_cv_func___builtin_unreachable=yes],
 	[rb_cv_func___builtin_unreachable=no])
     ])
@@ -1508,8 +1504,8 @@ 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);]], [[]])],
+  AC_TRY_COMPILE([@%:@define RUBY_FUNC_EXPORTED $mac extern
+    RUBY_FUNC_EXPORTED void conftest_attribute_check(void);], [],
     [rb_cv_func_exported="$mac"; break])
 done
 ])])
@@ -1532,18 +1528,15 @@ AC_SUBST(MATHN, $mathn)
 
 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
-      ])])]
+    [rb_cv_function_name_string=no
+    RUBY_WERROR_FLAG([
+	for func in __func__ __FUNCTION__; do
+	    AC_TRY_LINK([@%:@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])
@@ -1605,9 +1598,9 @@ RUBY_CHECK_SIZEOF(size_t, [int long void*], [], [@%:@include <sys/types.h>])
 RUBY_CHECK_SIZEOF(ptrdiff_t, size_t, [], [@%:@include <stddef.h>])
 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])
+AC_STRUCT_ST_BLKSIZE
+AC_STRUCT_ST_BLOCKS
+AC_STRUCT_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>])
@@ -1696,9 +1689,9 @@ AS_IF([test "x$rb_cv_type_int64_t" != xno], [
 
 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;]])],
+  AC_TRY_LINK(
+    [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], [
@@ -1707,7 +1700,7 @@ AS_IF([test $rb_cv_stack_end_address != no], [
 
 dnl Checks for library functions.
 AC_TYPE_GETGROUPS
-AC_DEFINE(RETSIGTYPE, void)
+AC_TYPE_SIGNAL
 AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
 [powerpc-darwin*], [
   AC_LIBSOURCES(alloca.c)
@@ -1727,14 +1720,14 @@ AS_CASE(["${target_cpu}-${target_os}:${target_archs}"],
 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([[
+	AC_TRY_LINK([
 	    @%:@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;]])],
+	    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"], [
@@ -1786,9 +1779,9 @@ AC_CHECK_HEADERS(sys/pstat.h)
 
 
 AC_CACHE_CHECK(for signbit, rb_cv_have_signbit,
-  [AC_LINK_IFELSE([AC_LANG_PROGRAM([[
+  [AC_TRY_LINK([
 #include <math.h>
-]], [[int v = signbit(-0.0);]])],
+], [int v = signbit(-0.0);],
 	rb_cv_have_signbit=yes,
 	rb_cv_have_signbit=no)])
 AS_IF([test "$rb_cv_have_signbit" = yes], [
@@ -1944,7 +1937,7 @@ AS_CASE(["$ac_cv_func_memset_s:$ac_cv_func_qsort_s"], [*yes*],
 
 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([[
+	[AC_TRY_RUN([
 @%:@include <stddef.h>
 @%:@include <stdio.h>
 @%:@ifdef HAVE_UNISTD_H
@@ -1963,7 +1956,7 @@ 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,
@@ -2011,21 +2004,21 @@ RUBY_CHECK_BUILTIN_FUNC(__builtin_trap, [__builtin_trap()])
 
 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([[
+    [AC_TRY_COMPILE([
 @%:@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([[
+    [AC_TRY_COMPILE([
 @%:@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])
   ])
@@ -2040,7 +2033,7 @@ void (qsort_r)(void *base, size_t nmemb, size_t size,
 
 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([[
+	AC_TRY_RUN([
 @%:@include <math.h>
 @%:@ifdef HAVE_UNISTD_H
 @%:@include <unistd.h>
@@ -2058,7 +2051,7 @@ 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])]
@@ -2087,9 +2080,9 @@ AS_IF([test x"$ac_cv_lib_rt_timer_settime" = xyes], [
 ])
 
 AC_CACHE_CHECK(for unsetenv returns a value, rb_cv_unsetenv_return_value,
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+  [AC_TRY_COMPILE([
 #include <stdlib.h>
-]], [[int v = unsetenv("foo");]])],
+], [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], [
@@ -2107,21 +2100,21 @@ AS_IF([test "$use_setreuid" = yes], [
 ])
 AC_STRUCT_TIMEZONE
 AC_CACHE_CHECK(for struct tm.tm_gmtoff, rb_cv_member_struct_tm_tm_gmtoff,
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+  [AC_TRY_COMPILE([
 @%:@define _BSD_SOURCE
 @%:@define _DEFAULT_SOURCE
 @%:@include <time.h>
-    ]],
-    [[struct tm t; t.tm_gmtoff = 3600;]])],
+   ],
+    [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;]])],
+  [AC_TRY_LINK([#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], [
@@ -2129,7 +2122,7 @@ AS_IF([test "$rb_cv_have_daylight" = yes], [
 ])
 
 AC_CACHE_CHECK(for negative time_t for gmtime(3), rb_cv_negative_time_t,
-  [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+  [AC_TRY_RUN([
 #include <stdlib.h>
 #include <time.h>
 
@@ -2159,7 +2152,7 @@ main()
    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)])
@@ -2170,7 +2163,7 @@ AS_IF([test "$rb_cv_negative_time_t" = yes], [
 # [ruby-dev:40910] overflow of time on FreeBSD
 # http://www.freebsd.org/cgi/query-pr.cgi?pr=145341
 AC_CACHE_CHECK(for localtime(3) overflow correctly, rb_cv_localtime_overflow,
-  [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+  [AC_TRY_RUN([
 #include <stdlib.h>
 #include <time.h>
 
@@ -2202,7 +2195,7 @@ main()
     check(t);
     return 0;
 }
-]])],
+],
 	rb_cv_localtime_overflow=yes,
 	rb_cv_localtime_overflow=no,
 	rb_cv_localtime_overflow=no)])
@@ -2215,7 +2208,7 @@ AS_IF([test "$ac_cv_func_sigprocmask" = yes && test "$ac_cv_func_sigaction" = ye
 ], [
   AC_CHECK_FUNCS(sigsetmask)
   AC_CACHE_CHECK(for BSD signal semantics, rb_cv_bsd_signal,
-    [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+    [AC_TRY_RUN([
 #include <stdio.h>
 #include <signal.h>
 
@@ -2233,7 +2226,7 @@ main()
   kill(getpid(), SIGINT);
   return 0;
 }
-]])],
+],
 	rb_cv_bsd_signal=yes,
 	rb_cv_bsd_signal=no,
 	rb_cv_bsd_signal=$ac_cv_func_sigsetmask)])
@@ -2402,13 +2395,13 @@ AS_IF([test x"$enable_pthread" = xyes], [
 	AC_MSG_WARN("Don't know how to find pthread library on your system -- thread support disabled")
     ])
     AC_CACHE_CHECK([whether pthread_t is scalar type], [rb_cv_scalar_pthread_t], [
-	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+	AC_TRY_COMPILE([
 	    @%:@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])
+	    ], [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>])
@@ -2434,14 +2427,14 @@ AS_IF([test x"$enable_pthread" = xyes], [
 		"(pthread_self(), \"%s\", name)" \
 		"(name)" \
 		; do
-		AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+		AC_TRY_COMPILE([
 		    @%:@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;]])],
+		    ],
+		    [if (SET_THREAD_NAME("conftest")) return 1;],
 		    [rb_cv_func_pthread_setname_np_arguments="${mac}"
 		    break])
 	    done
@@ -2465,8 +2458,8 @@ AS_IF([test x"$enable_pthread" = xyes], [
 
 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);]])],
+	[AC_TRY_COMPILE([@%:@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)
@@ -2474,14 +2467,14 @@ AS_IF([test x"$ac_cv_header_ucontext_h" = xno], [
 ])
 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([[
+	[AC_TRY_COMPILE([
 	    @%:@include <signal.h>
 	    @%:@ifdef HAVE_UCONTEXT_H
 	    @%:@include <ucontext.h>
 	    @%:@endif
         mcontext_t test(mcontext_t mc) {return mc+1;}
-	  ]],
-	  [[test(0);]])],
+	],
+	[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)
@@ -2495,7 +2488,7 @@ AS_IF([test x"$ac_cv_header_ucontext_h" = xyes -o x"$rb_cv_ucontext_in_signal_h"
 
 AS_IF([test "$ac_cv_func_fork_works" = "yes" -a "$rb_with_pthread" = "yes"], [
     AC_CACHE_CHECK([if fork works with pthread], rb_cv_fork_with_pthread,
-	[AC_RUN_IFELSE([AC_LANG_SOURCE([[
+	[AC_TRY_RUN([
 #include <stdlib.h>
 #include <unistd.h>
 #include <pthread.h>
@@ -2551,7 +2544,7 @@ main(int argc, char *argv[])
     }
 
     return EXIT_SUCCESS;
-}]])],
+}],
 	rb_cv_fork_with_pthread=yes,
 	rb_cv_fork_with_pthread=no,
 	rb_cv_fork_with_pthread=yes)])
@@ -2574,7 +2567,7 @@ AC_ARG_WITH(dln-a-out,
 	    with_dln_a_out=no])], [with_dln_a_out=no])
 
 AC_CACHE_CHECK(whether ELF binaries are produced, rb_cv_binary_elf,
-[AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[
+[AC_TRY_LINK([],[], [
 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)])
@@ -2868,7 +2861,7 @@ 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([[
+    [AC_TRY_RUN([
 #include <unistd.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -2916,7 +2909,7 @@ main(void)
     a[0] = 1;
     return EXIT_SUCCESS;
 }
-]])],
+],
 	rb_cv_broken_backtrace=no,
 	rb_cv_broken_backtrace=yes,
 	rb_cv_broken_backtrace=no)])
@@ -2936,10 +2929,11 @@ AS_IF([test "$ac_cv_header_a_out_h" = yes], [
   AS_IF([test "$with_dln_a_out" = yes || test "$rb_cv_dlopen" = unknown], [
     cat confdefs.h > config.h
     AC_CACHE_CHECK(whether matz's dln works, rb_cv_dln_a_out,
-    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+    [AC_TRY_COMPILE([
 #define USE_DLN_A_OUT
 #include "dln.c"
-]], [[]])],
+],
+	[],
 	rb_cv_dln_a_out=yes,
 	rb_cv_dln_a_out=no)])
     AS_IF([test "$rb_cv_dln_a_out" = yes], [
@@ -3005,10 +2999,10 @@ AS_CASE(["$target_os"],
 	STRIP="$STRIP -A -n"])
 
 AC_ARG_WITH(ext,
-            AS_HELP_STRING([--with-ext=EXTS],
+            AC_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],
+            AC_HELP_STRING([--with-out-ext=EXTS],
                            [pass to --without-ext option of extmk.rb]))
 EXTSTATIC=
 AC_SUBST(EXTSTATIC)dnl
@@ -3472,7 +3466,7 @@ AS_IF([test "$rb_with_pthread" = "yes"], [
     THREAD_MODEL=pthread
 ])
 AC_CACHE_CHECK([for prefix of external symbols], rb_cv_symbol_prefix, [
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern void conftest_external(void) {}]], [[]])],[
+    AC_TRY_COMPILE([extern void conftest_external(void) {}], [], [
 	rb_cv_symbol_prefix=`$NM conftest.$ac_objext |
 			     sed -n ['/.*T[ 	]\([^ 	]*\)conftest_external.*/!d;s//\1/p;q']`
 	],
@@ -3483,7 +3477,7 @@ 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]),
+	      AC_HELP_STRING([--disable-dln], [disable dynamic link feature]),
 	      [test "$enableval" = yes || DLNOBJ=dmydln.o])
 AC_SUBST(DLNOBJ)
 MINIDLNOBJ=dmydln.o
@@ -3615,12 +3609,13 @@ 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} |
+    AC_TRY_COMPILE([@%:@if defined __`echo ${universal_archnames} |
     sed 's/=[^ ]*//g;s/ /__ || defined __/g'`__
 @%:@else
 @%:@error
 >>>>>><<<<<<
-@%:@endif]], [[]])],[
+@%:@endif], [],
+[
     rb_cv_architecture_macros=yes
     mv -f confdefs1.h confdefs.h
 ], [
@@ -3633,17 +3628,16 @@ AS_IF([test "${universal_binary-no}" = yes ], [
 	CFLAGS="$new_cflags -arch $archs"
 	archs="__${archs}__"
 	AC_MSG_CHECKING([for macro ${archs} on ${cpu}])
-	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@ifndef ${archs}
+	AC_TRY_COMPILE([@%:@ifndef ${archs}
 @%:@error
-@%:@endif]], [[]])],
-	[AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no])])
+@%:@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);]])],
+	AC_TRY_COMPILE([@%:@include <stdio.h>
+		const char arch[[]] = __ARCHITECTURE__;], [puts(arch);],
 		[rb_cv_architecture_available=yes], [rb_cv_architecture_available=no]))
 ])
 
@@ -4058,7 +4052,7 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
 [EXEEXT='$EXEEXT' gnumake='$gnumake' GIT='$GIT'])
 
 AC_ARG_WITH([ruby-pc],
-	    AS_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),
+	    AC_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),
 	    [ruby_pc="$withval"],
 	    [ruby_pc="${RUBY_BASE_NAME}-${MAJOR}.${MINOR}.pc"])
 AC_SUBST(ruby_pc)
diff --git a/missing/fileblocks.c b/missing/fileblocks.c
new file mode 100644
index 0000000000..ccb8d667b4
--- /dev/null
+++ b/missing/fileblocks.c
@@ -0,0 +1 @@
+/* dummy for autoconf */
diff --git a/tool/m4/ruby_check_builtin_setjmp.m4 b/tool/m4/ruby_check_builtin_setjmp.m4
index 008fd45911..a4289e2e9d 100644
--- a/tool/m4/ruby_check_builtin_setjmp.m4
+++ b/tool/m4/ruby_check_builtin_setjmp.m4
@@ -8,18 +8,18 @@ AC_CACHE_CHECK(for __builtin_setjmp, ac_cv_func___builtin_setjmp,
     ac_cv_func___builtin_setjmp=no
     for cast in "" "(void **)"; do
 	RUBY_WERROR_FLAG(
-	[AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <setjmp.h>
+	[AC_TRY_LINK([@%:@include <setjmp.h>
 	    @%:@include <stdio.h>
 	    jmp_buf jb;
 	    @%:@ifdef NORETURN
 	    NORETURN(void t(void));
 	    @%:@endif
 	    void t(void) {__builtin_longjmp($cast jb, 1);}
-	    int jump(void) {(void)(__builtin_setjmp($cast jb) ? 1 : 0); return 0;}]],
-	    [[
+	    int jump(void) {(void)(__builtin_setjmp($cast jb) ? 1 : 0); return 0;}],
+	    [
 	    void (*volatile f)(void) = t;
 	    if (!jump()) printf("%d\n", f != 0);
-	    ]])],
+	    ],
 	    [ac_cv_func___builtin_setjmp="yes with cast ($cast)"])
 	])
 	test "$ac_cv_func___builtin_setjmp" = no || break
diff --git a/tool/m4/ruby_check_printf_prefix.m4 b/tool/m4/ruby_check_printf_prefix.m4
index 0415f9fa92..9007c18c0a 100644
--- a/tool/m4/ruby_check_printf_prefix.m4
+++ b/tool/m4/ruby_check_printf_prefix.m4
@@ -4,7 +4,8 @@ AC_CACHE_CHECK([for printf prefix for $1], [rb_cv_pri_prefix_]AS_TR_SH($1),[
     [rb_cv_pri_prefix_]AS_TR_SH($1)=[NONE]
     RUBY_WERROR_FLAG(RUBY_APPEND_OPTIONS(CFLAGS, $rb_cv_wsuppress_flags)
     for pri in $2; do
-        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <stdio.h>
+        AC_TRY_COMPILE(
+            [@%:@include <stdio.h>
 	    @%:@include <stddef.h>
             @%:@ifdef __GNUC__
             @%:@if defined __MINGW_PRINTF_FORMAT
@@ -17,9 +18,9 @@ AC_CACHE_CHECK([for printf prefix for $1], [rb_cv_pri_prefix_]AS_TR_SH($1),[
             @%:@else
             @%:@define PRINTF_ARGS(decl, string_index, first_to_check) decl
             @%:@endif
-	    PRINTF_ARGS(void test_sprintf(const char*, ...), 1, 2);]],
-            [[printf("%]${pri}[d", (]$1[)42);
-             test_sprintf("%]${pri}[d", (]$1[)42);]])],
+	    PRINTF_ARGS(void test_sprintf(const char*, ...), 1, 2);],
+            [printf("%]${pri}[d", (]$1[)42);
+            test_sprintf("%]${pri}[d", (]$1[)42);],
             [rb_cv_pri_prefix_]AS_TR_SH($1)[=[$pri]; break])
     done)])
 AS_IF([test "[$rb_cv_pri_prefix_]AS_TR_SH($1)" != NONE], [
diff --git a/tool/m4/ruby_check_setjmp.m4 b/tool/m4/ruby_check_setjmp.m4
index 66652984ea..59f38581b8 100644
--- a/tool/m4/ruby_check_setjmp.m4
+++ b/tool/m4/ruby_check_setjmp.m4
@@ -2,14 +2,14 @@
 # used for AC_ARG_WITH(setjmp-type)
 AC_DEFUN([RUBY_CHECK_SETJMP], [
 AC_CACHE_CHECK([for ]$1[ as a macro or function], ac_cv_func_$1,
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+  [AC_TRY_COMPILE([
 @%:@include <setjmp.h>
 ]AC_INCLUDES_DEFAULT([$3])[
 @%:@define JMPARGS_1 env
 @%:@define JMPARGS_2 env,1
 @%:@define JMPARGS JMPARGS_]m4_ifval($2,2,1)[
-]],
-    [m4_ifval($2,$2,jmp_buf)[ env; $1(JMPARGS);]])],
+],
+    m4_ifval($2,$2,jmp_buf)[ env; $1(JMPARGS);],
     ac_cv_func_$1=yes,
     ac_cv_func_$1=no)]
 )
diff --git a/tool/m4/ruby_check_sysconf.m4 b/tool/m4/ruby_check_sysconf.m4
index 8324be6764..f6b247a16f 100644
--- a/tool/m4/ruby_check_sysconf.m4
+++ b/tool/m4/ruby_check_sysconf.m4
@@ -1,9 +1,9 @@
 # -*- Autoconf -*-
 AC_DEFUN([RUBY_CHECK_SYSCONF], [dnl
 AC_CACHE_CHECK([whether _SC_$1 is supported], rb_cv_have_sc_[]m4_tolower($1),
-  [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <unistd.h>
-      ]],
-      [[_SC_$1 >= 0]])],
+  [AC_TRY_COMPILE([#include <unistd.h>
+    ],
+    [_SC_$1 >= 0],
     rb_cv_have_sc_[]m4_tolower($1)=yes,
     rb_cv_have_sc_[]m4_tolower($1)=no)
   ])
diff --git a/tool/m4/ruby_cppoutfile.m4 b/tool/m4/ruby_cppoutfile.m4
index 495ae0aae4..7c81c4f354 100644
--- a/tool/m4/ruby_cppoutfile.m4
+++ b/tool/m4/ruby_cppoutfile.m4
@@ -4,8 +4,8 @@ AC_DEFUN([RUBY_CPPOUTFILE],
 [save_CPPFLAGS="$CPPFLAGS"
 CPPFLAGS='-o conftest-1.i'
 rb_cv_cppoutfile=no
-AC_PREPROC_IFELSE([AC_LANG_SOURCE([[test-for-cppout]])],
-                  [grep test-for-cppout conftest-1.i > /dev/null && rb_cv_cppoutfile=yes])
+AC_TRY_CPP([test-for-cppout],
+	   [grep test-for-cppout conftest-1.i > /dev/null && rb_cv_cppoutfile=yes])
 CPPFLAGS="$save_CPPFLAGS"
 rm -f conftest*])
 AS_IF([test "$rb_cv_cppoutfile" = yes], [
diff --git a/tool/m4/ruby_decl_attribute.m4 b/tool/m4/ruby_decl_attribute.m4
index 22358a079a..3187b9be60 100644
--- a/tool/m4/ruby_decl_attribute.m4
+++ b/tool/m4/ruby_decl_attribute.m4
@@ -21,7 +21,7 @@ for mac in \
     "__declspec(attrib_code) x" \
     x; do
   m4_ifval([$4],mac="$mac"${rbcv_cond+" /* only if $rbcv_cond */"})
-  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
+  AC_TRY_COMPILE(
     m4_ifval([$4],${rbcv_cond+[@%:@if ]$rbcv_cond})
 [@%:@define ]attrib[](attrib_params)[ $mac]
 m4_ifval([$4],${rbcv_cond+[@%:@else]}
@@ -30,7 +30,7 @@ ${rbcv_cond+[@%:@endif]})
 $6
 @%:@define mesg ("")
 @%:@define san "address"
-    attrib[](attrib_params)[;]], [[]])],
+    attrib[](attrib_params)[;], [],
     [rbcv="$mac"; break])
 done
 ])])
diff --git a/tool/m4/ruby_dtrace_available.m4 b/tool/m4/ruby_dtrace_available.m4
index babffaffac..79586d152c 100644
--- a/tool/m4/ruby_dtrace_available.m4
+++ b/tool/m4/ruby_dtrace_available.m4
@@ -7,7 +7,7 @@ AC_DEFUN([RUBY_DTRACE_AVAILABLE],
     AS_FOR(opt, rb_dtrace_opt, ["-xnolibs" ""], [dnl
 	AS_IF([$DTRACE opt -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null],
 	    [], [continue])
-	AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include "conftest_provider.h"]], [[CONFTEST_FIRE();]])],
+	AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();],
 	    [], [continue])
 	# DTrace is available on the system
 	rb_cv_dtrace_available=yes${rb_dtrace_opt:+"(opt)"}
diff --git a/tool/m4/ruby_dtrace_postprocess.m4 b/tool/m4/ruby_dtrace_postprocess.m4
index 1cb651b481..9ef088b3f8 100644
--- a/tool/m4/ruby_dtrace_postprocess.m4
+++ b/tool/m4/ruby_dtrace_postprocess.m4
@@ -12,7 +12,7 @@ _PROBES
     $DTRACE ${DTRACE_OPT} -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
     :
   }], [
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include "conftest_provider.h"]], [[CONFTEST_FIRE();]])],[
+    AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();], [
 	AS_IF([{
 	    cp -p conftest.${ac_objext} conftest.${ac_objext}.save &&
 	    $DTRACE ${DTRACE_OPT} -G -s conftest_provider.d conftest.${ac_objext} 2>/dev/null &&
diff --git a/tool/m4/ruby_mingw32.m4 b/tool/m4/ruby_mingw32.m4
index 76b95f02a8..f44fe5575c 100644
--- a/tool/m4/ruby_mingw32.m4
+++ b/tool/m4/ruby_mingw32.m4
@@ -3,11 +3,11 @@ AC_DEFUN([RUBY_MINGW32],
 [AS_CASE(["$host_os"],
 [cygwin*], [
 AC_CACHE_CHECK(for mingw32 environment, rb_cv_mingw32,
-[AC_PREPROC_IFELSE([AC_LANG_SOURCE([[
+[AC_TRY_CPP([
 #ifndef __MINGW32__
 # error
 #endif
-]])],[rb_cv_mingw32=yes],[rb_cv_mingw32=no])
+], rb_cv_mingw32=yes,rb_cv_mingw32=no)
 rm -f conftest*])
 AS_IF([test "$rb_cv_mingw32" = yes], [
     target_os="mingw32"
diff --git a/tool/m4/ruby_rm_recursive.m4 b/tool/m4/ruby_rm_recursive.m4
index e2c8f66ccc..e33ba1d97a 100644
--- a/tool/m4/ruby_rm_recursive.m4
+++ b/tool/m4/ruby_rm_recursive.m4
@@ -1,6 +1,6 @@
 # -*- Autoconf -*-
-AC_DEFUN([RUBY_RM_RECURSIVE], [dnl
-m4_version_prereq([2.70], [], [dnl
+AC_DEFUN([RUBY_RM_RECURSIVE], [
+m4_version_prereq([2.70], [-1], [
 # suppress error messages, rm: cannot remove 'conftest.dSYM', from
 # AC_EGREP_CPP with CFLAGS=-g on Darwin.
 AS_CASE([$build_os], [darwin*], [
diff --git a/tool/m4/ruby_stack_grow_direction.m4 b/tool/m4/ruby_stack_grow_direction.m4
index f5f93579a4..74ec219322 100644
--- a/tool/m4/ruby_stack_grow_direction.m4
+++ b/tool/m4/ruby_stack_grow_direction.m4
@@ -6,7 +6,7 @@ AS_CASE(["$1"],
 [m68*|x86*|x64|i?86|ppc*|sparc*|alpha*], [ $2=-1],
 [hppa*], [ $2=+1],
 [
-  AC_RUN_IFELSE([AC_LANG_SOURCE([[
+  AC_TRY_RUN([
 /* recurse to get rid of inlining */
 static int
 stack_growup_p(addr, n)
@@ -23,7 +23,7 @@ int main()
     int x;
     return stack_growup_p(&x, 10);
 }
-]])],[$2=-1],[$2=+1],[$2=0])
+], $2=-1, $2=+1, $2=0)
   ])
 eval stack_grow_dir=\$$2])
 eval $2=\$stack_grow_dir
diff --git a/tool/m4/ruby_try_cflags.m4 b/tool/m4/ruby_try_cflags.m4
index 8c9f22d50c..86ab80e1e6 100644
--- a/tool/m4/ruby_try_cflags.m4
+++ b/tool/m4/ruby_try_cflags.m4
@@ -3,7 +3,7 @@ AC_DEFUN([RUBY_TRY_CFLAGS], [
     AC_MSG_CHECKING([whether ]$1[ is accepted as CFLAGS])
     RUBY_WERROR_FLAG([
     CFLAGS="[$]CFLAGS $1"
-    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[$4]], [[$5]])],
+    AC_TRY_COMPILE([$4], [$5],
 	[$2
 	AC_MSG_RESULT(yes)],
 	[$3
diff --git a/tool/m4/ruby_try_ldflags.m4 b/tool/m4/ruby_try_ldflags.m4
index d27940c7b2..b275107ed9 100644
--- a/tool/m4/ruby_try_ldflags.m4
+++ b/tool/m4/ruby_try_ldflags.m4
@@ -4,7 +4,7 @@ AC_DEFUN([RUBY_TRY_LDFLAGS], [
     LDFLAGS="[$]LDFLAGS $1"
     AC_MSG_CHECKING([whether $1 is accepted as LDFLAGS])
     RUBY_WERROR_FLAG([
-    AC_LINK_IFELSE([AC_LANG_PROGRAM([[$4]], [[$5]])],
+    AC_TRY_LINK([$4], [$5],
 	[$2
 	AC_MSG_RESULT(yes)],
 	[$3
diff --git a/win32/Makefile.sub b/win32/Makefile.sub
index 0bc5efbfb2..326bd7fa7a 100644
--- a/win32/Makefile.sub
+++ b/win32/Makefile.sub
@@ -728,6 +728,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub $(win_srcdir)/Makefile.sub
 #define rb_gid_t int
 #define rb_uid_t int
 #define HAVE_STRUCT_STAT_ST_RDEV 1
+#define HAVE_ST_RDEV 1
 #define HAVE_STRUCT_TIMEVAL 1
 !if $(MSC_VER) >= 1900
 #define HAVE_STRUCT_TIMESPEC
-- 
2.31.1