Hello OpenMPI developers, just-released Autoconf 2.68 contains more stringent checks and warnings about stuff passed to AC_{COMPILE,LINK,RUN}_IFELSE and AC_TRY_* macros. Specifically, it will warn if C or C++ programs are not generated with AC_LANG_SOURCE or AC_LANG_PROGRAM, in order to avoid accidentally omitting needed headers, or mess up arguments in some way. This has happened a few times to Autoconf users.
These checks make more stringent assumptions on correct m4 quoting of macros; IOW, there are mis-quotings which will cause false warnings to be emitted. In cases where generating sources without AC_LANG_SOURCE or AC_LANG_PROGRAM is done intentionally, the macro AC_LANG_DEFINES_PROVIDED should be expanded inside the source. The patch below silences all warnings. I've used AC_LANG_DEFINES_PROVIDED a couple of times in config/ompi_check_vendor.m4, assuming that the tests are really meant to not include any headers. In a couple of other cases, esp in opal/mca/if/windows/configure.m4 and opal/mca/installdirs/windows/configure.m4, I've added the default include headers, assuming that they should not hurt. I've tested the patch with Autoconf 2.68 as well as Autoconf 2.67 on GNU/Linux, but done no other testing. For complete absence of warnings from Autoconf 2.68 you will also need to update the Libtool macros from upcoming 2.4.0. Cheers, Ralf Index: opal/mca/installdirs/windows/configure.m4 =================================================================== --- opal/mca/installdirs/windows/configure.m4 (revision 23790) +++ opal/mca/installdirs/windows/configure.m4 (working copy) @@ -27,18 +27,20 @@ # registry. We should first check that the function is defined, # and then check for it's presence in the kernel32 library. AC_MSG_CHECKING(for working RegOpenKeyEx) - AC_TRY_RUN( [#include <windows.h> + AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT +#include <windows.h>], [ int main( int argc, char** argv ) { RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Open MPI", 0, KEY_READ, NULL); - return 0; }], + return 0; }])], [AC_MSG_RESULT([yes]) $1], [AC_MSG_RESULT([no]) $2], - [AC_COMPILE_IFELSE([#include <windows.h> + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT +#include <windows.h>], [ int main( int argc, char** argv ) { RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Open MPI", 0, KEY_READ, NULL); - return 0; }], + return 0; }])], [AC_MSG_RESULT([yes]) $1], [AC_MSG_RESULT([no]) Index: opal/mca/paffinity/hwloc/hwloc/config/hwloc.m4 =================================================================== --- opal/mca/paffinity/hwloc/hwloc/config/hwloc.m4 (revision 23790) +++ opal/mca/paffinity/hwloc/hwloc/config/hwloc.m4 (working copy) @@ -430,13 +430,13 @@ _HWLOC_CHECK_DECL([sched_setaffinity], [ AC_MSG_CHECKING([for old prototype of sched_setaffinity]) - AC_COMPILE_IFELSE( + AC_COMPILE_IFELSE([ AC_LANG_PROGRAM([[ #define _GNU_SOURCE #include <sched.h> static unsigned long mask; ]], [[ sched_setaffinity(0, (void*) &mask); - ]]), + ]])], AC_DEFINE([HWLOC_HAVE_OLD_SCHED_SETAFFINITY], [1], [Define to 1 if glibc provides the old prototype of sched_setaffinity()]) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]) @@ -447,19 +447,19 @@ ]]) AC_MSG_CHECKING([for working CPU_SET]) - AC_LINK_IFELSE( + AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include <sched.h> cpu_set_t set; ]], [[ CPU_ZERO(&set); CPU_SET(0, &set); - ]]), + ]])], AC_DEFINE([HWLOC_HAVE_CPU_SET], [1], [Define to 1 if the CPU_SET macro works]) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]) ) AC_MSG_CHECKING([for working CPU_SET_S]) - AC_LINK_IFELSE( + AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include <sched.h> cpu_set_t *set; @@ -468,7 +468,7 @@ CPU_ZERO_S(CPU_ALLOC_SIZE(1024), set); CPU_SET_S(CPU_ALLOC_SIZE(1024), 0, set); CPU_FREE(set); - ]]), + ]])], AC_DEFINE([HWLOC_HAVE_CPU_SET_S], [1], [Define to 1 if the CPU_SET_S macro works]) AC_MSG_RESULT([yes]), AC_MSG_RESULT([no]) @@ -570,7 +570,7 @@ AC_MSG_CHECKING([for cpuid]) old_CPPFLAGS="$CPPFLAGS" CFLAGS="$CFLAGS -I$HWLOC_top_srcdir/include" - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> #include <private/cpuid.h> ]], [[ @@ -580,7 +580,7 @@ printf("highest cpuid %x\n", eax); return 0; } - ]]), [ + ]])], [ AC_MSG_RESULT([yes]) AC_DEFINE(HWLOC_HAVE_CPUID, 1, [Define to 1 if you have cpuid]) hwloc_have_cpuid=yes Index: opal/mca/if/windows/configure.m4 =================================================================== --- opal/mca/if/windows/configure.m4 (revision 23790) +++ opal/mca/if/windows/configure.m4 (working copy) @@ -27,21 +27,23 @@ # registry. We should first check that the function is defined, # and then check for it's presence in the kernel32 library. AC_MSG_CHECKING([for working RegOpenKeyEx]) - AC_TRY_RUN( [#include <windows.h> + AC_RUN_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT +#include <windows.h>], [ int main( int argc, char** argv ) { RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Open MPI", 0, KEY_READ, NULL); - return 0; }], + return 0; }])], [AC_MSG_RESULT([yes]) $1], [AC_MSG_RESULT([no]) $2], - [AC_COMPILE_IFELSE([#include <windows.h> + [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT +#include <windows.h>], [ int main( int argc, char** argv ) { RegOpenKeyEx( HKEY_CURRENT_USER, "Software\\Open MPI", 0, KEY_READ, NULL); - return 0; }], + return 0; }])], [AC_MSG_RESULT([yes]) $1], [AC_MSG_RESULT([no]) $2])]) -])dnl +])])dnl Index: opal/mca/memchecker/valgrind/configure.m4 =================================================================== --- opal/mca/memchecker/valgrind/configure.m4 (revision 23790) +++ opal/mca/memchecker/valgrind/configure.m4 (working copy) @@ -42,11 +42,11 @@ opal_memchecker_valgrind_save_CPPFLAGS=$CPPFLAGS]) AC_CHECK_HEADERS([valgrind/valgrind.h], [AC_MSG_CHECKING([for VALGRIND_CHECK_MEM_IS_ADDRESSABLE]) - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[ + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ #include "valgrind/memcheck.h" ]], [[char buffer = 0xff; - VALGRIND_CHECK_MEM_IS_ADDRESSABLE(&buffer, sizeof(buffer));]]), + VALGRIND_CHECK_MEM_IS_ADDRESSABLE(&buffer, sizeof(buffer));]])], [AC_MSG_RESULT([yes]) opal_memchecker_valgrind_happy=yes], [AC_MSG_RESULT([no]) Index: opal/config/opal_setup_libevent.m4 =================================================================== --- opal/config/opal_setup_libevent.m4 (revision 23790) +++ opal/config/opal_setup_libevent.m4 (working copy) @@ -198,26 +198,26 @@ haveepoll=no AC_MSG_CHECKING([for working epoll library interface]) - AC_RUN_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT + AC_RUN_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT[ #include <sys/epoll.h>]], [[ struct epoll_event epevin; struct epoll_event epevout; int res; int epfd; - int fildes[[2]]; + int fildes[2]; if ((epfd = epoll_create(1)) == -1) exit(1); - if (pipe(&fildes[[0]]) < 0) + if (pipe(&fildes[0]) < 0) exit(1); memset(&epevin, 0, sizeof(epevin)); memset(&epevout, 0, sizeof(epevout)); memset(&epevin.data.ptr, 5, sizeof(epevin.data.ptr)); epevin.events = EPOLLIN | EPOLLOUT; - if (epoll_ctl(epfd, EPOLL_CTL_ADD, fildes[[1]], &epevin) == -1) + if (epoll_ctl(epfd, EPOLL_CTL_ADD, fildes[1], &epevin) == -1) exit(1); res = epoll_wait(epfd, &epevout, 1, 0); @@ -229,7 +229,7 @@ } } /* SUCCESS */ -]]), +]])], [haveepoll=yes AC_DEFINE(HAVE_EPOLL, 1, [Define if your system supports the epoll interface]) @@ -244,8 +244,8 @@ # OMPI: See comment above. This test uses the epoll system call # interface instead of the library interface. AC_MSG_CHECKING(for working epoll system call) - AC_RUN_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT + AC_RUN_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT[ #include <sys/syscall.h> #include <sys/epoll.h>]], [[ @@ -253,11 +253,11 @@ struct epoll_event epevout; int res; int epfd; - int fildes[[2]]; + int fildes[2]; if ((epfd = syscall(__NR_epoll_create, 1)) == -1) exit(1); - if (pipe(&fildes[[0]]) < 0) + if (pipe(&fildes[0]) < 0) exit(1); memset(&epevin, 0, sizeof(epevin)); memset(&epevout, 0, sizeof(epevout)); @@ -265,7 +265,7 @@ epevin.events = EPOLLIN | EPOLLOUT; if (syscall(__NR_epoll_ctl, epfd, - EPOLL_CTL_ADD, fildes[[1]], &epevin) == -1) + EPOLL_CTL_ADD, fildes[1], &epevin) == -1) exit(1); res = syscall(__NR_epoll_wait, epfd, &epevout, 1, 0); @@ -277,7 +277,7 @@ } } /* SUCCESS */ -]]), +]])], [haveepollsyscall=yes AC_DEFINE(HAVE_EPOLL, 1, [Define if your system supports the epoll interface]) @@ -313,7 +313,7 @@ esac if test "x$havekqueue" = "xyes" ; then AC_MSG_CHECKING(for working kqueue) - AC_TRY_RUN( + AC_TRY_RUN([ #include <sys/types.h> #include <sys/time.h> #include <sys/event.h> @@ -327,30 +327,30 @@ { int kq; int n; - int fd[[2]]; + int fd[2]; struct kevent ev; struct timespec ts; - char buf[[8000]]; + char buf[8000]; if (pipe(fd) == -1) exit(1); - if (fcntl(fd[[1]], F_SETFL, O_NONBLOCK) == -1) + if (fcntl(fd[1], F_SETFL, O_NONBLOCK) == -1) exit(1); - while ((n = write(fd[[1]], buf, sizeof(buf))) == sizeof(buf)) + while ((n = write(fd[1], buf, sizeof(buf))) == sizeof(buf)) ; if ((kq = kqueue()) == -1) exit(1); - ev.ident = fd[[1]]; + ev.ident = fd[1]; ev.filter = EVFILT_WRITE; ev.flags = EV_ADD | EV_ENABLE; n = kevent(kq, &ev, 1, NULL, 0, NULL); if (n == -1) exit(1); - read(fd[[0]], buf, sizeof(buf)); + read(fd[0], buf, sizeof(buf)); ts.tv_sec = 0; ts.tv_nsec = 0; @@ -359,7 +359,7 @@ exit(1); exit(0); -}, [AC_MSG_RESULT(yes) +}], [AC_MSG_RESULT(yes) AC_DEFINE(HAVE_WORKING_KQUEUE, 1, [Define if kqueue works correctly with pipes]) sources="kqueue.c $sources"], [AC_MSG_RESULT(no)], [AC_MSG_RESULT(no)]) Index: opal/config/opal_config_asm.m4 =================================================================== --- opal/config/opal_config_asm.m4 (revision 23790) +++ opal/config/opal_config_asm.m4 (working copy) @@ -585,11 +585,11 @@ ;; *) if test ! "$assembly" = "" ; then - AC_RUN_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT]], + AC_RUN_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT], [[int ret = 1; __asm__ __volatile__ ($assembly); -return ret;]]), +return ret;]])], [asm_result="yes"], [asm_result="no"], [asm_result="unknown"]) else @@ -600,11 +600,11 @@ # if we're cross compiling, just try to compile and figure good enough if test "$asm_result" = "unknown" ; then - AC_LINK_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT]], + AC_LINK_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT], [[int ret = 1; __asm__ __volatile__ ($assembly); -return ret;]]), +return ret;]])], [asm_result="yes"], [asm_result="no"]) fi fi @@ -639,11 +639,11 @@ ;; *) if test ! "$assembly" = "" ; then - AC_RUN_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT]], + AC_RUN_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT], [[int ret = 1; __asm__ __volatile__ ($assembly); -return ret;]]), +return ret;]])], [asm_result="yes"], [asm_result="no"], [asm_result="unknown"]) else @@ -653,11 +653,11 @@ esac # if we're cross compiling, just try to compile and figure good enough if test "$asm_result" = "unknown" ; then - AC_LINK_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT]], + AC_LINK_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT], [[int ret = 1; __asm__ __volatile__ ($assembly); -return ret;]]), +return ret;]])], [asm_result="yes"], [asm_result="no"]) fi @@ -690,11 +690,11 @@ AC_MSG_CHECKING([if $CC supports DEC inline assembly]) - AC_LINK_IFELSE(AC_LANG_PROGRAM([[ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ AC_INCLUDES_DEFAULT -#include <c_asm.h>]], +#include <c_asm.h>], [[asm(""); -return 0;]]), +return 0;]])], [asm_result="yes"], [asm_result="no"]) AC_MSG_RESULT([$asm_result]) @@ -717,11 +717,11 @@ AC_LANG_PUSH([C++]) AC_MSG_CHECKING([if $CXX supports DEC inline assembly]) - AC_LINK_IFELSE(AC_LANG_PROGRAM([[ + AC_LINK_IFELSE([AC_LANG_PROGRAM([ AC_INCLUDES_DEFAULT -#include <c_asm.h>]], +#include <c_asm.h>], [[asm(""); -return 0;]]), +return 0;]])], [asm_result="yes"], [asm_result="no"]) AC_MSG_RESULT([$asm_result]) Index: opal/config/opal_check_offsetof.m4 =================================================================== --- opal/config/opal_check_offsetof.m4 (revision 23790) +++ opal/config/opal_check_offsetof.m4 (working copy) @@ -21,13 +21,13 @@ OMPI_VAR_SCOPE_PUSH([have_offsetof_msg]) AC_MSG_CHECKING(for functional offsetof macro) - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include<stddef.h>]], - [[struct foo {int a, b;}; size_t offset = offsetof(struct foo, b); ]]), + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include<stddef.h>]], + [[struct foo {int a, b;}; size_t offset = offsetof(struct foo, b); ]])], [have_offsetof_msg="yes"], [have_offsetof_msg="no"]) if test "$have_offsetof_msg" = "no"; then CPPFLAGS="$CPPFLAGS -DNO_PGI_OFFSET" - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[#include<stddef.h>]], - [[struct foo {int a, b;}; size_t offset = offsetof(struct foo, b); ]]), + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include<stddef.h>]], + [[struct foo {int a, b;}; size_t offset = offsetof(struct foo, b); ]])], [have_offsetof_msg="yes"], [have_offsetof_msg="no"]) if test "$have_offsetof_msg" = "no"; then Index: configure.ac =================================================================== --- configure.ac (revision 23790) +++ configure.ac (working copy) @@ -82,7 +82,7 @@ # # Init automake # -AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.10 tar-ustar]) +AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.10c silent-rules tar-ustar]) # If Automake supports silent rules, enable them. m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) @@ -409,9 +409,9 @@ # AC_MSG_CHECKING(for C bool type) -AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT]], -[[bool bar, foo = true; bar = foo;]]), +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT], +[[bool bar, foo = true; bar = foo;]])], [OPAL_NEED_C_BOOL=0 MSG=yes],[OPAL_NEED_C_BOOL=1 MSG=no]) AC_DEFINE_UNQUOTED(OPAL_NEED_C_BOOL, $OPAL_NEED_C_BOOL, [Whether the C compiler supports "bool" without any other help (such as <stdbool.h>)]) @@ -594,12 +594,12 @@ AC_CHECK_HEADERS([stdbool.h], [have_stdbool_h=1], [have_stdbool_h=0]) AC_MSG_CHECKING([if <stdbool.h> works]) if test "$have_stdbool_h" = "1"; then - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[ -AC_INCLUDES_DEFAULT + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([ +AC_INCLUDES_DEFAULT[ #if HAVE_STDBOOL_H #include <stdbool.h> #endif]], -[[bool bar, foo = true; bar = foo;]]), +[[bool bar, foo = true; bar = foo;]])], [OPAL_USE_STDBOOL_H=1 MSG=yes],[OPAL_USE_STDBOOL_H=0 MSG=no]) else OPAL_USE_STDBOOL_H=0 Index: ompi/config/ompi_setup_f90.m4 =================================================================== --- ompi/config/ompi_setup_f90.m4 (revision 23790) +++ ompi/config/ompi_setup_f90.m4 (working copy) @@ -197,8 +197,8 @@ else FCFLAGS="$FFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS" AC_LANG_PUSH(Fortran) - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [[ INTEGER I - I = 3]]), + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ INTEGER I + I = 3]])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_WARN([C++ exception flags are different between the C and C++ compilers; this configure script cannot currently handle this scenario. Either disable C++ exception support or send mail to the Open MPI users list.]) Index: ompi/config/cxx_have_exceptions.m4 =================================================================== --- ompi/config/cxx_have_exceptions.m4 (revision 23790) +++ ompi/config/cxx_have_exceptions.m4 (working copy) @@ -32,7 +32,7 @@ AC_MSG_CHECKING([for throw/catch]) AC_LANG_SAVE AC_LANG_CPLUSPLUS -AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[]], [[int i=1; throw(i);]]), +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int i=1; throw(i);]])], OMPI_CXX_EXCEPTIONS=1, OMPI_CXX_EXCPTIONS=0) if test "$OMPI_CXX_EXCEPTIONS" = "1"; then AC_MSG_RESULT([yes]) Index: ompi/config/ompi_setup_cxx.m4 =================================================================== --- ompi/config/ompi_setup_cxx.m4 (revision 23790) +++ ompi/config/ompi_setup_cxx.m4 (working copy) @@ -329,7 +329,7 @@ CFLAGS="$CFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS" AC_LANG_SAVE AC_LANG_C - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[]], [[int i = 0;]]), + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int i = 0;]])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_WARN([C++ exception flags are different between the C and C++ compilers; this configure script cannot currently handle this scenario. Either disable C++ exception support or send mail to the Open MPI users list.]) Index: ompi/config/ompi_setup_f77.m4 =================================================================== --- ompi/config/ompi_setup_f77.m4 (revision 23790) +++ ompi/config/ompi_setup_f77.m4 (working copy) @@ -134,8 +134,8 @@ else FFLAGS="$FFLAGS $OMPI_CXX_EXCEPTIONS_CXXFLAGS" AC_LANG_PUSH(Fortran 77) - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([], [[ INTEGER I - I = 3]]), + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[ INTEGER I + I = 3]])], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) AC_MSG_WARN([C++ exception flags are different between the C and C++ compilers; this configure script cannot currently handle this scenario. Either disable C++ exception support or send mail to the Open MPI users list.]) Index: ompi/config/f77_get_fortran_handle_max.m4 =================================================================== --- ompi/config/f77_get_fortran_handle_max.m4 (revision 23790) +++ ompi/config/f77_get_fortran_handle_max.m4 (working copy) @@ -44,13 +44,13 @@ # Get INT_MAX. Compute a SWAG if we are cross compiling or something # goes wrong. rm -f conftest.out >/dev/null 2>&1 - AC_RUN_IFELSE(AC_LANG_PROGRAM([[ + AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include <stdio.h> #include <limits.h> ]],[[FILE *fp = fopen("conftest.out", "w"); long cint = INT_MAX; fprintf(fp, "%ld", cint); -fclose(fp);]]), +fclose(fp);]])], [ompi_cint_max=`cat conftest.out`], [ompi_cint_max=0], [ #cross compiling is fun. compute INT_MAX same as INTEGER max Index: ompi/config/cxx_find_exception_flags.m4 =================================================================== --- ompi/config/cxx_find_exception_flags.m4 (revision 23790) +++ ompi/config/cxx_find_exception_flags.m4 (working copy) @@ -58,13 +58,13 @@ AC_LANG_SAVE AC_LANG_CPLUSPLUS - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[]], [[try { int i = 0; } catch(...) { int j = 2; }]]), ompi_happy=1, ompi_happy=0) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[try { int i = 0; } catch(...) { int j = 2; }]])], ompi_happy=1, ompi_happy=0) if test "$ompi_happy" = "1"; then ompi_exflags="-fexceptions"; else CXXFLAGS="$CXXFLAGS_SAVE -fhandle-exceptions" - AC_COMPILE_IFELSE(AC_LANG_PROGRAM([[]], [[try { int i = 0; } catch(...) { int j = 2; }]]), ompi_happy=1, ompi_happy=0) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[try { int i = 0; } catch(...) { int j = 2; }]])], ompi_happy=1, ompi_happy=0) if test "$ompi_happy" = "1"; then ompi_exflags="-fhandle-exceptions"; fi Index: config/ompi_check_vendor.m4 =================================================================== --- config/ompi_check_vendor.m4 (revision 23790) +++ config/ompi_check_vendor.m4 (working copy) @@ -57,6 +57,9 @@ $1="$ompi_cv_c_compiler_vendor" ]) +# workaround to avoid syntax error with Autoconf < 2.68: +m4_ifndef([AC_LANG_DEFINES_PROVIDED], + [m4_define([AC_LANG_DEFINES_PROVIDED])]) # OMPI_IFDEF_IFELSE(symbol, [action-if-defined], # [action-if-not-defined]) @@ -64,7 +67,8 @@ # Run compiler to determine if preprocessor symbol "symbol" is # defined by the compiler. AC_DEFUN([OMPI_IFDEF_IFELSE], [ - AC_COMPILE_IFELSE([#ifndef $1 + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#ifndef $1 #error "symbol $1 not defined" choke me #endif], [$2], [$3])]) @@ -76,7 +80,8 @@ # Run compiler to determine if preprocessor symbol "symbol" is # defined by the compiler. AC_DEFUN([OMPI_IF_IFELSE], [ - AC_COMPILE_IFELSE([#if !( $1 ) + AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED +#if !( $1 ) #error "condition $1 not met" choke me #endif], [$2], [$3])])