diff --git a/m4/dune_all.m4 b/m4/dune_all.m4
index 81ec8ff0b164cbe96c3656255c125d6ebe0c6fe8..64373b3abaa7525e7690736d4a53bb97a4cad1bd 100644
--- a/m4/dune_all.m4
+++ b/m4/dune_all.m4
@@ -7,7 +7,6 @@
 
 # the entries are more or less copied from an "autoscan"-run in the
 # dune-directory
-
 AC_DEFUN([DUNE_CHECK_ALL],[
   # doxygen and latex take a lot of time...
   AC_REQUIRE([DUNE_DOCUMENTATION])
@@ -18,6 +17,7 @@ AC_DEFUN([DUNE_CHECK_ALL],[
   AC_REQUIRE([AC_PROG_CPP])
   AC_REQUIRE([AC_PROG_CXX])
   AC_REQUIRE([AC_PROG_CXXCPP])
+  AC_REQUIRE([DUNE_SYNC_FC_F77])
   AC_REQUIRE([AC_PROG_F77])
   AC_REQUIRE([AC_PROG_FC])
   # don't build shared libs per default, this is way better for debugging...
diff --git a/m4/dune_fortran.m4 b/m4/dune_fortran.m4
new file mode 100644
index 0000000000000000000000000000000000000000..872bfda8128267b6e487f3ebee789c8a7904c4ba
--- /dev/null
+++ b/m4/dune_fortran.m4
@@ -0,0 +1,31 @@
+# a trick to make life for the  user easier.
+#
+# some libs need the fortran test, while other use the f77 test. This
+# requires the user to provide two variables, usually with the same
+# parameter. In most cases the F77 compiler will be the same as teh FC
+# compiler.
+#
+# We test for FC and F77. If the user has specified both, we do
+# nothing, if the user has specified only one of them, we assume that
+# the compiler supports both and copy the value. Usually this should
+# be the sane default.
+#
+AC_DEFUN([DUNE_SYNC_FC_F77],[
+  # variant 1
+  # FC is set, while F77 is not set
+  AS_IF([test -n "$FC" && test -z "$F77"], [
+    AC_MSG_NOTICE([Fortran compiler FC (fortran 90) specified, 
+      while F77 (fortran 77) wasn't set.
+      Trying to use FC as F77.])
+    F77="$FC"
+  ])
+  # variant 2
+  # F77 is set, while FC is not set
+  AS_IF([test -z "$FC" && test -n "$F77"], [
+    AC_MSG_NOTICE([Fortran compiler F77 (fortran 77) specified, 
+      while FC (fortran 90) wasn't set.
+      Trying to use F77 as FC.])
+    FC="$F77"
+  ])
+])
+