diff --git a/m4/dune.m4 b/m4/dune.m4 index acc795a35f982d96b27f202bd981eb0f232b895d..56ee9ef7305664418dda5a8304c5f6694e6fd561 100644 --- a/m4/dune.m4 +++ b/m4/dune.m4 @@ -17,19 +17,24 @@ AC_DEFUN([DUNE_CHECK_MODULES],[ echo checking for $1 - AC_DEFUN([_dune_module], [$1]) - AC_DEFUN([_dune_header], [$2]) - AC_DEFUN([_dune_ldpath], [$3]) - AC_DEFUN([_dune_lib], [$4]) - AC_DEFUN([_dune_symbol], [$5]) - AC_DEFUN([_DUNE_MODULE], [m4_toupper(_dune_module)]) + m4_pushdef([_dune_module_plain], [$1]) + m4_pushdef([_dune_module], [m4_translit(_dune_module_plain, [-], [_])]) + m4_pushdef([_dune_header], [$2]) + m4_pushdef([_dune_ldpath], [$3]) + m4_pushdef([_dune_lib], [$4]) + m4_pushdef([_dune_symbol], [$5]) + m4_pushdef([_DUNE_MODULE], [m4_toupper(_dune_module)]) + + echo Module _dune_module_plain mapps to _DUNE_MODULE # switch tests to c++ AC_LANG_PUSH([C++]) # the usual option... - AC_ARG_WITH([_dune_module], - AC_HELP_STRING([--with-_dune_module=PATH],[_dune_module directory])) + withval="" + AC_ARG_WITH(_dune_module_plain, + AC_HELP_STRING([--with-_dune_module_plain=PATH],[_dune_module directory])) + withval=$with_[]_dune_module # backup of flags ac_save_CPPFLAGS="$CPPFLAGS" @@ -43,20 +48,25 @@ AC_DEFUN([DUNE_CHECK_MODULES],[ # expand tilde if test -d $withval ; then # expand tilde / other stuff - _DUNE_MODULE[]ROOT=`cd $withval && pwd` + _DUNE_MODULE[]_ROOT=`cd $withval && pwd` # expand search path (otherwise empty CPPFLAGS) - if test -d $_DUNE_MODULE[]ROOT/include/dune; then + if test -d $_DUNE_MODULE[]_ROOT/include/dune; then # Dune was installed into directory given by with-dunecommon LINSTALL=1 - _DUNE_MODULE[]_CPPFLAGS="-I$_DUNE_MODULE[]ROOT/include" - LDFLAGS="$LDFLAGS -L$_DUNE_MODULE[]ROOT/lib" + _DUNE_MODULE[]_CPPFLAGS="-I$_DUNE_MODULE[]_ROOT/include" + LDFLAGS="$LDFLAGS -L$_DUNE_MODULE[]_ROOT/lib" else - _DUNE_MODULE[]_CPPFLAGS="-I$_DUNE_MODULE[]ROOT" + _DUNE_MODULE[]_CPPFLAGS="-I$_DUNE_MODULE[]_ROOT" fi else AC_MSG_ERROR([_dune_module-directory $withval does not exist]) fi + # set correct dune path + with_[]_dune_module="$withval" + else + # set correct dune path + with_[]_dune_module="global installation" fi CPPFLAGS="$DUNE_CPPFLAGS $_DUNE_MODULE[]_CPPFLAGS" @@ -66,7 +76,7 @@ AC_DEFUN([DUNE_CHECK_MODULES],[ _DUNE_MODULE[]_CPPFLAGS="$CPPFLAGS"], [HAVE_[]_DUNE_MODULE=0 _DUNE_MODULE[]_CPPFLAGS="" - AC_MSG_ERROR([$withval does not seem to contain a valid _dune_module (dune/[]_dune_header not found)])] + AC_MSG_ERROR([$with_[]_dune_module does not seem to contain a valid _dune_module (dune/[]_dune_header not found)])] ) ## check for lib (if lib name was provided) @@ -78,20 +88,20 @@ AC_DEFUN([DUNE_CHECK_MODULES],[ HAVE_[]_DUNE_MODULE=0 ## special test for a local installation - if test x$_DUNE_MODULE[]ROOT != x && test ! $LINSTALL; then + if test x$_DUNE_MODULE[]_ROOT != x && test ! $LINSTALL; then # have a look into the dune module directory - LDFLAGS="$LDFLAGS -L$_DUNE_MODULE[]ROOT/dune/_dune_ldpath" + LDFLAGS="$LDFLAGS -L$_DUNE_MODULE[]_ROOT/dune/_dune_ldpath" # only check for a .la-file - if test -s $_DUNE_MODULE[]ROOT/_dune_ldpath/lib[]_dune_lib[].la ; then - _DUNE_MODULE[]_LDFLAGS="-L$_DUNE_MODULE[]ROOT/_dune_ldpath" + if test -s $_DUNE_MODULE[]_ROOT/_dune_ldpath/lib[]_dune_lib[].la ; then + _DUNE_MODULE[]_LDFLAGS="-L$_DUNE_MODULE[]_ROOT/_dune_ldpath" echo found lib[]_dune_lib.la, setting LDFLAGS to $_DUNE_MODULE[]_LDFLAGS # provide arguments like normal lib-check _DUNE_MODULE[]_LIBS="-l[]_dune_lib" HAVE_[]_DUNE_MODULE=1 else - AC_MSG_ERROR([$withval does not seem to contain a valid _dune_module (lib[]_dune_lib[].la not found)]) + AC_MSG_ERROR([$with_[]_dune_module does not seem to contain a valid _dune_module (lib[]_dune_lib[].la not found)]) fi fi @@ -132,7 +142,7 @@ AC_DEFUN([DUNE_CHECK_MODULES],[ AC_SUBST(_DUNE_MODULE[]_CPPFLAGS, "$_DUNE_MODULE[]_CPPFLAGS") AC_SUBST(_DUNE_MODULE[]_LDFLAGS, "$_DUNE_MODULE[]_LDFLAGS") AC_SUBST(_DUNE_MODULE[]_LIBS, "$_DUNE_MODULE[]_LIBS") - AC_SUBST(_DUNE_MODULE[]ROOT, "$_DUNE_MODULE[]ROOT") + AC_SUBST(_DUNE_MODULE[]_ROOT, "$_DUNE_MODULE[]_ROOT") AC_DEFINE(HAVE_[]_DUNE_MODULE, 1, [Define to 1 if _dune_module was found]) # set DUNE_* variables @@ -144,6 +154,8 @@ AC_DEFUN([DUNE_CHECK_MODULES],[ DUNE_PKG_CPPFLAGS="$DUNE_PKG_CPPFLAGS $DUNE_CPPFLAGS" DUNE_PKG_LIBS="$DUNE_PKG_LIBS $LIBS" DUNE_PKG_LDFLAGS="$DUNE_PKG_LDFLAGS $DUNE_LDFLAGS" + + with_[]_dune_module="yes" else AC_MSG_ERROR([could not find required module _dune_module]) fi @@ -152,22 +164,31 @@ AC_DEFUN([DUNE_CHECK_MODULES],[ CPPFLAGS="$ac_save_CPPFLAGS" LIBS="$ac_save_LIBS" + # remove local variables + m4_popdef([_dune_module_plain]) + m4_popdef([_dune_module]) + m4_popdef([_dune_header]) + m4_popdef([_dune_ldpath]) + m4_popdef([_dune_lib]) + m4_popdef([_dune_symbol]) + m4_popdef([_DUNE_MODULE]) + # restore previous language settings (leave C++) AC_LANG_POP([C++]) ]) AC_DEFUN([DUNE_CHECK_DISPATCH],[ ifelse([$1], [], [], - [$1], [dunecommon],[ - DUNE_CHECK_MODULES([dunecommon], [common/stdstreams.hh], [common], [common], [Dune::derr.active();])], - [$1], [dunegrid],[ - DUNE_CHECK_MODULES([dunegrid], [grid/common/grid.hh], [grid], [grid], [Dune::PartitionName])], - [$1], [dunefem],[ - DUNE_CHECK_MODULES([dunefem], [fem/basefunctions/common/storageinterface.hh], [], [], [])], - [$1], [duneistl],[ - DUNE_CHECK_MODULES([duneistl], [istl/allocator.hh],,,)], - [$1], [dunedisc],[ - DUNE_CHECK_MODULES([dunedisc], [disc/functions/functions.hh], [disc], [disc], [Dune::LagrangeShapeFunctions<double, double, 3>::general])], + [$1], [dune-common],[ + DUNE_CHECK_MODULES([dune-common], [common/stdstreams.hh], [common], [common], [Dune::derr.active();])], + [$1], [dune-grid],[ + DUNE_CHECK_MODULES([dune-grid], [grid/common/grid.hh], [grid], [grid], [Dune::PartitionName])], + [$1], [dune-fem],[ + DUNE_CHECK_MODULES([dune-fem], [fem/basefunctions/common/storageinterface.hh], [], [], [])], + [$1], [dune-istl],[ + DUNE_CHECK_MODULES([dune-istl], [istl/allocator.hh],,,)], + [$1], [dune-disc],[ + DUNE_CHECK_MODULES([dune-disc], [disc/functions/functions.hh], [disc], [disc], [Dune::LagrangeShapeFunctions<double, double, 3>::general])], [AC_MSG_ERROR([Unknown module $1])]) ]) diff --git a/m4/dune_all.m4 b/m4/dune_all.m4 index 60a021b6ea484e789b563a9fb5269235ee685b48..ae81c11af3cc7bf784a36d95854d9c9060a248a3 100644 --- a/m4/dune_all.m4 +++ b/m4/dune_all.m4 @@ -109,6 +109,15 @@ AC_SUBST(DUNEWEBDIR, $with_duneweb) AC_SUBST(am_dir, $DUNECOMMONROOT/am) ]) +AC_DEFUN([DUNE_SUMMARY],[ + if test xyes == x$2 || test xno == x$2; then + echo -n "$1" + echo -n "$2" + if test x$3 != x; then echo " ($3)" + else echo; fi + fi +]) + AC_DEFUN([DUNE_SUMMARY_ALL],[ # show search results @@ -117,11 +126,11 @@ AC_DEFUN([DUNE_SUMMARY_ALL],[ echo echo "-----------------------------" echo - echo "Dune-common......: $with_dunecommon" - echo "Dune-grid........: $with_dunegrid" - echo "Dune-istl........: $with_duneistl" - echo "Dune-disc........: $with_dunedisc" - echo "Dune-fem.........: $with_dunefem" + DUNE_SUMMARY([Dune-common......: ], [$with_dune_common], [$DUNE_COMMON_ROOT]) + DUNE_SUMMARY([Dune-grid........: ], [$with_dune_grid], [$DUNE_GRID_ROOT]) + DUNE_SUMMARY([Dune-istl........: ], [$with_dune_istl], [$DUNE_ISTL_ROOT]) + DUNE_SUMMARY([Dune-disc........: ], [$with_dune_disc], [$DUNE_DISC_ROOT]) + DUNE_SUMMARY([Dune-fem........: ], [$with_dune_fem], [$DUNE_FEM_ROOT]) echo "Alberta..........: $with_alberta" echo "ALUGrid..........: $with_alugrid" echo "AmiraMesh........: $with_amiramesh" @@ -169,7 +178,7 @@ if test "x$with_revision" = "xno" ; then with_revision=bar; fi AC_SUBST(revision, $with_revision) AC_LANG_PUSH([C++]) - echo "Resolving Dependencies: $@" + AC_MSG_NOTICE([Resolving Dependencies: $@]) DUNE_MODULE_DEPENDENCIES($@) AC_REQUIRE([DUNE_CHECK_ALL]) AC_REQUIRE([DUNE_DEV_MODE]) diff --git a/m4/dune_mpi.m4 b/m4/dune_mpi.m4 index ef49a737f5e3ae207384422b743293c3fb07ba01..35d88cb5ad062d862ad212e72b2e68a1fe0b3d4f 100644 --- a/m4/dune_mpi.m4 +++ b/m4/dune_mpi.m4 @@ -108,7 +108,20 @@ AC_DEFUN([DUNE_MPI],[ ## do nothing if --disable-parallel is used if test x$with_parallel == xyes ; then + # is the mpi compilation script already specified? + AC_LANG_CASE([C],[ + MPICOMP="$MPICC" + ], + [C++],[ + MPICOMP="$MPICXX" + ]) + AC_MSG_NOTICE([user specific mpi compiler would be ... $MPICC]) # implicitly sets the HAVE_MPI-define and the MPICXX-substitution + if test x == x"$MPICOMP"; then + ACX_MPI() + else + AC_MSG_NOTICE([using user specific mpi compiler... $MPICC]) + fi ACX_MPI() # remove HAVE_MPI from confdefs.h cp confdefs.h confdefs.h.tmp @@ -127,7 +140,7 @@ AC_DEFUN([DUNE_MPI],[ # taken from acx_mpi: test succeeded if MPILIBS is not empty if test x != x"$MPICOMP" ; then - AC_MSG_CHECKING([MPI-package]) + AC_MSG_CHECKING([for a known MPI package]) # the LAM mpiCC knows a -showme parameter dune_mpi_getflags "-showme" if test x"$retval" != x ; then