From 51a5c2471367e66ce5fe2e25626e3a2b9c7cd2fe Mon Sep 17 00:00:00 2001 From: Salvatore Filippone Date: Tue, 6 May 2008 13:28:12 +0000 Subject: [PATCH] mld2p4-dev: config/acx_mpi.m4 config/pac.m4 configure.ac configure mlprec/mld_dslu_interface.c mlprec/mld_zslu_interface.c Fixed configry stuff for latest names in the SuperLU_3.0 and SLUDIST_2.1 include files. --- config/acx_mpi.m4 | 146 ++++++++++ config/pac.m4 | 11 +- configure | 553 +++++++++++++++++++++++++++++++----- configure.ac | 7 + mlprec/mld_dslu_interface.c | 2 +- mlprec/mld_zslu_interface.c | 2 +- 6 files changed, 641 insertions(+), 80 deletions(-) create mode 100644 config/acx_mpi.m4 diff --git a/config/acx_mpi.m4 b/config/acx_mpi.m4 new file mode 100644 index 00000000..77f433d8 --- /dev/null +++ b/config/acx_mpi.m4 @@ -0,0 +1,146 @@ +dnl @synopsis ACX_MPI([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl @summary figure out how to compile/link code with MPI +dnl +dnl This macro tries to find out how to compile programs that use MPI +dnl (Message Passing Interface), a standard API for parallel process +dnl communication (see http://www-unix.mcs.anl.gov/mpi/) +dnl +dnl On success, it sets the MPICC, MPICXX, or MPIF77 output variable to +dnl the name of the MPI compiler, depending upon the current language. +dnl (This may just be $CC/$CXX/$F77, but is more often something like +dnl mpicc/mpiCC/mpif77.) It also sets MPILIBS to any libraries that are +dnl needed for linking MPI (e.g. -lmpi, if a special +dnl MPICC/MPICXX/MPIF77 was not found). +dnl +dnl If you want to compile everything with MPI, you should set: +dnl +dnl CC="$MPICC" #OR# CXX="$MPICXX" #OR# F77="$MPIF77" +dnl LIBS="$MPILIBS $LIBS" +dnl +dnl NOTE: The above assumes that you will use $CC (or whatever) for +dnl linking as well as for compiling. (This is the default for automake +dnl and most Makefiles.) +dnl +dnl The user can force a particular library/compiler by setting the +dnl MPICC/MPICXX/MPIF77 and/or MPILIBS environment variables. +dnl +dnl ACTION-IF-FOUND is a list of shell commands to run if an MPI +dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to +dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the +dnl default action will define HAVE_MPI. +dnl +dnl @category InstalledPackages +dnl @author Steven G. Johnson +dnl @author Julian Cummings +dnl @version 2006-10-13 +dnl @license GPLWithACException + +AC_DEFUN([ACX_MPI], [ +AC_PREREQ(2.50) dnl for AC_LANG_CASE + +AC_LANG_CASE([C], [ + AC_REQUIRE([AC_PROG_CC]) + AC_ARG_VAR(MPICC,[MPI C compiler command]) + AC_CHECK_PROGS(MPICC, mpicc hcc mpxlc_r mpxlc mpcc cmpicc, $CC) + acx_mpi_save_CC="$CC" + CC="$MPICC" + AC_SUBST(MPICC) +], +[C++], [ + AC_REQUIRE([AC_PROG_CXX]) + AC_ARG_VAR(MPICXX,[MPI C++ compiler command]) + AC_CHECK_PROGS(MPICXX, mpic++ mpicxx mpiCC hcp mpxlC_r mpxlC mpCC cmpic++, $CXX) + acx_mpi_save_CXX="$CXX" + CXX="$MPICXX" + AC_SUBST(MPICXX) +], +[Fortran 77], [ + AC_REQUIRE([AC_PROG_F77]) + AC_ARG_VAR(MPIF77,[MPI Fortran 77 compiler command]) + AC_CHECK_PROGS(MPIF77, mpif77 hf77 mpxlf mpf77 mpif90 mpf90 mpxlf90 mpxlf95 mpxlf_r cmpifc cmpif90c, $F77) + acx_mpi_save_F77="$F77" + F77="$MPIF77" + AC_SUBST(MPIF77) +], +[Fortran], [ + AC_REQUIRE([AC_PROG_FC]) + AC_ARG_VAR(MPIFC,[MPI Fortran compiler command]) + AC_CHECK_PROGS(MPIFC, mpif90 hf90 mpxlf90 mpxlf95 mpf90 cmpifc cmpif90c, $FC) + acx_mpi_save_FC="$FC" + FC="$MPIFC" + AC_SUBST(MPIFC) +]) + +if test x = x"$MPILIBS"; then + AC_LANG_CASE([C], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])], + [C++], [AC_CHECK_FUNC(MPI_Init, [MPILIBS=" "])], + [Fortran 77], [AC_MSG_CHECKING([for MPI_Init]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[ call MPI_Init])],[MPILIBS=" " + AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])], + [Fortran], [AC_MSG_CHECKING([for MPI_Init]) + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[ call MPI_Init])],[MPILIBS=" " + AC_MSG_RESULT(yes)], [AC_MSG_RESULT(no)])]) +fi +AC_LANG_CASE([Fortran 77], [ + if test x = x"$MPILIBS"; then + AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"]) + fi + if test x = x"$MPILIBS"; then + AC_CHECK_LIB(fmpich, MPI_Init, [MPILIBS="-lfmpich"]) + fi +], +[Fortran], [ + if test x = x"$MPILIBS"; then + AC_CHECK_LIB(fmpi, MPI_Init, [MPILIBS="-lfmpi"]) + fi + if test x = x"$MPILIBS"; then + AC_CHECK_LIB(mpichf90, MPI_Init, [MPILIBS="-lmpichf90"]) + fi +]) +if test x = x"$MPILIBS"; then + AC_CHECK_LIB(mpi, MPI_Init, [MPILIBS="-lmpi"]) +fi +if test x = x"$MPILIBS"; then + AC_CHECK_LIB(mpich, MPI_Init, [MPILIBS="-lmpich"]) +fi + +dnl We have to use AC_TRY_COMPILE and not AC_CHECK_HEADER because the +dnl latter uses $CPP, not $CC (which may be mpicc). +AC_LANG_CASE([C], [if test x != x"$MPILIBS"; then + AC_MSG_CHECKING([for mpi.h]) + AC_TRY_COMPILE([#include ],[],[AC_MSG_RESULT(yes)], [MPILIBS="" + AC_MSG_RESULT(no)]) +fi], +[C++], [if test x != x"$MPILIBS"; then + AC_MSG_CHECKING([for mpi.h]) + AC_TRY_COMPILE([#include ],[],[AC_MSG_RESULT(yes)], [MPILIBS="" + AC_MSG_RESULT(no)]) +fi], +[Fortran 77], [if test x != x"$MPILIBS"; then + AC_MSG_CHECKING([for mpif.h]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[ include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS="" + AC_MSG_RESULT(no)]) +fi], +[Fortran], [if test x != x"$MPILIBS"; then + AC_MSG_CHECKING([for mpif.h]) + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[ include 'mpif.h'])],[AC_MSG_RESULT(yes)], [MPILIBS="" + AC_MSG_RESULT(no)]) +fi]) + +AC_LANG_CASE([C], [CC="$acx_mpi_save_CC"], + [C++], [CXX="$acx_mpi_save_CXX"], + [Fortran 77], [F77="$acx_mpi_save_F77"], + [Fortran], [FC="$acx_mpi_save_FC"]) + +AC_SUBST(MPILIBS) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x = x"$MPILIBS"; then + $2 + : +else + ifelse([$1],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$1]) + : +fi +])dnl ACX_MPI diff --git a/config/pac.m4 b/config/pac.m4 index d8770a94..d6e39498 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -647,7 +647,7 @@ fi LIBS="$SLU_LIBS $LIBS" CPPFLAGS="$SLU_INCLUDES $CPPFLAGS" AC_MSG_NOTICE([slu dir $mld2p4_cv_superludir]) -AC_CHECK_HEADER([dsp_defs.h], +AC_CHECK_HEADER([slu_ddefs.h], [pac_slu_header_ok=yes], [pac_slu_header_ok=no; SLU_INCLUDES=""]) if test "x$pac_slu_header_ok" == "xyes" ; then @@ -688,6 +688,8 @@ AC_ARG_WITH(superludistdir, AC_HELP_STRING([--with-superludistdir=DIR], [Specify AC_LANG([C]) save_LIBS="$LIBS" save_CPPFLAGS="$CPPFLAGS" +save_CC="$CC" +CC=${MPICC} if test "x$mld2p4_cv_superludistdir" != "x"; then SLUDIST_INCLUDES="-I$mld2p4_cv_superludistdir" SLUDIST_LIBS="-L$mld2p4_cv_superludistdir" @@ -695,7 +697,7 @@ fi LIBS="$SLUDIST_LIBS $LIBS" CPPFLAGS="$SLUDIST_INCLUDES $CPPFLAGS" AC_MSG_NOTICE([slu dir $mld2p4_cv_superludistdir]) -AC_CHECK_HEADER([dsp_defs.h], +AC_CHECK_HEADER([superlu_ddefs.h], [pac_sludist_header_ok=yes], [pac_sludist_header_ok=no; SLUDIST_INCLUDES=""]) if test "x$pac_sludist_header_ok" == "xyes" ; then @@ -708,7 +710,8 @@ if test "x$pac_sludist_header_ok" == "xyes" ; then SLUDIST_LIBS=""; SLUDIST_INCLUDES=""]) AC_MSG_RESULT($pac_sludist_lib_ok) fi -LIBS="$SAVE_LIBS"; -CPPFLAGS="$SAVE_CPPFLAGS"; +LIBS="$save_LIBS"; +CPPFLAGS="$save_CPPFLAGS"; +CC="$save_CC"; ])dnl diff --git a/configure b/configure index 445485c4..c2726b20 100755 --- a/configure +++ b/configure @@ -665,6 +665,8 @@ OBJEXT CPP GREP EGREP +MPICC +MPILIBS PSBLAS_DIR INSTALL INSTALL_DIR @@ -687,7 +689,8 @@ CFLAGS LDFLAGS LIBS CPPFLAGS -CPP' +CPP +MPICC' # Initialize some variables set by options. @@ -1297,6 +1300,7 @@ Some influential environment variables: CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor + MPICC MPI C compiler command Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -3677,6 +3681,402 @@ else UMF_FLAGS="" fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +if test "X$MPICC" = "X" ; then + # This is our MPICC compiler preference: it will override ACX_MPI's first try. + for ac_prog in mpxlc mpcc pgcc mpicc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_MPICC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MPICC"; then + ac_cv_prog_MPICC="$MPICC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MPICC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +MPICC=$ac_cv_prog_MPICC +if test -n "$MPICC"; then + { echo "$as_me:$LINENO: result: $MPICC" >&5 +echo "${ECHO_T}$MPICC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$MPICC" && break +done + +fi + + + + + + for ac_prog in mpicc hcc mpxlc_r mpxlc mpcc cmpicc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_prog_MPICC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$MPICC"; then + ac_cv_prog_MPICC="$MPICC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MPICC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +MPICC=$ac_cv_prog_MPICC +if test -n "$MPICC"; then + { echo "$as_me:$LINENO: result: $MPICC" >&5 +echo "${ECHO_T}$MPICC" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + + test -n "$MPICC" && break +done +test -n "$MPICC" || MPICC="$CC" + + acx_mpi_save_CC="$CC" + CC="$MPICC" + + + +if test x = x"$MPILIBS"; then + { echo "$as_me:$LINENO: checking for MPI_Init" >&5 +echo $ECHO_N "checking for MPI_Init... $ECHO_C" >&6; } +if test "${ac_cv_func_MPI_Init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define MPI_Init to an innocuous variant, in case declares MPI_Init. + For example, HP-UX 11i declares gettimeofday. */ +#define MPI_Init innocuous_MPI_Init + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char MPI_Init (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef MPI_Init + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char MPI_Init (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_MPI_Init || defined __stub___MPI_Init +choke me +#endif + +int +main () +{ +return MPI_Init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_func_MPI_Init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_MPI_Init=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ echo "$as_me:$LINENO: result: $ac_cv_func_MPI_Init" >&5 +echo "${ECHO_T}$ac_cv_func_MPI_Init" >&6; } +if test $ac_cv_func_MPI_Init = yes; then + MPILIBS=" " +fi + +fi + +if test x = x"$MPILIBS"; then + { echo "$as_me:$LINENO: checking for MPI_Init in -lmpi" >&5 +echo $ECHO_N "checking for MPI_Init in -lmpi... $ECHO_C" >&6; } +if test "${ac_cv_lib_mpi_MPI_Init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmpi $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char MPI_Init (); +int +main () +{ +return MPI_Init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_mpi_MPI_Init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpi_MPI_Init=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_mpi_MPI_Init" >&5 +echo "${ECHO_T}$ac_cv_lib_mpi_MPI_Init" >&6; } +if test $ac_cv_lib_mpi_MPI_Init = yes; then + MPILIBS="-lmpi" +fi + +fi +if test x = x"$MPILIBS"; then + { echo "$as_me:$LINENO: checking for MPI_Init in -lmpich" >&5 +echo $ECHO_N "checking for MPI_Init in -lmpich... $ECHO_C" >&6; } +if test "${ac_cv_lib_mpich_MPI_Init+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmpich $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char MPI_Init (); +int +main () +{ +return MPI_Init (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && + $as_test_x conftest$ac_exeext; then + ac_cv_lib_mpich_MPI_Init=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_mpich_MPI_Init=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ echo "$as_me:$LINENO: result: $ac_cv_lib_mpich_MPI_Init" >&5 +echo "${ECHO_T}$ac_cv_lib_mpich_MPI_Init" >&6; } +if test $ac_cv_lib_mpich_MPI_Init = yes; then + MPILIBS="-lmpich" +fi + +fi + +if test x != x"$MPILIBS"; then + { echo "$as_me:$LINENO: checking for mpi.h" >&5 +echo $ECHO_N "checking for mpi.h... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + { echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6; } +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + MPILIBS="" + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +CC="$acx_mpi_save_CC" + + + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x = x"$MPILIBS"; then + { { echo "$as_me:$LINENO: error: Cannot find any suitable MPI implementation for C" >&5 +echo "$as_me: error: Cannot find any suitable MPI implementation for C" >&2;} + { (exit 1); exit 1; }; } + : +else + +cat >>confdefs.h <<\_ACEOF +#define HAVE_MPI 1 +_ACEOF + + : +fi + + # Check whether --with-superlu was given. if test "${with_superlu+set}" = set; then @@ -3709,18 +4109,18 @@ LIBS="$SLU_LIBS $LIBS" CPPFLAGS="$SLU_INCLUDES $CPPFLAGS" { echo "$as_me:$LINENO: slu dir $mld2p4_cv_superludir" >&5 echo "$as_me: slu dir $mld2p4_cv_superludir" >&6;} -if test "${ac_cv_header_dsp_defs_h+set}" = set; then - { echo "$as_me:$LINENO: checking for dsp_defs.h" >&5 -echo $ECHO_N "checking for dsp_defs.h... $ECHO_C" >&6; } -if test "${ac_cv_header_dsp_defs_h+set}" = set; then +if test "${ac_cv_header_slu_ddefs_h+set}" = set; then + { echo "$as_me:$LINENO: checking for slu_ddefs.h" >&5 +echo $ECHO_N "checking for slu_ddefs.h... $ECHO_C" >&6; } +if test "${ac_cv_header_slu_ddefs_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_dsp_defs_h" >&5 -echo "${ECHO_T}$ac_cv_header_dsp_defs_h" >&6; } +{ echo "$as_me:$LINENO: result: $ac_cv_header_slu_ddefs_h" >&5 +echo "${ECHO_T}$ac_cv_header_slu_ddefs_h" >&6; } else # Is the header compilable? -{ echo "$as_me:$LINENO: checking dsp_defs.h usability" >&5 -echo $ECHO_N "checking dsp_defs.h usability... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: checking slu_ddefs.h usability" >&5 +echo $ECHO_N "checking slu_ddefs.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3728,7 +4128,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -#include +#include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" @@ -3760,15 +4160,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -{ echo "$as_me:$LINENO: checking dsp_defs.h presence" >&5 -echo $ECHO_N "checking dsp_defs.h presence... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: checking slu_ddefs.h presence" >&5 +echo $ECHO_N "checking slu_ddefs.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in @@ -3801,25 +4201,25 @@ echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: dsp_defs.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: dsp_defs.h: proceeding with the compiler's result" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: slu_ddefs.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: slu_ddefs.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: dsp_defs.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: dsp_defs.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: dsp_defs.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: dsp_defs.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: dsp_defs.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: dsp_defs.h: in the future, the compiler will take precedence" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: slu_ddefs.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: slu_ddefs.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: slu_ddefs.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: slu_ddefs.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: slu_ddefs.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: slu_ddefs.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: slu_ddefs.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------------------- ## ## Report this to salvatore.filippone@uniroma2.it ## @@ -3828,18 +4228,18 @@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for dsp_defs.h" >&5 -echo $ECHO_N "checking for dsp_defs.h... $ECHO_C" >&6; } -if test "${ac_cv_header_dsp_defs_h+set}" = set; then +{ echo "$as_me:$LINENO: checking for slu_ddefs.h" >&5 +echo $ECHO_N "checking for slu_ddefs.h... $ECHO_C" >&6; } +if test "${ac_cv_header_slu_ddefs_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_header_dsp_defs_h=$ac_header_preproc + ac_cv_header_slu_ddefs_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_dsp_defs_h" >&5 -echo "${ECHO_T}$ac_cv_header_dsp_defs_h" >&6; } +{ echo "$as_me:$LINENO: result: $ac_cv_header_slu_ddefs_h" >&5 +echo "${ECHO_T}$ac_cv_header_slu_ddefs_h" >&6; } fi -if test $ac_cv_header_dsp_defs_h = yes; then +if test $ac_cv_header_slu_ddefs_h = yes; then pac_slu_header_ok=yes else pac_slu_header_ok=no; SLU_INCLUDES="" @@ -3938,6 +4338,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu save_LIBS="$LIBS" save_CPPFLAGS="$CPPFLAGS" +save_CC="$CC" +CC=${MPICC} if test "x$mld2p4_cv_superludistdir" != "x"; then SLUDIST_INCLUDES="-I$mld2p4_cv_superludistdir" SLUDIST_LIBS="-L$mld2p4_cv_superludistdir" @@ -3946,18 +4348,18 @@ LIBS="$SLUDIST_LIBS $LIBS" CPPFLAGS="$SLUDIST_INCLUDES $CPPFLAGS" { echo "$as_me:$LINENO: slu dir $mld2p4_cv_superludistdir" >&5 echo "$as_me: slu dir $mld2p4_cv_superludistdir" >&6;} -if test "${ac_cv_header_dsp_defs_h+set}" = set; then - { echo "$as_me:$LINENO: checking for dsp_defs.h" >&5 -echo $ECHO_N "checking for dsp_defs.h... $ECHO_C" >&6; } -if test "${ac_cv_header_dsp_defs_h+set}" = set; then +if test "${ac_cv_header_superlu_ddefs_h+set}" = set; then + { echo "$as_me:$LINENO: checking for superlu_ddefs.h" >&5 +echo $ECHO_N "checking for superlu_ddefs.h... $ECHO_C" >&6; } +if test "${ac_cv_header_superlu_ddefs_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_dsp_defs_h" >&5 -echo "${ECHO_T}$ac_cv_header_dsp_defs_h" >&6; } +{ echo "$as_me:$LINENO: result: $ac_cv_header_superlu_ddefs_h" >&5 +echo "${ECHO_T}$ac_cv_header_superlu_ddefs_h" >&6; } else # Is the header compilable? -{ echo "$as_me:$LINENO: checking dsp_defs.h usability" >&5 -echo $ECHO_N "checking dsp_defs.h usability... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: checking superlu_ddefs.h usability" >&5 +echo $ECHO_N "checking superlu_ddefs.h usability... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3965,7 +4367,7 @@ cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default -#include +#include _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" @@ -3997,15 +4399,15 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext echo "${ECHO_T}$ac_header_compiler" >&6; } # Is the header present? -{ echo "$as_me:$LINENO: checking dsp_defs.h presence" >&5 -echo $ECHO_N "checking dsp_defs.h presence... $ECHO_C" >&6; } +{ echo "$as_me:$LINENO: checking superlu_ddefs.h presence" >&5 +echo $ECHO_N "checking superlu_ddefs.h presence... $ECHO_C" >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ -#include +#include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in @@ -4038,25 +4440,25 @@ echo "${ECHO_T}$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in yes:no: ) - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: accepted by the compiler, rejected by the preprocessor!" >&5 -echo "$as_me: WARNING: dsp_defs.h: accepted by the compiler, rejected by the preprocessor!" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: proceeding with the compiler's result" >&5 -echo "$as_me: WARNING: dsp_defs.h: proceeding with the compiler's result" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: present but cannot be compiled" >&5 -echo "$as_me: WARNING: dsp_defs.h: present but cannot be compiled" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: check for missing prerequisite headers?" >&5 -echo "$as_me: WARNING: dsp_defs.h: check for missing prerequisite headers?" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: see the Autoconf documentation" >&5 -echo "$as_me: WARNING: dsp_defs.h: see the Autoconf documentation" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: section \"Present But Cannot Be Compiled\"" >&5 -echo "$as_me: WARNING: dsp_defs.h: section \"Present But Cannot Be Compiled\"" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: proceeding with the preprocessor's result" >&5 -echo "$as_me: WARNING: dsp_defs.h: proceeding with the preprocessor's result" >&2;} - { echo "$as_me:$LINENO: WARNING: dsp_defs.h: in the future, the compiler will take precedence" >&5 -echo "$as_me: WARNING: dsp_defs.h: in the future, the compiler will take precedence" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: present but cannot be compiled" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: superlu_ddefs.h: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: superlu_ddefs.h: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## ---------------------------------------------- ## ## Report this to salvatore.filippone@uniroma2.it ## @@ -4065,18 +4467,18 @@ _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac -{ echo "$as_me:$LINENO: checking for dsp_defs.h" >&5 -echo $ECHO_N "checking for dsp_defs.h... $ECHO_C" >&6; } -if test "${ac_cv_header_dsp_defs_h+set}" = set; then +{ echo "$as_me:$LINENO: checking for superlu_ddefs.h" >&5 +echo $ECHO_N "checking for superlu_ddefs.h... $ECHO_C" >&6; } +if test "${ac_cv_header_superlu_ddefs_h+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - ac_cv_header_dsp_defs_h=$ac_header_preproc + ac_cv_header_superlu_ddefs_h=$ac_header_preproc fi -{ echo "$as_me:$LINENO: result: $ac_cv_header_dsp_defs_h" >&5 -echo "${ECHO_T}$ac_cv_header_dsp_defs_h" >&6; } +{ echo "$as_me:$LINENO: result: $ac_cv_header_superlu_ddefs_h" >&5 +echo "${ECHO_T}$ac_cv_header_superlu_ddefs_h" >&6; } fi -if test $ac_cv_header_dsp_defs_h = yes; then +if test $ac_cv_header_superlu_ddefs_h = yes; then pac_sludist_header_ok=yes else pac_sludist_header_ok=no; SLUDIST_INCLUDES="" @@ -4142,8 +4544,9 @@ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ { echo "$as_me:$LINENO: result: $pac_sludist_lib_ok" >&5 echo "${ECHO_T}$pac_sludist_lib_ok" >&6; } fi -LIBS="$SAVE_LIBS"; -CPPFLAGS="$SAVE_CPPFLAGS"; +LIBS="$save_LIBS"; +CPPFLAGS="$save_CPPFLAGS"; +CC="$save_CC"; if test "x$mld2p4_cv_have_superludist" == "xyes" ; then SLUDIST_FLAGS="-DHave_SLUDist_ $SLUDIST_INCLUDES" @@ -4862,6 +5265,8 @@ OBJEXT!$OBJEXT$ac_delim CPP!$CPP$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim +MPICC!$MPICC$ac_delim +MPILIBS!$MPILIBS$ac_delim PSBLAS_DIR!$PSBLAS_DIR$ac_delim INSTALL!$INSTALL$ac_delim INSTALL_DIR!$INSTALL_DIR$ac_delim @@ -4877,7 +5282,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 63; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 65; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 diff --git a/configure.ac b/configure.ac index c67dcf82..a6523b4f 100755 --- a/configure.ac +++ b/configure.ac @@ -162,6 +162,13 @@ else UMF_FLAGS="" fi +AC_LANG([C]) +if test "X$MPICC" = "X" ; then + # This is our MPICC compiler preference: it will override ACX_MPI's first try. + AC_CHECK_PROGS([MPICC],[mpxlc mpcc pgcc mpicc]) +fi +ACX_MPI([], [AC_MSG_ERROR([[Cannot find any suitable MPI implementation for C]])]) + PAC_CHECK_SUPERLU if test "x$mld2p4_cv_have_superlu" == "xyes" ; then SLU_FLAGS="-DHave_SLU_ $SLU_INCLUDES" diff --git a/mlprec/mld_dslu_interface.c b/mlprec/mld_dslu_interface.c index 1d21eab0..eb24f075 100644 --- a/mlprec/mld_dslu_interface.c +++ b/mlprec/mld_dslu_interface.c @@ -90,7 +90,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef Have_SLU_ -#include "dsp_defs.h" +#include "slu_ddefs.h" #define HANDLE_SIZE 8 /* kind of integer to hold a pointer. Use int. diff --git a/mlprec/mld_zslu_interface.c b/mlprec/mld_zslu_interface.c index 9c7b5180..4b14cf23 100644 --- a/mlprec/mld_zslu_interface.c +++ b/mlprec/mld_zslu_interface.c @@ -90,7 +90,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #ifdef Have_SLU_ -#include "zsp_defs.h" +#include "slu_zdefs.h" #define HANDLE_SIZE 8 /* kind of integer to hold a pointer. Use int. This might need to be changed on 64-bit systems. */