diff --git a/CMakeLists.txt b/CMakeLists.txt
index b100eef1737581e0f342e1d8c5eb9f0dc0849415..7e9122cc256e71c595caf90d1bcdae58fbff5c59 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -57,9 +57,9 @@ project(ALL
 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})
 
 if (CM_ALL_FORTRAN)
-    find_package(MPI REQUIRED COMPONENTS CXX Fortran)
+    find_package(MPI REQUIRED COMPONENTS C CXX Fortran)
 else()
-    find_package(MPI REQUIRED COMPONENTS CXX)
+    find_package(MPI REQUIRED COMPONENTS C CXX)
 endif (CM_ALL_FORTRAN)
 
 # Prepare the Config.cmake.in
diff --git a/tests/feature/CMakeLists.txt b/tests/feature/CMakeLists.txt
index acffb26bf1f526bdb0e2f1e9d4806457c2e311f9..83c75d1dbd48fe8648054886053097b53420ec8b 100644
--- a/tests/feature/CMakeLists.txt
+++ b/tests/feature/CMakeLists.txt
@@ -11,15 +11,23 @@ set(OUTPUTDIR .)
 set(KNOWNGOOD ${CMAKE_CURRENT_SOURCE_DIR}/knowngood)
 # check if openmpi variable in mpi.h is set to find out, if
 # MPI version is openmpi based
-include(CheckCSourceCompiles)
- check_c_source_compiles(
-      "include <mpi.h> 
-      int main(void) {
-      #ifndef _OPENMPI
-      #error
-      #endif
-      return 0;
-      }" HAVE_OPENMPI)
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/have_openmpi.c
+"#include <mpi.h>
+int main(void) {
+#ifndef OPEN_MPI
+#error
+#endif
+    return 0;
+}
+")
+try_compile(HAVE_OPENMPI
+    ${CMAKE_CURRENT_BINARY_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}/have_openmpi.c
+    LINK_LIBRARIES MPI::MPI_C
+    OUTPUT_VARIABLE _try_out)
+if(NOT HAVE_OPENMPI)
+    message(FATAL_ERROR "DID NOT FIND OPENMPI\n\n${_try_out}")
+endif()
 include(FindUnixCommands)
 foreach( FEATURE
 		ALL_Staggered