From: Timo Heister <timo.heister@gmail.com>
Date: Sat, 19 Jun 2021 18:15:38 +0000 (-0400)
Subject: fix cmake underlinkage error
X-Git-Tag: v9.4.0-rc1~1203^2
X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=35fb3e2239e40c07c3560608d2933153a5a20c8d;p=dealii.git

fix cmake underlinkage error

The underlinkage MPI check under Ubuntu fails if MPI_CXX_LIBRARIES is
empty, which happens if you configure with CXX=mpicxx (even though you
should not).

In this situation, just disable this hack. Errors look like this:

CMake Error at cmake/modules/FindMPI.cmake:143 (LIST):
  LIST GET given empty list
Call Stack (most recent call first):
  cmake/macros/macro_find_package.cmake:27 (_FIND_PACKAGE)
  cmake/configure/configure_1_mpi.cmake:28 (FIND_PACKAGE)
/a/CMakeFiles/CMakeTmp/evaluate_expression.tmp:1
(FEATURE_MPI_FIND_EXTERNAL)
  cmake/macros/macro_evaluate_expression.cmake:30 (INCLUDE)
  cmake/macros/macro_configure_feature.cmake:237 (EVALUATE_EXPRESSION)
  cmake/configure/configure_1_mpi.cmake:81 (CONFIGURE_FEATURE)
  cmake/macros/macro_verbose_include.cmake:19 (INCLUDE)
  CMakeLists.txt:121 (VERBOSE_INCLUDE)

CMake Error at cmake/modules/FindMPI.cmake:144 (GET_FILENAME_COMPONENT):
  GET_FILENAME_COMPONENT called with incorrect number of arguments
Call Stack (most recent call first):
  cmake/macros/macro_find_package.cmake:27 (_FIND_PACKAGE)
  cmake/configure/configure_1_mpi.cmake:28 (FIND_PACKAGE)
/a/CMakeFiles/CMakeTmp/evaluate_expression.tmp:1
(FEATURE_MPI_FIND_EXTERNAL)
  cmake/macros/macro_evaluate_expression.cmake:30 (INCLUDE)
  cmake/macros/macro_configure_feature.cmake:237 (EVALUATE_EXPRESSION)
  cmake/configure/configure_1_mpi.cmake:81 (CONFIGURE_FEATURE)
  cmake/macros/macro_verbose_include.cmake:19 (INCLUDE)
  CMakeLists.txt:121 (VERBOSE_INCLUDE)

-- _mpi_libopen_pal_library not found! The call was:
--     FIND_LIBRARY(_mpi_libopen_pal_library NAMES open-pal HINTS
NO_DEFAULT_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_PATH
NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH)
---

diff --git a/cmake/modules/FindMPI.cmake b/cmake/modules/FindMPI.cmake
index 196f805cd2..a43fd087b8 100644
--- a/cmake/modules/FindMPI.cmake
+++ b/cmake/modules/FindMPI.cmake
@@ -136,7 +136,9 @@ CHECK_COMPILER_SETUP(
   ${MPI_CXX_LIBRARIES} ${MPI_Fortran_LIBRARIES} ${MPI_C_LIBRARIES}
   )
 
-IF(NOT MPI_UNDERLINKAGE_OK)
+IF(NOT MPI_UNDERLINKAGE_OK AND NOT "${MPI_CXX_LIBRARIES}" STREQUAL "")
+  # This check only works if MPI_CXX_LIBRARIES is non-empty, otherwise we will just give up
+  # and hope for the best...
   MESSAGE(STATUS "Trying to avoid underlinkage by expliclitly adding libopen-pal to link line")
 
   LIST(GET MPI_CXX_LIBRARIES 0 _lib)