From 5e660c36e9d863ceea6399b3eaffc228879fbda7 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Tue, 3 Nov 2020 20:20:40 +0100
Subject: [PATCH] CONFIG: ptscotch header not found on RedHat/Fedora (fixes
 #1904)

- no limit to the number of ways of filing ptscotch libraries.
  RedHat/Fedora/CentOS should look for these directories:

      ptscotch include=/usr/include/openmpi-x86_64
      ptscotch library=/usr/lib64/openmpi/lib

  when MPI_ARCH_PATH=/usr/lib64/openmpi
  and mpicc --showme:compile yields -I/usr/include/openmpi-x86_64
---
 wmake/scripts/have_scotch | 56 ++++++++++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

diff --git a/wmake/scripts/have_scotch b/wmake/scripts/have_scotch
index fb7182a0dd8..fdae90a59b8 100644
--- a/wmake/scripts/have_scotch
+++ b/wmake/scripts/have_scotch
@@ -37,6 +37,50 @@
 #     PTSCOTCH_INC_DIR
 #     PTSCOTCH_LIB_DIR
 #
+#
+# System files can be hiding in a large variety of locations.
+# For x86_64 system:
+#
+# ArchLinux
+# ---------
+#     scotch   include: /usr/include/scotch
+#     scotch   library: /usr/lib64
+#
+#     ptscotch include: /usr/include/ptscotch
+#     ptscotch library: /usr/lib64
+#
+#
+# Debian/Ubuntu
+# -------------
+#     scotch   include: /usr/include/scotch-int32
+#     scotch   library: /usr/lib/x86_64-linux-gnu
+#
+#     ptscotch include: /usr/include/scotch-int32
+#     ptscotch library: /usr/lib/x86_64-linux-gnu
+#
+#
+# RedHat
+# ------
+#     scotch   include: /usr/include
+#     scotch   library: /usr/lib64
+#
+#     ptscotch include: /usr/include/openmpi-x86_64
+#     ptscotch library: /usr/lib64/openmpi/lib
+#
+# when MPI_ARCH_PATH=/usr/lib64/openmpi
+# and mpicc --showme:compile -> -I/usr/include/openmpi-x86_64
+#
+#
+# openSUSE
+# --------
+#     scotch   include: /usr/include
+#     scotch   library: /usr/lib64
+#
+#     ptscotch include: /usr/lib64/mpi/gcc/openmpi2/include
+#     ptscotch library: /usr/lib64/mpi/gcc/openmpi2/lib64
+#
+# when MPI_ARCH_PATH=/usr/lib64/mpi/gcc/openmpi2
+#
 #------------------------------------------------------------------------------
 . ${WM_PROJECT_DIR:?}/wmake/scripts/sysFunctions    # General system functions
 
@@ -192,6 +236,9 @@ search_ptscotch()
     local prefix="${1:-system}"
     local header library
 
+    local mpiPrefix="$MPI_ARCH_PATH"
+    local mpiName="${MPI_ARCH_PATH##*/}"
+
     # ----------------------------------
     if isNone "$prefix"
     then
@@ -204,7 +251,10 @@ search_ptscotch()
             "$prefix/include/$localDir/$incName" \
             "$prefix/include/ptscotch/$incName" \
             "$prefix/include/scotch/$incName" \
-            "$prefix/include/$incName"
+            "$prefix/include/$incName" \
+            "$mpiPrefix/include/$incName" \
+            "$prefix/include/$mpiName/$incName" \
+            "$prefix/include/${mpiName}-$(uname -m)/$incName" \
         )
         library="$(findExtLib $FOAM_MPI/$libName $libName)"
     elif isSystem "$prefix"
@@ -218,6 +268,9 @@ search_ptscotch()
             "/usr/include/ptscotch/$incName" \
             "/usr/include/scotch/$incName" \
             "/usr/include/$incName" \
+            "$mpiPrefix/include/$incName" \
+            "/usr/include/$mpiName/$incName" \
+            "$prefix/include/${mpiName}-$(uname -m)/$incName" \
         )
         prefix=$(sysPrefix "$header")
     else
@@ -235,6 +288,7 @@ search_ptscotch()
     # Library
     [ -n "$library" ] \
     || library=$(findLibrary -prefix="$prefix" -name="$libName" -local="$localDir") \
+    || library=$(findLibrary -prefix="$mpiPrefix" -name="$libName" -local="$localDir") \
     || {
         [ -n "$warn" ] && echo "$warn (no library)"
         return 2
-- 
GitLab