From b35cd06e6f4f554115343d41f5e431c7ed792823 Mon Sep 17 00:00:00 2001
From: Stephan Schulz <stephan.schulz-x2q@rub.de>
Date: Wed, 27 Jan 2021 15:15:42 +0100
Subject: [PATCH] fix OpenMPI detection in CMake

---
 CMakeLists.txt               |  4 ++--
 tests/feature/CMakeLists.txt | 26 +++++++++++++++++---------
 2 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b100eef..7e9122c 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 acffb26..83c75d1 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
-- 
GitLab