diff --git a/build/configure.ac b/build/configure.ac
index 11969bd917b52e92168461b2734f73ac9c99ea32..d2e77451820a69c11b60786899c2d1af5c1ff4fc 100644
--- a/build/configure.ac
+++ b/build/configure.ac
@@ -1,183 +1,3 @@
-# ===========================================================================
-#     https://www.gnu.org/software/autoconf-archive/ax_prog_cxx_mpi.html
-# ===========================================================================
-#
-# SYNOPSIS
-#
-#   AX_PROG_CXX_MPI([MPI-WANTED-TEST[, ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]])
-#
-# DESCRIPTION
-#
-#   This macro tries to find out how to compile C++ programs that use MPI
-#   (Message Passing Interface), a standard API for parallel process
-#   communication (see http://www-unix.mcs.anl.gov/mpi/).  The macro has to
-#   be used instead of the standard macro AC_PROG_CXX and will replace the
-#   standard variable CXX with the found compiler.
-#
-#   MPI-WANTED-TEST is used to test whether MPI is actually wanted by the
-#   user. If MPI-WANTED_TEST is omitted or if it succeeds, the macro will
-#   try to find out how to use MPI, if it fails, the macro will call
-#   AC_PROG_CC to find a standard C compiler instead.
-#
-#   When MPI is found, ACTION-IF-FOUND will be executed, if MPI is not found
-#   (or MPI-WANTED-TEST fails) ACTION-IF-NOT-FOUND is executed. If
-#   ACTION-IF-FOUND is not set, the macro will define HAVE_MPI.
-#
-#   The following example demonstrates usage of the macro:
-#
-#     # If --with-mpi=auto is used, try to find MPI, but use standard C
-#     compiler if it is not found.
-#     # If --with-mpi=yes is used, try to find MPI and fail if it isn't found.
-#     # If --with-mpi=no is used, use a standard C compiler instead.
-#     AC_ARG_WITH(mpi, [AS_HELP_STRING([--with-mpi],
-#         [compile with MPI (parallelization) support. If none is found,
-#         MPI is not used. Default: auto])
-#     ],,[with_mpi=auto])
-#
-#     AX_PROG_CXX_MPI([test x"$with_mpi" != xno],[use_mpi=yes],[
-#       use_mpi=no
-#       if test x"$with_mpi" = xyes; then
-#         AC_MSG_FAILURE([MPI compiler requested, but couldn't use MPI.])
-#       else
-#         AC_MSG_WARN([No MPI compiler found, won't use MPI.])
-#       fi
-#     ])
-#
-# LICENSE
-#
-#   Copyright (c) 2010,2011 Olaf Lenz <olenz@icp.uni-stuttgart.de>
-#
-#   This program is free software: you can redistribute it and/or modify it
-#   under the terms of the GNU General Public License as published by the
-#   Free Software Foundation, either version 3 of the License, or (at your
-#   option) any later version.
-#
-#   This program is distributed in the hope that it will be useful, but
-#   WITHOUT ANY WARRANTY; without even the implied warranty of
-#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
-#   Public License for more details.
-#
-#   You should have received a copy of the GNU General Public License along
-#   with this program. If not, see <https://www.gnu.org/licenses/>.
-#
-#   As a special exception, the respective Autoconf Macro's copyright owner
-#   gives unlimited permission to copy, distribute and modify the configure
-#   scripts that are the output of Autoconf when processing the Macro. You
-#   need not follow the terms of the GNU General Public License when using
-#   or distributing such scripts, even though portions of the text of the
-#   Macro appear in them. The GNU General Public License (GPL) does govern
-#   all other use of the material that constitutes the Autoconf Macro.
-#
-#   This special exception to the GPL applies to versions of the Autoconf
-#   Macro released by the Autoconf Archive. When you make and distribute a
-#   modified version of the Autoconf Macro, you may extend this special
-#   exception to the GPL to apply to your modified version as well.
-
-#serial 3
-
-AC_DEFUN([AX_PROG_CXX_MPI], [
-AC_PREREQ(2.50)
-
-# Check for compiler
-# Needs to be split off into an extra macro to ensure right expansion
-# order.
-AC_REQUIRE([_AX_PROG_CXX_MPI],[_AX_PROG_CXX_MPI([$1])])
-
-AS_IF([test x"$_ax_prog_cxx_mpi_mpi_wanted" = xno],
-  [ _ax_prog_cxx_mpi_mpi_found=no ],
-  [
-    AC_LANG_PUSH([C++])
-
-    # test whether MPI_Init() is available
-    # We do not use AC_SEARCH_LIBS here, as it caches its outcome and
-    # thus disallows corresponding calls in the other AX_PROG_*_MPI
-    # macros.
-    for lib in NONE mpi mpich; do
-      save_LIBS=$LIBS
-      if test x"$lib" = xNONE; then
-        AC_MSG_CHECKING([for function MPI_Init])
-      else
-        AC_MSG_CHECKING([for function MPI_Init in -l$lib])
-        LIBS="-l$lib $LIBS"
-      fi
-      AC_LINK_IFELSE([
-        AC_LANG_PROGRAM([
-extern "C" { void MPI_Init(); }
-],[MPI_Init();])],
-        [ _ax_prog_cxx_mpi_mpi_found=yes ],
-        [ _ax_prog_cxx_mpi_mpi_found=no ])
-      AC_MSG_RESULT($_ax_prog_cxx_mpi_mpi_found)
-      if test "x$_ax_prog_cxx_mpi_mpi_found" = "xyes"; then
-        break;
-      fi
-      LIBS=$save_LIBS
-    done
-
-    # Check for header
-    AS_IF([test x"$_ax_prog_cxx_mpi_mpi_found" = xyes], [
-      AC_MSG_CHECKING([for mpi.h])
-      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <mpi.h>])],
-        [ AC_MSG_RESULT(yes)],
-        [ AC_MSG_RESULT(no)
-         _ax_prog_cxx_mpi_mpi_found=no
-      ])
-    ])
-    AC_LANG_POP([C++])
-])
-
-# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-AS_IF([test x"$_ax_prog_cxx_mpi_mpi_found" = xyes], [
-        ifelse([$2],,[AC_DEFINE(HAVE_MPI,1,[Define if you have the MPI library.])],[$2])
-        :
-],[
-        $3
-        :
-])
-
-])dnl AX_PROG_CXX_MPI
-
-dnl _AX_PROG_CXX_MPI is an internal macro required by AX_PROG_CXX_MPI.
-dnl To ensure the right expansion order, the main function AX_PROG_CXX_MPI
-dnl has to be split into two parts.
-dnl
-dnl Known MPI C++ compilers:
-dnl  mpic++
-dnl  mpicxx
-dnl  mpiCC
-dnl  sxmpic++     NEC SX
-dnl  hcp
-dnl  mpxlC_r
-dnl  mpxlC
-dnl  mpixlcxx_r
-dnl  mpixlcxx
-dnl  mpg++
-dnl  mpc++
-dnl  mpCC
-dnl  cmpic++
-dnl  mpiFCC       Fujitsu
-dnl  CC
-dnl
-AC_DEFUN([_AX_PROG_CXX_MPI], [
-  AC_ARG_VAR(MPICXX,[MPI C++ compiler command])
-  ifelse([$1],,[_ax_prog_cxx_mpi_mpi_wanted=yes],[
-    AC_MSG_CHECKING([whether to compile using MPI])
-    if $1; then
-      _ax_prog_cxx_mpi_mpi_wanted=yes
-    else
-      _ax_prog_cxx_mpi_mpi_wanted=no
-    fi
-    AC_MSG_RESULT($_ax_prog_cxx_mpi_mpi_wanted)
-  ])
-  if test x"$_ax_prog_cxx_mpi_mpi_wanted" = xyes; then
-    if test -z "$CXX" && test -n "$MPICXX"; then
-      CXX="$MPICXX"
-    else
-      AC_CHECK_TOOLS([CXX], [mpic++ mpicxx mpiCC sxmpic++ hcp mpxlC_r mpxlC mpixlcxx_r mpixlcxx mpg++ mpc++ mpCC cmpic++ mpiFCC CCicpc pgCC pathCC sxc++ xlC_r xlC bgxlC_r bgxlC openCC sunCC crayCC g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC])
-    fi
-  fi
-  AC_PROG_CXX
-])dnl _AX_PROG_CXX_MPI
-
 # CAPABILITY TESTING MACROS
 m4_define(
   [M4_HDF5_LIB],
@@ -270,19 +90,40 @@ AM_PROG_AR
 AC_ARG_ENABLE(
   [mpi],
   [AS_HELP_STRING([--enable-mpi], [enable MPI compilation [default=auto]])],
-  [AC_MSG_NOTICE([Handling explicit option.])],
   [
-    AC_MSG_NOTICE([Handling implicit option.])
-    AX_PROG_CXX_MPI()
-    AC_SUBST([MPIFLAGS], [-DUSE_MPI])
+    if test "x$enableval" = "xno"; then
+      AC_PROG_CXX([g++ clang])
+      AC_MSG_NOTICE([Using $CXX])
+      AC_SUBST([MPIFLAGS], [""])
+    elif test "x$enableval" = "xauto"; then
+      AC_PROG_CXX([mpicxx mpic++ mpiCC])
+      if test "x$CXX" != "x"; then
+        AC_SUBST([MPIFLAGS], [-DUSE_MPI])
+      else
+        AC_PROG_CXX([g++ clang])
+        AC_SUBST([MPIFLAGS], [""])
+      fi
+    elif test "x$enableval" = "xyes"; then
+      AC_PROG_CXX([mpicxx mpic++ mpiCC])
+      if test "x$CXX" != "x"; then
+        AC_SUBST([MPIFLAGS], [-DUSE_MPI])
+      else
+        AC_MSG_ERROR([MPI was requested, but no MPI compiler detected!])
+      fi
+    fi
+  ],
+  [
+    AC_PROG_CXX([mpicxx mpic++ mpiCC])
+    if test "x$CXX" != "x"; then
+      AC_SUBST([MPIFLAGS], [-DUSE_MPI])
+    else
+      AC_PROG_CXX([g++ clang])
+      AC_SUBST([MPIFLAGS], [""])
+      AC_MSG_NOTICE([Using $CXX])
+    fi
   ]
 )
-AS_IF(
-  [test "x$CXX" = "x"],
-  [AC_PROG_CXX([g++ clang])],
-  [AC_MSG_NOTICE([Using $CXX])]
-)
-AC_PROG_F77([mpif90 gfortran f77])
+AC_PROG_F77([gfortran f77])
 
 # Libtool initialization
 LT_INIT